diff options
Diffstat (limited to 'x11/kdebase3/files/patch-kdm-backend-printf.c')
-rw-r--r-- | x11/kdebase3/files/patch-kdm-backend-printf.c | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/x11/kdebase3/files/patch-kdm-backend-printf.c b/x11/kdebase3/files/patch-kdm-backend-printf.c new file mode 100644 index 000000000000..79033f3d7af3 --- /dev/null +++ b/x11/kdebase3/files/patch-kdm-backend-printf.c @@ -0,0 +1,126 @@ +--- ./kdm/backend/printf.c.orig Sun Mar 24 12:31:09 2002 ++++ ./kdm/backend/printf.c Thu Apr 18 20:53:44 2002 +@@ -65,7 +65,7 @@ + */ + + /************************************************************** +- * (C) 2001 Oswald Buddenhagen <ossi@kde.org> ++ * (C) 2001-2002 Oswald Buddenhagen <ossi@kde.org> + * Partially stolen from OpenSSH's OpenBSD compat directory. + * (C) Patrick Powell, Brandon Long, Thomas Roessler, + * Michael Elkins, Ben Lindstrom +@@ -507,23 +507,24 @@ + #ifdef USE_SYSLOG + syslog (LOG_CRIT, "Out of memory in %s()", fkt); + #else +- char dbuf[20]; ++ int el; ++ char dbuf[24], sbuf[128]; + logTime (dbuf); +- fprintf (stderr, "%s " ++ el = sprintf (sbuf, "%s " + # ifdef LOG_NAME + LOG_NAME "[%ld]: Out of memory in %s()\n", dbuf, + # else + "%s[%ld]: Out of memory in %s()\n", dbuf, prog, + # endif + (long)getpid(), fkt); +- fflush (stderr); ++ write (2, sbuf, el); + #endif + } + + typedef struct { + char *buf; + int clen, blen, type; +- char lmbuf[100]; ++ char lmbuf[128]; + } OCLBuf; + + static void +@@ -533,25 +534,11 @@ + #ifdef USE_SYSLOG + syslog (lognums[oclbp->type], "%.*s", oclbp->clen, oclbp->buf); + #else +- char dbuf[20]; +- logTime (dbuf); +- fprintf (stderr, "%s " +-# ifdef LOG_NAME +- LOG_NAME "[%ld] %s: %.*s\n", dbuf, +-# else +- "%s[%ld] %s: %.*s\n", dbuf, prog, +-# endif +- (long)getpid(), lognams[oclbp->type], oclbp->clen, oclbp->buf); +- fflush (stderr); ++ oclbp->buf[oclbp->clen] = '\n'; ++ write (2, oclbp->buf, oclbp->clen + 1); + #endif + oclbp->clen = 0; + } +- if (oclbp->buf) { +- if (oclbp->buf != oclbp->lmbuf) +- free (oclbp->buf); +- oclbp->buf = 0; +- oclbp->blen = 0; +- } + } + + static void +@@ -564,10 +551,17 @@ + if (c == '\n') + OutChLFlush (oclbp); + else { ++#ifndef USE_SYSLOG ++ if (oclbp->clen >= oclbp->blen - 1) { ++#else + if (oclbp->clen >= oclbp->blen) { +- if (oclbp->buf == oclbp->lmbuf) ++#endif ++ if (oclbp->buf == oclbp->lmbuf) { + OutChLFlush (oclbp); +- nlen = oclbp->blen * 3 / 2 + 100; ++ oclbp->buf = 0; ++ oclbp->blen = 0; ++ } ++ nlen = oclbp->blen * 3 / 2 + 128; + nbuf = realloc (oclbp->buf, nlen); + if (nbuf) { + oclbp->buf = nbuf; +@@ -579,6 +573,19 @@ + oclbp->blen = sizeof(oclbp->lmbuf); + } + } ++#ifndef USE_SYSLOG ++ if (!oclbp->clen) { ++ char dbuf[24]; ++ logTime (dbuf); ++ oclbp->clen = sprintf (oclbp->buf, "%s " ++# ifdef LOG_NAME ++ LOG_NAME "[%ld] %s: ", dbuf, ++# else ++ "%s[%ld] %s: ", dbuf, prog, ++# endif ++ (long)getpid(), lognams[oclbp->type]); ++ } ++#endif + oclbp->buf[oclbp->clen++] = c; + } + } +@@ -586,13 +593,12 @@ + static void + Logger (int type, const char *fmt, va_list args) + { +- static OCLBuf oclb; ++ OCLBuf oclb = { 0, 0, 0, type }; + +- if (oclb.type != type) { +- OutChLFlush (&oclb); +- oclb.type = type; +- } + DoPr(OutChL, &oclb, fmt, args); ++ /* no flush, every message is supposed to be \n-terminated */ ++ if (oclb.buf && oclb.buf != oclb.lmbuf) ++ free (oclb.buf); + } + + #ifdef LOG_DEBUG_MASK |