"marker-names",
"marker-types",
"media-col-supported",
+ "multiple-document-handling-supported",
"operations-supported",
"printer-alert",
"printer-alert-description",
int num_options, cups_option_t *options,
const char *compression, int copies,
const char *format, _ppd_cache_t *pc,
- ipp_attribute_t *media_col_sup);
+ ipp_attribute_t *media_col_sup,
+ ipp_attribute_t *doc_handling_sup);
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);
ipp_attribute_t *format_sup; /* document-format-supported */
ipp_attribute_t *media_col_sup; /* media-col-supported */
ipp_attribute_t *operations_sup; /* operations-supported */
+ ipp_attribute_t *doc_handling_sup; /* multiple-document-handling-supported */
ipp_attribute_t *printer_state; /* printer-state attribute */
ipp_attribute_t *printer_accepting; /* printer-is-accepting-jobs */
int validate_job; /* Does printer support Validate-Job? */
* copies...
*/
- copies_sup = NULL;
- cups_version = NULL;
- format_sup = NULL;
- media_col_sup = NULL;
- supported = NULL;
- operations_sup = NULL;
- validate_job = 0;
+ copies_sup = NULL;
+ cups_version = NULL;
+ format_sup = NULL;
+ media_col_sup = NULL;
+ supported = NULL;
+ operations_sup = NULL;
+ doc_handling_sup = NULL;
+ validate_job = 0;
do
{
"Get-Printer-Attributes request.\n", stderr);
}
+ doc_handling_sup = ippFindAttribute(supported,
+ "multiple-document-handling-supported",
+ IPP_TAG_KEYWORD);
+
report_printer_state(supported, 0);
}
while (ipp_status > IPP_OK_CONFLICT);
request = new_request(IPP_VALIDATE_JOB, version, uri, argv[2], argv[3],
num_options, options, compression,
copies_sup ? copies : 1, document_format, pc,
- media_col_sup);
+ media_col_sup, doc_handling_sup);
ippDelete(cupsDoRequest(http, request, resource));
request = new_request(num_files > 1 ? IPP_CREATE_JOB : IPP_PRINT_JOB,
version, uri, argv[2], argv[3], num_options, options,
compression, copies_sup ? copies : 1, document_format,
- pc, media_col_sup);
+ pc, media_col_sup, doc_handling_sup);
/*
* Do the request...
int copies, /* I - copies value or 0 */
const char *format, /* I - documet-format value or NULL */
_ppd_cache_t *pc, /* I - PPD cache and mapping data */
- ipp_attribute_t *media_col_sup) /* I - media-col-supported values */
+ ipp_attribute_t *media_col_sup, /* I - media-col-supported values */
+ ipp_attribute_t *doc_handling_sup) /* I - multiple-document-handling-supported values */
{
int i; /* Looping var */
ipp_t *request; /* Request data */
ipp_t *media_col, /* media-col value */
*media_size; /* media-size value */
const char *media_source, /* media-source value */
- *media_type; /* media-type value */
+ *media_type, /* media-type value */
+ *collate_str; /* multiple-document-handling value */
/*
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "sides",
NULL, "two-sided-short-edge");
}
+
+ if (doc_handling_sup &&
+ (keyword = cupsGetOption("collate", num_options, options)) != NULL)
+ {
+ if (!strcasecmp(keyword, "true"))
+ collate_str = "separate-documents-collated-copies";
+ else
+ collate_str = "separate-documents-uncollated-copies";
+
+ for (i = 0; i < doc_handling_sup->num_values; i ++)
+ if (!strcmp(doc_handling_sup->values[i].string.text, collate_str))
+ {
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
+ "multiple-document-handling", NULL, collate_str);
+ break;
+ }
+ }
}
else
{