diff options
author | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2012-01-19 16:53:50 +0000 |
---|---|---|
committer | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2012-01-19 16:53:50 +0000 |
commit | dcb445bcf3e9ec2efd56550263052aca70beb08e (patch) | |
tree | 9a0d2260f2bbfdc8a6aa561c138baca1a58f8228 /scheduler/log.c | |
parent | 9c80ffa289171a48b10cbda2098289ed0c7b96cc (diff) | |
download | cups-dcb445bcf3e9ec2efd56550263052aca70beb08e.tar.gz |
Merge changes from CUPS 1.6svn-r10188, including changes for <rdar://problem/10127258> CUPS 1.6: New printer/printing APIs
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@3618 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'scheduler/log.c')
-rw-r--r-- | scheduler/log.c | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/scheduler/log.c b/scheduler/log.c index ecabb7f46..21603c883 100644 --- a/scheduler/log.c +++ b/scheduler/log.c @@ -379,8 +379,24 @@ cupsdLogGSSMessage( minor_status_string = GSS_C_EMPTY_BUFFER; /* Minor status message */ int ret; /* Return value */ + char buffer[8192]; /* Buffer for vsnprintf */ + if (strchr(message, '%')) + { + /* + * Format the message string... + */ + + va_list ap; /* Pointer to arguments */ + + va_start(ap, message); + vsnprintf(buffer, sizeof(buffer), message, ap); + va_end(ap); + + message = buffer; + } + msg_ctx = 0; err_major_status = gss_display_status(&err_minor_status, major_status, @@ -414,7 +430,7 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */ const char *message, /* I - Printf-style message string */ ...) /* I - Additional arguments as needed */ { - va_list ap; /* Argument pointer */ + va_list ap, ap2; /* Argument pointers */ char jobmsg[1024]; /* Format string for job message */ int status; /* Formatting status */ @@ -435,19 +451,27 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */ * Format and write the log message... */ - snprintf(jobmsg, sizeof(jobmsg), "[Job %d] %s", job->id, message); + if (job) + snprintf(jobmsg, sizeof(jobmsg), "[Job %d] %s", job->id, message); + else + strlcpy(jobmsg, message, sizeof(jobmsg)); + + va_start(ap, message); do { - va_start(ap, message); - status = format_log_line(jobmsg, ap); - va_end(ap); + va_copy(ap2, ap); + status = format_log_line(jobmsg, ap2); + va_end(ap2); } while (status == 0); + va_end(ap); + if (status > 0) { - if ((level > LogLevel || + if (job && + (level > LogLevel || (level == CUPSD_LOG_INFO && LogLevel < CUPSD_LOG_DEBUG)) && LogDebugHistory > 0) { @@ -508,7 +532,7 @@ cupsdLogMessage(int level, /* I - Log level */ const char *message, /* I - printf-style message string */ ...) /* I - Additional args as needed */ { - va_list ap; /* Argument pointer */ + va_list ap, ap2; /* Argument pointers */ int status; /* Formatting status */ @@ -533,14 +557,18 @@ cupsdLogMessage(int level, /* I - Log level */ * Format and write the log message... */ + va_start(ap, message); + do { - va_start(ap, message); - status = format_log_line(message, ap); - va_end(ap); + va_copy(ap2, ap); + status = format_log_line(message, ap2); + va_end(ap2); } while (status == 0); + va_end(ap); + if (status > 0) return (cupsdWriteErrorLog(level, log_line)); else |