summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2007-03-14 00:26:57 +0000
committerKen Raeburn <raeburn@mit.edu>2007-03-14 00:26:57 +0000
commit47c316a300fd057dd220552fa159d002ab98a3fe (patch)
tree16ba7f455195aaa9edf117a1347bb4c3d449a3d4 /src
parentf0e522c78d5f23d3e470502a814de773c779a69f (diff)
* sendto_kdc.c (default_debug_handler): If writing to a log file, keep
it open and unbuffered instead of always opening and closing. When the format string has characters to be copied literally to the output, write them all at once instead of individually. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19222 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/os/sendto_kdc.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/lib/krb5/os/sendto_kdc.c b/src/lib/krb5/os/sendto_kdc.c
index 764aafe18..78bb419bd 100644
--- a/src/lib/krb5/os/sendto_kdc.c
+++ b/src/lib/krb5/os/sendto_kdc.c
@@ -66,12 +66,14 @@ int krb5int_debug_sendto_kdc = 0;
static void default_debug_handler (const void *data, size_t len)
{
#if 0
- FILE *logfile;
- logfile = fopen("/tmp/sendto_kdc.log", "a");
- if (logfile == NULL)
- return;
+ static FILE *logfile;
+ if (logfile == NULL) {
+ logfile = fopen("/tmp/sendto_kdc.log", "a");
+ if (logfile == NULL)
+ return;
+ setbuf(logfile, NULL);
+ }
fwrite(data, 1, len, logfile);
- fclose(logfile);
#else
fwrite(data, 1, len, stderr);
/* stderr is unbuffered */
@@ -124,9 +126,21 @@ krb5int_debug_fprint (const char *fmt, ...)
for (; *fmt; fmt++) {
if (*fmt != '%') {
- /* Possible optimization: Look for % and print all chars
- up to it in one call. */
- put(fmt, 1);
+ const char *fmt2;
+ size_t len;
+ for (fmt2 = fmt+1; *fmt2; fmt2++)
+ if (*fmt2 == '%')
+ break;
+ len = fmt2 - fmt;
+ if (0) {
+ FILE *f = fopen("/dev/pts/0", "w+");
+ if (f) {
+ fprintf(f, "krb5int_debug_fprint: format <%s> fmt2 <%s> put %lu next <%s>\n",
+ fmt, fmt2, (unsigned long) len, fmt+len-1);
+ }
+ }
+ put(fmt, len);
+ fmt += len - 1; /* then fmt++ in loop header */
continue;
}
/* After this, always processing a '%' sequence. */