/*
- * "$Id: job.c 7005 2007-10-01 23:45:48Z mike $"
+ * "$Id: job.c 7682 2008-06-21 00:06:02Z mike $"
*
* Job management routines for the Common UNIX Printing System (CUPS).
*
* cancel the job...
*/
- cupsdLogMessage(CUPSD_LOG_WARN,
- "[Job %d] Printer/class %s has gone away; canceling job!",
- job->id, job->dest);
+ cupsdLogJob(job, CUPSD_LOG_WARN,
+ "Printer/class %s has gone away; canceling job!",
+ job->dest);
cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
"Job canceled because the destination printer/class has "
ipp_attribute_t *attr; /* job-hold-until attribute */
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] File %d is complete.",
- job->id, job->current_file - 1);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "File %d is complete.",
+ job->current_file - 1);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] cupsdFinishJob: job->status is %d",
- job->id, job->status);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "cupsdFinishJob: job->status is %d",
+ job->status);
if (job->status_buffer &&
(job->status < 0 || job->current_file >= job->num_files))
cupsdRemoveSelect(job->status_buffer->fd);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] cupsdFinishJob: Closing status pipes [ %d %d ]...",
- job->id, job->status_pipes[0], job->status_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "cupsdFinishJob: Closing status pipes [ %d %d ]...",
+ job->status_pipes[0], job->status_pipes[1]);
cupsdClosePipe(job->status_pipes);
cupsdStatBufDelete(job->status_buffer);
else
exit_code = job->status;
- cupsdLogMessage(CUPSD_LOG_INFO, "[Job %d] Backend returned status %d (%s)",
- job->id, exit_code,
- exit_code == CUPS_BACKEND_FAILED ? "failed" :
- exit_code == CUPS_BACKEND_AUTH_REQUIRED ?
- "authentication required" :
- exit_code == CUPS_BACKEND_HOLD ? "hold job" :
- exit_code == CUPS_BACKEND_STOP ? "stop printer" :
- exit_code == CUPS_BACKEND_CANCEL ? "cancel job" :
- exit_code < 0 ? "crashed" : "unknown");
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Backend returned status %d (%s)",
+ exit_code,
+ exit_code == CUPS_BACKEND_FAILED ? "failed" :
+ exit_code == CUPS_BACKEND_AUTH_REQUIRED ?
+ "authentication required" :
+ exit_code == CUPS_BACKEND_HOLD ? "hold job" :
+ exit_code == CUPS_BACKEND_STOP ? "stop printer" :
+ exit_code == CUPS_BACKEND_CANCEL ? "cancel job" :
+ exit_code < 0 ? "crashed" : "unknown");
/*
* Do what needs to be done...
* Too many tries...
*/
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Canceling job since it could not be "
- "sent after %d tries.",
- job->id, JobRetryLimit);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Canceling job since it could not be "
+ "sent after %d tries.",
+ JobRetryLimit);
cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
}
* Filter had errors; stop job...
*/
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Job stopped due to filter errors.", job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Job stopped due to filter errors.");
cupsdStopJob(job, 1);
job->dirty = 1;
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
* Close out this job...
*/
- cupsdLogMessage(CUPSD_LOG_INFO, "[Job %d] Completed successfully.",
- job->id);
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Completed successfully.");
cupsdCancelJob(job, 0, IPP_JOB_COMPLETED);
cupsdCheckJobs();
}
if ((job->attrs = ippNew()) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Ran out of memory for job attributes!", job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Ran out of memory for job attributes!");
return;
}
* Load job attributes...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Loading attributes...", job->id);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "Loading attributes...");
snprintf(jobfile, sizeof(jobfile), "%s/c%05d", RequestRoot, job->id);
if ((fp = cupsFileOpen(jobfile, "r")) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to open job control file \"%s\" - %s!",
- job->id, jobfile, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to open job control file \"%s\" - %s!",
+ jobfile, strerror(errno));
ippDelete(job->attrs);
job->attrs = NULL;
return;
if (ippReadIO(fp, (ipp_iocb_t)cupsFileRead, 1, NULL, job->attrs) != IPP_DATA)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to read job control file \"%s\"!",
- job->id, jobfile);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to read job control file \"%s\"!",
+ jobfile);
cupsFileClose(fp);
ippDelete(job->attrs);
job->attrs = NULL;
if ((job->state = ippFindAttribute(job->attrs, "job-state",
IPP_TAG_ENUM)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad job-state attribute in "
- "control file!",
- job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Missing or bad job-state attribute in control file!");
ippDelete(job->attrs);
job->attrs = NULL;
unlink(jobfile);
if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
IPP_TAG_URI)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] No job-printer-uri attribute in control file!",
- job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "No job-printer-uri attribute in control file!");
ippDelete(job->attrs);
job->attrs = NULL;
unlink(jobfile);
if ((dest = cupsdValidateDest(attr->values[0].string.text, &(job->dtype),
&destptr)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to queue job for destination \"%s\"!",
- job->id, attr->values[0].string.text);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to queue job for destination \"%s\"!",
+ attr->values[0].string.text);
ippDelete(job->attrs);
job->attrs = NULL;
unlink(jobfile);
}
else if ((destptr = cupsdFindDest(job->dest)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to queue job for destination \"%s\"!",
- job->id, job->dest);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to queue job for destination \"%s\"!", job->dest);
ippDelete(job->attrs);
job->attrs = NULL;
unlink(jobfile);
if ((attr = ippFindAttribute(job->attrs, "job-priority",
IPP_TAG_INTEGER)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad job-priority attribute in "
- "control file!", job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Missing or bad job-priority attribute in control file!");
ippDelete(job->attrs);
job->attrs = NULL;
unlink(jobfile);
if ((attr = ippFindAttribute(job->attrs, "job-originating-user-name",
IPP_TAG_NAME)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad job-originating-user-name "
- "attribute in control file!", job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Missing or bad job-originating-user-name attribute in "
+ "control file!");
ippDelete(job->attrs);
job->attrs = NULL;
unlink(jobfile);
if (access(jobfile, 0))
break;
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Job %d] Auto-typing document file \"%s\"...",
- job->id, jobfile);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Auto-typing document file \"%s\"...", jobfile);
if (fileid > job->num_files)
{
if (!compressions || !filetypes)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Ran out of memory for job file types!",
- job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Ran out of memory for job file types!");
return;
}
if ((fp = cupsFileOpen(filename, "w")) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to create job control file \"%s\" - %s.",
- job->id, filename, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to create job control file \"%s\" - %s.",
+ filename, strerror(errno));
return;
}
if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL,
job->attrs) != IPP_DATA)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to write job control file!", job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to write job control file!");
cupsFileClose(fp);
int i; /* Looping var */
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] cupsdStopJob: force = %d", job->id, force);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "cupsdStopJob: force = %d", force);
if (job->state_value != IPP_JOB_PROCESSING)
return;
cupsdDestroyProfile(job->profile);
job->profile = NULL;
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] Closing print pipes [ %d %d ]...",
- job->id, job->print_pipes[0], job->print_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "Closing print pipes [ %d %d ]...",
+ job->print_pipes[0], job->print_pipes[1]);
cupsdClosePipe(job->print_pipes);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] Closing back pipes [ %d %d ]...",
- job->id, job->back_pipes[0], job->back_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "Closing back pipes [ %d %d ]...",
+ job->back_pipes[0], job->back_pipes[1]);
cupsdClosePipe(job->back_pipes);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] Closing side pipes [ %d %d ]...",
- job->id, job->side_pipes[0], job->side_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "Closing side pipes [ %d %d ]...",
+ job->side_pipes[0], job->side_pipes[1]);
cupsdClosePipe(job->side_pipes);
cupsdRemoveSelect(job->status_buffer->fd);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] Closing status pipes [ %d %d ]...", job->id,
- job->status_pipes[0], job->status_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "Closing status pipes [ %d %d ]...",
+ job->status_pipes[0], job->status_pipes[1]);
cupsdClosePipe(job->status_pipes);
cupsdStatBufDelete(job->status_buffer);
if (!job)
{
cupsdLogMessage(CUPSD_LOG_EMERG,
- "[Job %d] Unable to allocate memory for job!", jobid);
+ "[Job %d] Unable to allocate memory for job!", jobid);
break;
}
job->status_pipes[0] = -1;
job->status_pipes[1] = -1;
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Loading from cache...", job->id);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "Loading from cache...");
}
else if (!job)
{
job->id);
if (access(jobfile, 0))
{
- cupsdLogMessage(CUPSD_LOG_INFO,
- "[Job %d] Data files have gone away!", job->id);
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Data files have gone away!");
job->num_files = 0;
continue;
}
if (!job->filetypes || !job->compressions)
{
- cupsdLogMessage(CUPSD_LOG_EMERG,
- "[Job %d] Unable to allocate memory for %d files!",
- job->id, job->num_files);
+ cupsdLogJob(job, CUPSD_LOG_EMERG,
+ "Unable to allocate memory for %d files!",
+ job->num_files);
break;
}
}
* If the original MIME type is unknown, auto-type it!
*/
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unknown MIME type %s/%s for file %d!",
- job->id, super, type, number + 1);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unknown MIME type %s/%s for file %d!",
+ super, type, number + 1);
snprintf(jobfile, sizeof(jobfile), "%s/d%05d-%03d", RequestRoot,
job->id, number + 1);
static int optlength = 0; /* Length of option buffer */
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] start_job: file = %d/%d",
- job->id, job->current_file, job->num_files);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: file = %d/%d",
+ job->current_file, job->num_files);
if (job->num_files == 0)
{
- cupsdLogMessage(CUPSD_LOG_ERROR, "[Job %d] No files, canceling job!",
- job->id);
-
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "No files, canceling job!");
cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
return;
}
* filtering...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Job %d] Sending job to queue tagged as raw...", job->id);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "Sending job to queue tagged as raw...");
filters = NULL;
}
if (!filters)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to convert file %d to printable format!",
- job->current_file, job->id);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to convert file %d to printable format!",
+ job->current_file);
cupsdLogMessage(CUPSD_LOG_INFO,
"Hint: Do you have Ghostscript installed?");
cupsArrayDelete(filters);
- cupsdLogMessage(CUPSD_LOG_INFO,
- "[Job %d] Holding because filter limit has been reached.",
- job->id);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: file=%d, cost=%d, level=%d, limit=%d",
- job->id, job->current_file, job->cost, FilterLevel,
- FilterLimit);
+ cupsdLogJob(job, CUPSD_LOG_INFO,
+ "Holding because filter limit has been reached.");
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: file=%d, cost=%d, level=%d, limit=%d",
+ job->current_file, job->cost, FilterLevel,
+ FilterLimit);
return;
}
if (!cupsArrayInsert(filters, &gziptoany_filter))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to add decompression filter - %s",
- job->id, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to add decompression filter - %s", strerror(errno));
cupsArrayDelete(filters);
if (!cupsArrayAdd(filters, &port_monitor))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to add port monitor - %s",
- job->id, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to add port monitor - %s", strerror(errno));
cupsArrayDelete(filters);
if (cupsArrayCount(filters) > MAX_FILTERS)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Too many filters (%d > %d), unable to print!",
- job->id, cupsArrayCount(filters), MAX_FILTERS);
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Too many filters (%d > %d), unable to print!",
+ cupsArrayCount(filters), MAX_FILTERS);
cupsArrayDelete(filters);
cupsdCancelJob(job, 0, IPP_JOB_STOPPED);
if (job->job_sheets == NULL)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] No job-sheets attribute.",
- job->id);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "No job-sheets attribute.");
if ((job->job_sheets =
ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_ZERO)) != NULL)
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Job %d] ... but someone added one without setting "
- "job_sheets!", job->id);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "... but someone added one without setting job_sheets!");
}
else if (job->job_sheets->num_values == 1)
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] job-sheets=%s", job->id,
- job->job_sheets->values[0].string.text);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "job-sheets=%s",
+ job->job_sheets->values[0].string.text);
else
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] job-sheets=%s,%s", job->id,
- job->job_sheets->values[0].string.text,
- job->job_sheets->values[1].string.text);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "job-sheets=%s,%s",
+ job->job_sheets->values[0].string.text,
+ job->job_sheets->values[1].string.text);
if (printer->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT))
banner_page = 0;
else
banner_page = 0;
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] banner_page = %d", job->id,
- banner_page);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "banner_page = %d", banner_page);
/*
* Building the options string is harder than it needs to be, but
if (optptr == NULL)
{
- cupsdLogMessage(CUPSD_LOG_CRIT,
- "[Job %d] Unable to allocate %d bytes for option buffer!",
- job->id, i);
+ cupsdLogJob(job, CUPSD_LOG_CRIT,
+ "Unable to allocate %d bytes for option buffer!", i);
cupsArrayDelete(filters);
}
for (i = 0; argv[i]; i ++)
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Job %d] argv[%d]=\"%s\"", job->id, i, argv[i]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "argv[%d]=\"%s\"", i, argv[i]);
/*
* Create environment variable strings for the filters...
for (i = 0; i < envc; i ++)
if (!strncmp(envp[i], "AUTH_", 5))
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] envp[%d]=\"AUTH_%c****\"",
- job->id, i, envp[i][5]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"AUTH_%c****\"", i,
+ envp[i][5]);
else if (strncmp(envp[i], "DEVICE_URI=", 11))
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] envp[%d]=\"%s\"",
- job->id, i, envp[i]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"%s\"", i, envp[i]);
else
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] envp[%d]=\"DEVICE_URI=%s\"",
- job->id, i, sani_uri);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"DEVICE_URI=%s\"", i,
+ sani_uri);
if (printer->remote)
job->current_file = job->num_files;
{
if (cupsdOpenPipe(job->status_pipes))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to create job status pipes - %s.",
- job->id, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to create job status pipes - %s.", strerror(errno));
snprintf(printer->state_message, sizeof(printer->state_message),
"Unable to create status pipes - %s.", strerror(errno));
goto abort_job;
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: status_pipes = [ %d %d ]",
- job->id, job->status_pipes[0], job->status_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: status_pipes = [ %d %d ]",
+ job->status_pipes[0], job->status_pipes[1]);
- job->status_buffer = cupsdStatBufNew(job->status_pipes[0], "[Job %d]",
- job->id);
+ job->status_buffer = cupsdStatBufNew(job->status_pipes[0], NULL);
job->status_level = CUPSD_LOG_INFO;
}
{
if (cupsdOpenPipe(filterfds[slot]))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to create job filter pipes - %s.",
- job->id, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to create job filter pipes - %s.", strerror(errno));
snprintf(printer->state_message, sizeof(printer->state_message),
"Unable to create filter pipes - %s.", strerror(errno));
cupsdAddPrinterHistory(printer);
{
if (cupsdOpenPipe(job->print_pipes))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to create job backend pipes - %s.",
- job->id, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to create job backend pipes - %s.",
+ strerror(errno));
snprintf(printer->state_message, sizeof(printer->state_message),
"Unable to create backend pipes - %s.", strerror(errno));
cupsdAddPrinterHistory(printer);
if (job->print_pipes[1] < 0)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to open output file \"%s\" - %s.",
- job->id, printer->device_uri, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to open output file \"%s\" - %s.",
+ printer->device_uri, strerror(errno));
snprintf(printer->state_message, sizeof(printer->state_message),
"Unable to open output file \"%s\" - %s.",
printer->device_uri, strerror(errno));
}
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: print_pipes = [ %d %d ]",
- job->id, job->print_pipes[0], job->print_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: print_pipes = [ %d %d ]",
+ job->print_pipes[0], job->print_pipes[1]);
}
filterfds[slot][0] = job->print_pipes[0];
filterfds[slot][1] = job->print_pipes[1];
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] start_job: filter=\"%s\"",
- job->id, command);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: filterfds[%d]=[ %d %d ]",
- job->id, slot, filterfds[slot][0], filterfds[slot][1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: filter=\"%s\"", command);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: filterfds[%d]=[ %d %d ]",
+ slot, filterfds[slot][0], filterfds[slot][1]);
pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
filterfds[slot][1], job->status_pipes[1],
job->back_pipes[0], job->side_pipes[0], 0,
job->profile, job->filters + i);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing filter pipes for slot %d "
- "[ %d %d ]...",
- job->id, !slot, filterfds[!slot][0], filterfds[!slot][1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing filter pipes for slot %d [ %d %d ]...",
+ !slot, filterfds[!slot][0], filterfds[!slot][1]);
cupsdClosePipe(filterfds[!slot]);
if (pid == 0)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to start filter \"%s\" - %s.",
- job->id, filter->filter, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to start filter \"%s\" - %s.",
+ filter->filter, strerror(errno));
snprintf(printer->state_message, sizeof(printer->state_message),
"Unable to start filter \"%s\" - %s.",
filter->filter, strerror(errno));
goto abort_job;
}
- cupsdLogMessage(CUPSD_LOG_INFO, "[Job %d] Started filter %s (PID %d)",
- job->id, command, pid);
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Started filter %s (PID %d)", command,
+ pid);
argv[6] = NULL;
slot = !slot;
}
cupsArrayDelete(filters);
+ filters = NULL;
/*
* Finally, pipe the final output into a backend process if needed...
filterfds[slot][0] = -1;
filterfds[slot][1] = -1;
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] start_job: backend=\"%s\"",
- job->id, command);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: filterfds[%d] = [ %d %d ]", job->id,
- slot, filterfds[slot][0], filterfds[slot][1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: backend=\"%s\"", command);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: filterfds[%d] = [ %d %d ]",
+ slot, filterfds[slot][0], filterfds[slot][1]);
pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
filterfds[slot][1], job->status_pipes[1],
if (pid == 0)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to start backend \"%s\" - %s.",
- job->id, method, strerror(errno));
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to start backend \"%s\" - %s.",
+ method, strerror(errno));
snprintf(printer->state_message, sizeof(printer->state_message),
"Unable to start backend \"%s\" - %s.", method,
strerror(errno));
}
else
{
- cupsdLogMessage(CUPSD_LOG_INFO, "[Job %d] Started backend %s (PID %d)",
- job->id, command, pid);
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Started backend %s (PID %d)",
+ command, pid);
}
}
if (job->current_file == job->num_files)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing print pipes [ %d %d ]...",
- job->id, job->print_pipes[0], job->print_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing print pipes [ %d %d ]...",
+ job->print_pipes[0], job->print_pipes[1]);
cupsdClosePipe(job->print_pipes);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing back pipes [ %d %d ]...",
- job->id, job->back_pipes[0], job->back_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing back pipes [ %d %d ]...",
+ job->back_pipes[0], job->back_pipes[1]);
cupsdClosePipe(job->back_pipes);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing side pipes [ %d %d ]...",
- job->id, job->side_pipes[0], job->side_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing side pipes [ %d %d ]...",
+ job->side_pipes[0], job->side_pipes[1]);
cupsdClosePipe(job->side_pipes);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing status output pipe %d...",
- job->id, job->status_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing status output pipe %d...",
+ job->status_pipes[1]);
close(job->status_pipes[1]);
job->status_pipes[1] = -1;
if (job->current_file == job->num_files)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing print pipes [ %d %d ]...",
- job->id, job->print_pipes[0], job->print_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing print pipes [ %d %d ]...",
+ job->print_pipes[0], job->print_pipes[1]);
cupsdClosePipe(job->print_pipes);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing status output pipe %d...",
- job->id, job->status_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing status output pipe %d...",
+ job->status_pipes[1]);
close(job->status_pipes[1]);
job->status_pipes[1] = -1;
}
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing filter pipes for slot %d "
- "[ %d %d ]...",
- job->id, slot, filterfds[slot][0], filterfds[slot][1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing filter pipes for slot %d [ %d %d ]...",
+ slot, filterfds[slot][0], filterfds[slot][1]);
cupsdClosePipe(filterfds[slot]);
if (printer->remote && job->num_files > 1)
for (slot = 0; slot < 2; slot ++)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing filter pipes for slot %d "
- "[ %d %d ]...",
- job->id, slot, filterfds[slot][0], filterfds[slot][1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing filter pipes for slot %d [ %d %d ]...",
+ slot, filterfds[slot][0], filterfds[slot][1]);
cupsdClosePipe(filterfds[slot]);
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] start_job: Closing status pipes [ %d %d ]...",
- job->id, job->status_pipes[0], job->status_pipes[1]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "start_job: Closing status pipes [ %d %d ]...",
+ job->status_pipes[0], job->status_pipes[1]);
cupsdClosePipe(job->status_pipes);
cupsdStatBufDelete(job->status_buffer);
if (!job->attrs)
return;
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Unloading...", job->id);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "Unloading...");
ippDelete(job->attrs);
* job sheet count...
*/
- if (LogLevel >= CUPSD_LOG_DEBUG)
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] PAGE: %s", job->id, message);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "PAGE: %s", message);
if (job->sheets)
{
* Quota limit exceeded, cancel job in progress immediately...
*/
- cupsdLogMessage(CUPSD_LOG_INFO,
- "[Job %d] Canceled because pages exceed user %s "
- "quota limit on printer %s (%s).",
- job->id, job->username, job->printer->name,
- job->printer->info);
+ cupsdLogJob(job, CUPSD_LOG_INFO,
+ "Canceled because pages exceed user %s "
+ "quota limit on printer %s (%s).",
+ job->username, job->printer->name,
+ job->printer->info);
cupsdCancelJob(job, 1, IPP_JOB_CANCELED);
return;
}
else if (loglevel == CUPSD_LOG_STATE)
{
- if (LogLevel >= CUPSD_LOG_DEBUG)
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] STATE: %s", job->id,
- message);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "STATE: %s", message);
if (!strcmp(message, "paused"))
{
const char *attr; /* Attribute */
- if (LogLevel >= CUPSD_LOG_DEBUG)
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] ATTR: %s", job->id, message);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "ATTR: %s", message);
num_attrs = cupsParseOptions(message, 0, &attrs);
event |= CUPSD_EVENT_PRINTER_STATE;
}
+ if ((attr = cupsGetOption("marker-message", num_attrs, attrs)) != NULL)
+ {
+ cupsdSetPrinterAttr(job->printer, "marker-message", (char *)attr);
+ job->printer->marker_time = time(NULL);
+ event |= CUPSD_EVENT_PRINTER_STATE;
+ }
+
if ((attr = cupsGetOption("marker-names", num_attrs, attrs)) != NULL)
{
cupsdSetPrinterAttr(job->printer, "marker-names", (char *)attr);
cups_option_t *keywords; /* Keywords */
- if (LogLevel >= CUPSD_LOG_DEBUG)
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] PPD: %s", job->id, message);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "PPD: %s", message);
num_keywords = cupsParseOptions(message, 0, &keywords);
event |= CUPSD_EVENT_PRINTER_STATE;
}
#endif /* __APPLE__ */
- else if (loglevel <= job->status_level)
+ else
{
- /*
- * Some message to show in the printer-state-message attribute...
- */
+ cupsdLogJob(job, loglevel, "%s", message);
- if (loglevel != CUPSD_LOG_NOTICE)
- job->status_level = loglevel;
+ if (loglevel <= job->status_level)
+ {
+ /*
+ * Some messages show in the printer-state-message attribute...
+ */
- strlcpy(job->printer->state_message, message,
- sizeof(job->printer->state_message));
- cupsdAddPrinterHistory(job->printer);
+ if (loglevel != CUPSD_LOG_NOTICE)
+ job->status_level = loglevel;
- if (loglevel <= CUPSD_LOG_INFO)
- event |= CUPSD_EVENT_PRINTER_STATE;
+ strlcpy(job->printer->state_message, message,
+ sizeof(job->printer->state_message));
+ cupsdAddPrinterHistory(job->printer);
- update_job_attrs(job);
+ if (loglevel <= CUPSD_LOG_INFO)
+ event |= CUPSD_EVENT_PRINTER_STATE;
+
+ update_job_attrs(job);
+ }
}
if (!strchr(job->status_buffer->buffer, '\n'))
/*
- * End of "$Id: job.c 7005 2007-10-01 23:45:48Z mike $".
+ * End of "$Id: job.c 7682 2008-06-21 00:06:02Z mike $".
*/