summaryrefslogtreecommitdiff
path: root/scheduler/log.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2015-07-30 15:38:57 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2015-07-30 15:38:57 +0000
commit7c91f59a7fb07eb63582580bf306f3b95a261415 (patch)
treee1ef0d5a37d7fd468390272bf4f678b07f9a30d4 /scheduler/log.c
parentbbbdd141004e7389355ea3f3168dc8c9a98b33ea (diff)
downloadcups-7c91f59a7fb07eb63582580bf306f3b95a261415.tar.gz
More journald/asl logging bug fixes (STR #4661)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12816 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'scheduler/log.c')
-rw-r--r--scheduler/log.c51
1 files changed, 30 insertions, 21 deletions
diff --git a/scheduler/log.c b/scheduler/log.c
index 19e850c96..cef021941 100644
--- a/scheduler/log.c
+++ b/scheduler/log.c
@@ -595,7 +595,7 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
asl_object_t m; /* Log message */
char job_id[32], /* job-id string */
completed[32]; /* job-impressions-completed string */
- cupsd_printer_t *printer = job->printer ? job->printer : cupsdFindDest(job->dest);
+ cupsd_printer_t *printer = job ? (job->printer ? job->printer : (job->dest ? cupsdFindDest(job->dest) : NULL)) : NULL;
static const char * const job_states[] =
{ /* job-state strings */
"Pending",
@@ -607,19 +607,23 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
"Completed"
};
- snprintf(job_id, sizeof(job_id), "%d", job->id);
-
m = asl_new(ASL_TYPE_MSG);
asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
- asl_set(m, PWG_Event, "JobStateChanged");
- asl_set(m, PWG_ServiceURI, printer->uri);
- asl_set(m, PWG_JobID, job_id);
- asl_set(m, PWG_JobState, job_states[job->state_value - IPP_JSTATE_PENDING]);
-
- if (job->impressions)
+ if (printer)
+ asl_set(m, PWG_ServiceURI, printer->uri);
+ if (job)
{
- snprintf(completed, sizeof(completed), "%d", ippGetInteger(job->impressions, 0));
- asl_set(m, PWG_JobImpressionsCompleted, completed);
+ snprintf(job_id, sizeof(job_id), "%d", job->id);
+
+ asl_set(m, PWG_Event, "JobStateChanged");
+ asl_set(m, PWG_JobID, job_id);
+ asl_set(m, PWG_JobState, job_states[job->state_value - IPP_JSTATE_PENDING]);
+
+ if (job->impressions)
+ {
+ snprintf(completed, sizeof(completed), "%d", ippGetInteger(job->impressions, 0));
+ asl_set(m, PWG_JobImpressionsCompleted, completed);
+ }
}
va_start(ap, message);
@@ -633,7 +637,7 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
if (!strcmp(ErrorLog, "syslog"))
{
- cupsd_printer_t *printer = job->printer ? job->printer : cupsdFindDest(job->dest);
+ cupsd_printer_t *printer = job->printer ? job->printer : job->dest ? cupsdFindDest(job->dest) : NULL;
static const char * const job_states[] =
{ /* job-state strings */
"Pending",
@@ -657,17 +661,22 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
va_end(ap);
- sd_journal_send("MESSAGE=%s", log_line,
- "PRIORITY=%i", log_levels[level],
- PWG_Event"=JobStateChanged",
- PWG_ServiceURI"=%s", printer->uri,
- PWG_JobID"=%d", job->id,
- PWG_JobState"=%s", job_states[job->state_value - IPP_JSTATE_PENDING],
- PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
- NULL);
+ if (job)
+ sd_journal_send("MESSAGE=%s", log_line,
+ "PRIORITY=%i", log_levels[level],
+ PWG_Event"=JobStateChanged",
+ PWG_ServiceURI"=%s", printer ? printer->uri : "",
+ PWG_JobID"=%d", job->id,
+ PWG_JobState"=%s", job_states[job->state_value - IPP_JSTATE_PENDING],
+ PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
+ NULL);
+ else
+ sd_journal_send("MESSAGE=%s", log_line,
+ "PRIORITY=%i", log_levels[level],
+ NULL);
+
return (1);
}
-
#endif /* HAVE_ASL_H */
/*