# DO NOT DELETE THIS LINE -- make depend depends on it.
ipp.o: backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ipp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-ipp.o: ../cups/array.h ../cups/string-private.h ../config.h
+ipp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+ipp.o: ../cups/language.h ../cups/string-private.h ../config.h
ipp.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ipp.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ipp.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
lpd.o: ../cups/http-private.h ../config.h ../cups/http.h
lpd.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
lpd.o: backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-lpd.o: ../cups/array.h ../cups/string-private.h ../cups/debug-private.h
+lpd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpd.o: ../cups/language.h ../cups/string-private.h ../cups/debug-private.h
lpd.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
lpd.o: ../cups/pwg-private.h ../cups/http-private.h
lpd.o: ../cups/language-private.h ../cups/transcode.h
lpd.o: ../cups/sidechannel.h
dnssd.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
dnssd.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-dnssd.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+dnssd.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
dnssd.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
dnssd.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
dnssd.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
dnssd.o: ../cups/transcode.h ../cups/thread-private.h ../cups/snmp-private.h
dnssd.o: ../cups/backend.h ../cups/sidechannel.h ../cups/array.h
pap.o: ../config.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-pap.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+pap.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pap.o: ../cups/backend.h ../cups/sidechannel.h ../cups/language-private.h
pap.o: ../cups/transcode.h
parallel.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
parallel.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-parallel.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+parallel.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
parallel.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
parallel.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
parallel.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
parallel.o: ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
serial.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
serial.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-serial.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+serial.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
serial.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
serial.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
serial.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
serial.o: ../cups/backend.h ../cups/sidechannel.h
snmp.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
snmp.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-snmp.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+snmp.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
snmp.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
snmp.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
snmp.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
socket.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
socket.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
socket.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-socket.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+socket.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
socket.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
socket.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
socket.o: ../cups/language-private.h ../cups/transcode.h
socket.o: ../cups/sidechannel.h
test1284.o: ../cups/string-private.h ../config.h ieee1284.c backend-private.h
test1284.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-test1284.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-test1284.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+test1284.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+test1284.o: ../cups/language.h ../cups/string-private.h
test1284.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
test1284.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
test1284.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
test1284.o: ../cups/sidechannel.h
testbackend.o: ../cups/string-private.h ../config.h ../cups/cups.h
testbackend.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testbackend.o: ../cups/http.h ../cups/language.h ../cups/array.h
+testbackend.o: ../cups/http.h ../cups/array.h ../cups/language.h
testbackend.o: ../cups/sidechannel.h
testsupplies.o: backend-private.h ../cups/cups-private.h ../cups/cups.h
testsupplies.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testsupplies.o: ../cups/http.h ../cups/language.h ../cups/array.h
+testsupplies.o: ../cups/http.h ../cups/array.h ../cups/language.h
testsupplies.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
testsupplies.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
testsupplies.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
testsupplies.o: ../cups/thread-private.h ../cups/snmp-private.h
testsupplies.o: ../cups/backend.h ../cups/sidechannel.h
usb.o: backend-private.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-usb.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-usb.o: ../cups/array.h ../cups/string-private.h ../config.h
+usb.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+usb.o: ../cups/language.h ../cups/string-private.h ../config.h
usb.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
usb.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
usb.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
*
* main() - Send a file to the printer or server.
* cancel_job() - Cancel a print job.
- * check_printer_state() - Check the printer state...
+ * check_printer_state() - Check the printer state.
* compress_files() - Compress print files...
+ * monitor_printer() - Monitor the printer state...
* password_cb() - Disable the password prompt for
* cupsDoFileRequest().
* report_attr() - Report an IPP attribute value.
#include <sys/stat.h>
#include <sys/wait.h>
+
+/*
+ * Types...
+ */
+
+typedef struct _cups_monitor_s /**** Monitoring data ****/
+{
+ const char *uri, /* Printer URI */
+ *hostname, /* Hostname */
+ *user, /* Username */
+ *resource; /* Resource path */
+ int port, /* Port number */
+ version, /* IPP version */
+ job_id; /* Job ID for submitted job */
+ http_encryption_t encryption; /* Use encryption? */
+ ipp_jstate_t job_state; /* Current job state */
+ ipp_pstate_t printer_state; /* Current printer state */
+} _cups_monitor_t;
+
+
/*
* Globals...
*/
-static char *password = NULL; /* Password for device URI */
-static int password_tries = 0; /* Password tries */
static const char *auth_info_required = "none";
/* New auth-info-required value */
+static const char * const jattrs[] = /* Job attributes we want */
+{
+ "job-media-sheets-completed",
+ "job-state",
+ "job-state-reasons"
+};
static int job_canceled = 0; /* Job cancelled? */
+static char *password = NULL; /* Password for device URI */
+static int password_tries = 0; /* Password tries */
+static const char * const pattrs[] = /* Printer attributes we want */
+{
+ "copies-supported",
+ "cups-version",
+ "document-format-supported",
+ "marker-colors",
+ "marker-high-levels",
+ "marker-levels",
+ "marker-low-levels",
+ "marker-message",
+ "marker-names",
+ "marker-types",
+ "media-col-supported",
+ "printer-alert",
+ "printer-alert-description",
+ "printer-is-accepting-jobs",
+ "printer-state",
+ "printer-state-message",
+ "printer-state-reasons",
+};
/*
* Local functions...
*/
-static void cancel_job(http_t *http, const char *uri, int id,
- const char *resource, const char *user, int version);
-static void check_printer_state(http_t *http, const char *uri,
- const char *resource, const char *user,
- int version, int job_id);
+static void cancel_job(http_t *http, const char *uri, int id,
+ const char *resource, const char *user,
+ int version);
+static ipp_pstate_t check_printer_state(http_t *http, const char *uri,
+ const char *resource,
+ const char *user, int version,
+ int job_id);
#ifdef HAVE_LIBZ
-static void compress_files(int num_files, char **files);
+static void compress_files(int num_files, char **files);
#endif /* HAVE_LIBZ */
-static const char *password_cb(const char *);
-static void report_attr(ipp_attribute_t *attr);
-static int report_printer_state(ipp_t *ipp, int job_id);
-static void sigterm_handler(int sig);
+static void *monitor_printer(_cups_monitor_t *monitor);
+static const char *password_cb(const char *);
+static void report_attr(ipp_attribute_t *attr);
+static int report_printer_state(ipp_t *ipp, int job_id);
+static void sigterm_handler(int sig);
/*
int compression, /* Do compression of the job data? */
waitjob, /* Wait for job complete? */
waitprinter; /* Wait for printer ready? */
+ _cups_monitor_t monitor; /* Monitoring data */
ipp_attribute_t *job_id_attr; /* job-id attribute */
int job_id; /* job-id value */
ipp_attribute_t *job_sheets; /* job-media-sheets-completed */
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
int version; /* IPP version */
- static const char * const pattrs[] =
- { /* Printer attributes we want */
- "copies-supported",
- "document-format-supported",
- "marker-colors",
- "marker-high-levels",
- "marker-levels",
- "marker-low-levels",
- "marker-message",
- "marker-names",
- "marker-types",
- "media-col-supported",
- "printer-is-accepting-jobs",
- "printer-state",
- "printer-state-message",
- "printer-state-reasons",
- };
- static const char * const jattrs[] =
- { /* Job attributes we want */
- "job-media-sheets-completed",
- "job-state"
- };
/*
send_options = !strcasecmp(final_content_type, "application/pdf") ||
!strcasecmp(final_content_type, "application/vnd.cups-pdf") ||
!strcasecmp(final_content_type, "image/jpeg") ||
- !strcasecmp(final_content_type, "image/png") ||
- !strcasecmp(final_content_type, "image/urf");
+ !strcasecmp(final_content_type, "image/png");
fputs("DEBUG: Sending stdin for job...\n", stderr);
}
if ((http = httpConnectEncrypt(hostname, port, cupsEncryption())) == NULL)
{
+#if 0 /* These need to go in here someplace when we see HTTP_PKI_ERROR or IPP_PKI_ERROR */
+ fputs("STATE: +cups-certificate-error\n", stderr);
+ fputs("STATE: -cups-certificate-error\n", stderr);
+#endif /* 0 */
+
int error = errno; /* Connection error */
if (job_canceled)
exit(CUPS_BACKEND_STOP);
}
- if ((supported = cupsDoRequest(http, request, resource)) == NULL)
- ipp_status = cupsLastError();
- else
- ipp_status = supported->request.status.status_code;
+ supported = cupsDoRequest(http, request, resource);
+ ipp_status = cupsLastError();
if (ipp_status > IPP_OK_CONFLICT)
{
+ fprintf(stderr, "DEBUG: Get-Printer-Attributes returned %s.\n",
+ ippErrorString(ipp_status));
+
if (ipp_status == IPP_PRINTER_BUSY ||
ipp_status == IPP_SERVICE_UNAVAILABLE)
{
}
else if (ipp_status == IPP_NOT_FOUND)
{
- _cupsLangPuts(stderr, _("ERROR: The printer URI is incorrect or no longer exists.\n"));
+ _cupsLangPuts(stderr,
+ _("ERROR: The printer URI is incorrect or no longer "
+ "exists.\n"));
if (supported)
ippDelete(supported);
else
copies_remaining = copies;
+ /*
+ * Start monitoring the printer in the background...
+ */
+
+ monitor.uri = uri;
+ monitor.hostname = hostname;
+ monitor.user = argv[2];
+ monitor.resource = resource;
+ monitor.port = port;
+ monitor.version = version;
+ monitor.job_id = 0;
+ monitor.encryption = cupsEncryption();
+ monitor.job_state = IPP_JOB_PENDING;
+ monitor.printer_state = IPP_PRINTER_IDLE;
+
+ _cupsThreadCreate((_cups_thread_func_t)monitor_printer, &monitor);
+
/*
* Then issue the print-job request...
*/
_pwg_media_t *found; /* PWG media */
- if ((found = _pwgMediaForPPD(keyword)) == NULL)
+ if ((found = _pwgMediaForPPD(keyword)) != NULL)
keyword = found->pwg;
- else if ((found = _pwgMediaForLegacy(keyword)) == NULL)
+ else if ((found = _pwgMediaForLegacy(keyword)) != NULL)
keyword = found->pwg;
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "media",
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-mode",
NULL, keyword);
+ if ((keyword = cupsGetOption("print-quality", num_options,
+ options)) != NULL)
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
+ atoi(keyword));
+ else if ((keyword = cupsGetOption("cupsPrintQuality", num_options,
+ options)) != NULL)
+ {
+ if (!strcasecmp(keyword, "draft"))
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
+ IPP_QUALITY_DRAFT);
+ else if (!strcasecmp(keyword, "normal"))
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
+ IPP_QUALITY_NORMAL);
+ else if (!strcasecmp(keyword, "high"))
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_ENUM, "print-quality",
+ IPP_QUALITY_HIGH);
+ }
+
if ((keyword = cupsGetOption("sides", num_options, options)) != NULL)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
- NULL, keyword);
-
+ NULL, keyword);
+ else if ((keyword = cupsGetOption("Duplex", num_options,
+ options)) != NULL)
+ {
+ if (!strcasecmp(keyword, "None"))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
+ NULL, "one-sided");
+ else if (!strcasecmp(keyword, "DuplexNoTumble"))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
+ NULL, "two-sided-long-edge");
+ if (!strcasecmp(keyword, "DuplexTumble"))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
+ NULL, "two-sided-short-edge");
+ }
+
_pwgDestroy(pwg);
}
}
else
{
- job_id = job_id_attr->values[0].integer;
+ monitor.job_id = job_id = job_id_attr->values[0].integer;
_cupsLangPrintf(stderr, _("NOTICE: Print file accepted - job ID %d.\n"),
job_id);
}
ippDelete(response);
+#if 0
/*
* Check the printer state and report it if necessary...
*/
check_printer_state(http, uri, resource, argv[2], version, job_id);
+#endif /* 0 */
/*
* Wait 1-10 seconds before polling again...
/*
- * 'check_printer_state()' - Check the printer state...
+ * 'check_printer_state()' - Check the printer state.
*/
-static void
+static ipp_pstate_t /* O - Current printer-state */
check_printer_state(
http_t *http, /* I - HTTP connection */
const char *uri, /* I - Printer URI */
const char *resource, /* I - Resource path */
const char *user, /* I - Username, if any */
int version, /* I - IPP version */
- int job_id) /* I - Current job ID */
+ int job_id)
{
- ipp_t *request, /* IPP request */
- *response; /* IPP response */
- static const char * const attrs[] = /* Attributes we want */
- {
- "marker-colors",
- "marker-levels",
- "marker-message",
- "marker-names",
- "marker-types",
- "printer-state-message",
- "printer-state-reasons"
- };
+ ipp_t *request, /* IPP request */
+ *response; /* IPP response */
+ ipp_attribute_t *attr; /* Attribute in response */
+ ipp_pstate_t printer_state = IPP_PRINTER_STOPPED;
+ /* Current printer-state */
/*
- * Check on the printer state...
+ * Send a Get-Printer-Attributes request and log the results...
*/
request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
request->request.op.version[1] = version % 10;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
- NULL, uri);
+ NULL, uri);
if (user && user[0])
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
- "requesting-user-name", NULL, user);
+ "requesting-user-name", NULL, user);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
- "requested-attributes",
- (int)(sizeof(attrs) / sizeof(attrs[0])), NULL, attrs);
-
- /*
- * Do the request...
- */
+ "requested-attributes",
+ (int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
if ((response = cupsDoRequest(http, request, resource)) != NULL)
{
report_printer_state(response, job_id);
+
+ if ((attr = ippFindAttribute(response, "printer-state",
+ IPP_TAG_ENUM)) != NULL)
+ printer_state = (ipp_pstate_t)attr->values[0].integer;
+
ippDelete(response);
}
+
+ /*
+ * Return the printer-state value...
+ */
+
+ return (printer_state);
}
#endif /* HAVE_LIBZ */
+/*
+ * 'monitor_printer()' - Monitor the printer state...
+ */
+
+static void * /* O - Thread exit code */
+monitor_printer(
+ _cups_monitor_t *monitor) /* I - Monitoring data */
+{
+ http_t *http; /* Connection to printer */
+ ipp_t *request, /* IPP request */
+ *response; /* IPP response */
+ ipp_attribute_t *attr; /* Attribute in response */
+ int delay, /* Current delay */
+ prev_delay, /* Previous delay */
+ temp_delay; /* Temporary delay value */
+
+
+ /*
+ * Make a copy of the printer connection...
+ */
+
+ http = _httpCreate(monitor->hostname, monitor->port, monitor->encryption);
+ cupsSetPasswordCB(password_cb);
+
+ /*
+ * Loop until the job is canceled, aborted, or completed.
+ */
+
+ delay = 1;
+ prev_delay = 0;
+
+ while (monitor->job_state < IPP_JOB_CANCELED && !job_canceled)
+ {
+ /*
+ * Reconnect to the printer...
+ */
+
+ if (!httpReconnect(http))
+ {
+ /*
+ * Connected, so check on the printer state...
+ */
+
+ monitor->printer_state = check_printer_state(http, monitor->uri,
+ monitor->resource,
+ monitor->user,
+ monitor->version,
+ monitor->job_id);
+
+ if (monitor->job_id > 0)
+ {
+ /*
+ * Check the status of the job itself...
+ */
+
+ request = ippNewRequest(IPP_GET_JOB_ATTRIBUTES);
+ request->request.op.version[0] = monitor->version / 10;
+ request->request.op.version[1] = monitor->version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, monitor->uri);
+ ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
+ monitor->job_id);
+
+ if (monitor->user && monitor->user[0])
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+ "requesting-user-name", NULL, monitor->user);
+
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
+ "requested-attributes",
+ (int)(sizeof(jattrs) / sizeof(jattrs[0])), NULL, jattrs);
+
+ /*
+ * Do the request...
+ */
+
+ response = cupsDoRequest(http, request, monitor->resource);
+
+ if ((attr = ippFindAttribute(response, "job-state",
+ IPP_TAG_ENUM)) != NULL)
+ monitor->job_state = (ipp_jstate_t)attr->values[0].integer;
+ else
+ monitor->job_state = IPP_JOB_COMPLETED;
+
+ ippDelete(response);
+ }
+
+ /*
+ * Disconnect from the printer - we'll reconnect on the next poll...
+ */
+
+ _httpDisconnect(http);
+ }
+
+ /*
+ * Sleep for N seconds, and then update the next sleep time using a
+ * Fibonacci series (1 1 2 3 5 8)...
+ */
+
+ sleep(delay);
+
+ temp_delay = delay;
+ delay = (delay + prev_delay) % 12;
+ prev_delay = delay < temp_delay ? 0 : temp_delay;
+ }
+
+ /*
+ * Cleanup and return...
+ */
+
+ httpClose(http);
+
+ return (NULL);
+}
+
+
/*
* 'password_cb()' - Disable the password prompt for cupsDoFileRequest().
*/
{
int i; /* Looping var */
int count; /* Count of reasons shown... */
- ipp_attribute_t *psm, /* printer-state-message */
+ ipp_attribute_t *pa, /* printer-alert */
+ *pam, /* printer-alert-message */
+ *psm, /* printer-state-message */
*reasons, /* printer-state-reasons */
*marker; /* marker-* attributes */
const char *reason; /* Current reason */
const char *prefix; /* Prefix for STATE: line */
- char state[1024]; /* State string */
+ char value[1024], /* State/message string */
+ *valptr; /* Pointer into string */
+ /*
+ * Report alerts and messages...
+ */
+
+ if ((pa = ippFindAttribute(ipp, "printer-alert", IPP_TAG_TEXT)) != NULL)
+ report_attr(pa);
+
+ if ((pam = ippFindAttribute(ipp, "printer-alert-message",
+ IPP_TAG_TEXT)) != NULL)
+ report_attr(pam);
+
if ((psm = ippFindAttribute(ipp, "printer-state-message",
IPP_TAG_TEXT)) != NULL)
- fprintf(stderr, "INFO: %s\n", psm->values[0].string.text);
+ {
+ char *ptr; /* Pointer into message */
+
+
+ strlcpy(value, "INFO: ", sizeof(value));
+ for (ptr = psm->values[0].string.text, valptr = value + 6;
+ *ptr && valptr < (value + sizeof(value) - 6);
+ ptr ++)
+ {
+ if (*ptr < ' ' && *ptr > 0 && *ptr != '\t')
+ {
+ /*
+ * Substitute "<XX>" for the control character; sprintf is safe because
+ * we always leave 6 chars free at the end...
+ */
+
+ sprintf(valptr, "<%02X>", *ptr);
+ valptr += 4;
+ }
+ else
+ *valptr++ = *ptr;
+ }
+
+ *valptr++ = '\n';
+ *valptr++ = '\0';
+
+ fputs(value, stderr);
+ }
+
+ /*
+ * Now report printer-state-reasons, filtering out some of the reasons we never
+ * want to set...
+ */
if ((reasons = ippFindAttribute(ipp, "printer-state-reasons",
IPP_TAG_KEYWORD)) == NULL)
return (0);
- state[0] = '\0';
+ value[0] = '\0';
prefix = "STATE: ";
- for (i = 0, count = 0; i < reasons->num_values; i ++)
+ for (i = 0, count = 0, valptr = value; i < reasons->num_values; i ++)
{
reason = reasons->values[i].string.text;
if (strcmp(reason, "paused") &&
strcmp(reason, "com.apple.print.recoverable-warning"))
{
- strlcat(state, prefix, sizeof(state));
- strlcat(state, reason, sizeof(state));
+ strlcpy(valptr, prefix, sizeof(value) - (valptr - value) - 1);
+ valptr += strlen(valptr);
+ strlcpy(valptr, reason, sizeof(value) - (valptr - value) - 1);
+ valptr += strlen(valptr);
prefix = ",";
}
}
- if (state[0])
- fprintf(stderr, "%s\n", state);
+ if (value[0])
+ {
+ *valptr++ = '\n';
+ *valptr++ = '\0';
+ fputs(value, stderr);
+ }
/*
* Relay the current marker-* attribute values...
#define DEBUG_WRITES 0
+/*
+ * WAIT_EOF_DELAY is number of seconds we'll wait for responses from
+ * the printer after we've finished sending all the data
+ */
+#define WAIT_EOF_DELAY 7
+#define WAIT_SIDE_DELAY 3
#define DEFAULT_TIMEOUT 5000L
#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID190)
Boolean wait_eof;
int drain_output; /* Drain all pending output */
int bidi_flag; /* 0=unidirectional, 1=bidirectional */
+
+ pthread_mutex_t sidechannel_thread_mutex;
+ pthread_cond_t sidechannel_thread_cond;
+ int sidechannel_thread_stop;
+ int sidechannel_thread_done;
} globals_t;
UInt32 bytes; /* Bytes written */
struct timeval *timeout, /* Timeout pointer */
stimeout; /* Timeout for select() */
+ struct timespec cond_timeout; /* pthread condition timeout */
/*
if (have_sidechannel)
{
+ g.sidechannel_thread_stop = 0;
+ g.sidechannel_thread_done = 0;
+
+ pthread_cond_init(&g.sidechannel_thread_cond, NULL);
+ pthread_mutex_init(&g.sidechannel_thread_mutex, NULL);
+
if (pthread_create(&sidechannel_thread_id, NULL, sidechannel_thread, NULL))
{
fprintf(stderr, "DEBUG: Fatal USB error.\n");
fprintf(stderr, "DEBUG: Sent %lld bytes...\n", (off_t)total_bytes);
+ if (!print_fd)
+ {
+ /*
+ * Re-enable the SIGTERM handler so pthread_kill() will work...
+ */
+
+ struct sigaction action; /* POSIX signal action */
+
+ memset(&action, 0, sizeof(action));
+
+ sigemptyset(&action.sa_mask);
+ action.sa_handler = SIG_DFL;
+ sigaction(SIGTERM, &action, NULL);
+ }
+
+ /*
+ * Wait for the side channel thread to exit...
+ */
+
+ if (have_sidechannel)
+ {
+ close(CUPS_SC_FD);
+ pthread_mutex_lock(&g.readwrite_lock_mutex);
+ g.readwrite_lock = 0;
+ pthread_cond_signal(&g.readwrite_lock_cond);
+ pthread_mutex_unlock(&g.readwrite_lock_mutex);
+
+ g.sidechannel_thread_stop = 1;
+ pthread_mutex_lock(&g.sidechannel_thread_mutex);
+ if (!g.sidechannel_thread_done)
+ {
+ /*
+ * Wait for the side-channel thread to exit...
+ */
+
+ cond_timeout.tv_sec = time(NULL) + WAIT_SIDE_DELAY;
+ cond_timeout.tv_nsec = 0;
+ if (pthread_cond_timedwait(&g.sidechannel_thread_cond,
+ &g.sidechannel_thread_mutex,
+ &cond_timeout) != 0)
+ {
+ /*
+ * Force the side-channel thread to exit...
+ */
+
+ pthread_kill(sidechannel_thread_id, SIGTERM);
+ }
+ }
+ pthread_mutex_unlock(&g.sidechannel_thread_mutex);
+
+ pthread_join(sidechannel_thread_id, NULL);
+
+ pthread_cond_destroy(&g.sidechannel_thread_cond);
+ pthread_mutex_destroy(&g.sidechannel_thread_mutex);
+ }
+
+ pthread_cond_destroy(&g.readwrite_lock_cond);
+ pthread_mutex_destroy(&g.readwrite_lock_mutex);
+
+ /*
+ * Signal the read thread to stop...
+ */
+
+ g.read_thread_stop = 1;
+
+ /*
+ * Give the read thread WAIT_EOF_DELAY seconds to complete all the data. If
+ * we are not signaled in that time then force the thread to exit.
+ */
+
+ pthread_mutex_lock(&g.read_thread_mutex);
+
+ if (!g.read_thread_done)
+ {
+ cond_timeout.tv_sec = time(NULL) + WAIT_EOF_DELAY;
+ cond_timeout.tv_nsec = 0;
+
+ if (pthread_cond_timedwait(&g.read_thread_cond, &g.read_thread_mutex,
+ &cond_timeout) != 0)
+ {
+ /*
+ * Force the read thread to exit...
+ */
+
+ g.wait_eof = 0;
+ pthread_kill(read_thread_id, SIGTERM);
+ }
+ }
+ pthread_mutex_unlock(&g.read_thread_mutex);
+
+ pthread_join(read_thread_id, NULL); /* wait for the read thread to return */
+
+ pthread_cond_destroy(&g.read_thread_cond);
+ pthread_mutex_destroy(&g.read_thread_mutex);
+
/*
* Close the connection and input file and general clean up...
*/
break;
}
}
- while (1);
+ while (!g.sidechannel_thread_stop);
+
+ pthread_mutex_lock(&g.sidechannel_thread_mutex);
+ g.sidechannel_thread_done = 1;
+ pthread_cond_signal(&g.sidechannel_thread_cond);
+ pthread_mutex_unlock(&g.sidechannel_thread_mutex);
return NULL;
}
{
fprintf(stderr, "DEBUG: Unable to load class driver \"%s\": %s\n",
bundlestr, strerror(errno));
- return (kr);
+ if (errno == ENOENT)
+ return (load_classdriver(NULL, intf, printerDriver));
+ else
+ return (kr);
}
else if (bundleinfo.st_mode & S_IWOTH)
{
# DO NOT DELETE THIS LINE -- make depend depends on it.
lpc.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpc.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-lpc.o: ../cups/array.h ../cups/string-private.h ../config.h
+lpc.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpc.o: ../cups/language.h ../cups/string-private.h ../config.h
lpc.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
lpc.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
lpc.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
lpc.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
lpc.o: ../cups/thread-private.h
lpq.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpq.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-lpq.o: ../cups/array.h ../cups/string-private.h ../config.h
+lpq.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpq.o: ../cups/language.h ../cups/string-private.h ../config.h
lpq.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
lpq.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
lpq.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
lpq.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
lpq.o: ../cups/thread-private.h
lpr.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpr.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-lpr.o: ../cups/array.h ../cups/string-private.h ../config.h
+lpr.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpr.o: ../cups/language.h ../cups/string-private.h ../config.h
lpr.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
lpr.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
lpr.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
lpr.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
lpr.o: ../cups/thread-private.h
lprm.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lprm.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-lprm.o: ../cups/array.h ../cups/string-private.h ../config.h
+lprm.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lprm.o: ../cups/language.h ../cups/string-private.h ../config.h
lprm.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
lprm.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
lprm.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
help-index.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
help-index.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-help-index.o: ../cups/language.h ../cups/array.h ../cups/array.h help-index.h
+help-index.o: ../cups/array.h ../cups/language.h ../cups/array.h help-index.h
help-index.o: ../cups/debug-private.h ../cups/language-private.h
help-index.o: ../cups/transcode.h ../cups/string-private.h ../config.h
help-index.o: ../cups/dir.h
html.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-html.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-html.o: ../cups/array.h ../cups/array.h help-index.h ../cups/debug-private.h
-html.o: ../cups/language-private.h ../cups/transcode.h
-html.o: ../cups/string-private.h ../config.h
+html.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+html.o: ../cups/language.h ../cups/array.h help-index.h
+html.o: ../cups/debug-private.h ../cups/language-private.h
+html.o: ../cups/transcode.h ../cups/string-private.h ../config.h
ipp-var.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-ipp-var.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-ipp-var.o: ../cups/language.h ../cups/array.h ../cups/array.h help-index.h
+ipp-var.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+ipp-var.o: ../cups/language.h ../cups/array.h help-index.h
ipp-var.o: ../cups/debug-private.h ../cups/language-private.h
ipp-var.o: ../cups/transcode.h ../cups/string-private.h ../config.h
search.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-search.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-search.o: ../cups/language.h ../cups/array.h ../cups/array.h help-index.h
+search.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+search.o: ../cups/language.h ../cups/array.h help-index.h
search.o: ../cups/debug-private.h ../cups/language-private.h
search.o: ../cups/transcode.h ../cups/string-private.h ../config.h
template.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-template.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-template.o: ../cups/language.h ../cups/array.h ../cups/array.h help-index.h
+template.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+template.o: ../cups/language.h ../cups/array.h help-index.h
template.o: ../cups/debug-private.h ../cups/language-private.h
template.o: ../cups/transcode.h ../cups/string-private.h ../config.h
var.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-var.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+var.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
var.o: ../cups/array.h help-index.h ../cups/debug-private.h
var.o: ../cups/language-private.h ../cups/transcode.h
var.o: ../cups/string-private.h ../config.h ../cups/http.h
var.o: ../cups/md5-private.h
admin.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-admin.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-admin.o: ../cups/array.h ../cups/array.h help-index.h ../cups/debug-private.h
-admin.o: ../cups/language-private.h ../cups/transcode.h
-admin.o: ../cups/string-private.h ../config.h ../cups/adminutil.h
-admin.o: ../cups/cups.h ../cups/ppd.h
+admin.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+admin.o: ../cups/language.h ../cups/array.h help-index.h
+admin.o: ../cups/debug-private.h ../cups/language-private.h
+admin.o: ../cups/transcode.h ../cups/string-private.h ../config.h
+admin.o: ../cups/adminutil.h ../cups/cups.h ../cups/ppd.h
classes.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-classes.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-classes.o: ../cups/language.h ../cups/array.h ../cups/array.h help-index.h
+classes.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+classes.o: ../cups/language.h ../cups/array.h help-index.h
classes.o: ../cups/debug-private.h ../cups/language-private.h
classes.o: ../cups/transcode.h ../cups/string-private.h ../config.h
help.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-help.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-help.o: ../cups/array.h ../cups/array.h help-index.h ../cups/debug-private.h
-help.o: ../cups/language-private.h ../cups/transcode.h
-help.o: ../cups/string-private.h ../config.h
+help.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+help.o: ../cups/language.h ../cups/array.h help-index.h
+help.o: ../cups/debug-private.h ../cups/language-private.h
+help.o: ../cups/transcode.h ../cups/string-private.h ../config.h
jobs.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-jobs.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-jobs.o: ../cups/array.h ../cups/array.h help-index.h ../cups/debug-private.h
-jobs.o: ../cups/language-private.h ../cups/transcode.h
-jobs.o: ../cups/string-private.h ../config.h
+jobs.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+jobs.o: ../cups/language.h ../cups/array.h help-index.h
+jobs.o: ../cups/debug-private.h ../cups/language-private.h
+jobs.o: ../cups/transcode.h ../cups/string-private.h ../config.h
makedocset.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-makedocset.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+makedocset.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
makedocset.o: ../cups/array.h help-index.h
printers.o: cgi-private.h cgi.h ../cups/cups.h ../cups/file.h
-printers.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-printers.o: ../cups/language.h ../cups/array.h ../cups/array.h help-index.h
+printers.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+printers.o: ../cups/language.h ../cups/array.h help-index.h
printers.o: ../cups/debug-private.h ../cups/language-private.h
printers.o: ../cups/transcode.h ../cups/string-private.h ../config.h
testcgi.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-testcgi.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+testcgi.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
testcgi.o: ../cups/array.h help-index.h
testhi.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-testhi.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+testhi.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
testhi.o: ../cups/array.h help-index.h
testtemplate.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-testtemplate.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-testtemplate.o: ../cups/array.h ../cups/array.h help-index.h
+testtemplate.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+testtemplate.o: ../cups/language.h ../cups/array.h help-index.h
websearch.o: cgi.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-websearch.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+websearch.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
websearch.o: ../cups/array.h help-index.h
SAVELIBS="$SAVELIBS $LIBS")
LIBS="$SAVELIBS")
+dnl Checks for statfs and its many headers...
+AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
+AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
+AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
+AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
+AC_CHECK_FUNCS(statfs statvfs)
+
dnl Checks for string functions.
AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
AC_DEFINE(HAVE_CDSASSL)
dnl Check for the various security headers...
+ AC_CHECK_HEADER(Security/SecCertificate.h,
+ AC_DEFINE(HAVE_SECCERTIFICATE_H))
AC_CHECK_HEADER(Security/SecItemPriv.h,
AC_DEFINE(HAVE_SECITEMPRIV_H))
AC_CHECK_HEADER(Security/SecPolicy.h,
dnl Check for SecPolicyCreateSSL...
AC_MSG_CHECKING(for SecPolicyCreateSSL)
- if test $uversion -ge 100; then
+ if test $uversion -ge 110; then
AC_DEFINE(HAVE_SECPOLICYCREATESSL)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi])
+
+ AC_DEFINE(HAVE_CSSMERRORSTRING)
fi
fi
*/
#undef HAVE_AUTHORIZATION_H
+#undef HAVE_SECCERTIFICATE_H
#undef HAVE_SECITEMPRIV_H
#undef HAVE_SECPOLICY_H
#undef HAVE_SECPOLICYPRIV_H
#undef HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
+/*
+ * Do we have the SecPolicyCreateSSL function?
+ */
+
+#undef HAVE_SECPOLICYCREATESSL
+
/*
* Do we have the SecPolicyCreateSSL function?
#undef HAVE_SECPOLICYCREATESSL
+/*
+ * Do we have the cssmErrorString function?
+ */
+
+#undef HAVE_CSSMERRORSTRING
+
+
/*
* Do we have the SLP library?
*/
#undef HAVE_ICONV_H
+/*
+ * Do we have statfs or statvfs and one of the corresponding headers?
+ */
+
+#undef HAVE_STATFS
+#undef HAVE_STATVFS
+#undef HAVE_SYS_MOUNT_H
+#undef HAVE_SYS_STATFS_H
+#undef HAVE_SYS_STATVFS_H
+#undef HAVE_SYS_VFS_H
+
+
#endif /* !_CUPS_CONFIG_H_ */
/*
# DO NOT DELETE
adminutil.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-adminutil.o: language.h array.h string-private.h ../config.h debug-private.h
+adminutil.o: array.h language.h string-private.h ../config.h debug-private.h
adminutil.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
adminutil.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
adminutil.o: language-private.h ../cups/transcode.h thread-private.h
adminutil.o: adminutil.h
array.o: string-private.h ../config.h debug-private.h array.h versioning.h
attr.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-attr.o: language.h array.h string-private.h ../config.h debug-private.h
+attr.o: array.h language.h string-private.h ../config.h debug-private.h
attr.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
attr.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
attr.o: language-private.h ../cups/transcode.h thread-private.h
auth.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-auth.o: language.h array.h string-private.h ../config.h debug-private.h
+auth.o: array.h language.h string-private.h ../config.h debug-private.h
auth.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
auth.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
auth.o: language-private.h ../cups/transcode.h thread-private.h
backchannel.o: cups.h
backend.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-backend.o: language.h array.h string-private.h ../config.h debug-private.h
+backend.o: array.h language.h string-private.h ../config.h debug-private.h
backend.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
backend.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
backend.o: language-private.h ../cups/transcode.h thread-private.h backend.h
conflicts.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-conflicts.o: language.h array.h string-private.h ../config.h debug-private.h
+conflicts.o: array.h language.h string-private.h ../config.h debug-private.h
conflicts.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
conflicts.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
conflicts.o: language-private.h ../cups/transcode.h thread-private.h
custom.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-custom.o: language.h array.h string-private.h ../config.h debug-private.h
+custom.o: array.h language.h string-private.h ../config.h debug-private.h
custom.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
custom.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
custom.o: language-private.h ../cups/transcode.h thread-private.h
debug.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-debug.o: language.h array.h string-private.h ../config.h debug-private.h
+debug.o: array.h language.h string-private.h ../config.h debug-private.h
debug.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
debug.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
debug.o: language-private.h ../cups/transcode.h thread-private.h
dest.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-dest.o: language.h array.h string-private.h ../config.h debug-private.h
+dest.o: array.h language.h string-private.h ../config.h debug-private.h
dest.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
dest.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
dest.o: language-private.h ../cups/transcode.h thread-private.h
dir.o: string-private.h ../config.h debug-private.h dir.h versioning.h
emit.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-emit.o: language.h array.h string-private.h ../config.h debug-private.h
+emit.o: array.h language.h string-private.h ../config.h debug-private.h
emit.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
emit.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
emit.o: language-private.h ../cups/transcode.h thread-private.h
encode.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-encode.o: language.h array.h string-private.h ../config.h debug-private.h
+encode.o: array.h language.h string-private.h ../config.h debug-private.h
encode.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
encode.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
encode.o: language-private.h ../cups/transcode.h thread-private.h
file.o: file-private.h cups-private.h ../cups/cups.h file.h versioning.h
-file.o: ipp.h http.h language.h array.h string-private.h ../config.h
+file.o: ipp.h http.h array.h language.h string-private.h ../config.h
file.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h pwg-private.h
file.o: http-private.h ../cups/http.h md5-private.h ipp-private.h
file.o: ../cups/ipp.h language-private.h ../cups/transcode.h thread-private.h
getdevices.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-getdevices.o: language.h array.h string-private.h ../config.h debug-private.h
+getdevices.o: array.h language.h string-private.h ../config.h debug-private.h
getdevices.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
getdevices.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
getdevices.o: language-private.h ../cups/transcode.h thread-private.h
getifaddrs.o: http-private.h ../config.h ../cups/http.h md5-private.h
getifaddrs.o: ipp-private.h ../cups/ipp.h
getputfile.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-getputfile.o: language.h array.h string-private.h ../config.h debug-private.h
+getputfile.o: array.h language.h string-private.h ../config.h debug-private.h
getputfile.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
getputfile.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
getputfile.o: language-private.h ../cups/transcode.h thread-private.h
globals.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-globals.o: language.h array.h string-private.h ../config.h debug-private.h
+globals.o: array.h language.h string-private.h ../config.h debug-private.h
globals.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
globals.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
globals.o: language-private.h ../cups/transcode.h thread-private.h
http.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-http.o: language.h array.h string-private.h ../config.h debug-private.h
+http.o: array.h language.h string-private.h ../config.h debug-private.h
http.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
http.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
http.o: language-private.h ../cups/transcode.h thread-private.h
http-addr.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-http-addr.o: language.h array.h string-private.h ../config.h debug-private.h
+http-addr.o: array.h language.h string-private.h ../config.h debug-private.h
http-addr.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
http-addr.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
http-addr.o: language-private.h ../cups/transcode.h thread-private.h
http-addrlist.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h
-http-addrlist.o: http.h language.h array.h string-private.h ../config.h
+http-addrlist.o: http.h array.h language.h string-private.h ../config.h
http-addrlist.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
http-addrlist.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
http-addrlist.o: ipp-private.h ../cups/ipp.h language-private.h
http-addrlist.o: ../cups/transcode.h thread-private.h
http-support.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h
-http-support.o: http.h language.h array.h string-private.h ../config.h
+http-support.o: http.h array.h language.h string-private.h ../config.h
http-support.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
http-support.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
http-support.o: ipp-private.h ../cups/ipp.h language-private.h
http-support.o: ../cups/transcode.h thread-private.h
-ipp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ipp.o: language.h array.h string-private.h ../config.h debug-private.h
-ipp.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
-ipp.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
-ipp.o: language-private.h ../cups/transcode.h thread-private.h
+ipp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
+ipp.o: language.h string-private.h ../config.h debug-private.h ppd-private.h
+ipp.o: ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
+ipp.o: md5-private.h ipp-private.h ../cups/ipp.h language-private.h
+ipp.o: ../cups/transcode.h thread-private.h
ipp-support.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ipp-support.o: language.h array.h string-private.h ../config.h
+ipp-support.o: array.h language.h string-private.h ../config.h
ipp-support.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
ipp-support.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
ipp-support.o: ipp-private.h ../cups/ipp.h language-private.h
ipp-support.o: ../cups/transcode.h thread-private.h
langprintf.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-langprintf.o: language.h array.h string-private.h ../config.h debug-private.h
+langprintf.o: array.h language.h string-private.h ../config.h debug-private.h
langprintf.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
langprintf.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
langprintf.o: language-private.h ../cups/transcode.h thread-private.h
language.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-language.o: language.h array.h string-private.h ../config.h debug-private.h
+language.o: array.h language.h string-private.h ../config.h debug-private.h
language.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
language.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
language.o: language-private.h ../cups/transcode.h thread-private.h
localize.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-localize.o: language.h array.h string-private.h ../config.h debug-private.h
+localize.o: array.h language.h string-private.h ../config.h debug-private.h
localize.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
localize.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
localize.o: language-private.h ../cups/transcode.h thread-private.h
mark.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-mark.o: language.h array.h string-private.h ../config.h debug-private.h
+mark.o: array.h language.h string-private.h ../config.h debug-private.h
mark.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
mark.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
mark.o: language-private.h ../cups/transcode.h thread-private.h
md5passwd.o: http-private.h ../config.h ../cups/http.h md5-private.h
md5passwd.o: ipp-private.h ../cups/ipp.h string-private.h
notify.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-notify.o: language.h array.h string-private.h ../config.h debug-private.h
+notify.o: array.h language.h string-private.h ../config.h debug-private.h
notify.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
notify.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
notify.o: language-private.h ../cups/transcode.h thread-private.h
-options.o: cups.h string-private.h ../config.h debug-private.h
+options.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
+options.o: array.h language.h string-private.h ../config.h debug-private.h
+options.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
+options.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
+options.o: language-private.h ../cups/transcode.h thread-private.h
page.o: string-private.h ../config.h debug-private.h ppd.h cups.h array.h
page.o: versioning.h file.h
-ppd.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ppd.o: language.h array.h string-private.h ../config.h debug-private.h
-ppd.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
-ppd.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
-ppd.o: language-private.h ../cups/transcode.h thread-private.h
+ppd.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
+ppd.o: language.h string-private.h ../config.h debug-private.h ppd-private.h
+ppd.o: ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
+ppd.o: md5-private.h ipp-private.h ../cups/ipp.h language-private.h
+ppd.o: ../cups/transcode.h thread-private.h
pwg-file.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-file.o: language.h array.h string-private.h ../config.h debug-private.h
+pwg-file.o: array.h language.h string-private.h ../config.h debug-private.h
pwg-file.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-file.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-file.o: language-private.h ../cups/transcode.h thread-private.h
pwg-media.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-media.o: language.h array.h string-private.h ../config.h debug-private.h
+pwg-media.o: array.h language.h string-private.h ../config.h debug-private.h
pwg-media.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-media.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-media.o: language-private.h ../cups/transcode.h thread-private.h
pwg-ppd.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-ppd.o: language.h array.h string-private.h ../config.h debug-private.h
+pwg-ppd.o: array.h language.h string-private.h ../config.h debug-private.h
pwg-ppd.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-ppd.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-ppd.o: language-private.h ../cups/transcode.h thread-private.h
request.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-request.o: language.h array.h string-private.h ../config.h debug-private.h
+request.o: array.h language.h string-private.h ../config.h debug-private.h
request.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
request.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
request.o: language-private.h ../cups/transcode.h thread-private.h
sidechannel.o: sidechannel.h versioning.h string-private.h ../config.h
sidechannel.o: debug-private.h
snmp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-snmp.o: language.h array.h string-private.h ../config.h debug-private.h
+snmp.o: array.h language.h string-private.h ../config.h debug-private.h
snmp.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
snmp.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
snmp.o: language-private.h ../cups/transcode.h thread-private.h
string.o: string-private.h ../config.h debug-private.h thread-private.h
string.o: array.h versioning.h
tempfile.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-tempfile.o: language.h array.h string-private.h ../config.h debug-private.h
+tempfile.o: array.h language.h string-private.h ../config.h debug-private.h
tempfile.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
tempfile.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
tempfile.o: language-private.h ../cups/transcode.h thread-private.h
thread.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-thread.o: language.h array.h string-private.h ../config.h debug-private.h
+thread.o: array.h language.h string-private.h ../config.h debug-private.h
thread.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
thread.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
thread.o: language-private.h ../cups/transcode.h thread-private.h
transcode.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-transcode.o: language.h array.h string-private.h ../config.h debug-private.h
+transcode.o: array.h language.h string-private.h ../config.h debug-private.h
transcode.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
transcode.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
transcode.o: language-private.h ../cups/transcode.h thread-private.h
usersys.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-usersys.o: language.h array.h string-private.h ../config.h debug-private.h
+usersys.o: array.h language.h string-private.h ../config.h debug-private.h
usersys.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
usersys.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
usersys.o: language-private.h ../cups/transcode.h thread-private.h
util.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-util.o: language.h array.h string-private.h ../config.h debug-private.h
+util.o: array.h language.h string-private.h ../config.h debug-private.h
util.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
util.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
util.o: language-private.h ../cups/transcode.h thread-private.h
testipp.o: file.h versioning.h string-private.h ../config.h ipp-private.h
testipp.o: ../cups/ipp.h
testoptions.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testoptions.o: language.h array.h string-private.h ../config.h
+testoptions.o: array.h language.h string-private.h ../config.h
testoptions.o: debug-private.h ppd-private.h ../cups/ppd.h cups.h
testoptions.o: pwg-private.h http-private.h ../cups/http.h md5-private.h
testoptions.o: ipp-private.h ../cups/ipp.h language-private.h
testoptions.o: ../cups/transcode.h thread-private.h
testlang.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testlang.o: language.h array.h string-private.h ../config.h debug-private.h
+testlang.o: array.h language.h string-private.h ../config.h debug-private.h
testlang.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testlang.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testlang.o: language-private.h ../cups/transcode.h thread-private.h
testppd.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testppd.o: language.h array.h string-private.h ../config.h debug-private.h
+testppd.o: array.h language.h string-private.h ../config.h debug-private.h
testppd.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testppd.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testppd.o: language-private.h ../cups/transcode.h thread-private.h
-testpwg.o: ppd-private.h ../cups/ppd.h cups.h array.h versioning.h file.h
-testpwg.o: pwg-private.h ../cups/cups.h ipp.h http.h language.h
+testpwg.o: ppd-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
+testpwg.o: array.h language.h ../cups/ppd.h cups.h pwg-private.h
testsnmp.o: cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testsnmp.o: language.h array.h string-private.h ../config.h debug-private.h
+testsnmp.o: array.h language.h string-private.h ../config.h debug-private.h
testsnmp.o: ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testsnmp.o: ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testsnmp.o: language-private.h ../cups/transcode.h thread-private.h
# DO NOT DELETE
adminutil.32.o: adminutil.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-adminutil.32.o: adminutil.c language.h array.h string-private.h ../config.h debug-private.h
+adminutil.32.o: adminutil.c array.h language.h string-private.h ../config.h debug-private.h
adminutil.32.o: adminutil.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
adminutil.32.o: adminutil.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
adminutil.32.o: adminutil.c language-private.h ../cups/transcode.h thread-private.h
adminutil.32.o: adminutil.c adminutil.h
array.32.o: array.c string-private.h ../config.h debug-private.h array.h versioning.h
attr.32.o: attr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-attr.32.o: attr.c language.h array.h string-private.h ../config.h debug-private.h
+attr.32.o: attr.c array.h language.h string-private.h ../config.h debug-private.h
attr.32.o: attr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
attr.32.o: attr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
attr.32.o: attr.c language-private.h ../cups/transcode.h thread-private.h
auth.32.o: auth.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-auth.32.o: auth.c language.h array.h string-private.h ../config.h debug-private.h
+auth.32.o: auth.c array.h language.h string-private.h ../config.h debug-private.h
auth.32.o: auth.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
auth.32.o: auth.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
auth.32.o: auth.c language-private.h ../cups/transcode.h thread-private.h
backchannel.32.o: backchannel.c cups.h
backend.32.o: backend.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-backend.32.o: backend.c language.h array.h string-private.h ../config.h debug-private.h
+backend.32.o: backend.c array.h language.h string-private.h ../config.h debug-private.h
backend.32.o: backend.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
backend.32.o: backend.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
backend.32.o: backend.c language-private.h ../cups/transcode.h thread-private.h backend.h
conflicts.32.o: conflicts.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-conflicts.32.o: conflicts.c language.h array.h string-private.h ../config.h debug-private.h
+conflicts.32.o: conflicts.c array.h language.h string-private.h ../config.h debug-private.h
conflicts.32.o: conflicts.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
conflicts.32.o: conflicts.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
conflicts.32.o: conflicts.c language-private.h ../cups/transcode.h thread-private.h
custom.32.o: custom.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-custom.32.o: custom.c language.h array.h string-private.h ../config.h debug-private.h
+custom.32.o: custom.c array.h language.h string-private.h ../config.h debug-private.h
custom.32.o: custom.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
custom.32.o: custom.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
custom.32.o: custom.c language-private.h ../cups/transcode.h thread-private.h
debug.32.o: debug.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-debug.32.o: debug.c language.h array.h string-private.h ../config.h debug-private.h
+debug.32.o: debug.c array.h language.h string-private.h ../config.h debug-private.h
debug.32.o: debug.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
debug.32.o: debug.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
debug.32.o: debug.c language-private.h ../cups/transcode.h thread-private.h
dest.32.o: dest.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-dest.32.o: dest.c language.h array.h string-private.h ../config.h debug-private.h
+dest.32.o: dest.c array.h language.h string-private.h ../config.h debug-private.h
dest.32.o: dest.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
dest.32.o: dest.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
dest.32.o: dest.c language-private.h ../cups/transcode.h thread-private.h
dir.32.o: dir.c string-private.h ../config.h debug-private.h dir.h versioning.h
emit.32.o: emit.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-emit.32.o: emit.c language.h array.h string-private.h ../config.h debug-private.h
+emit.32.o: emit.c array.h language.h string-private.h ../config.h debug-private.h
emit.32.o: emit.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
emit.32.o: emit.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
emit.32.o: emit.c language-private.h ../cups/transcode.h thread-private.h
encode.32.o: encode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-encode.32.o: encode.c language.h array.h string-private.h ../config.h debug-private.h
+encode.32.o: encode.c array.h language.h string-private.h ../config.h debug-private.h
encode.32.o: encode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
encode.32.o: encode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
encode.32.o: encode.c language-private.h ../cups/transcode.h thread-private.h
file.32.o: file.c file-private.h cups-private.h ../cups/cups.h file.h versioning.h
-file.32.o: file.c ipp.h http.h language.h array.h string-private.h ../config.h
+file.32.o: file.c ipp.h http.h array.h language.h string-private.h ../config.h
file.32.o: file.c debug-private.h ppd-private.h ../cups/ppd.h cups.h pwg-private.h
file.32.o: file.c http-private.h ../cups/http.h md5-private.h ipp-private.h
file.32.o: file.c ../cups/ipp.h language-private.h ../cups/transcode.h thread-private.h
getdevices.32.o: getdevices.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-getdevices.32.o: getdevices.c language.h array.h string-private.h ../config.h debug-private.h
+getdevices.32.o: getdevices.c array.h language.h string-private.h ../config.h debug-private.h
getdevices.32.o: getdevices.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
getdevices.32.o: getdevices.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
getdevices.32.o: getdevices.c language-private.h ../cups/transcode.h thread-private.h
getifaddrs.32.o: getifaddrs.c http-private.h ../config.h ../cups/http.h md5-private.h
getifaddrs.32.o: getifaddrs.c ipp-private.h ../cups/ipp.h
getputfile.32.o: getputfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-getputfile.32.o: getputfile.c language.h array.h string-private.h ../config.h debug-private.h
+getputfile.32.o: getputfile.c array.h language.h string-private.h ../config.h debug-private.h
getputfile.32.o: getputfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
getputfile.32.o: getputfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
getputfile.32.o: getputfile.c language-private.h ../cups/transcode.h thread-private.h
globals.32.o: globals.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-globals.32.o: globals.c language.h array.h string-private.h ../config.h debug-private.h
+globals.32.o: globals.c array.h language.h string-private.h ../config.h debug-private.h
globals.32.o: globals.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
globals.32.o: globals.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
globals.32.o: globals.c language-private.h ../cups/transcode.h thread-private.h
http.32.o: http.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-http.32.o: http.c language.h array.h string-private.h ../config.h debug-private.h
+http.32.o: http.c array.h language.h string-private.h ../config.h debug-private.h
http.32.o: http.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
http.32.o: http.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
http.32.o: http.c language-private.h ../cups/transcode.h thread-private.h
http-addr.32.o: http-addr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-http-addr.32.o: http-addr.c language.h array.h string-private.h ../config.h debug-private.h
+http-addr.32.o: http-addr.c array.h language.h string-private.h ../config.h debug-private.h
http-addr.32.o: http-addr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
http-addr.32.o: http-addr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
http-addr.32.o: http-addr.c language-private.h ../cups/transcode.h thread-private.h
http-addrlist.32.o: http-addrlist.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
-http-addrlist.32.o: http-addrlist.c http.h language.h array.h string-private.h ../config.h
+http-addrlist.32.o: http-addrlist.c http.h array.h language.h string-private.h ../config.h
http-addrlist.32.o: http-addrlist.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
http-addrlist.32.o: http-addrlist.c pwg-private.h http-private.h ../cups/http.h md5-private.h
http-addrlist.32.o: http-addrlist.c ipp-private.h ../cups/ipp.h language-private.h
http-addrlist.32.o: http-addrlist.c ../cups/transcode.h thread-private.h
http-support.32.o: http-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
-http-support.32.o: http-support.c http.h language.h array.h string-private.h ../config.h
+http-support.32.o: http-support.c http.h array.h language.h string-private.h ../config.h
http-support.32.o: http-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
http-support.32.o: http-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
http-support.32.o: http-support.c ipp-private.h ../cups/ipp.h language-private.h
http-support.32.o: http-support.c ../cups/transcode.h thread-private.h
-ipp.32.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ipp.32.o: ipp.c language.h array.h string-private.h ../config.h debug-private.h
-ipp.32.o: ipp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
-ipp.32.o: ipp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
-ipp.32.o: ipp.c language-private.h ../cups/transcode.h thread-private.h
+ipp.32.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
+ipp.32.o: ipp.c language.h string-private.h ../config.h debug-private.h ppd-private.h
+ipp.32.o: ipp.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
+ipp.32.o: ipp.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
+ipp.32.o: ipp.c ../cups/transcode.h thread-private.h
ipp-support.32.o: ipp-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ipp-support.32.o: ipp-support.c language.h array.h string-private.h ../config.h
+ipp-support.32.o: ipp-support.c array.h language.h string-private.h ../config.h
ipp-support.32.o: ipp-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
ipp-support.32.o: ipp-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
ipp-support.32.o: ipp-support.c ipp-private.h ../cups/ipp.h language-private.h
ipp-support.32.o: ipp-support.c ../cups/transcode.h thread-private.h
langprintf.32.o: langprintf.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-langprintf.32.o: langprintf.c language.h array.h string-private.h ../config.h debug-private.h
+langprintf.32.o: langprintf.c array.h language.h string-private.h ../config.h debug-private.h
langprintf.32.o: langprintf.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
langprintf.32.o: langprintf.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
langprintf.32.o: langprintf.c language-private.h ../cups/transcode.h thread-private.h
language.32.o: language.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-language.32.o: language.c language.h array.h string-private.h ../config.h debug-private.h
+language.32.o: language.c array.h language.h string-private.h ../config.h debug-private.h
language.32.o: language.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
language.32.o: language.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
language.32.o: language.c language-private.h ../cups/transcode.h thread-private.h
localize.32.o: localize.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-localize.32.o: localize.c language.h array.h string-private.h ../config.h debug-private.h
+localize.32.o: localize.c array.h language.h string-private.h ../config.h debug-private.h
localize.32.o: localize.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
localize.32.o: localize.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
localize.32.o: localize.c language-private.h ../cups/transcode.h thread-private.h
mark.32.o: mark.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-mark.32.o: mark.c language.h array.h string-private.h ../config.h debug-private.h
+mark.32.o: mark.c array.h language.h string-private.h ../config.h debug-private.h
mark.32.o: mark.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
mark.32.o: mark.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
mark.32.o: mark.c language-private.h ../cups/transcode.h thread-private.h
md5passwd.32.o: md5passwd.c http-private.h ../config.h ../cups/http.h md5-private.h
md5passwd.32.o: md5passwd.c ipp-private.h ../cups/ipp.h string-private.h
notify.32.o: notify.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-notify.32.o: notify.c language.h array.h string-private.h ../config.h debug-private.h
+notify.32.o: notify.c array.h language.h string-private.h ../config.h debug-private.h
notify.32.o: notify.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
notify.32.o: notify.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
notify.32.o: notify.c language-private.h ../cups/transcode.h thread-private.h
-options.32.o: options.c cups.h string-private.h ../config.h debug-private.h
+options.32.o: options.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
+options.32.o: options.c array.h language.h string-private.h ../config.h debug-private.h
+options.32.o: options.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
+options.32.o: options.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
+options.32.o: options.c language-private.h ../cups/transcode.h thread-private.h
page.32.o: page.c string-private.h ../config.h debug-private.h ppd.h cups.h array.h
page.32.o: page.c versioning.h file.h
-ppd.32.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ppd.32.o: ppd.c language.h array.h string-private.h ../config.h debug-private.h
-ppd.32.o: ppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
-ppd.32.o: ppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
-ppd.32.o: ppd.c language-private.h ../cups/transcode.h thread-private.h
+ppd.32.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
+ppd.32.o: ppd.c language.h string-private.h ../config.h debug-private.h ppd-private.h
+ppd.32.o: ppd.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
+ppd.32.o: ppd.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
+ppd.32.o: ppd.c ../cups/transcode.h thread-private.h
pwg-file.32.o: pwg-file.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-file.32.o: pwg-file.c language.h array.h string-private.h ../config.h debug-private.h
+pwg-file.32.o: pwg-file.c array.h language.h string-private.h ../config.h debug-private.h
pwg-file.32.o: pwg-file.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-file.32.o: pwg-file.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-file.32.o: pwg-file.c language-private.h ../cups/transcode.h thread-private.h
pwg-media.32.o: pwg-media.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-media.32.o: pwg-media.c language.h array.h string-private.h ../config.h debug-private.h
+pwg-media.32.o: pwg-media.c array.h language.h string-private.h ../config.h debug-private.h
pwg-media.32.o: pwg-media.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-media.32.o: pwg-media.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-media.32.o: pwg-media.c language-private.h ../cups/transcode.h thread-private.h
pwg-ppd.32.o: pwg-ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-ppd.32.o: pwg-ppd.c language.h array.h string-private.h ../config.h debug-private.h
+pwg-ppd.32.o: pwg-ppd.c array.h language.h string-private.h ../config.h debug-private.h
pwg-ppd.32.o: pwg-ppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-ppd.32.o: pwg-ppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-ppd.32.o: pwg-ppd.c language-private.h ../cups/transcode.h thread-private.h
request.32.o: request.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-request.32.o: request.c language.h array.h string-private.h ../config.h debug-private.h
+request.32.o: request.c array.h language.h string-private.h ../config.h debug-private.h
request.32.o: request.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
request.32.o: request.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
request.32.o: request.c language-private.h ../cups/transcode.h thread-private.h
sidechannel.32.o: sidechannel.c sidechannel.h versioning.h string-private.h ../config.h
sidechannel.32.o: sidechannel.c debug-private.h
snmp.32.o: snmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-snmp.32.o: snmp.c language.h array.h string-private.h ../config.h debug-private.h
+snmp.32.o: snmp.c array.h language.h string-private.h ../config.h debug-private.h
snmp.32.o: snmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
snmp.32.o: snmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
snmp.32.o: snmp.c language-private.h ../cups/transcode.h thread-private.h
string.32.o: string.c string-private.h ../config.h debug-private.h thread-private.h
string.32.o: string.c array.h versioning.h
tempfile.32.o: tempfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-tempfile.32.o: tempfile.c language.h array.h string-private.h ../config.h debug-private.h
+tempfile.32.o: tempfile.c array.h language.h string-private.h ../config.h debug-private.h
tempfile.32.o: tempfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
tempfile.32.o: tempfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
tempfile.32.o: tempfile.c language-private.h ../cups/transcode.h thread-private.h
thread.32.o: thread.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-thread.32.o: thread.c language.h array.h string-private.h ../config.h debug-private.h
+thread.32.o: thread.c array.h language.h string-private.h ../config.h debug-private.h
thread.32.o: thread.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
thread.32.o: thread.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
thread.32.o: thread.c language-private.h ../cups/transcode.h thread-private.h
transcode.32.o: transcode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-transcode.32.o: transcode.c language.h array.h string-private.h ../config.h debug-private.h
+transcode.32.o: transcode.c array.h language.h string-private.h ../config.h debug-private.h
transcode.32.o: transcode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
transcode.32.o: transcode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
transcode.32.o: transcode.c language-private.h ../cups/transcode.h thread-private.h
usersys.32.o: usersys.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-usersys.32.o: usersys.c language.h array.h string-private.h ../config.h debug-private.h
+usersys.32.o: usersys.c array.h language.h string-private.h ../config.h debug-private.h
usersys.32.o: usersys.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
usersys.32.o: usersys.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
usersys.32.o: usersys.c language-private.h ../cups/transcode.h thread-private.h
util.32.o: util.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-util.32.o: util.c language.h array.h string-private.h ../config.h debug-private.h
+util.32.o: util.c array.h language.h string-private.h ../config.h debug-private.h
util.32.o: util.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
util.32.o: util.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
util.32.o: util.c language-private.h ../cups/transcode.h thread-private.h
testipp.32.o: testipp.c file.h versioning.h string-private.h ../config.h ipp-private.h
testipp.32.o: testipp.c ../cups/ipp.h
testoptions.32.o: testoptions.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testoptions.32.o: testoptions.c language.h array.h string-private.h ../config.h
+testoptions.32.o: testoptions.c array.h language.h string-private.h ../config.h
testoptions.32.o: testoptions.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
testoptions.32.o: testoptions.c pwg-private.h http-private.h ../cups/http.h md5-private.h
testoptions.32.o: testoptions.c ipp-private.h ../cups/ipp.h language-private.h
testoptions.32.o: testoptions.c ../cups/transcode.h thread-private.h
testlang.32.o: testlang.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testlang.32.o: testlang.c language.h array.h string-private.h ../config.h debug-private.h
+testlang.32.o: testlang.c array.h language.h string-private.h ../config.h debug-private.h
testlang.32.o: testlang.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testlang.32.o: testlang.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testlang.32.o: testlang.c language-private.h ../cups/transcode.h thread-private.h
testppd.32.o: testppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testppd.32.o: testppd.c language.h array.h string-private.h ../config.h debug-private.h
+testppd.32.o: testppd.c array.h language.h string-private.h ../config.h debug-private.h
testppd.32.o: testppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testppd.32.o: testppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testppd.32.o: testppd.c language-private.h ../cups/transcode.h thread-private.h
-testpwg.32.o: testpwg.c ppd-private.h ../cups/ppd.h cups.h array.h versioning.h file.h
-testpwg.32.o: testpwg.c pwg-private.h ../cups/cups.h ipp.h http.h language.h
+testpwg.32.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
+testpwg.32.o: testpwg.c array.h language.h ../cups/ppd.h cups.h pwg-private.h
testsnmp.32.o: testsnmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testsnmp.32.o: testsnmp.c language.h array.h string-private.h ../config.h debug-private.h
+testsnmp.32.o: testsnmp.c array.h language.h string-private.h ../config.h debug-private.h
testsnmp.32.o: testsnmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testsnmp.32.o: testsnmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testsnmp.32.o: testsnmp.c language-private.h ../cups/transcode.h thread-private.h
# DO NOT DELETE
adminutil.64.o: adminutil.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-adminutil.64.o: adminutil.c language.h array.h string-private.h ../config.h debug-private.h
+adminutil.64.o: adminutil.c array.h language.h string-private.h ../config.h debug-private.h
adminutil.64.o: adminutil.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
adminutil.64.o: adminutil.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
adminutil.64.o: adminutil.c language-private.h ../cups/transcode.h thread-private.h
adminutil.64.o: adminutil.c adminutil.h
array.64.o: array.c string-private.h ../config.h debug-private.h array.h versioning.h
attr.64.o: attr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-attr.64.o: attr.c language.h array.h string-private.h ../config.h debug-private.h
+attr.64.o: attr.c array.h language.h string-private.h ../config.h debug-private.h
attr.64.o: attr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
attr.64.o: attr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
attr.64.o: attr.c language-private.h ../cups/transcode.h thread-private.h
auth.64.o: auth.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-auth.64.o: auth.c language.h array.h string-private.h ../config.h debug-private.h
+auth.64.o: auth.c array.h language.h string-private.h ../config.h debug-private.h
auth.64.o: auth.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
auth.64.o: auth.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
auth.64.o: auth.c language-private.h ../cups/transcode.h thread-private.h
backchannel.64.o: backchannel.c cups.h
backend.64.o: backend.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-backend.64.o: backend.c language.h array.h string-private.h ../config.h debug-private.h
+backend.64.o: backend.c array.h language.h string-private.h ../config.h debug-private.h
backend.64.o: backend.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
backend.64.o: backend.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
backend.64.o: backend.c language-private.h ../cups/transcode.h thread-private.h backend.h
conflicts.64.o: conflicts.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-conflicts.64.o: conflicts.c language.h array.h string-private.h ../config.h debug-private.h
+conflicts.64.o: conflicts.c array.h language.h string-private.h ../config.h debug-private.h
conflicts.64.o: conflicts.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
conflicts.64.o: conflicts.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
conflicts.64.o: conflicts.c language-private.h ../cups/transcode.h thread-private.h
custom.64.o: custom.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-custom.64.o: custom.c language.h array.h string-private.h ../config.h debug-private.h
+custom.64.o: custom.c array.h language.h string-private.h ../config.h debug-private.h
custom.64.o: custom.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
custom.64.o: custom.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
custom.64.o: custom.c language-private.h ../cups/transcode.h thread-private.h
debug.64.o: debug.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-debug.64.o: debug.c language.h array.h string-private.h ../config.h debug-private.h
+debug.64.o: debug.c array.h language.h string-private.h ../config.h debug-private.h
debug.64.o: debug.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
debug.64.o: debug.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
debug.64.o: debug.c language-private.h ../cups/transcode.h thread-private.h
dest.64.o: dest.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-dest.64.o: dest.c language.h array.h string-private.h ../config.h debug-private.h
+dest.64.o: dest.c array.h language.h string-private.h ../config.h debug-private.h
dest.64.o: dest.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
dest.64.o: dest.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
dest.64.o: dest.c language-private.h ../cups/transcode.h thread-private.h
dir.64.o: dir.c string-private.h ../config.h debug-private.h dir.h versioning.h
emit.64.o: emit.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-emit.64.o: emit.c language.h array.h string-private.h ../config.h debug-private.h
+emit.64.o: emit.c array.h language.h string-private.h ../config.h debug-private.h
emit.64.o: emit.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
emit.64.o: emit.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
emit.64.o: emit.c language-private.h ../cups/transcode.h thread-private.h
encode.64.o: encode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-encode.64.o: encode.c language.h array.h string-private.h ../config.h debug-private.h
+encode.64.o: encode.c array.h language.h string-private.h ../config.h debug-private.h
encode.64.o: encode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
encode.64.o: encode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
encode.64.o: encode.c language-private.h ../cups/transcode.h thread-private.h
file.64.o: file.c file-private.h cups-private.h ../cups/cups.h file.h versioning.h
-file.64.o: file.c ipp.h http.h language.h array.h string-private.h ../config.h
+file.64.o: file.c ipp.h http.h array.h language.h string-private.h ../config.h
file.64.o: file.c debug-private.h ppd-private.h ../cups/ppd.h cups.h pwg-private.h
file.64.o: file.c http-private.h ../cups/http.h md5-private.h ipp-private.h
file.64.o: file.c ../cups/ipp.h language-private.h ../cups/transcode.h thread-private.h
getdevices.64.o: getdevices.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-getdevices.64.o: getdevices.c language.h array.h string-private.h ../config.h debug-private.h
+getdevices.64.o: getdevices.c array.h language.h string-private.h ../config.h debug-private.h
getdevices.64.o: getdevices.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
getdevices.64.o: getdevices.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
getdevices.64.o: getdevices.c language-private.h ../cups/transcode.h thread-private.h
getifaddrs.64.o: getifaddrs.c http-private.h ../config.h ../cups/http.h md5-private.h
getifaddrs.64.o: getifaddrs.c ipp-private.h ../cups/ipp.h
getputfile.64.o: getputfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-getputfile.64.o: getputfile.c language.h array.h string-private.h ../config.h debug-private.h
+getputfile.64.o: getputfile.c array.h language.h string-private.h ../config.h debug-private.h
getputfile.64.o: getputfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
getputfile.64.o: getputfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
getputfile.64.o: getputfile.c language-private.h ../cups/transcode.h thread-private.h
globals.64.o: globals.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-globals.64.o: globals.c language.h array.h string-private.h ../config.h debug-private.h
+globals.64.o: globals.c array.h language.h string-private.h ../config.h debug-private.h
globals.64.o: globals.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
globals.64.o: globals.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
globals.64.o: globals.c language-private.h ../cups/transcode.h thread-private.h
http.64.o: http.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-http.64.o: http.c language.h array.h string-private.h ../config.h debug-private.h
+http.64.o: http.c array.h language.h string-private.h ../config.h debug-private.h
http.64.o: http.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
http.64.o: http.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
http.64.o: http.c language-private.h ../cups/transcode.h thread-private.h
http-addr.64.o: http-addr.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-http-addr.64.o: http-addr.c language.h array.h string-private.h ../config.h debug-private.h
+http-addr.64.o: http-addr.c array.h language.h string-private.h ../config.h debug-private.h
http-addr.64.o: http-addr.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
http-addr.64.o: http-addr.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
http-addr.64.o: http-addr.c language-private.h ../cups/transcode.h thread-private.h
http-addrlist.64.o: http-addrlist.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
-http-addrlist.64.o: http-addrlist.c http.h language.h array.h string-private.h ../config.h
+http-addrlist.64.o: http-addrlist.c http.h array.h language.h string-private.h ../config.h
http-addrlist.64.o: http-addrlist.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
http-addrlist.64.o: http-addrlist.c pwg-private.h http-private.h ../cups/http.h md5-private.h
http-addrlist.64.o: http-addrlist.c ipp-private.h ../cups/ipp.h language-private.h
http-addrlist.64.o: http-addrlist.c ../cups/transcode.h thread-private.h
http-support.64.o: http-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h
-http-support.64.o: http-support.c http.h language.h array.h string-private.h ../config.h
+http-support.64.o: http-support.c http.h array.h language.h string-private.h ../config.h
http-support.64.o: http-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
http-support.64.o: http-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
http-support.64.o: http-support.c ipp-private.h ../cups/ipp.h language-private.h
http-support.64.o: http-support.c ../cups/transcode.h thread-private.h
-ipp.64.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ipp.64.o: ipp.c language.h array.h string-private.h ../config.h debug-private.h
-ipp.64.o: ipp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
-ipp.64.o: ipp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
-ipp.64.o: ipp.c language-private.h ../cups/transcode.h thread-private.h
+ipp.64.o: ipp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
+ipp.64.o: ipp.c language.h string-private.h ../config.h debug-private.h ppd-private.h
+ipp.64.o: ipp.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
+ipp.64.o: ipp.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
+ipp.64.o: ipp.c ../cups/transcode.h thread-private.h
ipp-support.64.o: ipp-support.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ipp-support.64.o: ipp-support.c language.h array.h string-private.h ../config.h
+ipp-support.64.o: ipp-support.c array.h language.h string-private.h ../config.h
ipp-support.64.o: ipp-support.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
ipp-support.64.o: ipp-support.c pwg-private.h http-private.h ../cups/http.h md5-private.h
ipp-support.64.o: ipp-support.c ipp-private.h ../cups/ipp.h language-private.h
ipp-support.64.o: ipp-support.c ../cups/transcode.h thread-private.h
langprintf.64.o: langprintf.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-langprintf.64.o: langprintf.c language.h array.h string-private.h ../config.h debug-private.h
+langprintf.64.o: langprintf.c array.h language.h string-private.h ../config.h debug-private.h
langprintf.64.o: langprintf.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
langprintf.64.o: langprintf.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
langprintf.64.o: langprintf.c language-private.h ../cups/transcode.h thread-private.h
language.64.o: language.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-language.64.o: language.c language.h array.h string-private.h ../config.h debug-private.h
+language.64.o: language.c array.h language.h string-private.h ../config.h debug-private.h
language.64.o: language.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
language.64.o: language.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
language.64.o: language.c language-private.h ../cups/transcode.h thread-private.h
localize.64.o: localize.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-localize.64.o: localize.c language.h array.h string-private.h ../config.h debug-private.h
+localize.64.o: localize.c array.h language.h string-private.h ../config.h debug-private.h
localize.64.o: localize.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
localize.64.o: localize.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
localize.64.o: localize.c language-private.h ../cups/transcode.h thread-private.h
mark.64.o: mark.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-mark.64.o: mark.c language.h array.h string-private.h ../config.h debug-private.h
+mark.64.o: mark.c array.h language.h string-private.h ../config.h debug-private.h
mark.64.o: mark.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
mark.64.o: mark.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
mark.64.o: mark.c language-private.h ../cups/transcode.h thread-private.h
md5passwd.64.o: md5passwd.c http-private.h ../config.h ../cups/http.h md5-private.h
md5passwd.64.o: md5passwd.c ipp-private.h ../cups/ipp.h string-private.h
notify.64.o: notify.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-notify.64.o: notify.c language.h array.h string-private.h ../config.h debug-private.h
+notify.64.o: notify.c array.h language.h string-private.h ../config.h debug-private.h
notify.64.o: notify.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
notify.64.o: notify.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
notify.64.o: notify.c language-private.h ../cups/transcode.h thread-private.h
-options.64.o: options.c cups.h string-private.h ../config.h debug-private.h
+options.64.o: options.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
+options.64.o: options.c array.h language.h string-private.h ../config.h debug-private.h
+options.64.o: options.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
+options.64.o: options.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
+options.64.o: options.c language-private.h ../cups/transcode.h thread-private.h
page.64.o: page.c string-private.h ../config.h debug-private.h ppd.h cups.h array.h
page.64.o: page.c versioning.h file.h
-ppd.64.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-ppd.64.o: ppd.c language.h array.h string-private.h ../config.h debug-private.h
-ppd.64.o: ppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
-ppd.64.o: ppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
-ppd.64.o: ppd.c language-private.h ../cups/transcode.h thread-private.h
+ppd.64.o: ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h array.h
+ppd.64.o: ppd.c language.h string-private.h ../config.h debug-private.h ppd-private.h
+ppd.64.o: ppd.c ../cups/ppd.h cups.h pwg-private.h http-private.h ../cups/http.h
+ppd.64.o: ppd.c md5-private.h ipp-private.h ../cups/ipp.h language-private.h
+ppd.64.o: ppd.c ../cups/transcode.h thread-private.h
pwg-file.64.o: pwg-file.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-file.64.o: pwg-file.c language.h array.h string-private.h ../config.h debug-private.h
+pwg-file.64.o: pwg-file.c array.h language.h string-private.h ../config.h debug-private.h
pwg-file.64.o: pwg-file.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-file.64.o: pwg-file.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-file.64.o: pwg-file.c language-private.h ../cups/transcode.h thread-private.h
pwg-media.64.o: pwg-media.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-media.64.o: pwg-media.c language.h array.h string-private.h ../config.h debug-private.h
+pwg-media.64.o: pwg-media.c array.h language.h string-private.h ../config.h debug-private.h
pwg-media.64.o: pwg-media.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-media.64.o: pwg-media.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-media.64.o: pwg-media.c language-private.h ../cups/transcode.h thread-private.h
pwg-ppd.64.o: pwg-ppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-pwg-ppd.64.o: pwg-ppd.c language.h array.h string-private.h ../config.h debug-private.h
+pwg-ppd.64.o: pwg-ppd.c array.h language.h string-private.h ../config.h debug-private.h
pwg-ppd.64.o: pwg-ppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
pwg-ppd.64.o: pwg-ppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
pwg-ppd.64.o: pwg-ppd.c language-private.h ../cups/transcode.h thread-private.h
request.64.o: request.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-request.64.o: request.c language.h array.h string-private.h ../config.h debug-private.h
+request.64.o: request.c array.h language.h string-private.h ../config.h debug-private.h
request.64.o: request.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
request.64.o: request.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
request.64.o: request.c language-private.h ../cups/transcode.h thread-private.h
sidechannel.64.o: sidechannel.c sidechannel.h versioning.h string-private.h ../config.h
sidechannel.64.o: sidechannel.c debug-private.h
snmp.64.o: snmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-snmp.64.o: snmp.c language.h array.h string-private.h ../config.h debug-private.h
+snmp.64.o: snmp.c array.h language.h string-private.h ../config.h debug-private.h
snmp.64.o: snmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
snmp.64.o: snmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
snmp.64.o: snmp.c language-private.h ../cups/transcode.h thread-private.h
string.64.o: string.c string-private.h ../config.h debug-private.h thread-private.h
string.64.o: string.c array.h versioning.h
tempfile.64.o: tempfile.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-tempfile.64.o: tempfile.c language.h array.h string-private.h ../config.h debug-private.h
+tempfile.64.o: tempfile.c array.h language.h string-private.h ../config.h debug-private.h
tempfile.64.o: tempfile.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
tempfile.64.o: tempfile.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
tempfile.64.o: tempfile.c language-private.h ../cups/transcode.h thread-private.h
thread.64.o: thread.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-thread.64.o: thread.c language.h array.h string-private.h ../config.h debug-private.h
+thread.64.o: thread.c array.h language.h string-private.h ../config.h debug-private.h
thread.64.o: thread.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
thread.64.o: thread.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
thread.64.o: thread.c language-private.h ../cups/transcode.h thread-private.h
transcode.64.o: transcode.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-transcode.64.o: transcode.c language.h array.h string-private.h ../config.h debug-private.h
+transcode.64.o: transcode.c array.h language.h string-private.h ../config.h debug-private.h
transcode.64.o: transcode.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
transcode.64.o: transcode.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
transcode.64.o: transcode.c language-private.h ../cups/transcode.h thread-private.h
usersys.64.o: usersys.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-usersys.64.o: usersys.c language.h array.h string-private.h ../config.h debug-private.h
+usersys.64.o: usersys.c array.h language.h string-private.h ../config.h debug-private.h
usersys.64.o: usersys.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
usersys.64.o: usersys.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
usersys.64.o: usersys.c language-private.h ../cups/transcode.h thread-private.h
util.64.o: util.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-util.64.o: util.c language.h array.h string-private.h ../config.h debug-private.h
+util.64.o: util.c array.h language.h string-private.h ../config.h debug-private.h
util.64.o: util.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
util.64.o: util.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
util.64.o: util.c language-private.h ../cups/transcode.h thread-private.h
testipp.64.o: testipp.c file.h versioning.h string-private.h ../config.h ipp-private.h
testipp.64.o: testipp.c ../cups/ipp.h
testoptions.64.o: testoptions.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testoptions.64.o: testoptions.c language.h array.h string-private.h ../config.h
+testoptions.64.o: testoptions.c array.h language.h string-private.h ../config.h
testoptions.64.o: testoptions.c debug-private.h ppd-private.h ../cups/ppd.h cups.h
testoptions.64.o: testoptions.c pwg-private.h http-private.h ../cups/http.h md5-private.h
testoptions.64.o: testoptions.c ipp-private.h ../cups/ipp.h language-private.h
testoptions.64.o: testoptions.c ../cups/transcode.h thread-private.h
testlang.64.o: testlang.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testlang.64.o: testlang.c language.h array.h string-private.h ../config.h debug-private.h
+testlang.64.o: testlang.c array.h language.h string-private.h ../config.h debug-private.h
testlang.64.o: testlang.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testlang.64.o: testlang.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testlang.64.o: testlang.c language-private.h ../cups/transcode.h thread-private.h
testppd.64.o: testppd.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testppd.64.o: testppd.c language.h array.h string-private.h ../config.h debug-private.h
+testppd.64.o: testppd.c array.h language.h string-private.h ../config.h debug-private.h
testppd.64.o: testppd.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testppd.64.o: testppd.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testppd.64.o: testppd.c language-private.h ../cups/transcode.h thread-private.h
-testpwg.64.o: testpwg.c ppd-private.h ../cups/ppd.h cups.h array.h versioning.h file.h
-testpwg.64.o: testpwg.c pwg-private.h ../cups/cups.h ipp.h http.h language.h
+testpwg.64.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
+testpwg.64.o: testpwg.c array.h language.h ../cups/ppd.h cups.h pwg-private.h
testsnmp.64.o: testsnmp.c cups-private.h ../cups/cups.h file.h versioning.h ipp.h http.h
-testsnmp.64.o: testsnmp.c language.h array.h string-private.h ../config.h debug-private.h
+testsnmp.64.o: testsnmp.c array.h language.h string-private.h ../config.h debug-private.h
testsnmp.64.o: testsnmp.c ppd-private.h ../cups/ppd.h cups.h pwg-private.h http-private.h
testsnmp.64.o: testsnmp.c ../cups/http.h md5-private.h ipp-private.h ../cups/ipp.h
testsnmp.64.o: testsnmp.c language-private.h ../cups/transcode.h thread-private.h
servername[256];/* Server hostname */
cups_password_cb2_t password_cb; /* Password callback */
void *password_data; /* Password user data */
+ http_tls_credentials_t tls_credentials;
+ /* Default client credentials */
+ cups_client_cert_cb_t client_cert_cb; /* Client certificate callback */
+ void *client_cert_data;
+ /* Client certificate user data */
+ cups_server_cert_cb_t server_cert_cb; /* Server certificate callback */
+ void *server_cert_data;
+ /* Server certificate user data */
+ int any_root, /* Allow any root */
+ expired_certs, /* Allow expired certs */
+ expired_root; /* Allow expired root */
/* util.c */
char def_printer[256];
time_t processing_time; /* Time the job was processed */
} cups_job_t;
+typedef int (*cups_client_cert_cb_t)(http_t *http, void *tls,
+ cups_array_t *distinguished_names,
+ void *user_data);
+ /**** Client credentials callback @since CUPS 1.5@ ****/
+
+typedef int (*cups_server_cert_cb_t)(http_t *http, void *tls,
+ cups_array_t *certs, void *user_data);
+ /**** Server credentials callback @since CUPS 1.5@ ****/
+
/*
* Functions...
extern http_status_t cupsWriteRequestData(http_t *http, const char *buffer,
size_t length) _CUPS_API_1_4;
+/**** New in CUPS 1.5 ****/
+extern void cupsSetClientCertCB(cups_client_cert_cb_t cb,
+ void *user_data) _CUPS_API_1_5;
+extern int cupsSetCredentials(cups_array_t *certs) _CUPS_API_1_5;
+extern void cupsSetServerCertCB(cups_server_cert_cb_t cb,
+ void *user_data) _CUPS_API_1_5;
+
+
# ifdef __cplusplus
}
# endif /* __cplusplus */
*/
# ifdef DEBUG
+# ifdef WIN32
+# ifdef LIBCUPS2_EXPORTS
+# define DLLExport __declspec(dllexport)
+# else
+# define DLLExport
+# endif /* LIBCUPS2_EXPORTS */
+# else
+# define DLLExport
+# endif /* WIN32 */
# define DEBUG_puts(x) _cups_debug_puts(x)
# define DEBUG_printf(x) _cups_debug_printf x
# else
+# define DLLExport
# define DEBUG_puts(x)
# define DEBUG_printf(x)
# endif /* DEBUG */
extern int _cups_debug_fd;
extern int _cups_debug_level;
-extern void _cups_debug_printf(const char *format, ...)
+extern void DLLExport _cups_debug_printf(const char *format, ...)
#ifdef __GNUC__
__attribute__ ((__format__ (__printf__, 1, 2)))
#endif /* __GNUC__ */
;
-extern void _cups_debug_puts(const char *s);
+extern void DLLExport _cups_debug_puts(const char *s);
# ifdef __cplusplus
}
#include "cups-private.h"
#include "thread-private.h"
#ifdef WIN32
+# include <sys/timeb.h>
+# include <time.h>
# include <io.h>
+static int /* O - 0 on success, -1 on failure */
+gettimeofday(struct timeval *tv, /* I - Timeval struct */
+ void *tz) /* I - Timezone */
+{
+ struct _timeb timebuffer; /* Time buffer struct */
+ _ftime(&timebuffer);
+ tv->tv_sec = timebuffer.time;
+ tv->tv_usec = timebuffer.millitm * 1000;
+ return 0;
+}
#else
# include <sys/time.h>
# include <unistd.h>
#endif /* WIN32 */
#include <fcntl.h>
-#ifndef WIN32
-# include <regex.h>
-#endif /* WIN32 */
+#include <regex.h>
/*
* Local globals...
*/
-# ifndef WIN32
static regex_t *debug_filter = NULL;
/* Filter expression for messages */
-# endif /* !WIN32 */
static int debug_init = 0; /* Did we initialize debugging? */
static _cups_mutex_t debug_mutex = _CUPS_MUTEX_INITIALIZER;
/* Mutex to control initialization */
* '_cups_debug_printf()' - Write a formatted line to the log.
*/
-void
+void DLLExport
_cups_debug_printf(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
* '_cups_debug_puts()' - Write a single line to the log.
*/
-void
+void DLLExport
_cups_debug_puts(const char *s) /* I - String to output */
{
char format[4]; /* C%s */
*/
memset(cg, 0, sizeof(_cups_globals_t));
- cg->encryption = (http_encryption_t)-1;
- cg->password_cb = (cups_password_cb2_t)_cupsGetPassword;
+ cg->encryption = (http_encryption_t)-1;
+ cg->password_cb = (cups_password_cb2_t)_cupsGetPassword;
+ cg->expired_certs = 1;
/*
* Then set directories as appropriate...
httpClose(cg->http);
+ _httpFreeCredentials(cg->tls_credentials);
+
cupsFileClose(cg->stdio_files[0]);
cupsFileClose(cg->stdio_files[1]);
cupsFileClose(cg->stdio_files[2]);
-# ifndef CUPS_LITE
cupsFreeOptions(cg->cupsd_num_settings, cg->cupsd_settings);
-# endif /* !CUPS_LITE */
free(cg);
}
setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, &val, sizeof(val));
#endif /* SO_NOSIGPIPE */
+#ifdef __APPLE__
+ /*
+ * Use a 30-second read timeout when connecting to limit the amount of time
+ * we block...
+ */
+
+ val = 30;
+ setsockopt(*sock, SOL_SOCKET, SO_RCVTIMEO, &val, sizeof(val));
+#endif /* __APPLE__ */
+
/*
* Using TCP_NODELAY improves responsiveness, especially on systems
* with a slow loopback interface...
addrlist = addrlist->next;
}
+ if (!addrlist)
+ _cupsSetError(HTTP_SERVICE_UNAVAILABLE, _("Unable to connect to server"), 1);
+
return (addrlist);
}
# include <openssl/rand.h>
# include <openssl/ssl.h>
-typedef SSL http_tls_t;
+typedef SSL *http_tls_t;
+typedef void *http_tls_credentials_t;
extern BIO_METHOD *_httpBIOMethods(void);
* The GNU TLS library is more of a "bare metal" SSL/TLS library...
*/
# include <gnutls/gnutls.h>
+# include <gnutls/x509.h>
# include <gcrypt.h>
-typedef struct
-{
- gnutls_session session; /* GNU TLS session object */
- void *credentials; /* GNU TLS credentials object */
-} http_tls_t;
+typedef gnutls_session http_tls_t;
+typedef void *http_tls_credentials_t;
extern ssize_t _httpReadGNUTLS(gnutls_transport_ptr ptr, void *data,
size_t length);
* for its IO and protocol management...
*/
+# include <CoreFoundation/CoreFoundation.h>
+# include <Security/Security.h>
# include <Security/SecureTransport.h>
-
-typedef struct /**** CDSA connection information ****/
-{
- SSLContextRef session; /* CDSA session object */
- CFArrayRef certsArray; /* Certificates array */
-} http_tls_t;
+# include <Security/SecItem.h>
+# ifdef HAVE_SECBASEPRIV_H
+# include <Security/SecBasePriv.h>
+# elif defined(HAVE_CSSMERRORSTRING) /* Declare prototype for function in that header... */
+extern const char *cssmErrorString(int error);
+# endif /* HAVE_SECBASEPRIV_H */
+# ifdef HAVE_SECCERTIFICATE_H
+# include <Security/SecCertificate.h>
+# include <Security/SecIdentity.h>
+# endif /* HAVE_SECCERTIFICATE_H */
+# ifdef HAVE_SECITEMPRIV_H
+# include <Security/SecItemPriv.h>
+# else /* Declare constants from that header... */
+extern const CFTypeRef kSecClassCertificate;
+extern const CFTypeRef kSecClassIdentity;
+# endif /* HAVE_SECITEMPRIV_H */
+# ifdef HAVE_SECIDENTITYSEARCHPRIV_H
+# include <Security/SecIdentitySearchPriv.h>
+# elif defined(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY) /* Declare prototype for function in that header... */
+extern OSStatus SecIdentitySearchCreateWithPolicy(SecPolicyRef policy,
+ CFStringRef idString, CSSM_KEYUSE keyUsage,
+ CFTypeRef keychainOrArray,
+ Boolean returnOnlyValidIdentities,
+ SecIdentitySearchRef* searchRef);
+# endif /* HAVE_SECIDENTITYSEARCHPRIV_H */
+# ifdef HAVE_SECPOLICYPRIV_H
+# include <Security/SecPolicyPriv.h>
+# elif defined(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY) /* Declare prototype for function in that header... */
+extern OSStatus SecPolicySetValue(SecPolicyRef policyRef,
+ const CSSM_DATA *value);
+# endif /* HAVE_SECPOLICYPRIV_H */
+
+typedef SSLContextRef http_tls_t;
+typedef CFArrayRef http_tls_credentials_t;
extern OSStatus _httpReadCDSA(SSLConnectionRef connection, void *data,
size_t *dataLength);
# elif defined(HAVE_SSPISSL)
# include "sspi-private.h"
+typedef _sspi_struct_t * http_tls_t;
+typedef void *http_tls_credentials_t;
+# else
+typedef void *http_tls_t;
# endif /* HAVE_LIBSSL */
char nonce[HTTP_MAX_VALUE];
/* Nonce value */
int nonce_count; /* Nonce count */
- void *tls; /* TLS state information */
+ http_tls_t tls; /* TLS state information */
http_encryption_t encryption; /* Encryption requirements */
/**** New in CUPS 1.1.19 ****/
fd_set *input_set; /* select() set for httpWait() @deprecated@ */
# ifdef HAVE_AUTHORIZATION_H
AuthorizationRef auth_ref; /* Authorization ref */
# endif /* HAVE_AUTHORIZATION_H */
+ /**** New in CUPS 1.5 ****/
+ http_tls_credentials_t tls_credentials;
+ /* TLS credentials */
};
*/
extern int _httpAddrPort(http_addr_t *addr);
+extern http_tls_credentials_t
+ _httpConvertCredentials(cups_array_t *credentials);
extern http_t *_httpCreate(const char *host, int port,
http_encryption_t encryption);
extern void _httpDisconnect(http_t *http);
extern char *_httpEncodeURI(char *dst, const char *src,
size_t dstsize);
+extern void _httpFreeCredentials(http_tls_credentials_t credentials);
extern ssize_t _httpPeek(http_t *http, char *buffer, size_t length);
extern const char *_httpResolveURI(const char *uri, char *resolved_uri,
size_t resolved_size, int log);
* Otherwise, just copy the host string...
*/
- ptr = http_copy_encode(ptr, host, end, ":/?#[]@\\", NULL,
+ ptr = http_copy_encode(ptr, host, end, ":/?#[]@\\\"", NULL,
encoding & HTTP_URI_CODING_HOSTNAME);
if (!ptr)
*port = 80;
else if (!strcmp(scheme, "https"))
*port = 443;
- else if (!strcmp(scheme, "ipp"))
+ else if (!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps"))
*port = 631;
else if (!strcasecmp(scheme, "lpd"))
*port = 515;
case HTTP_SERVER_ERROR :
s = _("Internal Server Error");
break;
+ case HTTP_PKI_ERROR :
+ s = _("SSL/TLS Negotiation Error");
+ break;
default :
s = _("Unknown");
*
* Contents:
*
- * _httpBIOMethods() - Get the OpenSSL BIO methods for HTTP connections.
- * httpBlocking() - Set blocking/non-blocking behavior on a connection.
- * httpCheck() - Check to see if there is a pending response from the
- * server.
- * httpClearCookie() - Clear the cookie value(s).
- * httpClearFields() - Clear HTTP request fields.
- * httpClose() - Close an HTTP connection.
- * httpConnect() - Connect to a HTTP server.
- * httpConnectEncrypt() - Connect to a HTTP server using encryption.
- * _httpCreate() - Create an unconnected HTTP connection.
- * httpDelete() - Send a DELETE request to the server.
- * _httpDisconnect() - Disconnect a HTTP connection.
- * httpEncryption() - Set the required encryption on the link.
- * httpError() - Get the last error on a connection.
- * httpFlush() - Flush data from a HTTP connection.
- * httpFlushWrite() - Flush data in write buffer.
- * httpGet() - Send a GET request to the server.
- * httpGetAuthString() - Get the current authorization string.
- * httpGetBlocking() - Get the blocking/non-block state of a connection.
- * httpGetCookie() - Get any cookie data from the response.
- * httpGetFd() - Get the file descriptor associated with a
- * connection.
- * httpGetField() - Get a field value from a request/response.
- * httpGetLength() - Get the amount of data remaining from the
- * content-length or transfer-encoding fields.
- * httpGetLength2() - Get the amount of data remaining from the
- * content-length or transfer-encoding fields.
- * httpGetStatus() - Get the status of the last HTTP request.
- * httpGetSubField() - Get a sub-field value.
- * httpGetSubField2() - Get a sub-field value.
- * httpGets() - Get a line of text from a HTTP connection.
- * httpHead() - Send a HEAD request to the server.
- * httpInitialize() - Initialize the HTTP interface library and set the
- * default HTTP proxy (if any).
- * httpOptions() - Send an OPTIONS request to the server.
- * _httpPeek() - Peek at data from a HTTP connection.
- * httpPost() - Send a POST request to the server.
- * httpPrintf() - Print a formatted string to a HTTP connection.
- * httpPut() - Send a PUT request to the server.
- * httpRead() - Read data from a HTTP connection.
- * httpRead2() - Read data from a HTTP connection.
- * _httpReadCDSA() - Read function for the CDSA library.
- * _httpReadGNUTLS() - Read function for the GNU TLS library.
- * httpReconnect() - Reconnect to a HTTP server.
- * httpSetAuthString() - Set the current authorization string.
- * httpSetCookie() - Set the cookie value(s).
- * httpSetExpect() - Set the Expect: header in a request.
- * httpSetField() - Set the value of an HTTP header.
- * httpSetLength() - Set the content-length and content-encoding.
- * httpTrace() - Send an TRACE request to the server.
- * httpUpdate() - Update the current HTTP state for incoming data.
- * _httpWait() - Wait for data available on a connection (no flush).
- * httpWait() - Wait for data available on a connection.
- * httpWrite() - Write data to a HTTP connection.
- * httpWrite2() - Write data to a HTTP connection.
- * _httpWriteCDSA() - Write function for the CDSA library.
- * _httpWriteGNUTLS() - Write function for the GNU TLS library.
- * http_bio_ctrl() - Control the HTTP connection.
- * http_bio_free() - Free OpenSSL data.
- * http_bio_new() - Initialize an OpenSSL BIO structure.
- * http_bio_puts() - Send a string for OpenSSL.
- * http_bio_read() - Read data for OpenSSL.
- * http_bio_write() - Write data for OpenSSL.
- * http_debug_hex() - Do a hex dump of a buffer.
- * http_field() - Return the field index for a field name.
- * http_read_ssl() - Read from a SSL/TLS connection.
- * http_locking_cb() - Lock/unlock a thread's mutex.
- * http_send() - Send a request with all fields and the trailing
- * blank line.
- * http_setup_ssl() - Set up SSL/TLS support on a connection.
- * http_shutdown_ssl() - Shut down SSL/TLS on a connection.
- * http_threadid_cb() - Return the current thread ID.
- * http_upgrade() - Force upgrade to TLS encryption.
- * http_write() - Write a buffer to a HTTP connection.
- * http_write_chunk() - Write a chunked buffer.
- * http_write_ssl() - Write to a SSL/TLS connection.
+ * httpAddCredential() - Allocates and adds a single credential to an
+ * array.
+ * _httpBIOMethods() - Get the OpenSSL BIO methods for HTTP
+ * connections.
+ * httpBlocking() - Set blocking/non-blocking behavior on a
+ * connection.
+ * httpCheck() - Check to see if there is a pending response
+ * from the server.
+ * httpClearCookie() - Clear the cookie value(s).
+ * httpClearFields() - Clear HTTP request fields.
+ * httpClose() - Close an HTTP connection.
+ * httpConnect() - Connect to a HTTP server.
+ * httpConnectEncrypt() - Connect to a HTTP server using encryption.
+ * httpCopyCredentials() - Copy the credentials associated with an
+ * encrypted connection.
+ * _httpConvertCredentials() - Convert credentials to the internal format.
+ * _httpCreate() - Create an unconnected HTTP connection.
+ * httpDelete() - Send a DELETE request to the server.
+ * _httpDisconnect() - Disconnect a HTTP connection.
+ * httpEncryption() - Set the required encryption on the link.
+ * httpError() - Get the last error on a connection.
+ * httpFlush() - Flush data from a HTTP connection.
+ * httpFlushWrite() - Flush data in write buffer.
+ * _httpFreeCredentials() - Free internal credentials.
+ * httpFreeCredentials() - Free an array of credentials.
+ * httpGet() - Send a GET request to the server.
+ * httpGetAuthString() - Get the current authorization string.
+ * httpGetBlocking() - Get the blocking/non-block state of a
+ * connection.
+ * httpGetCookie() - Get any cookie data from the response.
+ * httpGetFd() - Get the file descriptor associated with a
+ * connection.
+ * httpGetField() - Get a field value from a request/response.
+ * httpGetLength() - Get the amount of data remaining from the
+ * content-length or transfer-encoding fields.
+ * httpGetLength2() - Get the amount of data remaining from the
+ * content-length or transfer-encoding fields.
+ * httpGetStatus() - Get the status of the last HTTP request.
+ * httpGetSubField() - Get a sub-field value.
+ * httpGetSubField2() - Get a sub-field value.
+ * httpGets() - Get a line of text from a HTTP connection.
+ * httpHead() - Send a HEAD request to the server.
+ * httpInitialize() - Initialize the HTTP interface library and set
+ * the default HTTP proxy (if any).
+ * httpOptions() - Send an OPTIONS request to the server.
+ * _httpPeek() - Peek at data from a HTTP connection.
+ * httpPost() - Send a POST request to the server.
+ * httpPrintf() - Print a formatted string to a HTTP connection.
+ * httpPut() - Send a PUT request to the server.
+ * httpRead() - Read data from a HTTP connection.
+ * httpRead2() - Read data from a HTTP connection.
+ * _httpReadCDSA() - Read function for the CDSA library.
+ * _httpReadGNUTLS() - Read function for the GNU TLS library.
+ * httpReconnect() - Reconnect to a HTTP server.
+ * httpSetAuthString() - Set the current authorization string.
+ * httpSetCredentials() - Set the credentials associated with an
+ * encrypted connection.
+ * httpSetCookie() - Set the cookie value(s).
+ * httpSetExpect() - Set the Expect: header in a request.
+ * httpSetField() - Set the value of an HTTP header.
+ * httpSetLength() - Set the content-length and content-encoding.
+ * httpTrace() - Send an TRACE request to the server.
+ * httpUpdate() - Update the current HTTP state for incoming
+ * data.
+ * _httpWait() - Wait for data available on a connection (no
+ * flush).
+ * httpWait() - Wait for data available on a connection.
+ * httpWrite() - Write data to a HTTP connection.
+ * httpWrite2() - Write data to a HTTP connection.
+ * _httpWriteCDSA() - Write function for the CDSA library.
+ * _httpWriteGNUTLS() - Write function for the GNU TLS library.
+ * http_bio_ctrl() - Control the HTTP connection.
+ * http_bio_free() - Free OpenSSL data.
+ * http_bio_new() - Initialize an OpenSSL BIO structure.
+ * http_bio_puts() - Send a string for OpenSSL.
+ * http_bio_read() - Read data for OpenSSL.
+ * http_bio_write() - Write data for OpenSSL.
+ * http_debug_hex() - Do a hex dump of a buffer.
+ * http_field() - Return the field index for a field name.
+ * http_read_ssl() - Read from a SSL/TLS connection.
+ * http_locking_cb() - Lock/unlock a thread's mutex.
+ * http_send() - Send a request with all fields and the trailing
+ * blank line.
+ * http_set_credentials() - Set the SSL/TLS credentials.
+ * http_setup_ssl() - Set up SSL/TLS support on a connection.
+ * http_shutdown_ssl() - Shut down SSL/TLS on a connection.
+ * http_threadid_cb() - Return the current thread ID.
+ * http_upgrade() - Force upgrade to TLS encryption.
+ * http_write() - Write a buffer to a HTTP connection.
+ * http_write_chunk() - Write a chunked buffer.
+ * http_write_ssl() - Write to a SSL/TLS connection.
*/
/*
int length);
#ifdef HAVE_SSL
static int http_read_ssl(http_t *http, char *buf, int len);
+static int http_set_credentials(http_t *http);
static int http_setup_ssl(http_t *http);
static void http_shutdown_ssl(http_t *http);
static int http_upgrade(http_t *http);
http_bio_free,
NULL,
};
+#endif /* HAVE_SSL && HAVE_LIBSSL */
+
+
+/*
+ * 'httpAddCredential()' - Allocates and adds a single credential to an array.
+ *
+ * Use @code cupsArrayNew(NULL, NULL)@ to create a credentials array.
+ *
+ * @since CUPS 1.5@
+ */
+
+int /* O - 0 on success, -1 on error */
+httpAddCredential(
+ cups_array_t *credentials, /* I - Credentials array */
+ const void *data, /* I - PEM-encoded X.509 data */
+ size_t datalen) /* I - Length of data */
+{
+ http_credential_t *credential; /* Credential data */
+
+
+ if ((credential = malloc(sizeof(http_credential_t))) != NULL)
+ {
+ credential->datalen = datalen;
+
+ if ((credential->data = malloc(datalen)) != NULL)
+ {
+ memcpy(credential->data, data, datalen);
+ cupsArrayAdd(credentials, credential);
+ return (0);
+ }
+
+ free(credential);
+ }
+
+ return (-1);
+}
+#if defined(HAVE_SSL) && defined(HAVE_LIBSSL)
/*
* '_httpBIOMethods()' - Get the OpenSSL BIO methods for HTTP connections.
*/
}
+/*
+ * 'httpCopyCredentials()' - Copy the credentials associated with an encrypted
+ * connection.
+ *
+ * @since CUPS 1.5@
+ */
+
+int /* O - Status of call (0 = success) */
+httpCopyCredentials(
+ http_t *http, /* I - Connection to server */
+ cups_array_t **credentials) /* O - Array of credentials */
+{
+# ifdef HAVE_LIBSSL
+# elif defined(HAVE_GNUTLS)
+# elif defined(HAVE_CDSASSL)
+ OSStatus error; /* Error code */
+ CFIndex count; /* Number of credentials */
+ CFArrayRef peerCerts; /* Peer certificates */
+ SecCertificateRef secCert; /* Certificate reference */
+ CFDataRef data; /* Certificate data */
+ int i; /* Looping var */
+# elif defined(HAVE_SSPISSL)
+# endif /* HAVE_LIBSSL */
+
+
+ if (credentials)
+ *credentials = NULL;
+
+ if (!http || !http->tls || !credentials)
+ return (-1);
+
+# ifdef HAVE_LIBSSL
+ return (-1);
+
+# elif defined(HAVE_GNUTLS)
+ return (-1);
+
+# elif defined(HAVE_CDSASSL)
+ if (!(error = SSLCopyPeerCertificates(http->tls, &peerCerts)) && peerCerts)
+ {
+ if ((*credentials = cupsArrayNew(NULL, NULL)) != NULL)
+ {
+ for (i = 0, count = CFArrayGetCount(peerCerts); i < count; i++)
+ {
+ secCert = (SecCertificateRef)CFArrayGetValueAtIndex(peerCerts, i);
+ if ((data = SecCertificateCopyData(secCert)))
+ {
+ httpAddCredential(*credentials, CFDataGetBytePtr(data),
+ CFDataGetLength(data));
+ CFRelease(data);
+ }
+ }
+ }
+
+ CFRelease(peerCerts);
+ }
+
+ return (error);
+
+# elif defined(HAVE_SSPISSL)
+ return (-1);
+# endif /* HAVE_LIBSSL */
+}
+
+
+/*
+ * '_httpConvertCredentials()' - Convert credentials to the internal format.
+ */
+
+http_tls_credentials_t /* O - Internal credentials */
+_httpConvertCredentials(
+ cups_array_t *credentials) /* I - Array of credentials */
+{
+ if (!credentials)
+ return (NULL);
+
+# ifdef HAVE_LIBSSL
+ return (NULL);
+
+# elif defined(HAVE_GNUTLS)
+ return (NULL);
+
+# elif defined(HAVE_CDSASSL)
+ CFMutableArrayRef peerCerts; /* Peer credentials reference */
+ SecCertificateRef secCert; /* Certificate reference */
+ CFDataRef data; /* Credential data reference */
+ http_credential_t *credential; /* Credential data */
+
+
+ if ((peerCerts = CFArrayCreateMutable(kCFAllocatorDefault,
+ cupsArrayCount(credentials),
+ &kCFTypeArrayCallBacks)) == NULL)
+ return (NULL);
+
+ for (credential = (http_credential_t *)cupsArrayFirst(credentials);
+ credential;
+ credential = (http_credential_t *)cupsArrayNext(credentials))
+ {
+ if ((data = CFDataCreate(kCFAllocatorDefault, credential->data,
+ credential->datalen)))
+ {
+ if ((secCert = SecCertificateCreateWithData(kCFAllocatorDefault, data))
+ != NULL)
+ {
+ CFArrayAppendValue(peerCerts, secCert);
+ CFRelease(secCert);
+ }
+
+ CFRelease(data);
+ }
+ }
+
+ return (peerCerts);
+
+# elif defined(HAVE_SSPISSL)
+ return (NULL);
+
+# else
+ return (NULL);
+# endif /* HAVE_LIBSSL */
+}
+
+
/*
* '_httpCreate()' - Create an unconnected HTTP connection.
*/
}
+/*
+ * '_httpFreeCredentials()' - Free internal credentials.
+ */
+
+void
+_httpFreeCredentials(
+ http_tls_credentials_t credentials) /* I - Internal credentials */
+{
+ if (!credentials)
+ return;
+
+#ifdef HAVE_LIBSSL
+ (void)credentials;
+
+#elif defined(HAVE_GNUTLS)
+ (void)credentials;
+
+#elif defined(HAVE_CDSASSL)
+ CFRelease(credentials);
+
+#elif defined(HAVE_SSPISSL)
+ (void)credentials;
+
+#endif /* HAVE_LIBSSL */
+}
+
+
+/*
+ * 'httpFreeCredentials()' - Free an array of credentials.
+ */
+
+void
+httpFreeCredentials(
+ cups_array_t *credentials) /* I - Array of credentials */
+{
+ http_credential_t *credential; /* Credential */
+
+
+ for (credential = (http_credential_t *)cupsArrayFirst(credentials);
+ credential;
+ credential = (http_credential_t *)cupsArrayNext(credentials))
+ {
+ cupsArrayRemove(credentials, credential);
+ free((void *)credential->data);
+ free(credential);
+ }
+
+ cupsArrayDelete(credentials);
+}
+
+
/*
* 'httpGet()' - Send a GET request to the server.
*/
}
+/*
+ * 'httpSetCredentials()' - Set the credentials associated with an encrypted
+ * connection.
+ *
+ * @since CUPS 1.5@
+ */
+
+int /* O - Status of call (0 = success) */
+httpSetCredentials(http_t *http, /* I - Connection to server */
+ cups_array_t *credentials) /* I - Array of credentials */
+{
+ if (!http || cupsArrayCount(credentials) < 1)
+ return (-1);
+
+ _httpFreeCredentials(http->tls_credentials);
+
+ http->tls_credentials = _httpConvertCredentials(credentials);
+
+ return (http->tls_credentials ? 0 : -1);
+}
+
+
/*
* 'httpSetCookie()' - Set the cookie value(s).
*
if (http->tls && usessl)
{
# ifdef HAVE_LIBSSL
- if (SSL_pending((SSL *)(http->tls)))
+ if (SSL_pending(http->tls))
{
DEBUG_puts("5_httpWait: Return 1 since there is pending SSL data.");
return (1);
}
# elif defined(HAVE_GNUTLS)
- if (gnutls_record_check_pending(((http_tls_t *)(http->tls))->session))
+ if (gnutls_record_check_pending(http->tls))
{
DEBUG_puts("5_httpWait: Return 1 since there is pending SSL data.");
return (1);
# elif defined(HAVE_CDSASSL)
size_t bytes; /* Bytes that are available */
- if (!SSLGetBufferedReadSize(((http_tls_t *)(http->tls))->session, &bytes) &&
+ if (!SSLGetBufferedReadSize(http->tls, &bytes) &&
bytes > 0)
{
DEBUG_puts("5_httpWait: Return 1 since there is pending SSL data.");
ssize_t result; /* Return value */
- result = gnutls_record_recv(((http_tls_t *)(http->tls))->session, buf, len);
+ result = gnutls_record_recv(http->tls, buf, len);
if (result < 0 && !errno)
{
size_t processed; /* Number of bytes processed */
- error = SSLRead(((http_tls_t *)http->tls)->session, buf, len, &processed);
+ error = SSLRead(http->tls, buf, len, &processed);
switch (error)
{
#ifdef HAVE_SSL
+/*
+ * 'http_set_credentials()' - Set the SSL/TLS credentials.
+ */
+
+static int /* O - Status of connection */
+http_set_credentials(http_t *http) /* I - Connection to server */
+{
+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
+# ifdef HAVE_CDSASSL
+ OSStatus error = 0; /* Error code */
+ http_tls_credentials_t credentials = NULL;
+ /* TLS credentials */
+# endif /* HAVE_CDSASSL */
+
+
+ DEBUG_printf(("7http_set_credentials(%p)", http));
+
+# ifdef HAVE_LIBSSL
+ return (-1);
+
+# elif defined(HAVE_GNUTLS)
+ return (-1);
+
+# elif defined(HAVE_CDSASSL)
+ /*
+ * Prefer connection specific credentials...
+ */
+
+ if ((credentials = http->tls_credentials) == NULL)
+ credentials = cg->tls_credentials;
+
+ /*
+ * Otherwise root around in the user's keychain to see if one can be found...
+ */
+
+ if (!credentials)
+ {
+ CFDictionaryRef query; /* Query dictionary */
+ CFTypeRef matches; /* Matching credentials */
+ CFArrayRef dn_array = NULL;/* Distinguished names array */
+ CFTypeRef keys[] = { kSecClass,
+ kSecMatchLimit,
+ kSecReturnRef };
+ /* Keys for dictionary */
+ CFTypeRef values[] = { kSecClassCertificate,
+ kSecMatchLimitOne,
+ kCFBooleanTrue };
+ /* Values for dictionary */
+
+ /*
+ * Get the names associated with the server.
+ */
+
+ if (SSLCopyDistinguishedNames(http->tls, &dn_array) != noErr)
+ return (-1);
+
+ /*
+ * Create a query which will return all identities that can sign and match
+ * the passed in policy.
+ */
+
+ query = CFDictionaryCreate(NULL,
+ (const void**)(&keys[0]),
+ (const void**)(&values[0]),
+ sizeof(keys) / sizeof(keys[0]),
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ error = SecItemCopyMatching(query, &matches);
+
+ CFRelease(query);
+ CFRelease(matches);
+
+ if (dn_array)
+ CFRelease(dn_array);
+ }
+
+ if (credentials)
+ error = SSLSetCertificate(http->tls, credentials);
+
+ return (error);
+
+# elif defined(HAVE_SSPISSL)
+ return (-1);
+# endif /* HAVE_LIBSSL */
+}
+
+
/*
* 'http_setup_ssl()' - Set up SSL/TLS support on a connection.
*/
static int /* O - Status of connection */
http_setup_ssl(http_t *http) /* I - Connection to server */
{
+ _cups_globals_t *cg = _cupsGlobals();
+ /* Pointer to library globals */
+ int any_root; /* Allow any root */
+
# ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
- SSL *conn; /* Connection for encryption */
BIO *bio; /* BIO data */
# elif defined(HAVE_GNUTLS)
- http_tls_t *conn; /* TLS session object */
gnutls_certificate_client_credentials *credentials;
/* TLS credentials */
# elif defined(HAVE_CDSASSL)
OSStatus error; /* Error code */
- http_tls_t *conn; /* CDSA connection information */
+ char *message = NULL; /* Error message */
+ cups_array_t *credentials; /* Credentials array */
+ char *hostname; /* Hostname */
+ cups_array_t *names; /* CUPS distinguished names */
+ CFArrayRef dn_array; /* CF distinguished names array */
+ CFIndex count; /* Number of credentials */
+ CFDataRef data; /* Certificate data */
+ int i; /* Looping var */
+ http_credential_t
+ *credential; /* Credential data */
# elif defined(HAVE_SSPISSL)
TCHAR username[256]; /* Username returned from GetUserName() */
TCHAR commonName[256]; /* Common name for certificate */
DWORD dwSize; /* 32 bit size */
- _sspi_struct_t *conn; /* SSPI connection information */
# endif /* HAVE_LIBSSL */
DEBUG_printf(("7http_setup_ssl(http=%p)", http));
+ /*
+ * Allways allow self-signed certificates for the local loopback address...
+ */
+
+ if ((any_root = cg->any_root) == 0 && httpAddrLocalhost(http->hostaddr))
+ any_root = 1;
+
# ifdef HAVE_LIBSSL
context = SSL_CTX_new(SSLv23_client_method());
bio = BIO_new(_httpBIOMethods());
BIO_ctrl(bio, BIO_C_SET_FILE_PTR, 0, (char *)http);
- conn = SSL_new(context);
- SSL_set_bio(conn, bio, bio);
+ http->tls = SSL_new(context);
+ SSL_set_bio(http->tls_credentials, bio, bio);
- if (SSL_connect(conn) != 1)
+ if (SSL_connect(http->tls) != 1)
{
# ifdef DEBUG
unsigned long error; /* Error code */
# endif /* DEBUG */
SSL_CTX_free(context);
- SSL_free(conn);
+ SSL_free(http->tls);
+ http->tls = NULL;
# ifdef WIN32
http->error = WSAGetLastError();
}
# elif defined(HAVE_GNUTLS)
- if ((conn = (http_tls_t *)malloc(sizeof(http_tls_t))) == NULL)
- {
- http->error = errno;
- http->status = HTTP_ERROR;
-
- return (-1);
- }
-
credentials = (gnutls_certificate_client_credentials *)
malloc(sizeof(gnutls_certificate_client_credentials));
if (credentials == NULL)
{
- free(conn);
-
http->error = errno;
http->status = HTTP_ERROR;
gnutls_certificate_allocate_credentials(credentials);
- gnutls_init(&(conn->session), GNUTLS_CLIENT);
- gnutls_set_default_priority(conn->session);
- gnutls_credentials_set(conn->session, GNUTLS_CRD_CERTIFICATE, *credentials);
- gnutls_transport_set_ptr(conn->session, (gnutls_transport_ptr)http);
- gnutls_transport_set_pull_function(conn->session, _httpReadGNUTLS);
- gnutls_transport_set_push_function(conn->session, _httpWriteGNUTLS);
+ gnutls_init(&http->tls, GNUTLS_CLIENT);
+ gnutls_set_default_priority(http->tls);
+ gnutls_credentials_set(http->tls, GNUTLS_CRD_CERTIFICATE, *credentials);
+ gnutls_transport_set_ptr(http->tls, (gnutls_transport_ptr)http);
+ gnutls_transport_set_pull_function(http->tls, _httpReadGNUTLS);
+ gnutls_transport_set_push_function(http->tls, _httpWriteGNUTLS);
- if ((gnutls_handshake(conn->session)) != GNUTLS_E_SUCCESS)
+ if ((gnutls_handshake(http->tls)) != GNUTLS_E_SUCCESS)
{
http->error = errno;
http->status = HTTP_ERROR;
- gnutls_deinit(conn->session);
+ gnutls_deinit(http->tls);
gnutls_certificate_free_credentials(*credentials);
free(credentials);
- free(conn);
+ http->tls = NULL;
return (-1);
}
- conn->credentials = credentials;
+ http->tls_credentials = credentials;
# elif defined(HAVE_CDSASSL)
- conn = (http_tls_t *)calloc(1, sizeof(http_tls_t));
-
- if (conn == NULL)
- return (-1);
-
- if ((error = SSLNewContext(false, &conn->session)))
+ if ((error = SSLNewContext(false, &http->tls)))
{
http->error = error;
http->status = HTTP_ERROR;
- free(conn);
return (-1);
}
- /*
- * Use a union to resolve warnings about int/pointer size mismatches...
- */
+ error = SSLSetConnection(http->tls, http);
- error = SSLSetConnection(conn->session, http);
+ if (!error)
+ error = SSLSetIOFuncs(http->tls, _httpReadCDSA, _httpWriteCDSA);
if (!error)
- error = SSLSetIOFuncs(conn->session, _httpReadCDSA, _httpWriteCDSA);
+ error = SSLSetProtocolVersionEnabled(http->tls, kSSLProtocol2, false);
if (!error)
- error = SSLSetAllowsExpiredCerts(conn->session, true);
+ error = SSLSetAllowsAnyRoot(http->tls, any_root);
if (!error)
- error = SSLSetAllowsAnyRoot(conn->session, true);
+ error = SSLSetAllowsExpiredCerts(http->tls, cg->expired_certs);
if (!error)
- error = SSLSetProtocolVersionEnabled(conn->session, kSSLProtocol2, false);
+ error = SSLSetAllowsExpiredRoots(http->tls, cg->expired_root);
if (!error)
{
- while ((error = SSLHandshake(conn->session)) == errSSLWouldBlock)
- usleep(1000);
+ if (cg->client_cert_cb)
+ error = SSLSetSessionOption(http->tls,
+ kSSLSessionOptionBreakOnCertRequested, true);
+ else
+ error = http_set_credentials(http);
+ }
+
+ /*
+ * If there's a server certificate callback installed let it evaluate the
+ * certificate(s) during the handshake...
+ */
+
+ if (!error && cg->server_cert_cb != NULL)
+ {
+ error = SSLSetEnableCertVerify(http->tls, false);
+
+ if (!error)
+ error = SSLSetSessionOption(http->tls,
+ kSSLSessionOptionBreakOnServerAuth, true);
+ }
+
+ if (!error)
+ {
+ hostname = httpAddrLocalhost(http->hostaddr) ? "localhost" : http->hostname;
+ error = SSLSetPeerDomainName(http->tls, hostname, strlen(hostname));
+ }
+
+ if (!error)
+ {
+ int done = 0; /* Are we done yet? */
+
+ while (!error && !done)
+ {
+ error = SSLHandshake(http->tls);
+
+ DEBUG_printf(("4_httpWait: SSLHandshake returned %d.", (int)error));
+
+ switch (error)
+ {
+ case noErr :
+ done = 1;
+ break;
+
+ case errSSLWouldBlock :
+ usleep(1000);
+ break;
+
+ case errSSLServerAuthCompleted :
+ error = 0;
+ if (cg->server_cert_cb)
+ {
+ error = httpCopyCredentials(http, &credentials);
+ if (!error)
+ {
+ error = (cg->server_cert_cb)(http, http->tls, credentials,
+ cg->server_cert_data);
+ httpFreeCredentials(credentials);
+ }
+
+ DEBUG_printf(("4_httpWait: Server certificate callback returned "
+ "%d.", (int)error));
+ }
+ break;
+
+ case errSSLClientCertRequested :
+ error = 0;
+
+ if (cg->client_cert_cb)
+ {
+ names = NULL;
+ if (!(error = SSLCopyDistinguishedNames(http->tls, &dn_array)) &&
+ dn_array)
+ {
+ if ((names = cupsArrayNew(NULL, NULL)) != NULL)
+ {
+ for (i = 0, count = CFArrayGetCount(dn_array); i < count; i++)
+ {
+ data = (CFDataRef)CFArrayGetValueAtIndex(dn_array, i);
+
+ if ((credential = malloc(sizeof(*credential))))
+ {
+ credential->datalen = CFDataGetLength(data);
+ if ((credential->data = malloc(credential->datalen)))
+ {
+ memcpy((void *)credential->data, CFDataGetBytePtr(data),
+ credential->datalen);
+ cupsArrayAdd(names, credential);
+ }
+ }
+ }
+ }
+
+ CFRelease(dn_array);
+ }
+
+ if (!error)
+ {
+ error = (cg->client_cert_cb)(http, http->tls, names,
+ cg->client_cert_data);
+
+ DEBUG_printf(("4_httpWait: Client certificate callback "
+ "returned %d.", (int)error));
+ }
+
+ httpFreeCredentials(names);
+ }
+ break;
+
+ case errSSLUnknownRootCert :
+ case errSSLNoRootCert :
+ message = _("Unable to establish a secure connection to host "
+ "(unknown root certificate).");
+ break;
+
+ case errSSLCertExpired :
+ message = _("Unable to establish a secure connection to host "
+ "(expired certificate).");
+ break;
+
+ case errSSLCertNotYetValid :
+ message = _("Unable to establish a secure connection to host "
+ "(certificate not yet valid).");
+ break;
+
+ case errSSLHostNameMismatch :
+ message = _("Unable to establish a secure connection to host "
+ "(host name mismatch).");
+ break;
+
+ case errSSLXCertChainInvalid :
+ message = _("Unable to establish a secure connection to host "
+ "(certificate chain invalid).");
+ break;
+
+ default :
+ break;
+ }
+ }
}
if (error)
{
http->error = error;
http->status = HTTP_ERROR;
+ errno = ECONNREFUSED;
+
+ SSLDisposeContext(http->tls);
+ http->tls = NULL;
- SSLDisposeContext(conn->session);
+ /*
+ * If an error string wasn't set by the callbacks use a generic one...
+ */
- free(conn);
+ if (!message)
+ message = _("Unable to establish a secure connection to host.");
+
+ _cupsSetError(HTTP_PKI_ERROR, message, 1);
return (-1);
}
+
# elif defined(HAVE_SSPISSL)
- conn = _sspiAlloc();
+ http->tls = _sspiAlloc();
- if (!conn)
+ if (!http->tls)
return (-1);
- conn->sock = http->fd;
- dwSize = sizeof(username) / sizeof(TCHAR);
+ http->tls->sock = http->fd;
+ dwSize = sizeof(username) / sizeof(TCHAR);
GetUserName(username, &dwSize);
_sntprintf_s(commonName, sizeof(commonName) / sizeof(TCHAR),
sizeof(commonName) / sizeof(TCHAR), TEXT("CN=%s"), username);
- if (!_sspiGetCredentials(conn, L"ClientContainer", commonName, FALSE))
+ if (!_sspiGetCredentials(http->tls_credentials, L"ClientContainer",
+ commonName, FALSE))
{
- _sspiFree(conn);
+ _sspiFree(http->tls_credentials);
+ http->tls_credentials = NULL;
return (-1);
}
- _sspiSetAllowsAnyRoot(conn, TRUE);
- _sspiSetAllowsExpiredCerts(conn, TRUE);
+ _sspiSetAllowsAnyRoot(http->tls_credentials, TRUE);
+ _sspiSetAllowsExpiredCerts(http->tls_credentials, TRUE);
- if (!_sspiConnect(conn, http->hostname))
+ if (!_sspiConnect(http->tls_credentials, http->hostname))
{
- _sspiFree(conn);
+ _sspiFree(http->tls_credentials);
+ http->tls_credentials = NULL;
return (-1);
}
# endif /* HAVE_CDSASSL */
- http->tls = conn;
return (0);
}
#endif /* HAVE_SSL */
{
# ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
- SSL *conn; /* Connection for encryption */
-
- conn = (SSL *)(http->tls);
- context = SSL_get_SSL_CTX(conn);
+ context = SSL_get_SSL_CTX(http->tls_credentials);
- SSL_shutdown(conn);
+ SSL_shutdown(http->tls_credentials);
SSL_CTX_free(context);
- SSL_free(conn);
+ SSL_free(http->tls_credentials);
# elif defined(HAVE_GNUTLS)
- http_tls_t *conn; /* Encryption session */
gnutls_certificate_client_credentials *credentials;
/* TLS credentials */
+ credentials = (gnutls_certificate_client_credentials *)(http->tls_credentials);
- conn = (http_tls_t *)(http->tls);
- credentials = (gnutls_certificate_client_credentials *)(conn->credentials);
-
- gnutls_bye(conn->session, GNUTLS_SHUT_RDWR);
- gnutls_deinit(conn->session);
+ gnutls_bye(http->tls, GNUTLS_SHUT_RDWR);
+ gnutls_deinit(http->tls);
gnutls_certificate_free_credentials(*credentials);
free(credentials);
- free(conn);
# elif defined(HAVE_CDSASSL)
- http_tls_t *conn; /* CDSA connection information */
-
-
- conn = (http_tls_t *)(http->tls);
-
- while (SSLClose(conn->session) == errSSLWouldBlock)
+ while (SSLClose(http->tls) == errSSLWouldBlock)
usleep(1000);
- SSLDisposeContext(conn->session);
+ SSLDisposeContext(http->tls);
- if (conn->certsArray)
- CFRelease(conn->certsArray);
+ if (http->tls_credentials)
+ CFRelease(http->tls_credentials);
- free(conn);
# elif defined(HAVE_SSPISSL)
- _sspi_struct_t *conn; /* SSPI connection information */
-
- conn = (_sspi_struct_t*)(http->tls);
- _sspiFree(conn);
+ _sspiFree(http->tls_credentials);
# endif /* HAVE_LIBSSL */
http->tls = NULL;
httpClearFields(http);
httpSetField(http, HTTP_FIELD_CONNECTION, "upgrade");
- httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.0, SSL/2.0, SSL/3.0");
+ httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2, TLS/1.1, TLS/1.0, SSL/3.0");
if ((ret = httpOptions(http, "*")) == 0)
{
result = SSL_write((SSL *)(http->tls), buf, len);
# elif defined(HAVE_GNUTLS)
- result = gnutls_record_send(((http_tls_t *)(http->tls))->session, buf, len);
+ result = gnutls_record_send(http->tls, buf, len);
if (result < 0 && !errno)
{
size_t processed; /* Number of bytes processed */
- error = SSLWrite(((http_tls_t *)http->tls)->session, buf, len, &processed);
+ error = SSLWrite(http->tls, buf, len, &processed);
switch (error)
{
/*
* "$Id$"
*
- * Hyper-Text Transport Protocol definitions for the Common UNIX Printing
- * System (CUPS).
+ * Hyper-Text Transport Protocol definitions for CUPS.
*
- * Copyright 2007-2009 by Apple Inc.
+ * Copyright 2007-2010 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
*/
# include "versioning.h"
+# include "array.h"
# include <string.h>
# include <time.h>
# include <sys/types.h>
HTTP_GATEWAY_TIMEOUT, /* Gateway connection timed out */
HTTP_NOT_SUPPORTED, /* HTTP version not supported */
- HTTP_AUTHORIZATION_CANCELED = 1000 /* User canceled authorization */
-
+ HTTP_AUTHORIZATION_CANCELED = 1000, /* User canceled authorization @since CUPS 1.4@ */
+ HTTP_PKI_ERROR /* Error negotiating a secure connection @since CUPS 1.5@ */
} http_status_t;
-typedef enum http_uri_status_e /**** URI separation status @since CUPS1.2@ ****/
+typedef enum http_uri_status_e /**** URI separation status @since CUPS 1.2@ ****/
{
HTTP_URI_OVERFLOW = -8, /* URI buffer for httpAssembleURI is too small */
HTTP_URI_BAD_ARGUMENTS = -7, /* Bad arguments to function (error) */
typedef struct _http_s http_t; /**** HTTP connection type ****/
+typedef struct http_credential_s /**** Credential data @since CUPS 1.5@ ****/
+{
+ void *data; /* Pointer to credential data */
+ size_t datalen; /* Credential length */
+} http_credential_t;
+
/*
* Prototypes...
extern void httpSetAuthString(http_t *http, const char *scheme,
const char *data) _CUPS_API_1_3;
+/**** New in CUPS 1.5 ****/
+extern int httpAddCredential(cups_array_t *credentials,
+ const void *data, size_t datalen)
+ _CUPS_API_1_5;
+extern int httpCopyCredentials(http_t *http,
+ cups_array_t **credentials)
+ _CUPS_API_1_5;
+extern void httpFreeCredentials(cups_array_t *certs) _CUPS_API_1_5;
+extern int httpSetCredentials(http_t *http, cups_array_t *certs)
+ _CUPS_API_1_5;
+
/*
* C++ magic...
*/
"server-error-job-canceled",
"server-error-multiple-document-jobs-not-supported",
"server-error-printer-is-deactivated"
+ },
+ * const ipp_status_1000s[] = /* CUPS internal */
+ {
+ "cups-authorization-canceled",
+ "cups-pki-error",
+ "cups-upgrade-required"
};
static char * const ipp_std_ops[] =
{
{
if (val > attr->values)
{
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr++ = ',';
else
bufptr ++;
{
ptr = printer_states[val->integer - IPP_PRINTER_IDLE];
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
strlcpy(bufptr, ptr, bufend - bufptr + 1);
bufptr += strlen(ptr);
{
ptr = job_states[val->integer - IPP_JOB_PENDING];
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
strlcpy(bufptr, ptr, bufend - bufptr + 1);
bufptr += strlen(ptr);
}
case IPP_TAG_INTEGER :
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
bufptr += snprintf(bufptr, bufend - bufptr + 1, "%d", val->integer);
else
bufptr += snprintf(temp, sizeof(temp), "%d", val->integer);
break;
case IPP_TAG_BOOLEAN :
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
strlcpy(bufptr, val->boolean ? "true" : "false",
bufend - bufptr + 1);
break;
case IPP_TAG_RANGE :
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
bufptr += snprintf(bufptr, bufend - bufptr + 1, "%d-%d",
val->range.lower, val->range.upper);
else
break;
case IPP_TAG_RESOLUTION :
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
bufptr += snprintf(bufptr, bufend - bufptr + 1, "%dx%d%s",
val->resolution.xres, val->resolution.yres,
val->resolution.units == IPP_RES_PER_INCH ?
val->date[5], val->date[6], val->date[8], val->date[9],
val->date[10]);
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
strlcpy(bufptr, temp, bufend - bufptr + 1);
bufptr += strlen(temp);
case IPP_TAG_LANGUAGE :
case IPP_TAG_TEXTLANG :
case IPP_TAG_NAMELANG :
+ if (!val->string.text)
+ break;
+
for (ptr = val->string.text; *ptr; ptr ++)
{
if (*ptr == '\\' || *ptr == '\"')
{
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr = '\\';
bufptr ++;
}
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr = *ptr;
bufptr ++;
}
break;
case IPP_TAG_BEGIN_COLLECTION :
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
bufptr += ipp_col_string(val->collection, bufptr,
bufend - bufptr + 1);
else
{
if (*ptr == '\\' || isspace(*ptr & 255))
{
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr = '\\';
bufptr ++;
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr = *ptr;
bufptr ++;
}
else if (!isprint(*ptr & 255))
{
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
bufptr += snprintf(bufptr, bufend - bufptr + 1, "\\%03o",
*ptr & 255);
else
}
else
{
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr = *ptr;
bufptr ++;
}
default :
ptr = ippTagString(attr->value_tag);
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
strlcpy(bufptr, ptr, bufend - bufptr + 1);
bufptr += strlen(ptr);
break;
}
}
- if (bufptr < bufend)
+ if (buffer && bufptr < bufend)
*bufptr = '\0';
else if (bufend)
*bufend = '\0';
return (ipp_status_400s[error - IPP_BAD_REQUEST]);
else if (error >= IPP_INTERNAL_ERROR && error <= IPP_PRINTER_IS_DEACTIVATED)
return (ipp_status_500s[error - IPP_INTERNAL_ERROR]);
+ else if (error >= IPP_AUTHORIZATION_CANCELED && error <= IPP_UPGRADE_REQUIRED)
+ return (ipp_status_1000s[error - IPP_AUTHORIZATION_CANCELED]);
/*
* No, build an "unknown-xxxx" error string...
if (!strcasecmp(name, ipp_status_500s[i]))
return ((ipp_status_t)(i + 0x500));
+ for (i = 0; i < (sizeof(ipp_status_1000s) / sizeof(ipp_status_1000s[0])); i ++)
+ if (!strcasecmp(name, ipp_status_1000s[i]))
+ return ((ipp_status_t)(i + 0x1000));
+
return ((ipp_status_t)-1);
}
IPP_PRINTER_BUSY, /* server-error-busy */
IPP_ERROR_JOB_CANCELED, /* server-error-job-canceled */
IPP_MULTIPLE_JOBS_NOT_SUPPORTED, /* server-error-multiple-document-jobs-not-supported */
- IPP_PRINTER_IS_DEACTIVATED /* server-error-printer-is-deactivated */
+ IPP_PRINTER_IS_DEACTIVATED, /* server-error-printer-is-deactivated */
+
+ IPP_AUTHORIZATION_CANCELED = 0x1000, /* Authorization canceled by user @since CUPS 1.4@ */
+ IPP_PKI_ERROR, /* Error negotiating a secure connection @since CUPS 1.5@ */
+ IPP_UPGRADE_REQUIRED /* TLS upgrade required */
} ipp_status_t;
#define IPP_ERROR_JOB_CANCELLED IPP_ERROR_JOB_CANCELED
LIBRARY libcups2\r
-VERSION 2.8\r
+VERSION 2.9\r
EXPORTS\r
_cupsGetPassword\r
_cupsGlobals\r
cupsResolveConflicts\r
cupsSendRequest\r
cupsServer\r
+cupsSetCredentials\r
cupsSetDests\r
cupsSetDests2\r
cupsSetEncryption\r
cupsUTF8ToUTF32\r
cupsUser\r
cupsWriteRequestData\r
+httpAddCredential\r
httpAddrAny\r
httpAddrConnect\r
httpAddrEqual\r
httpError\r
httpFlush\r
httpFlushWrite\r
+httpFreeCredential\r
httpGet\r
httpGetBlocking\r
httpGetCookie\r
httpSeparate2\r
httpSeparateURI\r
httpSetCookie\r
+httpSetCredentials\r
httpSetExpect\r
httpSetField\r
httpSetLength\r
* Include necessary headers...
*/
-#include "cups.h"
-#include "string-private.h"
-#include "debug-private.h"
+#include "cups-private.h"
/*
extern const char *_pwgGetType(_pwg_t *pwg, const char *media_type);
extern const char *_pwgInputSlotForSource(const char *media_source,
char *name, size_t namesize);
-extern _pwg_media_t *_pwgMediaForPPD(const char *ppd);
extern const char *_pwgMediaTypeForType(const char *media_type,
char *name, size_t namesize);
extern const char *_pwgPageSizeForMedia(_pwg_media_t *media,
else
{
if ((media = ippFindAttribute(job, "media", IPP_TAG_NAME)) == NULL)
- media = ippFindAttribute(job, "media", IPP_TAG_KEYWORD);
+ if ((media = ippFindAttribute(job, "media", IPP_TAG_KEYWORD)) == NULL)
+ if ((media = ippFindAttribute(job, "PageSize", IPP_TAG_NAME)) == NULL)
+ media = ippFindAttribute(job, "PageRegion", IPP_TAG_NAME);
if (media)
{
if ((pwg = _pwgMediaForPWG(media->values[0].string.text)) == NULL)
- pwg = _pwgMediaForLegacy(media->values[0].string.text);
+ if ((pwg = _pwgMediaForLegacy(media->values[0].string.text)) == NULL)
+ pwg = _pwgMediaForPPD(media->values[0].string.text);
if (pwg)
{
extern int _pwgInitSize(_pwg_size_t *size, ipp_t *job,
int *margins_set);
extern _pwg_media_t *_pwgMediaForLegacy(const char *legacy);
+extern _pwg_media_t *_pwgMediaForPPD(const char *ppd);
extern _pwg_media_t *_pwgMediaForPWG(const char *pwg);
extern _pwg_media_t *_pwgMediaForSize(int width, int length);
break;
case HTTP_UNAUTHORIZED :
- case HTTP_AUTHORIZATION_CANCELED :
_cupsSetError(IPP_NOT_AUTHORIZED, httpStatus(status), 0);
break;
+ case HTTP_AUTHORIZATION_CANCELED :
+ _cupsSetError(IPP_AUTHORIZATION_CANCELED, httpStatus(status), 0);
+ break;
+
case HTTP_FORBIDDEN :
_cupsSetError(IPP_FORBIDDEN, httpStatus(status), 0);
break;
_cupsSetError(IPP_VERSION_NOT_SUPPORTED, httpStatus(status), 0);
break;
+ case HTTP_UPGRADE_REQUIRED :
+ _cupsSetError(IPP_UPGRADE_REQUIRED, httpStatus(status), 0);
+ break;
+
default :
DEBUG_printf(("4_cupsSetHTTPError: HTTP error %d mapped to "
"IPP_SERVICE_UNAVAILABLE!", status));
"http", "", "server", "/admin?DEVICE_URI=usb://HP/Photosmart%25202600%2520series?serial=MY53OK70V10400", 80, 0 },
{ HTTP_URI_OK, "lpd://Acme%20Laser%20(01%3A23%3A45).local._tcp._printer/",
"lpd", "", "Acme Laser (01:23:45).local._tcp._printer", "/", 515, 0 },
+ { HTTP_URI_OK, "ipp://HP%20Officejet%204500%20G510n-z%20%40%20Will's%20MacBook%20Pro%2015%22._ipp._tcp.local./",
+ "ipp", "", "HP Officejet 4500 G510n-z @ Will's MacBook Pro 15\"._ipp._tcp.local.", "/", 631, 0 },
/* Missing scheme */
{ HTTP_URI_MISSING_SCHEME, "/path/to/file/index.html",
* password callback.
* cupsServer() - Return the hostname/address of the current
* server.
+ * cupsSetClientCertCB() - Set the client certificate callback.
* cupsSetEncryption() - Set the encryption preference.
* cupsSetPasswordCB() - Set the password callback for CUPS.
* cupsSetPasswordCB2() - Set the advanced password callback for CUPS.
* cupsSetServer() - Set the default server name and port.
+ * cupsSetServerCertCB() - Set the server certificate callback.
* cupsSetUser() - Set the default user name.
* cupsUser() - Return the current user's name.
* _cupsGetPassword() - Get a password from the user.
static void cups_read_client_conf(cups_file_t *fp,
_cups_globals_t *cg,
const char *cups_encryption,
- const char *cups_server);
+ const char *cups_server,
+ const char *cups_anyroot,
+ const char *cups_expiredroot,
+ const char *cups_expiredcerts);
/*
}
+/*
+ * 'cupsSetClientCertCB()' - Set the client certificate callback.
+ *
+ * Pass @code NULL@ to restore the default callback.
+ *
+ * Note: The current certificate callback is tracked separately for each thread
+ * in a program. Multi-threaded programs that override the callback need to do
+ * so in each thread for the same callback to be used.
+ *
+ * @since CUPS 1.5@
+ */
+
+void
+cupsSetClientCertCB(
+ cups_client_cert_cb_t cb, /* I - Callback function */
+ void *user_data) /* I - User data pointer */
+{
+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
+
+
+ cg->client_cert_cb = cb;
+ cg->client_cert_data = user_data;
+}
+
+
+/*
+ * 'cupsSetCredentials()' - Set the default credentials to be used for SSL/TLS
+ * connections.
+ *
+ * Note: The default credentials are tracked separately for each thread in a
+ * program. Multi-threaded programs that override the setting need to do so in
+ * each thread for the same setting to be used.
+ *
+ * @since CUPS 1.5@
+ */
+
+int /* O - Status of call (0 = success) */
+cupsSetCredentials(
+ cups_array_t *credentials) /* I - Array of credentials */
+{
+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
+
+
+ if (cupsArrayCount(credentials) < 1)
+ return (-1);
+
+ _httpFreeCredentials(cg->tls_credentials);
+ cg->tls_credentials = _httpConvertCredentials(credentials);
+
+ return (cg->tls_credentials ? 0 : -1);
+}
+
+
/*
* 'cupsSetEncryption()' - Set the encryption preference.
*
}
+/*
+ * 'cupsSetServerCertCB()' - Set the server certificate callback.
+ *
+ * Pass @code NULL@ to restore the default callback.
+ *
+ * Note: The current credentials callback is tracked separately for each thread
+ * in a program. Multi-threaded programs that override the callback need to do
+ * so in each thread for the same callback to be used.
+ *
+ * @since CUPS 1.5@
+ */
+
+void
+cupsSetServerCertCB(
+ cups_server_cert_cb_t cb, /* I - Callback function */
+ void *user_data) /* I - User data pointer */
+{
+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
+
+
+ cg->server_cert_cb = cb;
+ cg->server_cert_data = user_data;
+}
+
+
/*
* 'cupsSetUser()' - Set the default user name.
*
cups_file_t *fp; /* File */
const char *home, /* Home directory of user */
*cups_encryption, /* CUPS_ENCRYPTION env var */
- *cups_server; /* CUPS_SERVER env var */
+ *cups_server, /* CUPS_SERVER env var */
+ *cups_anyroot, /* CUPS_ANYROOT env var */
+ *cups_expiredroot, /* CUPS_EXPIREDROOT env var */
+ *cups_expiredcerts; /* CUPS_EXPIREDCERTS env var */
char filename[1024]; /* Filename */
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
* First collect environment variables...
*/
- cups_encryption = getenv("CUPS_ENCRYPTION");
- cups_server = getenv("CUPS_SERVER");
+ cups_encryption = getenv("CUPS_ENCRYPTION");
+ cups_server = getenv("CUPS_SERVER");
+ cups_anyroot = getenv("CUPS_ANYROOT");
+ cups_expiredroot = getenv("CUPS_EXPIREDROOT");
+ cups_expiredcerts = getenv("CUPS_EXPIREDCERTS");
/*
* Then, if needed, the .cups/client.conf or .cupsrc file in the home
snprintf(filename, sizeof(filename), "%s/.cups/client.conf", home);
if ((fp = cupsFileOpen(filename, "r")) != NULL)
{
- cups_read_client_conf(fp, cg, cups_encryption, cups_server);
+ cups_read_client_conf(fp, cg, cups_encryption, cups_server,
+ cups_anyroot, cups_expiredroot,
+ cups_expiredcerts);
+
cupsFileClose(fp);
}
}
snprintf(filename, sizeof(filename), "%s/client.conf", cg->cups_serverroot);
if ((fp = cupsFileOpen(filename, "r")) != NULL)
{
- cups_read_client_conf(fp, cg, cups_encryption, cups_server);
+ cups_read_client_conf(fp, cg, cups_encryption, cups_server,
+ cups_anyroot, cups_expiredroot,
+ cups_expiredcerts);
cupsFileClose(fp);
}
}
cups_file_t *fp, /* I - File to read */
_cups_globals_t *cg, /* I - Global data */
const char *cups_encryption, /* I - CUPS_ENCRYPTION env var */
- const char *cups_server) /* I - CUPS_SERVER env var */
+ const char *cups_server, /* I - CUPS_SERVER env var */
+ const char *cups_anyroot, /* I - CUPS_ANYROOT env var */
+ const char *cups_expiredroot, /* I - CUPS_EXPIREDROOT env var */
+ const char *cups_expiredcerts) /* I - CUPS_EXPIREDCERTS env var */
{
int linenum; /* Current line number */
char line[1024], /* Line from file */
*value, /* Pointer into line */
encryption[1024], /* Encryption value */
- server_name[1024]; /* ServerName value */
+ server_name[1024], /* ServerName value */
+ any_root[1024], /* AllowAnyRoot value */
+ expired_root[1024], /* AllowExpiredRoot value */
+ expired_certs[1024]; /* AllowExpiredCerts value */
/*
strlcpy(server_name, value, sizeof(server_name));
cups_server = server_name;
}
+ else if (!cups_anyroot && !strcasecmp(line, "AllowAnyRoot") && value)
+ {
+ strlcpy(any_root, value, sizeof(any_root));
+ cups_anyroot = any_root;
+ }
+ else if (!cups_expiredroot && !strcasecmp(line, "AllowExpiredRoot") &&
+ value)
+ {
+ strlcpy(expired_root, value, sizeof(expired_root));
+ cups_expiredroot = expired_root;
+ }
+ else if (!cups_expiredcerts && !strcasecmp(line, "AllowExpiredCerts") &&
+ value)
+ {
+ strlcpy(expired_certs, value, sizeof(expired_certs));
+ cups_expiredcerts = expired_certs;
+ }
}
/*
if (!cg->ipp_port && value)
cg->ipp_port = atoi(value);
}
+
+ if (cups_anyroot)
+ cg->any_root = !strcasecmp(cups_anyroot, "yes") ||
+ !strcasecmp(cups_anyroot, "on") ||
+ !strcasecmp(cups_anyroot, "true");
+
+ if (cups_expiredroot)
+ cg->expired_root = !strcasecmp(cups_expiredroot, "yes") ||
+ !strcasecmp(cups_expiredroot, "on") ||
+ !strcasecmp(cups_expiredroot, "true");
+
+ if (cups_expiredcerts)
+ cg->expired_certs = !strcasecmp(cups_expiredcerts, "yes") ||
+ !strcasecmp(cups_expiredcerts, "on") ||
+ !strcasecmp(cups_expiredcerts, "true");
}
/*
* This header defines several constants - _CUPS_DEPRECATED,
* _CUPS_API_1_1, _CUPS_API_1_1_19, _CUPS_API_1_1_20, _CUPS_API_1_1_21,
- * _CUPS_API_1_2, _CUPS_API_1_3, _CUPS_API_1_4 - which add compiler-
- * specific attributes that flag functions that are deprecated or added
+ * _CUPS_API_1_2, _CUPS_API_1_3, _CUPS_API_1_4, _CUPS_API_1_5 - which add
+ * compiler-specific attributes that flag functions that are deprecated or added
* in particular releases.
*
* On Mac OS X, the _CUPS_API_* constants are defined based on the values of
# ifndef AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
# define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER __attribute__((unavailable))
# endif /* !AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER */
+# ifndef AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+# define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER __attribute__((unavailable))
+# endif /* !AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER */
# define _CUPS_API_1_1_19 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
# define _CUPS_API_1_1_20 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
# define _CUPS_API_1_1_21 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
# define _CUPS_API_1_2 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
# define _CUPS_API_1_3 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
# define _CUPS_API_1_4 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
-# define _CUPS_API_1_5
+# define _CUPS_API_1_5 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
# else
# define _CUPS_API_1_1_19
# define _CUPS_API_1_1_20
images/color-wheel.png \
images/cups.png \
images/cups-icon.png \
+ images/generic.png \
images/left.gif \
images/right.gif \
images/sel.gif \
# DO NOT DELETE
commandtoescpx.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h
-commandtoescpx.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-commandtoescpx.o: ../cups/array.h driver.h ../cups/raster.h ../cups/cups.h
+commandtoescpx.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+commandtoescpx.o: ../cups/language.h driver.h ../cups/raster.h ../cups/cups.h
commandtoescpx.o: ../cups/ppd.h ../cups/string-private.h ../config.h
commandtoescpx.o: ../data/escp.h
commandtopclx.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h
-commandtopclx.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-commandtopclx.o: ../cups/array.h driver.h ../cups/raster.h ../cups/cups.h
+commandtopclx.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+commandtopclx.o: ../cups/language.h driver.h ../cups/raster.h ../cups/cups.h
commandtopclx.o: ../cups/ppd.h ../cups/string-private.h ../config.h
commandtopclx.o: ../data/pcl.h
rastertoescpx.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-rastertoescpx.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-rastertoescpx.o: ../cups/array.h ../cups/raster.h ../cups/cups.h
+rastertoescpx.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+rastertoescpx.o: ../cups/language.h ../cups/raster.h ../cups/cups.h
rastertoescpx.o: ../cups/ppd.h ../cups/language-private.h ../cups/transcode.h
rastertoescpx.o: ../cups/string-private.h ../config.h ../data/escp.h
rastertopclx.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-rastertopclx.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-rastertopclx.o: ../cups/array.h ../cups/raster.h ../cups/cups.h ../cups/ppd.h
-rastertopclx.o: ../cups/language-private.h ../cups/transcode.h
+rastertopclx.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+rastertopclx.o: ../cups/language.h ../cups/raster.h ../cups/cups.h
+rastertopclx.o: ../cups/ppd.h ../cups/language-private.h ../cups/transcode.h
rastertopclx.o: ../cups/string-private.h ../config.h pcl-common.h
rastertopclx.o: ../data/pcl.h
pcl-common.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-pcl-common.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+pcl-common.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pcl-common.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h pcl-common.h
pcl-common.o: ../cups/string-private.h ../config.h ../data/pcl.h
testcmyk.o: ../cups/string-private.h ../config.h driver.h ../cups/cups.h
testcmyk.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-testcmyk.o: ../cups/language.h ../cups/array.h ../cups/raster.h
+testcmyk.o: ../cups/array.h ../cups/language.h ../cups/raster.h
testcmyk.o: ../cups/cups.h ../cups/ppd.h
testdither.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-testdither.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+testdither.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
testdither.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
testdither.o: ../cups/string-private.h ../config.h
testrgb.o: ../cups/string-private.h ../config.h driver.h ../cups/cups.h
testrgb.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-testrgb.o: ../cups/language.h ../cups/array.h ../cups/raster.h ../cups/cups.h
+testrgb.o: ../cups/array.h ../cups/language.h ../cups/raster.h ../cups/cups.h
testrgb.o: ../cups/ppd.h
attr.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-attr.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+attr.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
attr.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
attr.o: ../cups/string-private.h ../config.h
check.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-check.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+check.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
check.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
cmyk.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-cmyk.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+cmyk.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
cmyk.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
cmyk.o: ../cups/string-private.h ../config.h
dither.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-dither.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+dither.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
dither.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h ../config.h
lut.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-lut.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+lut.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
lut.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
pack.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-pack.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+pack.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pack.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
rgb.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-rgb.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+rgb.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
rgb.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
srgb.o: driver.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-srgb.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+srgb.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
srgb.o: ../cups/raster.h ../cups/cups.h ../cups/ppd.h
image-bmp.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-bmp.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-bmp.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-bmp.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-bmp.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-colorspace.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-colorspace.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-colorspace.o: ../cups/http.h ../cups/language.h ../cups/array.h
+image-colorspace.o: ../cups/http.h ../cups/array.h ../cups/language.h
image-colorspace.o: ../cups/ppd.h ../cups/cups.h ../cups/debug-private.h
image-colorspace.o: ../cups/string-private.h ../config.h
image-gif.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-gif.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-gif.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-gif.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-gif.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-jpeg.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-jpeg.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-jpeg.o: ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-jpeg.o: ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-jpeg.o: ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-jpeg.o: ../config.h
image-photocd.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-photocd.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-photocd.o: ../cups/http.h ../cups/language.h ../cups/array.h
+image-photocd.o: ../cups/http.h ../cups/array.h ../cups/language.h
image-photocd.o: ../cups/ppd.h ../cups/cups.h ../cups/debug-private.h
image-photocd.o: ../cups/string-private.h ../config.h
image-pix.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-pix.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-pix.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-pix.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-pix.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-png.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-png.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-png.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-png.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-png.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-pnm.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-pnm.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-pnm.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-pnm.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-pnm.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-sgi.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-sgi.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-sgi.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-sgi.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-sgi.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-sgi.o: image-sgi.h
image-sgilib.o: image-sgi.h
image-sun.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-sun.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-sun.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-sun.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-sun.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
image-tiff.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-tiff.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-tiff.o: ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-tiff.o: ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-tiff.o: ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-tiff.o: ../config.h
image-zoom.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image-zoom.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-zoom.o: ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-zoom.o: ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-zoom.o: ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-zoom.o: ../config.h
image.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
image.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
error.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
error.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-error.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+error.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
error.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
interpret.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
interpret.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-interpret.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+interpret.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
interpret.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
raster.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
raster.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-raster.o: ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+raster.o: ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
raster.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
bannertops.o: pstext.h common.h ../cups/string-private.h ../config.h
bannertops.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
bannertops.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-bannertops.o: ../cups/language.h ../cups/array.h ../cups/transcode.h image.h
+bannertops.o: ../cups/array.h ../cups/language.h ../cups/transcode.h image.h
bannertops.o: ../cups/raster.h ../cups/ppd.h ../cups/language-private.h
commandtops.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
commandtops.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-commandtops.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+commandtops.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
commandtops.o: ../config.h ../cups/sidechannel.h
gziptoany.o: ../cups/cups-private.h ../cups/cups.h ../cups/string-private.h
gziptoany.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
gziptoany.o: ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-gziptoany.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+gziptoany.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
gziptoany.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
gziptoany.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
gziptoany.o: ../cups/language-private.h ../cups/transcode.h
gziptoany.o: ../cups/thread-private.h
imagetops.o: common.h ../cups/string-private.h ../config.h ../cups/cups.h
imagetops.o: ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-imagetops.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+imagetops.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
imagetops.o: image.h ../cups/raster.h ../cups/ppd.h
imagetops.o: ../cups/language-private.h ../cups/transcode.h
imagetoraster.o: common.h ../cups/string-private.h ../config.h ../cups/cups.h
imagetoraster.o: ../cups/ppd.h ../cups/cups.h ../cups/file.h
imagetoraster.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-imagetoraster.o: ../cups/language.h ../cups/array.h image-private.h image.h
+imagetoraster.o: ../cups/array.h ../cups/language.h image-private.h image.h
imagetoraster.o: ../cups/raster.h ../cups/ppd.h ../cups/debug-private.h
imagetoraster.o: ../cups/language-private.h ../cups/transcode.h
common.o: common.h ../cups/string-private.h ../config.h ../cups/cups.h
common.o: ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-common.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+common.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pdftops.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-pdftops.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-pdftops.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-pdftops.o: ../config.h ../cups/language-private.h ../cups/transcode.h
+pdftops.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+pdftops.o: ../cups/language.h ../cups/string-private.h ../config.h
+pdftops.o: ../cups/language-private.h ../cups/transcode.h
pstext.o: pstext.h common.h ../cups/string-private.h ../config.h
pstext.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-pstext.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-pstext.o: ../cups/language.h ../cups/array.h ../cups/transcode.h
-pstext.o: ../cups/language-private.h
+pstext.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+pstext.o: ../cups/language.h ../cups/transcode.h ../cups/language-private.h
pstops.o: common.h ../cups/string-private.h ../config.h ../cups/cups.h
pstops.o: ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-pstops.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+pstops.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pstops.o: ../cups/file.h ../cups/array.h ../cups/language-private.h
pstops.o: ../cups/transcode.h
rasterbench.o: ../config.h ../cups/raster.h ../cups/cups.h ../cups/file.h
rasterbench.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rasterbench.o: ../cups/language.h ../cups/array.h ../cups/ppd.h
+rasterbench.o: ../cups/array.h ../cups/language.h ../cups/ppd.h
rastertoepson.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertoepson.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertoepson.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertoepson.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertoepson.o: ../config.h ../cups/language-private.h ../cups/transcode.h
rastertoepson.o: ../cups/raster.h ../cups/ppd.h
rastertohp.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertohp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertohp.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertohp.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertohp.o: ../config.h ../cups/language-private.h ../cups/transcode.h
rastertohp.o: ../cups/raster.h ../cups/ppd.h
rastertolabel.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertolabel.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertolabel.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertolabel.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertolabel.o: ../config.h ../cups/language-private.h ../cups/transcode.h
rastertolabel.o: ../cups/raster.h ../cups/ppd.h
testimage.o: image.h ../cups/raster.h ../cups/cups.h ../cups/file.h
testimage.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-testimage.o: ../cups/language.h ../cups/array.h ../cups/ppd.h
+testimage.o: ../cups/array.h ../cups/language.h ../cups/ppd.h
testraster.o: image-private.h image.h ../cups/raster.h ../cups/cups.h
testraster.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testraster.o: ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+testraster.o: ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
testraster.o: ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
testraster.o: ../config.h
textcommon.o: textcommon.h common.h ../cups/string-private.h ../config.h
textcommon.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
textcommon.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-textcommon.o: ../cups/language.h ../cups/array.h ../cups/language-private.h
+textcommon.o: ../cups/array.h ../cups/language.h ../cups/language-private.h
textcommon.o: ../cups/transcode.h
texttops.o: textcommon.h common.h ../cups/string-private.h ../config.h
texttops.o: ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-texttops.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-texttops.o: ../cups/language.h ../cups/array.h ../cups/language-private.h
-texttops.o: ../cups/transcode.h
+texttops.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+texttops.o: ../cups/language.h ../cups/language-private.h ../cups/transcode.h
# DO NOT DELETE
image-bmp.32.o: image-bmp.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-bmp.32.o: image-bmp.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-bmp.32.o: image-bmp.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-bmp.32.o: image-bmp.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-bmp.32.o: image-bmp.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-colorspace.32.o: image-colorspace.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-colorspace.32.o: image-colorspace.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-colorspace.32.o: image-colorspace.c ../cups/http.h ../cups/language.h ../cups/array.h
+image-colorspace.32.o: image-colorspace.c ../cups/http.h ../cups/array.h ../cups/language.h
image-colorspace.32.o: image-colorspace.c ../cups/ppd.h ../cups/cups.h ../cups/debug-private.h
image-colorspace.32.o: image-colorspace.c ../cups/string-private.h ../config.h
image-gif.32.o: image-gif.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-gif.32.o: image-gif.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-gif.32.o: image-gif.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-gif.32.o: image-gif.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-gif.32.o: image-gif.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-jpeg.32.o: image-jpeg.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-jpeg.32.o: image-jpeg.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-jpeg.32.o: image-jpeg.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-jpeg.32.o: image-jpeg.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-jpeg.32.o: image-jpeg.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-jpeg.32.o: image-jpeg.c ../config.h
image-photocd.32.o: image-photocd.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-photocd.32.o: image-photocd.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-photocd.32.o: image-photocd.c ../cups/http.h ../cups/language.h ../cups/array.h
+image-photocd.32.o: image-photocd.c ../cups/http.h ../cups/array.h ../cups/language.h
image-photocd.32.o: image-photocd.c ../cups/ppd.h ../cups/cups.h ../cups/debug-private.h
image-photocd.32.o: image-photocd.c ../cups/string-private.h ../config.h
image-pix.32.o: image-pix.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-pix.32.o: image-pix.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-pix.32.o: image-pix.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-pix.32.o: image-pix.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-pix.32.o: image-pix.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-png.32.o: image-png.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-png.32.o: image-png.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-png.32.o: image-png.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-png.32.o: image-png.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-png.32.o: image-png.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-pnm.32.o: image-pnm.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-pnm.32.o: image-pnm.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-pnm.32.o: image-pnm.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-pnm.32.o: image-pnm.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-pnm.32.o: image-pnm.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-sgi.32.o: image-sgi.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-sgi.32.o: image-sgi.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-sgi.32.o: image-sgi.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-sgi.32.o: image-sgi.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-sgi.32.o: image-sgi.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-sgi.32.o: image-sgi.c image-sgi.h
image-sgilib.32.o: image-sgilib.c image-sgi.h
image-sun.32.o: image-sun.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-sun.32.o: image-sun.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-sun.32.o: image-sun.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-sun.32.o: image-sun.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-sun.32.o: image-sun.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-tiff.32.o: image-tiff.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-tiff.32.o: image-tiff.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-tiff.32.o: image-tiff.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-tiff.32.o: image-tiff.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-tiff.32.o: image-tiff.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-tiff.32.o: image-tiff.c ../config.h
image-zoom.32.o: image-zoom.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-zoom.32.o: image-zoom.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-zoom.32.o: image-zoom.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-zoom.32.o: image-zoom.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-zoom.32.o: image-zoom.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-zoom.32.o: image-zoom.c ../config.h
image.32.o: image.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image.32.o: image.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image.32.o: image.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image.32.o: image.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image.32.o: image.c ../cups/debug-private.h ../cups/string-private.h ../config.h
error.32.o: error.c image-private.h image.h ../cups/raster.h ../cups/cups.h
error.32.o: error.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-error.32.o: error.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+error.32.o: error.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
error.32.o: error.c ../cups/debug-private.h ../cups/string-private.h ../config.h
interpret.32.o: interpret.c image-private.h image.h ../cups/raster.h ../cups/cups.h
interpret.32.o: interpret.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-interpret.32.o: interpret.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+interpret.32.o: interpret.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
interpret.32.o: interpret.c ../cups/debug-private.h ../cups/string-private.h ../config.h
raster.32.o: raster.c image-private.h image.h ../cups/raster.h ../cups/cups.h
raster.32.o: raster.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-raster.32.o: raster.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+raster.32.o: raster.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
raster.32.o: raster.c ../cups/debug-private.h ../cups/string-private.h ../config.h
bannertops.32.o: bannertops.c pstext.h common.h ../cups/string-private.h ../config.h
bannertops.32.o: bannertops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
bannertops.32.o: bannertops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-bannertops.32.o: bannertops.c ../cups/language.h ../cups/array.h ../cups/transcode.h image.h
+bannertops.32.o: bannertops.c ../cups/array.h ../cups/language.h ../cups/transcode.h image.h
bannertops.32.o: bannertops.c ../cups/raster.h ../cups/ppd.h ../cups/language-private.h
commandtops.32.o: commandtops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
commandtops.32.o: commandtops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-commandtops.32.o: commandtops.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+commandtops.32.o: commandtops.c ../cups/array.h ../cups/language.h ../cups/string-private.h
commandtops.32.o: commandtops.c ../config.h ../cups/sidechannel.h
gziptoany.32.o: gziptoany.c ../cups/cups-private.h ../cups/cups.h ../cups/string-private.h
gziptoany.32.o: gziptoany.c ../config.h ../cups/debug-private.h ../cups/ppd-private.h
gziptoany.32.o: gziptoany.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-gziptoany.32.o: gziptoany.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+gziptoany.32.o: gziptoany.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
gziptoany.32.o: gziptoany.c ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
gziptoany.32.o: gziptoany.c ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
gziptoany.32.o: gziptoany.c ../cups/language-private.h ../cups/transcode.h
gziptoany.32.o: gziptoany.c ../cups/thread-private.h
imagetops.32.o: imagetops.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
imagetops.32.o: imagetops.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-imagetops.32.o: imagetops.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+imagetops.32.o: imagetops.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
imagetops.32.o: imagetops.c image.h ../cups/raster.h ../cups/ppd.h
imagetops.32.o: imagetops.c ../cups/language-private.h ../cups/transcode.h
imagetoraster.32.o: imagetoraster.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
imagetoraster.32.o: imagetoraster.c ../cups/ppd.h ../cups/cups.h ../cups/file.h
imagetoraster.32.o: imagetoraster.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-imagetoraster.32.o: imagetoraster.c ../cups/language.h ../cups/array.h image-private.h image.h
+imagetoraster.32.o: imagetoraster.c ../cups/array.h ../cups/language.h image-private.h image.h
imagetoraster.32.o: imagetoraster.c ../cups/raster.h ../cups/ppd.h ../cups/debug-private.h
imagetoraster.32.o: imagetoraster.c ../cups/language-private.h ../cups/transcode.h
common.32.o: common.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
common.32.o: common.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-common.32.o: common.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+common.32.o: common.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pdftops.32.o: pdftops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-pdftops.32.o: pdftops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-pdftops.32.o: pdftops.c ../cups/language.h ../cups/array.h ../cups/string-private.h
-pdftops.32.o: pdftops.c ../config.h ../cups/language-private.h ../cups/transcode.h
+pdftops.32.o: pdftops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+pdftops.32.o: pdftops.c ../cups/language.h ../cups/string-private.h ../config.h
+pdftops.32.o: pdftops.c ../cups/language-private.h ../cups/transcode.h
pstext.32.o: pstext.c pstext.h common.h ../cups/string-private.h ../config.h
pstext.32.o: pstext.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-pstext.32.o: pstext.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-pstext.32.o: pstext.c ../cups/language.h ../cups/array.h ../cups/transcode.h
-pstext.32.o: pstext.c ../cups/language-private.h
+pstext.32.o: pstext.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+pstext.32.o: pstext.c ../cups/language.h ../cups/transcode.h ../cups/language-private.h
pstops.32.o: pstops.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
pstops.32.o: pstops.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-pstops.32.o: pstops.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+pstops.32.o: pstops.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pstops.32.o: pstops.c ../cups/file.h ../cups/array.h ../cups/language-private.h
pstops.32.o: pstops.c ../cups/transcode.h
rasterbench.32.o: rasterbench.c ../config.h ../cups/raster.h ../cups/cups.h ../cups/file.h
rasterbench.32.o: rasterbench.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rasterbench.32.o: rasterbench.c ../cups/language.h ../cups/array.h ../cups/ppd.h
+rasterbench.32.o: rasterbench.c ../cups/array.h ../cups/language.h ../cups/ppd.h
rastertoepson.32.o: rastertoepson.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertoepson.32.o: rastertoepson.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertoepson.32.o: rastertoepson.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertoepson.32.o: rastertoepson.c ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertoepson.32.o: rastertoepson.c ../config.h ../cups/language-private.h ../cups/transcode.h
rastertoepson.32.o: rastertoepson.c ../cups/raster.h ../cups/ppd.h
rastertohp.32.o: rastertohp.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertohp.32.o: rastertohp.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertohp.32.o: rastertohp.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertohp.32.o: rastertohp.c ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertohp.32.o: rastertohp.c ../config.h ../cups/language-private.h ../cups/transcode.h
rastertohp.32.o: rastertohp.c ../cups/raster.h ../cups/ppd.h
rastertolabel.32.o: rastertolabel.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertolabel.32.o: rastertolabel.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertolabel.32.o: rastertolabel.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertolabel.32.o: rastertolabel.c ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertolabel.32.o: rastertolabel.c ../config.h ../cups/language-private.h ../cups/transcode.h
rastertolabel.32.o: rastertolabel.c ../cups/raster.h ../cups/ppd.h
testimage.32.o: testimage.c image.h ../cups/raster.h ../cups/cups.h ../cups/file.h
testimage.32.o: testimage.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-testimage.32.o: testimage.c ../cups/language.h ../cups/array.h ../cups/ppd.h
+testimage.32.o: testimage.c ../cups/array.h ../cups/language.h ../cups/ppd.h
testraster.32.o: testraster.c image-private.h image.h ../cups/raster.h ../cups/cups.h
testraster.32.o: testraster.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testraster.32.o: testraster.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+testraster.32.o: testraster.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
testraster.32.o: testraster.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
testraster.32.o: testraster.c ../config.h
textcommon.32.o: textcommon.c textcommon.h common.h ../cups/string-private.h ../config.h
textcommon.32.o: textcommon.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
textcommon.32.o: textcommon.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-textcommon.32.o: textcommon.c ../cups/language.h ../cups/array.h ../cups/language-private.h
+textcommon.32.o: textcommon.c ../cups/array.h ../cups/language.h ../cups/language-private.h
textcommon.32.o: textcommon.c ../cups/transcode.h
texttops.32.o: texttops.c textcommon.h common.h ../cups/string-private.h ../config.h
texttops.32.o: texttops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-texttops.32.o: texttops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-texttops.32.o: texttops.c ../cups/language.h ../cups/array.h ../cups/language-private.h
-texttops.32.o: texttops.c ../cups/transcode.h
+texttops.32.o: texttops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+texttops.32.o: texttops.c ../cups/language.h ../cups/language-private.h ../cups/transcode.h
# DO NOT DELETE
image-bmp.64.o: image-bmp.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-bmp.64.o: image-bmp.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-bmp.64.o: image-bmp.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-bmp.64.o: image-bmp.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-bmp.64.o: image-bmp.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-colorspace.64.o: image-colorspace.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-colorspace.64.o: image-colorspace.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-colorspace.64.o: image-colorspace.c ../cups/http.h ../cups/language.h ../cups/array.h
+image-colorspace.64.o: image-colorspace.c ../cups/http.h ../cups/array.h ../cups/language.h
image-colorspace.64.o: image-colorspace.c ../cups/ppd.h ../cups/cups.h ../cups/debug-private.h
image-colorspace.64.o: image-colorspace.c ../cups/string-private.h ../config.h
image-gif.64.o: image-gif.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-gif.64.o: image-gif.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-gif.64.o: image-gif.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-gif.64.o: image-gif.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-gif.64.o: image-gif.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-jpeg.64.o: image-jpeg.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-jpeg.64.o: image-jpeg.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-jpeg.64.o: image-jpeg.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-jpeg.64.o: image-jpeg.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-jpeg.64.o: image-jpeg.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-jpeg.64.o: image-jpeg.c ../config.h
image-photocd.64.o: image-photocd.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-photocd.64.o: image-photocd.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-photocd.64.o: image-photocd.c ../cups/http.h ../cups/language.h ../cups/array.h
+image-photocd.64.o: image-photocd.c ../cups/http.h ../cups/array.h ../cups/language.h
image-photocd.64.o: image-photocd.c ../cups/ppd.h ../cups/cups.h ../cups/debug-private.h
image-photocd.64.o: image-photocd.c ../cups/string-private.h ../config.h
image-pix.64.o: image-pix.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-pix.64.o: image-pix.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-pix.64.o: image-pix.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-pix.64.o: image-pix.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-pix.64.o: image-pix.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-png.64.o: image-png.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-png.64.o: image-png.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-png.64.o: image-png.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-png.64.o: image-png.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-png.64.o: image-png.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-pnm.64.o: image-pnm.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-pnm.64.o: image-pnm.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-pnm.64.o: image-pnm.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-pnm.64.o: image-pnm.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-pnm.64.o: image-pnm.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-sgi.64.o: image-sgi.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-sgi.64.o: image-sgi.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-sgi.64.o: image-sgi.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-sgi.64.o: image-sgi.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-sgi.64.o: image-sgi.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-sgi.64.o: image-sgi.c image-sgi.h
image-sgilib.64.o: image-sgilib.c image-sgi.h
image-sun.64.o: image-sun.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-sun.64.o: image-sun.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image-sun.64.o: image-sun.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image-sun.64.o: image-sun.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image-sun.64.o: image-sun.c ../cups/debug-private.h ../cups/string-private.h ../config.h
image-tiff.64.o: image-tiff.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-tiff.64.o: image-tiff.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-tiff.64.o: image-tiff.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-tiff.64.o: image-tiff.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-tiff.64.o: image-tiff.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-tiff.64.o: image-tiff.c ../config.h
image-zoom.64.o: image-zoom.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image-zoom.64.o: image-zoom.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-image-zoom.64.o: image-zoom.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+image-zoom.64.o: image-zoom.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
image-zoom.64.o: image-zoom.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
image-zoom.64.o: image-zoom.c ../config.h
image.64.o: image.c image-private.h image.h ../cups/raster.h ../cups/cups.h
image.64.o: image.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-image.64.o: image.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+image.64.o: image.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
image.64.o: image.c ../cups/debug-private.h ../cups/string-private.h ../config.h
error.64.o: error.c image-private.h image.h ../cups/raster.h ../cups/cups.h
error.64.o: error.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-error.64.o: error.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+error.64.o: error.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
error.64.o: error.c ../cups/debug-private.h ../cups/string-private.h ../config.h
interpret.64.o: interpret.c image-private.h image.h ../cups/raster.h ../cups/cups.h
interpret.64.o: interpret.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-interpret.64.o: interpret.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+interpret.64.o: interpret.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
interpret.64.o: interpret.c ../cups/debug-private.h ../cups/string-private.h ../config.h
raster.64.o: raster.c image-private.h image.h ../cups/raster.h ../cups/cups.h
raster.64.o: raster.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-raster.64.o: raster.c ../cups/language.h ../cups/array.h ../cups/ppd.h ../cups/cups.h
+raster.64.o: raster.c ../cups/array.h ../cups/language.h ../cups/ppd.h ../cups/cups.h
raster.64.o: raster.c ../cups/debug-private.h ../cups/string-private.h ../config.h
bannertops.64.o: bannertops.c pstext.h common.h ../cups/string-private.h ../config.h
bannertops.64.o: bannertops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
bannertops.64.o: bannertops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-bannertops.64.o: bannertops.c ../cups/language.h ../cups/array.h ../cups/transcode.h image.h
+bannertops.64.o: bannertops.c ../cups/array.h ../cups/language.h ../cups/transcode.h image.h
bannertops.64.o: bannertops.c ../cups/raster.h ../cups/ppd.h ../cups/language-private.h
commandtops.64.o: commandtops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
commandtops.64.o: commandtops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-commandtops.64.o: commandtops.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+commandtops.64.o: commandtops.c ../cups/array.h ../cups/language.h ../cups/string-private.h
commandtops.64.o: commandtops.c ../config.h ../cups/sidechannel.h
gziptoany.64.o: gziptoany.c ../cups/cups-private.h ../cups/cups.h ../cups/string-private.h
gziptoany.64.o: gziptoany.c ../config.h ../cups/debug-private.h ../cups/ppd-private.h
gziptoany.64.o: gziptoany.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-gziptoany.64.o: gziptoany.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+gziptoany.64.o: gziptoany.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
gziptoany.64.o: gziptoany.c ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
gziptoany.64.o: gziptoany.c ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h
gziptoany.64.o: gziptoany.c ../cups/language-private.h ../cups/transcode.h
gziptoany.64.o: gziptoany.c ../cups/thread-private.h
imagetops.64.o: imagetops.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
imagetops.64.o: imagetops.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-imagetops.64.o: imagetops.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+imagetops.64.o: imagetops.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
imagetops.64.o: imagetops.c image.h ../cups/raster.h ../cups/ppd.h
imagetops.64.o: imagetops.c ../cups/language-private.h ../cups/transcode.h
imagetoraster.64.o: imagetoraster.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
imagetoraster.64.o: imagetoraster.c ../cups/ppd.h ../cups/cups.h ../cups/file.h
imagetoraster.64.o: imagetoraster.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-imagetoraster.64.o: imagetoraster.c ../cups/language.h ../cups/array.h image-private.h image.h
+imagetoraster.64.o: imagetoraster.c ../cups/array.h ../cups/language.h image-private.h image.h
imagetoraster.64.o: imagetoraster.c ../cups/raster.h ../cups/ppd.h ../cups/debug-private.h
imagetoraster.64.o: imagetoraster.c ../cups/language-private.h ../cups/transcode.h
common.64.o: common.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
common.64.o: common.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-common.64.o: common.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+common.64.o: common.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pdftops.64.o: pdftops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-pdftops.64.o: pdftops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-pdftops.64.o: pdftops.c ../cups/language.h ../cups/array.h ../cups/string-private.h
-pdftops.64.o: pdftops.c ../config.h ../cups/language-private.h ../cups/transcode.h
+pdftops.64.o: pdftops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+pdftops.64.o: pdftops.c ../cups/language.h ../cups/string-private.h ../config.h
+pdftops.64.o: pdftops.c ../cups/language-private.h ../cups/transcode.h
pstext.64.o: pstext.c pstext.h common.h ../cups/string-private.h ../config.h
pstext.64.o: pstext.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-pstext.64.o: pstext.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-pstext.64.o: pstext.c ../cups/language.h ../cups/array.h ../cups/transcode.h
-pstext.64.o: pstext.c ../cups/language-private.h
+pstext.64.o: pstext.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+pstext.64.o: pstext.c ../cups/language.h ../cups/transcode.h ../cups/language-private.h
pstops.64.o: pstops.c common.h ../cups/string-private.h ../config.h ../cups/cups.h
pstops.64.o: pstops.c ../cups/ppd.h ../cups/cups.h ../cups/file.h ../cups/versioning.h
-pstops.64.o: pstops.c ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+pstops.64.o: pstops.c ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
pstops.64.o: pstops.c ../cups/file.h ../cups/array.h ../cups/language-private.h
pstops.64.o: pstops.c ../cups/transcode.h
rasterbench.64.o: rasterbench.c ../config.h ../cups/raster.h ../cups/cups.h ../cups/file.h
rasterbench.64.o: rasterbench.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rasterbench.64.o: rasterbench.c ../cups/language.h ../cups/array.h ../cups/ppd.h
+rasterbench.64.o: rasterbench.c ../cups/array.h ../cups/language.h ../cups/ppd.h
rastertoepson.64.o: rastertoepson.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertoepson.64.o: rastertoepson.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertoepson.64.o: rastertoepson.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertoepson.64.o: rastertoepson.c ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertoepson.64.o: rastertoepson.c ../config.h ../cups/language-private.h ../cups/transcode.h
rastertoepson.64.o: rastertoepson.c ../cups/raster.h ../cups/ppd.h
rastertohp.64.o: rastertohp.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertohp.64.o: rastertohp.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertohp.64.o: rastertohp.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertohp.64.o: rastertohp.c ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertohp.64.o: rastertohp.c ../config.h ../cups/language-private.h ../cups/transcode.h
rastertohp.64.o: rastertohp.c ../cups/raster.h ../cups/ppd.h
rastertolabel.64.o: rastertolabel.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
rastertolabel.64.o: rastertolabel.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-rastertolabel.64.o: rastertolabel.c ../cups/language.h ../cups/array.h ../cups/string-private.h
+rastertolabel.64.o: rastertolabel.c ../cups/array.h ../cups/language.h ../cups/string-private.h
rastertolabel.64.o: rastertolabel.c ../config.h ../cups/language-private.h ../cups/transcode.h
rastertolabel.64.o: rastertolabel.c ../cups/raster.h ../cups/ppd.h
testimage.64.o: testimage.c image.h ../cups/raster.h ../cups/cups.h ../cups/file.h
testimage.64.o: testimage.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-testimage.64.o: testimage.c ../cups/language.h ../cups/array.h ../cups/ppd.h
+testimage.64.o: testimage.c ../cups/array.h ../cups/language.h ../cups/ppd.h
testraster.64.o: testraster.c image-private.h image.h ../cups/raster.h ../cups/cups.h
testraster.64.o: testraster.c ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testraster.64.o: testraster.c ../cups/http.h ../cups/language.h ../cups/array.h ../cups/ppd.h
+testraster.64.o: testraster.c ../cups/http.h ../cups/array.h ../cups/language.h ../cups/ppd.h
testraster.64.o: testraster.c ../cups/cups.h ../cups/debug-private.h ../cups/string-private.h
testraster.64.o: testraster.c ../config.h
textcommon.64.o: textcommon.c textcommon.h common.h ../cups/string-private.h ../config.h
textcommon.64.o: textcommon.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
textcommon.64.o: textcommon.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-textcommon.64.o: textcommon.c ../cups/language.h ../cups/array.h ../cups/language-private.h
+textcommon.64.o: textcommon.c ../cups/array.h ../cups/language.h ../cups/language-private.h
textcommon.64.o: textcommon.c ../cups/transcode.h
texttops.64.o: texttops.c textcommon.h common.h ../cups/string-private.h ../config.h
texttops.64.o: texttops.c ../cups/cups.h ../cups/ppd.h ../cups/cups.h ../cups/file.h
-texttops.64.o: texttops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-texttops.64.o: texttops.c ../cups/language.h ../cups/array.h ../cups/language-private.h
-texttops.64.o: texttops.c ../cups/transcode.h
+texttops.64.o: texttops.c ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+texttops.64.o: texttops.c ../cups/language.h ../cups/language-private.h ../cups/transcode.h
# DO NOT DELETE THIS LINE -- make depend depends on it.
checkpo.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-checkpo.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-checkpo.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-checkpo.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-checkpo.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-checkpo.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-checkpo.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-checkpo.o: ../cups/transcode.h ../cups/thread-private.h
+checkpo.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+checkpo.o: ../cups/language.h ../cups/string-private.h ../config.h
+checkpo.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+checkpo.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+checkpo.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+checkpo.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+checkpo.o: ../cups/thread-private.h
po2strings.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
po2strings.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-po2strings.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+po2strings.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
po2strings.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
po2strings.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
po2strings.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
po2strings.o: ../cups/transcode.h ../cups/thread-private.h
translate.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
translate.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-translate.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+translate.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
translate.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
translate.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
translate.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
# DO NOT DELETE THIS LINE -- make depend depends on it.
bcp.o: ../cups/string-private.h ../config.h ../cups/cups.h ../cups/file.h
-bcp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-bcp.o: ../cups/array.h ../cups/ppd.h ../cups/cups.h
+bcp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+bcp.o: ../cups/language.h ../cups/ppd.h ../cups/cups.h
tbcp.o: ../cups/string-private.h ../config.h ../cups/cups.h ../cups/file.h
-tbcp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-tbcp.o: ../cups/array.h ../cups/ppd.h ../cups/cups.h
+tbcp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+tbcp.o: ../cups/language.h ../cups/ppd.h ../cups/cups.h
# DO NOT DELETE THIS LINE -- make depend depends on it.
dbus.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-dbus.o: ../cups/http.h ../cups/language.h ../cups/array.h
+dbus.o: ../cups/http.h ../cups/array.h ../cups/language.h
dbus.o: ../cups/string-private.h ../config.h
mailto.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-mailto.o: ../cups/http.h ../cups/language.h ../cups/array.h
+mailto.o: ../cups/http.h ../cups/array.h ../cups/language.h
mailto.o: ../cups/language-private.h ../cups/transcode.h
mailto.o: ../cups/string-private.h ../config.h
rss.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-rss.o: ../cups/http.h ../cups/language.h ../cups/array.h ../cups/language.h
+rss.o: ../cups/http.h ../cups/array.h ../cups/language.h ../cups/language.h
rss.o: ../cups/string-private.h ../config.h ../cups/array.h
testnotify.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h
-testnotify.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+testnotify.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
testnotify.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-array.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-array.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-array.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+ppdc-array.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
ppdc-array.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdc-array.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdc-array.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdc-array.o: ../cups/thread-private.h
ppdc-attr.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-attr.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-attr.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+ppdc-attr.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
ppdc-attr.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdc-attr.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdc-attr.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdc-attr.o: ../cups/thread-private.h
ppdc-catalog.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-catalog.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-catalog.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-catalog.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-catalog.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-catalog.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-catalog.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-catalog.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-catalog.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-catalog.o: ../cups/thread-private.h
ppdc-choice.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-choice.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-choice.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-choice.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-choice.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-choice.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-choice.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-choice.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-choice.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-choice.o: ../cups/thread-private.h
ppdc-constraint.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-constraint.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-constraint.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-constraint.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-constraint.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-constraint.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-constraint.o: ../cups/debug-private.h ../cups/ppd-private.h
ppdc-constraint.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
ppdc-constraint.o: ../cups/http-private.h ../cups/http.h
ppdc-constraint.o: ../cups/thread-private.h
ppdc-driver.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-driver.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-driver.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-driver.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-driver.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-driver.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-driver.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-driver.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-driver.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-driver.o: ../cups/thread-private.h
ppdc-file.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-file.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-file.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+ppdc-file.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
ppdc-file.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdc-file.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdc-file.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdc-file.o: ../cups/thread-private.h
ppdc-filter.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-filter.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-filter.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-filter.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-filter.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-filter.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-filter.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-filter.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-filter.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-filter.o: ../cups/thread-private.h
ppdc-font.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-font.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-font.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+ppdc-font.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
ppdc-font.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdc-font.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdc-font.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdc-font.o: ../cups/thread-private.h
ppdc-group.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-group.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-group.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+ppdc-group.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
ppdc-group.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdc-group.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdc-group.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdc-group.o: ../cups/thread-private.h
ppdc-import.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-import.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-import.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-import.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-import.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-import.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-import.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-import.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-import.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-import.o: ../cups/thread-private.h
ppdc-mediasize.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-mediasize.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-mediasize.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-mediasize.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-mediasize.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-mediasize.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-mediasize.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-mediasize.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-mediasize.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-mediasize.o: ../cups/transcode.h ../cups/thread-private.h
ppdc-message.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-message.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-message.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-message.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-message.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-message.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-message.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-message.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-message.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-message.o: ../cups/thread-private.h
ppdc-option.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-option.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-option.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-option.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-option.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-option.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-option.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-option.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-option.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-option.o: ../cups/thread-private.h
ppdc-profile.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-profile.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-profile.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-profile.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-profile.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-profile.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-profile.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-profile.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-profile.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-profile.o: ../cups/thread-private.h
ppdc-shared.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-shared.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-shared.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-shared.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-shared.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-shared.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-shared.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-shared.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-shared.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-shared.o: ../cups/thread-private.h
ppdc-source.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-source.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-source.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-source.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-source.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-source.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-source.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-source.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-source.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-source.o: ../data/pcl.h
ppdc-string.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-string.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-string.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-string.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-string.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-string.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-string.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-string.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-string.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-string.o: ../cups/thread-private.h
ppdc-variable.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc-variable.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdc-variable.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-ppdc-variable.o: ../cups/array.h ../cups/string-private.h ../config.h
+ppdc-variable.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+ppdc-variable.o: ../cups/language.h ../cups/string-private.h ../config.h
ppdc-variable.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ppdc-variable.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ppdc-variable.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ppdc-variable.o: ../cups/thread-private.h
genstrings.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
genstrings.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-genstrings.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+genstrings.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
genstrings.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
genstrings.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
genstrings.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
genstrings.o: ../cups/thread-private.h
ppdc.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdc.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h
-ppdc.o: ../cups/http.h ../cups/language.h ../cups/array.h
+ppdc.o: ../cups/http.h ../cups/array.h ../cups/language.h
ppdc.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdc.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdc.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdc.o: ../cups/thread-private.h
ppdhtml.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdhtml.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h
-ppdhtml.o: ../cups/http.h ../cups/language.h ../cups/array.h
+ppdhtml.o: ../cups/http.h ../cups/array.h ../cups/language.h
ppdhtml.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdhtml.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdhtml.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdhtml.o: ../cups/thread-private.h
ppdi.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdi.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h
-ppdi.o: ../cups/http.h ../cups/language.h ../cups/array.h
+ppdi.o: ../cups/http.h ../cups/array.h ../cups/language.h
ppdi.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdi.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdi.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdi.o: ../cups/language-private.h ../cups/transcode.h
ppdi.o: ../cups/thread-private.h
ppdmerge.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ppdmerge.o: ../cups/ipp.h ../cups/http.h ../cups/versioning.h
-ppdmerge.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-ppdmerge.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-ppdmerge.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-ppdmerge.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-ppdmerge.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-ppdmerge.o: ../cups/transcode.h ../cups/thread-private.h
-ppdmerge.o: ../cups/ppd-private.h ../cups/array.h
+ppdmerge.o: ../cups/ipp.h ../cups/http.h ../cups/versioning.h ../cups/array.h
+ppdmerge.o: ../cups/language.h ../cups/string-private.h ../config.h
+ppdmerge.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+ppdmerge.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+ppdmerge.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+ppdmerge.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+ppdmerge.o: ../cups/thread-private.h ../cups/ppd-private.h ../cups/array.h
ppdpo.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
ppdpo.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h
-ppdpo.o: ../cups/http.h ../cups/language.h ../cups/array.h
+ppdpo.o: ../cups/http.h ../cups/array.h ../cups/language.h
ppdpo.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
ppdpo.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
ppdpo.o: ../cups/pwg-private.h ../cups/http-private.h ../cups/http.h
ppdpo.o: ../cups/thread-private.h
testcatalog.o: ppdc-private.h ppdc.h ../cups/file.h ../cups/versioning.h
testcatalog.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-testcatalog.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-testcatalog.o: ../cups/array.h ../cups/string-private.h ../config.h
+testcatalog.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+testcatalog.o: ../cups/language.h ../cups/string-private.h ../config.h
testcatalog.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
testcatalog.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
testcatalog.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
# DO NOT DELETE
auth.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-auth.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-auth.o: ../cups/array.h ../cups/string-private.h ../config.h
+auth.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+auth.o: ../cups/language.h ../cups/string-private.h ../config.h
auth.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
auth.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
auth.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
auth.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
auth.o: network.h subscriptions.h
banners.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-banners.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-banners.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-banners.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-banners.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-banners.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-banners.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-banners.o: ../cups/transcode.h ../cups/thread-private.h mime.h
-banners.o: ../cups/array.h ../cups/file.h sysman.h statbuf.h cert.h auth.h
-banners.o: client.h policy.h printers.h ../cups/pwg-private.h classes.h job.h
-banners.o: conf.h banners.h dirsvc.h network.h subscriptions.h ../cups/dir.h
+banners.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+banners.o: ../cups/language.h ../cups/string-private.h ../config.h
+banners.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+banners.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+banners.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+banners.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+banners.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+banners.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+banners.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+banners.o: network.h subscriptions.h ../cups/dir.h
cert.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-cert.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-cert.o: ../cups/array.h ../cups/string-private.h ../config.h
+cert.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+cert.o: ../cups/language.h ../cups/string-private.h ../config.h
cert.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
cert.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
cert.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
cert.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
cert.o: network.h subscriptions.h
classes.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-classes.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-classes.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-classes.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-classes.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-classes.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-classes.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-classes.o: ../cups/transcode.h ../cups/thread-private.h mime.h
-classes.o: ../cups/array.h ../cups/file.h sysman.h statbuf.h cert.h auth.h
-classes.o: client.h policy.h printers.h ../cups/pwg-private.h classes.h job.h
-classes.o: conf.h banners.h dirsvc.h network.h subscriptions.h
+classes.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+classes.o: ../cups/language.h ../cups/string-private.h ../config.h
+classes.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+classes.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+classes.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+classes.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+classes.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+classes.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+classes.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+classes.o: network.h subscriptions.h
client.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-client.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-client.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-client.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-client.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-client.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-client.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-client.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-client.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-client.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-client.o: dirsvc.h network.h subscriptions.h
+client.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+client.o: ../cups/language.h ../cups/string-private.h ../config.h
+client.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+client.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+client.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+client.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+client.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+client.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+client.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+client.o: network.h subscriptions.h
conf.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-conf.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-conf.o: ../cups/array.h ../cups/string-private.h ../config.h
+conf.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+conf.o: ../cups/language.h ../cups/string-private.h ../config.h
conf.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
conf.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
conf.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
conf.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
conf.o: network.h subscriptions.h
dirsvc.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-dirsvc.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-dirsvc.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-dirsvc.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-dirsvc.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-dirsvc.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-dirsvc.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-dirsvc.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-dirsvc.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-dirsvc.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-dirsvc.o: dirsvc.h network.h subscriptions.h
+dirsvc.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+dirsvc.o: ../cups/language.h ../cups/string-private.h ../config.h
+dirsvc.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+dirsvc.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+dirsvc.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+dirsvc.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+dirsvc.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+dirsvc.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+dirsvc.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+dirsvc.o: network.h subscriptions.h
env.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-env.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-env.o: ../cups/array.h ../cups/string-private.h ../config.h
+env.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+env.o: ../cups/language.h ../cups/string-private.h ../config.h
env.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
env.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
env.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
env.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
env.o: network.h subscriptions.h
main.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-main.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-main.o: ../cups/array.h ../cups/string-private.h ../config.h
+main.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+main.o: ../cups/language.h ../cups/string-private.h ../config.h
main.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
main.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
main.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
main.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
main.o: network.h subscriptions.h ../cups/dir.h
ipp.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ipp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-ipp.o: ../cups/array.h ../cups/string-private.h ../config.h
+ipp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+ipp.o: ../cups/language.h ../cups/string-private.h ../config.h
ipp.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
ipp.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
ipp.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
ipp.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
ipp.o: network.h subscriptions.h ../cups/ppd-private.h
listen.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-listen.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-listen.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-listen.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-listen.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-listen.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-listen.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-listen.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-listen.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-listen.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-listen.o: dirsvc.h network.h subscriptions.h
+listen.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+listen.o: ../cups/language.h ../cups/string-private.h ../config.h
+listen.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+listen.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+listen.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+listen.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+listen.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+listen.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+listen.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+listen.o: network.h subscriptions.h
job.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-job.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-job.o: ../cups/array.h ../cups/string-private.h ../config.h
+job.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+job.o: ../cups/language.h ../cups/string-private.h ../config.h
job.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
job.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
job.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
job.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
job.o: network.h subscriptions.h ../cups/backend.h ../cups/dir.h
log.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-log.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-log.o: ../cups/array.h ../cups/string-private.h ../config.h
+log.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+log.o: ../cups/language.h ../cups/string-private.h ../config.h
log.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
log.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
log.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
network.o: ../cups/http-private.h ../config.h ../cups/http.h
network.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h cupsd.h
network.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-network.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-network.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+network.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+network.o: ../cups/language.h ../cups/string-private.h
network.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
network.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
network.o: ../cups/language-private.h ../cups/transcode.h
network.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
network.o: network.h subscriptions.h
policy.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-policy.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-policy.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-policy.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-policy.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-policy.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-policy.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-policy.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-policy.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-policy.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-policy.o: dirsvc.h network.h subscriptions.h
+policy.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+policy.o: ../cups/language.h ../cups/string-private.h ../config.h
+policy.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+policy.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+policy.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+policy.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+policy.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+policy.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+policy.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+policy.o: network.h subscriptions.h
printers.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-printers.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-printers.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-printers.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-printers.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-printers.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-printers.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-printers.o: ../cups/transcode.h ../cups/thread-private.h mime.h
-printers.o: ../cups/array.h ../cups/file.h sysman.h statbuf.h cert.h auth.h
-printers.o: client.h policy.h printers.h ../cups/pwg-private.h classes.h
-printers.o: job.h conf.h banners.h dirsvc.h network.h subscriptions.h
-printers.o: ../cups/dir.h
+printers.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+printers.o: ../cups/language.h ../cups/string-private.h ../config.h
+printers.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+printers.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+printers.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+printers.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+printers.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+printers.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+printers.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+printers.o: network.h subscriptions.h ../cups/dir.h
process.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-process.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-process.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-process.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-process.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-process.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-process.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-process.o: ../cups/transcode.h ../cups/thread-private.h mime.h
-process.o: ../cups/array.h ../cups/file.h sysman.h statbuf.h cert.h auth.h
-process.o: client.h policy.h printers.h ../cups/pwg-private.h classes.h job.h
-process.o: conf.h banners.h dirsvc.h network.h subscriptions.h
+process.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+process.o: ../cups/language.h ../cups/string-private.h ../config.h
+process.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+process.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+process.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+process.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+process.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+process.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+process.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+process.o: network.h subscriptions.h
quotas.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-quotas.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-quotas.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-quotas.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-quotas.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-quotas.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-quotas.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-quotas.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-quotas.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-quotas.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-quotas.o: dirsvc.h network.h subscriptions.h
+quotas.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+quotas.o: ../cups/language.h ../cups/string-private.h ../config.h
+quotas.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+quotas.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+quotas.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+quotas.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+quotas.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+quotas.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+quotas.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+quotas.o: network.h subscriptions.h
removefile.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
removefile.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-removefile.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+removefile.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
removefile.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
removefile.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
removefile.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
removefile.o: client.h policy.h printers.h ../cups/pwg-private.h classes.h
removefile.o: job.h conf.h banners.h dirsvc.h network.h subscriptions.h
select.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-select.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-select.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-select.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-select.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-select.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-select.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-select.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-select.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-select.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-select.o: dirsvc.h network.h subscriptions.h
+select.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+select.o: ../cups/language.h ../cups/string-private.h ../config.h
+select.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+select.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+select.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+select.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+select.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+select.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+select.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+select.o: network.h subscriptions.h
server.o: ../cups/http-private.h ../config.h ../cups/http.h
server.o: ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h cupsd.h
server.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-server.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-server.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-server.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
-server.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+server.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+server.o: ../cups/language.h ../cups/string-private.h ../cups/debug-private.h
+server.o: ../cups/ppd-private.h ../cups/ppd.h ../cups/cups.h
+server.o: ../cups/pwg-private.h ../cups/http-private.h
server.o: ../cups/language-private.h ../cups/transcode.h
server.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
server.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
server.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
server.o: network.h subscriptions.h
statbuf.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-statbuf.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-statbuf.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-statbuf.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-statbuf.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-statbuf.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-statbuf.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-statbuf.o: ../cups/transcode.h ../cups/thread-private.h mime.h
-statbuf.o: ../cups/array.h ../cups/file.h sysman.h statbuf.h cert.h auth.h
-statbuf.o: client.h policy.h printers.h ../cups/pwg-private.h classes.h job.h
-statbuf.o: conf.h banners.h dirsvc.h network.h subscriptions.h
+statbuf.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+statbuf.o: ../cups/language.h ../cups/string-private.h ../config.h
+statbuf.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+statbuf.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+statbuf.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+statbuf.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+statbuf.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+statbuf.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+statbuf.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+statbuf.o: network.h subscriptions.h
subscriptions.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
subscriptions.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-subscriptions.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+subscriptions.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
subscriptions.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
subscriptions.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
subscriptions.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
subscriptions.o: policy.h printers.h ../cups/pwg-private.h classes.h job.h
subscriptions.o: conf.h banners.h dirsvc.h network.h subscriptions.h
sysman.o: cupsd.h ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-sysman.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-sysman.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-sysman.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-sysman.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-sysman.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-sysman.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-sysman.o: ../cups/transcode.h ../cups/thread-private.h mime.h ../cups/array.h
-sysman.o: ../cups/file.h sysman.h statbuf.h cert.h auth.h client.h policy.h
-sysman.o: printers.h ../cups/pwg-private.h classes.h job.h conf.h banners.h
-sysman.o: dirsvc.h network.h subscriptions.h
+sysman.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+sysman.o: ../cups/language.h ../cups/string-private.h ../config.h
+sysman.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+sysman.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+sysman.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+sysman.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+sysman.o: ../cups/thread-private.h mime.h ../cups/array.h ../cups/file.h
+sysman.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+sysman.o: ../cups/pwg-private.h classes.h job.h conf.h banners.h dirsvc.h
+sysman.o: network.h subscriptions.h
filter.o: ../cups/string-private.h ../config.h ../cups/debug-private.h mime.h
filter.o: ../cups/array.h ../cups/ipp.h ../cups/file.h
mime.o: ../cups/string-private.h ../config.h ../cups/debug-private.h
type.o: ../cups/array.h ../cups/ipp.h ../cups/file.h
cupsfilter.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
cupsfilter.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cupsfilter.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+cupsfilter.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
cupsfilter.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
cupsfilter.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
cupsfilter.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
cupsfilter.o: ../cups/array.h ../cups/file.h
cups-deviced.o: util.h ../cups/file-private.h ../cups/cups-private.h
cups-deviced.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h
-cups-deviced.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-cups-deviced.o: ../cups/array.h ../cups/string-private.h ../config.h
+cups-deviced.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+cups-deviced.o: ../cups/language.h ../cups/string-private.h ../config.h
cups-deviced.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
cups-deviced.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
cups-deviced.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
cups-deviced.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
cups-deviced.o: ../cups/thread-private.h ../cups/array.h ../cups/dir.h
cups-lpd.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-cups-lpd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cups-lpd.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-cups-lpd.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-cups-lpd.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-cups-lpd.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-cups-lpd.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-cups-lpd.o: ../cups/transcode.h ../cups/thread-private.h
+cups-lpd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+cups-lpd.o: ../cups/language.h ../cups/string-private.h ../config.h
+cups-lpd.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+cups-lpd.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+cups-lpd.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+cups-lpd.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+cups-lpd.o: ../cups/thread-private.h
cups-polld.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
cups-polld.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cups-polld.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+cups-polld.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
cups-polld.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
cups-polld.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
cups-polld.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
cups-polld.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
cups-polld.o: ../cups/transcode.h ../cups/thread-private.h
testdirsvc.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h
-testdirsvc.o: ../cups/ipp.h ../cups/http.h ../cups/language.h ../cups/array.h
+testdirsvc.o: ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h
testdirsvc.o: ../cups/string-private.h ../config.h
testlpd.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testlpd.o: ../cups/http.h ../cups/language.h ../cups/array.h
+testlpd.o: ../cups/http.h ../cups/array.h ../cups/language.h
testlpd.o: ../cups/string-private.h ../config.h
testmime.o: ../cups/string-private.h ../config.h ../cups/dir.h
testmime.o: ../cups/versioning.h mime.h ../cups/array.h ../cups/ipp.h
testmime.o: ../cups/file.h
testspeed.o: ../cups/string-private.h ../config.h ../cups/cups.h
testspeed.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-testspeed.o: ../cups/language.h ../cups/array.h ../cups/language.h
+testspeed.o: ../cups/array.h ../cups/language.h ../cups/language.h
testspeed.o: ../cups/debug-private.h
testsub.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h
-testsub.o: ../cups/http.h ../cups/language.h ../cups/array.h
+testsub.o: ../cups/http.h ../cups/array.h ../cups/language.h
testsub.o: ../cups/debug-private.h ../cups/string-private.h ../config.h
util.o: util.h ../cups/file-private.h ../cups/cups-private.h ../cups/cups.h
util.o: ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-util.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+util.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
util.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
util.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
util.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
util.o: ../cups/transcode.h ../cups/thread-private.h
cups-driverd.o: util.h ../cups/file-private.h ../cups/cups-private.h
cups-driverd.o: ../cups/cups.h ../cups/file.h ../cups/versioning.h
-cups-driverd.o: ../cups/ipp.h ../cups/http.h ../cups/language.h
-cups-driverd.o: ../cups/array.h ../cups/string-private.h ../config.h
+cups-driverd.o: ../cups/ipp.h ../cups/http.h ../cups/array.h
+cups-driverd.o: ../cups/language.h ../cups/string-private.h ../config.h
cups-driverd.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
cups-driverd.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
cups-driverd.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
#include "cupsd.h"
-#ifdef HAVE_CDSASSL
-# include <Security/Security.h>
-# include <Security/SecItem.h>
-# ifdef HAVE_SECITEMPRIV_H
-# include <Security/SecItemPriv.h>
-# else /* Declare constant from that header... */
-extern const CFTypeRef kSecClassIdentity;
-# endif /* HAVE_SECITEMPRIV_H */
-# ifdef HAVE_SECIDENTITYSEARCHPRIV_H
-# include <Security/SecIdentitySearchPriv.h>
-# else /* Declare prototype for function in that header... */
-extern OSStatus SecIdentitySearchCreateWithPolicy(SecPolicyRef policy,
- CFStringRef idString, CSSM_KEYUSE keyUsage,
- CFTypeRef keychainOrArray,
- Boolean returnOnlyValidIdentities,
- SecIdentitySearchRef* searchRef);
-# endif /* HAVE_SECIDENTITYSEARCHPRIV_H */
-# ifdef HAVE_SECPOLICYPRIV_H
-# include <Security/SecPolicyPriv.h>
-# else /* Declare prototype for function in that header... */
-extern OSStatus SecPolicySetValue(SecPolicyRef policyRef,
- const CSSM_DATA *value);
-# endif /* HAVE_SECPOLICYPRIV_H */
-# ifdef HAVE_SECBASEPRIV_H
-# include <Security/SecBasePriv.h>
-# else /* Declare prototype for function in that header... */
-extern const char *cssmErrorString(int error);
-# endif /* HAVE_SECBASEPRIV_H */
-#endif /* HAVE_CDSASSL */
-
-#ifdef HAVE_GNUTLS
-# include <gnutls/x509.h>
-#endif /* HAVE_GNUTLS */
-
#ifdef HAVE_TCPD_H
# include <tcpd.h>
#endif /* HAVE_TCPD_H */
int partial; /* Do partial close for SSL? */
#ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
- SSL *conn; /* Connection for encryption */
unsigned long error; /* Error code */
#elif defined(HAVE_GNUTLS)
- http_tls_t *conn; /* TLS connection information */
int error; /* Error code */
gnutls_certificate_server_credentials *credentials;
/* TLS credentials */
# elif defined(HAVE_CDSASSL)
- http_tls_t *conn; /* CDSA connection information */
#endif /* HAVE_LIBSSL */
partial = 1;
# ifdef HAVE_LIBSSL
- conn = (SSL *)(con->http.tls);
- context = SSL_get_SSL_CTX(conn);
+ context = SSL_get_SSL_CTX(con->http.tls);
- switch (SSL_shutdown(conn))
+ switch (SSL_shutdown(con->http.tls))
{
case 1 :
cupsdLogMessage(CUPSD_LOG_DEBUG,
}
SSL_CTX_free(context);
- SSL_free(conn);
+ SSL_free(con->http.tls);
# elif defined(HAVE_GNUTLS)
- conn = (http_tls_t *)(con->http.tls);
- credentials = (gnutls_certificate_server_credentials *)(conn->credentials);
+ credentials = (gnutls_certificate_server_credentials *)(con->http.tls_credentials);
- error = gnutls_bye(conn->session, GNUTLS_SHUT_WR);
+ error = gnutls_bye(con->http.tls, GNUTLS_SHUT_WR);
switch (error)
{
case GNUTLS_E_SUCCESS:
break;
}
- gnutls_deinit(conn->session);
+ gnutls_deinit(con->http.tls);
gnutls_certificate_free_credentials(*credentials);
free(credentials);
- free(conn);
# elif defined(HAVE_CDSASSL)
- conn = (http_tls_t *)(con->http.tls);
-
- while (SSLClose(conn->session) == errSSLWouldBlock)
+ while (SSLClose(con->http.tls) == errSSLWouldBlock)
usleep(1000);
- SSLDisposeContext(conn->session);
+ SSLDisposeContext(con->http.tls);
- if (conn->certsArray)
- CFRelease(conn->certsArray);
+ if (con->http.tls_credentials)
+ CFRelease(con->http.tls_credentials);
- free(conn);
# endif /* HAVE_LIBSSL */
con->http.tls = NULL;
break;
}
}
+ else if ((!strncmp(con->uri, "/printers/", 10) ||
+ !strncmp(con->uri, "/classes/", 9)) &&
+ !strcmp(con->uri + strlen(con->uri) - 4, ".png"))
+ {
+ /*
+ * Send icon file - get the real queue name since queue names are
+ * not case sensitive but filenames can be...
+ */
+
+ con->uri[strlen(con->uri) - 4] = '\0'; /* Drop ".png" */
+
+ if (!strncmp(con->uri, "/printers/", 10))
+ p = cupsdFindPrinter(con->uri + 10);
+ else
+ p = cupsdFindClass(con->uri + 9);
+
+ if (p)
+ snprintf(con->uri, sizeof(con->uri), "/icons/%s.png", p->name);
+ else
+ {
+ if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+ {
+ cupsdCloseClient(con);
+ return;
+ }
+
+ break;
+ }
+ }
if ((!strncmp(con->uri, "/admin", 6) &&
strncmp(con->uri, "/admin/conf/", 12) &&
if (SSL_pending((SSL *)(con->http.tls)))
return (1);
# elif defined(HAVE_GNUTLS)
- if (gnutls_record_check_pending(((http_tls_t *)(con->http.tls))->session))
+ if (gnutls_record_check_pending(con->http.tls))
return (1);
# elif defined(HAVE_CDSASSL)
size_t bytes; /* Bytes that are available */
- if (!SSLGetBufferedReadSize(((http_tls_t *)(con->http.tls))->session,
- &bytes) && bytes > 0)
+ if (!SSLGetBufferedReadSize(con->http.tls, &bytes) && bytes > 0)
return (1);
# endif /* HAVE_LIBSSL */
}
{
# ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
- SSL *conn; /* Connection for encryption */
BIO *bio; /* BIO data */
unsigned long error; /* Error code */
bio = BIO_new(_httpBIOMethods());
BIO_ctrl(bio, BIO_C_SET_FILE_PTR, 0, (char *)HTTP(con));
- conn = SSL_new(context);
- SSL_set_bio(conn, bio, bio);
+ con->http.tls = SSL_new(context);
+ SSL_set_bio(con->http.tls, bio, bio);
- if (SSL_accept(conn) != 1)
+ if (SSL_accept(con->http.tls) != 1)
{
cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to encrypt connection from %s!",
con->http.hostname);
cupsdLogMessage(CUPSD_LOG_ERROR, "%s", ERR_error_string(error, NULL));
SSL_CTX_free(context);
- SSL_free(conn);
+ SSL_free(con->http.tls);
+ con->http.tls = NULL;
return (0);
}
cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
con->http.hostname);
- con->http.tls = conn;
return (1);
# elif defined(HAVE_GNUTLS)
- http_tls_t *conn; /* TLS session object */
int error; /* Error code */
gnutls_certificate_server_credentials *credentials;
/* TLS credentials */
* Create the SSL object and perform the SSL handshake...
*/
- conn = (http_tls_t *)malloc(sizeof(http_tls_t));
-
- if (conn == NULL)
- return (0);
-
credentials = (gnutls_certificate_server_credentials *)
malloc(sizeof(gnutls_certificate_server_credentials));
if (credentials == NULL)
"Unable to encrypt connection from %s - %s",
con->http.hostname, strerror(errno));
- free(conn);
return (0);
}
gnutls_certificate_set_x509_key_file(*credentials, ServerCertificate,
ServerKey, GNUTLS_X509_FMT_PEM);
- gnutls_init(&(conn->session), GNUTLS_SERVER);
- gnutls_set_default_priority(conn->session);
- gnutls_credentials_set(conn->session, GNUTLS_CRD_CERTIFICATE, *credentials);
- gnutls_transport_set_ptr(conn->session, (gnutls_transport_ptr)HTTP(con));
- gnutls_transport_set_pull_function(conn->session, _httpReadGNUTLS);
- gnutls_transport_set_push_function(conn->session, _httpWriteGNUTLS);
+ gnutls_init(&con->http.tls), GNUTLS_SERVER);
+ gnutls_set_default_priority(con->http.tls);
+ gnutls_credentials_set(con->http.tls, GNUTLS_CRD_CERTIFICATE, *credentials);
+ gnutls_transport_set_ptr(con->http.tls, (gnutls_transport_ptr)HTTP(con));
+ gnutls_transport_set_pull_function(con->http.tls, _httpReadGNUTLS);
+ gnutls_transport_set_push_function(con->http.tls, _httpWriteGNUTLS);
- error = gnutls_handshake(conn->session);
+ error = gnutls_handshake(con->http.tls);
if (error != GNUTLS_E_SUCCESS)
{
"Unable to encrypt connection from %s - %s",
con->http.hostname, gnutls_strerror(error));
- gnutls_deinit(conn->session);
+ gnutls_deinit(con->http.tls);
gnutls_certificate_free_credentials(*credentials);
- free(conn);
+ con->http.tls = NULL;
free(credentials);
return (0);
}
cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
con->http.hostname);
- conn->credentials = credentials;
- con->http.tls = conn;
+ con->http.tls_credentials = credentials;
return (1);
# elif defined(HAVE_CDSASSL)
OSStatus error; /* Error code */
- http_tls_t *conn; /* CDSA connection information */
cupsdLogMessage(CUPSD_LOG_DEBUG2, "encrypt_client(con=%p(%d))", con,
con->http.fd);
- if ((conn = (http_tls_t *)malloc(sizeof(http_tls_t))) == NULL)
- return (0);
+ error = 0;
+ con->http.tls_credentials = get_cdsa_certificate(con);
- error = 0;
- conn->session = NULL;
- conn->certsArray = get_cdsa_certificate(con);
-
- if (!conn->certsArray)
+ if (!con->http.tls_credentials)
{
/*
* No keychain (yet), make a self-signed certificate...
*/
if (make_certificate(con))
- conn->certsArray = get_cdsa_certificate(con);
+ con->http.tls_credentials = get_cdsa_certificate(con);
}
- if (!conn->certsArray)
+ if (!con->http.tls_credentials)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
"Could not find signing key in keychain \"%s\"",
}
if (!error)
- error = SSLNewContext(true, &conn->session);
+ error = SSLNewContext(true, &con->http.tls);
if (!error)
- error = SSLSetIOFuncs(conn->session, _httpReadCDSA, _httpWriteCDSA);
+ error = SSLSetIOFuncs(con->http.tls, _httpReadCDSA, _httpWriteCDSA);
if (!error)
- error = SSLSetProtocolVersionEnabled(conn->session, kSSLProtocol2, false);
+ error = SSLSetProtocolVersionEnabled(con->http.tls, kSSLProtocol2, false);
if (!error)
- error = SSLSetConnection(conn->session, HTTP(con));
+ error = SSLSetConnection(con->http.tls, HTTP(con));
if (!error)
- error = SSLSetAllowsExpiredCerts(conn->session, true);
+ error = SSLSetAllowsExpiredCerts(con->http.tls, true);
if (!error)
- error = SSLSetAllowsAnyRoot(conn->session, true);
+ error = SSLSetAllowsAnyRoot(con->http.tls, true);
if (!error)
- error = SSLSetCertificate(conn->session, conn->certsArray);
+ error = SSLSetCertificate(con->http.tls, con->http.tls_credentials);
if (!error)
{
* Perform SSL/TLS handshake
*/
- while ((error = SSLHandshake(conn->session)) == errSSLWouldBlock)
+ while ((error = SSLHandshake(con->http.tls)) == errSSLWouldBlock)
usleep(1000);
}
con->http.error = error;
con->http.status = HTTP_ERROR;
- if (conn->session)
- SSLDisposeContext(conn->session);
-
- if (conn->certsArray)
- CFRelease(conn->certsArray);
+ if (con->http.tls)
+ {
+ SSLDisposeContext(con->http.tls);
+ con->http.tls = NULL;
+ }
- free(conn);
+ if (con->http.tls_credentials)
+ CFRelease(con->http.tls_credentials);
return (0);
}
cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
con->http.hostname);
- con->http.tls = conn;
+ CFArrayRef peerCerts; /* Peer certificates */
+
+ if (!(error = SSLCopyPeerCertificates(con->http.tls, &peerCerts)) && peerCerts)
+ {
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Received %d peer certificates!",
+ (int)CFArrayGetCount(peerCerts));
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Received NO peer certificates!");
+
return (1);
# endif /* HAVE_LIBSSL */
* 'get_cdsa_certificate()' - Get a SSL/TLS certificate from the System keychain.
*/
-static CFArrayRef /* O - Array of certificates */
+static CFArrayRef /* O - Array of certificates */
get_cdsa_certificate(
- cupsd_client_t *con) /* I - Client connection */
+ cupsd_client_t *con) /* I - Client connection */
{
OSStatus err; /* Error info */
SecKeychainRef keychain = NULL;/* Keychain reference */
CFRelease(policy);
if (query)
CFRelease(query);
-
# elif defined(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
if (policy)
CFRelease(policy);
language[0] = '\0';
- if (!strncmp(con->uri, "/ppd/", 5))
+ if (!strncmp(con->uri, "/ppd/", 5) && !strchr(con->uri + 5, '/'))
snprintf(filename, len, "%s%s", ServerRoot, con->uri);
+ else if (!strncmp(con->uri, "/icons/", 7) && !strchr(con->uri + 7, '/'))
+ {
+ snprintf(filename, len, "%s/%s", CacheDir, con->uri + 7);
+ if (access(filename, F_OK) < 0)
+ snprintf(filename, len, "%s/images/generic.png", DocumentRoot);
+ }
else if (!strncmp(con->uri, "/rss/", 5) && !strchr(con->uri + 5, '/'))
snprintf(filename, len, "%s/rss/%s", CacheDir, con->uri + 5);
else if (!strncmp(con->uri, "/admin/conf/", 12))
*/
if ((status = stat(filename, filestats)) != 0 && language[0] &&
+ strncmp(con->uri, "/icons/", 7) &&
strncmp(con->uri, "/ppd/", 5) &&
+ strncmp(con->uri, "/rss/", 5) &&
strncmp(con->uri, "/admin/conf/", 12) &&
strncmp(con->uri, "/admin/log/", 11))
{
return (0);
}
- cupsFilePrintf(fp, "%s\nr\n\ny\nb\ns\ny\n%s\n\n\n\n\n%s\ny\n",
+ cupsFilePrintf(fp, "%s\nr\n\ny\nb\ns\ny\n%s\n\n\n\n\n%s\ny\n",
con->servername, con->servername, ServerAdmin);
cupsFileClose(fp);
int for_lpd) /* I - 1 = LPD, 0 = IPP */
{
int i; /* Looping var */
- char adminurl_str[256], /* URL for th admin page */
- type_str[32], /* Type to string buffer */
+ char adminurl_str[256], /* URL for the admin page */
+ type_str[32], /* Type to string buffer */
state_str[32], /* State to string buffer */
rp_str[1024], /* Queue name string buffer */
air_str[1024], /* auth-info-required string buffer */
{
char printer_uri[HTTP_MAX_URI];
/* Printer URI */
+ char printer_icons[HTTP_MAX_URI];
+ /* Printer icons */
time_t curtime; /* Current time */
int i; /* Looping var */
ipp_attribute_t *history; /* History collection */
sizeof(errors) / sizeof(errors[0]), NULL, errors);
}
+ if (!ra || cupsArrayFind(ra, "printer-icons"))
+ {
+ httpAssembleURIf(HTTP_URI_CODING_ALL, printer_icons, sizeof(printer_icons),
+ "http", NULL, con->servername, con->serverport,
+ "/icons/%s.png", printer->name);
+ ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-icons",
+ NULL, printer_icons);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "printer-icons=\"%s\"", printer_icons);
+ }
+
if (!ra || cupsArrayFind(ra, "printer-is-accepting-jobs"))
ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs",
printer->accepting);
snprintf(filename, sizeof(filename), "%s/%s.ipp3", CacheDir, printer->name);
unlink(filename);
+ snprintf(filename, sizeof(filename), "%s/%s.png", CacheDir, printer->name);
+ unlink(filename);
+
snprintf(filename, sizeof(filename), "%s/%s.pwg2", CacheDir, printer->name);
unlink(filename);
num_pwgppds = cupsAddOption("AP_D_InputSlot", "", num_pwgppds,
&pwgppds);
}
-
if (!ippFindAttribute(job->attrs, "MediaType", IPP_TAG_ZERO) &&
(ppd = _pwgGetMediaType(pwg, job->attrs, NULL)) != NULL)
num_pwgppds = cupsAddOption("MediaType", ppd, num_pwgppds, &pwgppds);
#include "cupsd.h"
#include <cups/dir.h>
+#ifdef HAVE_APPLICATIONSERVICES_H
+# include <ApplicationServices/ApplicationServices.h>
+#endif /* HAVE_APPLICATIONSERVICES_H */
+#ifdef HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif /* HAVE_SYS_MOUNT_H */
+#ifdef HAVE_SYS_STATFS_H
+# include <sys/statfs.h>
+#endif /* HAVE_SYS_STATFS_H */
+#ifdef HAVE_SYS_STATVFS_H
+# include <sys/statvfs.h>
+#endif /* HAVE_SYS_STATVFS_H */
+#ifdef HAVE_SYS_VFS_H
+# include <sys/vfs.h>
+#endif /* HAVE_SYS_VFS_H */
/*
char filename[1024], /* Filename */
*notifier; /* Current notifier */
cupsd_policy_t *p; /* Current policy */
+ int k_supported; /* Maximum file size supported */
+#ifdef HAVE_STATFS
+ struct statfs spoolinfo; /* FS info for spool directory */
+ double spoolsize; /* FS size */
+#elif defined(HAVE_STATVFS)
+ struct statvfs spoolinfo; /* FS info for spool directory */
+ double spoolsize; /* FS size */
+#endif /* HAVE_STATFS */
static const int nups[] = /* number-up-supported values */
{ 1, 2, 4, 6, 9, 16 };
static const int orients[4] =/* orientation-requested-supported values */
"multiple-document-handling",
"number-up",
"output-bin",
+ "output-mode",
"orientation-requested",
"page-ranges",
"print-quality",
"multiple-document-handling",
"number-up",
"output-bin",
+ "output-mode",
"orientation-requested",
"page-ranges",
"print-quality",
"printer-location"
};
static const char * const which_jobs[] =
- { /* which-jobs-supported values */
- "completed",
- "not-completed",
- "aborted",
- "all",
- "canceled",
- "pending",
- "pending-held",
- "processing",
- "processing-stopped"
- };
+ { /* which-jobs-supported values */
+ "completed",
+ "not-completed",
+ "aborted",
+ "all",
+ "canceled",
+ "pending",
+ "pending-held",
+ "processing",
+ "processing-stopped"
+ };
if (CommonData)
CommonData = ippNew();
+ /*
+ * Get the maximum spool size based on the size of the filesystem used for
+ * the RequestRoot directory. If the host OS doesn't support the statfs call
+ * or the filesystem is larger than 2TiB, always report INT_MAX.
+ */
+
+#ifdef HAVE_STATFS
+ if (statfs(RequestRoot, &spoolinfo))
+ k_supported = INT_MAX;
+ else if ((spoolsize = (double)spoolinfo.f_bsize * spoolinfo.f_blocks / 1024) >
+ INT_MAX)
+ k_supported = INT_MAX;
+ else
+ k_supported = (int)spoolsize;
+
+#elif defined(HAVE_STATVFS)
+ if (statvfs(RequestRoot, &spoolinfo))
+ k_supported = INT_MAX;
+ else if ((spoolsize = (double)spoolinfo.f_frsize * spoolinfo.f_blocks / 1024) >
+ INT_MAX)
+ k_supported = INT_MAX;
+ else
+ k_supported = (int)spoolsize;
+
+#else
+ k_supported = INT_MAX;
+#endif /* HAVE_STATFS */
+
/*
* This list of attributes is sorted to improve performance when the
* client provides a requested-attributes attribute...
/* job-ids-supported */
ippAddBoolean(CommonData, IPP_TAG_PRINTER, "job-ids-supported", 1);
+ /* job-k-octets-supported */
+ ippAddInteger(CommonData, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+ "job-k-octets-supported", k_supported);
+
/* job-priority-supported */
ippAddInteger(CommonData, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"job-priority-supported", 100);
/* page-ranges-supported */
ippAddBoolean(CommonData, IPP_TAG_PRINTER, "page-ranges-supported", 1);
- /* pdf-override-supported */
+ /* pdl-override-supported */
ippAddString(CommonData, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
- "pdl-override-supported", NULL, "not-attempted");
+ "pdl-override-supported", NULL, "attempted");
/* printer-op-policy-supported */
attr = ippAddStrings(CommonData, IPP_TAG_PRINTER, IPP_TAG_NAME | IPP_TAG_COPY,
if (!RunUser)
{
/*
- * Only use filters that are owned by root and do not have group or world
- * write permissions.
+ * Only use filters that are owned by root and do not have world write
+ * permissions.
*/
- if (fileinfo.st_uid ||
- (fileinfo.st_mode & (S_ISUID | S_IWGRP | S_IWOTH)) != 0)
+ if (fileinfo.st_uid || (fileinfo.st_mode & (S_ISUID | S_IWOTH)) != 0)
{
if (fileinfo.st_uid)
snprintf(p->state_message, sizeof(p->state_message),
if (!stat(filename, &fileinfo) &&
(fileinfo.st_uid ||
- (fileinfo.st_mode & (S_ISUID | S_IWGRP | S_IWOTH)) != 0))
+ (fileinfo.st_mode & (S_ISUID | S_IWOTH)) != 0))
{
if (fileinfo.st_uid)
snprintf(p->state_message, sizeof(p->state_message),
"output-bin-default", NULL, "face-down");
}
+ /*
+ * output-mode...
+ */
+
+ if (ppd->color_device)
+ {
+ static const char * const output_modes[] =
+ {
+ "monochrome",
+ "color"
+ };
+
+ ippAddStrings(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
+ "output-mode-supported", 2, NULL, output_modes);
+ ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
+ "output-mode-default", NULL, "color");
+ }
+ else
+ {
+ ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
+ "output-mode-supported", NULL, "monochrome");
+ ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
+ "output-mode-default", NULL, "monochrome");
+ }
+
/*
* Printer resolutions...
*/
cupsdLogMessage(CUPSD_LOG_WARN,
"Bad resolution \"%s\" for printer %s.",
choice->choice, p->name);
- xdpi = ydpi = 72;
+ xdpi = ydpi = 300;
}
attr->values[i].resolution.xres = xdpi;
cupsdLogMessage(CUPSD_LOG_WARN,
"Bad default resolution \"%s\" for printer %s.",
ppd_attr->value, p->name);
- xdpi = ydpi = 72;
+ xdpi = ydpi = 300;
}
ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER,
ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER,
"printer-resolution-default", IPP_RES_PER_INCH,
- 72, 72);
+ 300, 300);
ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER,
"printer-resolution-supported", IPP_RES_PER_INCH,
- 72, 72);
+ 300, 300);
}
/*
if (ppdFindAttr(ppd, "APRemoteQueueID", NULL))
p->type |= CUPS_PRINTER_REMOTE;
+#ifdef HAVE_APPLICATIONSERVICES_H
+ /*
+ * Convert the file referenced in APPrinterIconPath to a 128x128 PNG
+ * and save it as cacheDir/printername.png
+ */
+
+ if ((ppd_attr = ppdFindAttr(ppd, "APPrinterIconPath", NULL)) != NULL &&
+ ppd_attr->value)
+ {
+ CGImageRef imageRef = NULL;/* Current icon image */
+ CGImageRef biggestIconRef = NULL;
+ /* Biggest icon image */
+ CGImageRef closestTo128IconRef = NULL;
+ /* Icon image closest to and >= 128 */
+ CGImageSourceRef sourceRef; /* The file's image source */
+ char outPath[HTTP_MAX_URI];
+ /* The path to the PNG file */
+ CFURLRef outUrl; /* The URL made from the outPath */
+ CFURLRef icnsFileUrl; /* The URL of the original ICNS icon file */
+ CGImageDestinationRef destRef; /* The image destination to write */
+ size_t bytesPerRow; /* The bytes per row used for resizing */
+ CGContextRef context; /* The CG context used for resizing */
+
+ snprintf(outPath, sizeof(outPath), "%s/%s.png", CacheDir, p->name);
+ outUrl = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
+ (UInt8 *)outPath,
+ strlen(outPath),
+ FALSE);
+ icnsFileUrl = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
+ (UInt8 *)ppd_attr->value,
+ strlen(ppd_attr->value),
+ FALSE);
+ if (outUrl && icnsFileUrl)
+ {
+ sourceRef = CGImageSourceCreateWithURL(icnsFileUrl, NULL);
+ if (sourceRef)
+ {
+ for (i = 0; i < CGImageSourceGetCount(sourceRef); i ++)
+ {
+ imageRef = CGImageSourceCreateImageAtIndex(sourceRef, i, NULL);
+ if (imageRef &&
+ CGImageGetWidth(imageRef) == CGImageGetHeight(imageRef))
+ {
+ /*
+ * Loop through remembering the icon closest to 128 but >= 128
+ * and then remember the largest icon.
+ */
+
+ if (CGImageGetWidth(imageRef) >= 128 &&
+ (!closestTo128IconRef ||
+ CGImageGetWidth(imageRef) <
+ CGImageGetWidth(closestTo128IconRef)))
+ {
+ CGImageRelease(closestTo128IconRef);
+ CGImageRetain(imageRef);
+ closestTo128IconRef = imageRef;
+ }
+
+ if (!biggestIconRef ||
+ CGImageGetWidth(imageRef) > CGImageGetWidth(biggestIconRef))
+ {
+ CGImageRelease(biggestIconRef);
+ CGImageRetain(imageRef);
+ biggestIconRef = imageRef;
+ }
+
+ CGImageRelease(imageRef);
+ }
+ }
+
+ if (biggestIconRef)
+ {
+ /*
+ * If biggestIconRef is NULL, we found no icons. Otherwise we first
+ * want the closest to 128, but if none are larger than 128, we want
+ * the largest icon available.
+ */
+
+ imageRef = closestTo128IconRef ? closestTo128IconRef :
+ biggestIconRef;
+ CGImageRetain(imageRef);
+ CGImageRelease(biggestIconRef);
+ CGImageRelease(closestTo128IconRef);
+ destRef = CGImageDestinationCreateWithURL(outUrl, kUTTypePNG, 1,
+ NULL);
+ if (destRef)
+ {
+ if (CGImageGetWidth(imageRef) != 128)
+ {
+ bytesPerRow = CGImageGetBytesPerRow(imageRef) /
+ CGImageGetWidth(imageRef) * 128;
+ context = CGBitmapContextCreate(NULL, 128, 128,
+ CGImageGetBitsPerComponent(imageRef),
+ bytesPerRow,
+ CGImageGetColorSpace(imageRef),
+ kCGImageAlphaPremultipliedFirst);
+ if (context)
+ {
+ CGContextDrawImage(context, CGRectMake(0, 0, 128, 128),
+ imageRef);
+ CGImageRelease(imageRef);
+ imageRef = CGBitmapContextCreateImage(context);
+ CGContextRelease(context);
+ }
+ }
+
+ CGImageDestinationAddImage(destRef, imageRef, NULL);
+ CGImageDestinationFinalize(destRef);
+ CFRelease(destRef);
+ }
+
+ CGImageRelease(imageRef);
+ }
+
+ CFRelease(sourceRef);
+ CFRelease(icnsFileUrl);
+ }
+
+ CFRelease(outUrl);
+ }
+ }
+#endif /* HAVE_APPLICATIONSERVICES_H */
+
/*
* Close the PPD and set the type...
*/
phpcups.o: ../../cups/string-private.h ../../config.h phpcups.h
phpcups.o: ../../cups/cups.h ../../cups/file.h ../../cups/versioning.h
-phpcups.o: ../../cups/ipp.h ../../cups/http.h ../../cups/language.h
-phpcups.o: ../../cups/array.h ../../cups/language.h
+phpcups.o: ../../cups/ipp.h ../../cups/http.h ../../cups/array.h
+phpcups.o: ../../cups/language.h ../../cups/language.h
phpcups.o: ../../cups/debug-private.h
# DO NOT DELETE THIS LINE -- make depend depends on it.
cancel.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-cancel.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cancel.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-cancel.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-cancel.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-cancel.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-cancel.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-cancel.o: ../cups/transcode.h ../cups/thread-private.h
+cancel.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+cancel.o: ../cups/language.h ../cups/string-private.h ../config.h
+cancel.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+cancel.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+cancel.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+cancel.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+cancel.o: ../cups/thread-private.h
cupsaccept.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
cupsaccept.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cupsaccept.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+cupsaccept.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
cupsaccept.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
cupsaccept.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
cupsaccept.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
cupsaccept.o: ../cups/transcode.h ../cups/thread-private.h
cupsaddsmb.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
cupsaddsmb.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cupsaddsmb.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+cupsaddsmb.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
cupsaddsmb.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
cupsaddsmb.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
cupsaddsmb.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
cupsaddsmb.o: ../cups/transcode.h ../cups/thread-private.h
cupsaddsmb.o: ../cups/adminutil.h
cupsctl.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-cupsctl.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cupsctl.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-cupsctl.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-cupsctl.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-cupsctl.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-cupsctl.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-cupsctl.o: ../cups/transcode.h ../cups/thread-private.h ../cups/adminutil.h
+cupsctl.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+cupsctl.o: ../cups/language.h ../cups/string-private.h ../config.h
+cupsctl.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+cupsctl.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+cupsctl.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+cupsctl.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+cupsctl.o: ../cups/thread-private.h ../cups/adminutil.h
cupstestdsc.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
cupstestdsc.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cupstestdsc.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+cupstestdsc.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
cupstestdsc.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
cupstestdsc.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
cupstestdsc.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
cupstestdsc.o: ../cups/transcode.h ../cups/thread-private.h
cupstestppd.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
cupstestppd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-cupstestppd.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+cupstestppd.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
cupstestppd.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
cupstestppd.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
cupstestppd.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
cupstestppd.o: ../cups/transcode.h ../cups/thread-private.h ../cups/dir.h
cupstestppd.o: ../cups/ppd-private.h ../cups/raster.h ../cups/ppd.h
lp.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/language.h
-lp.o: ../cups/array.h ../cups/string-private.h ../config.h
+lp.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lp.o: ../cups/language.h ../cups/string-private.h ../config.h
lp.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
lp.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
lp.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
lp.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
lp.o: ../cups/thread-private.h
lpadmin.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpadmin.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-lpadmin.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-lpadmin.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-lpadmin.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-lpadmin.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-lpadmin.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-lpadmin.o: ../cups/transcode.h ../cups/thread-private.h
+lpadmin.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpadmin.o: ../cups/language.h ../cups/string-private.h ../config.h
+lpadmin.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+lpadmin.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+lpadmin.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+lpadmin.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+lpadmin.o: ../cups/thread-private.h
lpinfo.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpinfo.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-lpinfo.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-lpinfo.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-lpinfo.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-lpinfo.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-lpinfo.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-lpinfo.o: ../cups/transcode.h ../cups/thread-private.h
+lpinfo.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpinfo.o: ../cups/language.h ../cups/string-private.h ../config.h
+lpinfo.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+lpinfo.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+lpinfo.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+lpinfo.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+lpinfo.o: ../cups/thread-private.h
lpmove.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpmove.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-lpmove.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-lpmove.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-lpmove.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-lpmove.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-lpmove.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-lpmove.o: ../cups/transcode.h ../cups/thread-private.h
+lpmove.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpmove.o: ../cups/language.h ../cups/string-private.h ../config.h
+lpmove.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+lpmove.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+lpmove.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+lpmove.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+lpmove.o: ../cups/thread-private.h
lpoptions.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
lpoptions.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-lpoptions.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
+lpoptions.o: ../cups/array.h ../cups/language.h ../cups/string-private.h
lpoptions.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
lpoptions.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
lpoptions.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
lpoptions.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
lpoptions.o: ../cups/transcode.h ../cups/thread-private.h
lppasswd.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lppasswd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-lppasswd.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-lppasswd.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-lppasswd.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-lppasswd.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-lppasswd.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-lppasswd.o: ../cups/transcode.h ../cups/thread-private.h
-lppasswd.o: ../cups/md5-private.h
+lppasswd.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lppasswd.o: ../cups/language.h ../cups/string-private.h ../config.h
+lppasswd.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+lppasswd.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+lppasswd.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+lppasswd.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+lppasswd.o: ../cups/thread-private.h ../cups/md5-private.h
lpstat.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-lpstat.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-lpstat.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-lpstat.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-lpstat.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-lpstat.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-lpstat.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-lpstat.o: ../cups/transcode.h ../cups/thread-private.h
+lpstat.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+lpstat.o: ../cups/language.h ../cups/string-private.h ../config.h
+lpstat.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+lpstat.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+lpstat.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+lpstat.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+lpstat.o: ../cups/thread-private.h
# DO NOT DELETE THIS LINE -- make depend depends on it.
ipptool.o: ../cups/cups-private.h ../cups/cups.h ../cups/file.h
-ipptool.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h
-ipptool.o: ../cups/language.h ../cups/array.h ../cups/string-private.h
-ipptool.o: ../config.h ../cups/debug-private.h ../cups/ppd-private.h
-ipptool.o: ../cups/ppd.h ../cups/cups.h ../cups/pwg-private.h
-ipptool.o: ../cups/http-private.h ../cups/http.h ../cups/md5-private.h
-ipptool.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/language-private.h
-ipptool.o: ../cups/transcode.h ../cups/thread-private.h
-ipptool.o: ../cups/file-private.h ../cups/cups-private.h
+ipptool.o: ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h
+ipptool.o: ../cups/language.h ../cups/string-private.h ../config.h
+ipptool.o: ../cups/debug-private.h ../cups/ppd-private.h ../cups/ppd.h
+ipptool.o: ../cups/cups.h ../cups/pwg-private.h ../cups/http-private.h
+ipptool.o: ../cups/http.h ../cups/md5-private.h ../cups/ipp-private.h
+ipptool.o: ../cups/ipp.h ../cups/language-private.h ../cups/transcode.h
+ipptool.o: ../cups/thread-private.h ../cups/file-private.h
+ipptool.o: ../cups/cups-private.h
#
# Usage:
#
-# ./ipptool -V 2.0 -f filename -t printer-uri ipp-2.0.test
+# ./ipptool -V 2.0 {-d PRINTER_IS_COLOR=1} -f filename -t printer-uri ipp-2.0.test
#
# Do all of the IPP/1.1 tests as an IPP/2.0 client
# Printer description attributes
EXPECT color-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
EXPECT pages-per-minute OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1
- EXPECT pages-per-minute-color OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1
+ EXPECT pages-per-minute-color OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED PRINTER_IS_COLOR
EXPECT printer-info OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
EXPECT printer-location OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
EXPECT printer-make-and-model OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
#
# Usage:
#
-# ./ipptool -V 2.1 -f filename -t printer-uri ipp-2.1.test
+# ./ipptool -V 2.1 {-d PRINTER_IS_COLOR=1} -f filename -t printer-uri ipp-2.1.test
#
# Do all of the IPP/1.1 and IPP/2.0 tests as an IPP/2.1 client