summaryrefslogtreecommitdiff
path: root/scheduler/log.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2012-01-19 16:53:50 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2012-01-19 16:53:50 +0000
commitdcb445bcf3e9ec2efd56550263052aca70beb08e (patch)
tree9a0d2260f2bbfdc8a6aa561c138baca1a58f8228 /scheduler/log.c
parent9c80ffa289171a48b10cbda2098289ed0c7b96cc (diff)
downloadcups-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.c48
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