changeset 3917:9e19a8d4a355

6535980 psm-ipp needs IPP/1.1 compliance work
author jacobs
date Wed, 28 Mar 2007 18:46:25 -0700
parents 1761dbf695ed
children 2f5f98948dce
files usr/src/lib/print/libpapi-ipp/common/ipp-support.c usr/src/lib/print/libpapi-ipp/common/job.c usr/src/lib/print/libpapi-ipp/common/papi_impl.h usr/src/lib/print/libpapi-ipp/common/printer.c
diffstat 4 files changed, 32 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/print/libpapi-ipp/common/ipp-support.c	Wed Mar 28 17:57:31 2007 -0700
+++ b/usr/src/lib/print/libpapi-ipp/common/ipp-support.c	Wed Mar 28 18:46:25 2007 -0700
@@ -20,7 +20,7 @@
  */
 
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  *
  */
@@ -42,6 +42,9 @@
 
 #include <ipp.h>
 
+static void ipp_add_printer_uri(service_t *svc, char *name,
+		papi_attribute_t ***op);
+
 papi_status_t
 http_to_papi_status(http_status_t status)
 {
@@ -163,7 +166,7 @@
 
 void
 ipp_initialize_operational_attributes(service_t *svc, papi_attribute_t ***op,
-		papi_attribute_t **attributes)
+		char *printer, int job_id)
 {
 	char *charset = "utf-8"; /* default to UTF-8 encoding */
 	char *language = setlocale(LC_ALL, "");
@@ -174,18 +177,22 @@
 	 * All IPP requests must contain the following:
 	 * 	attributes-charset		(UTF-8)
 	 *	attributes-natural-language	(our current locale)
-	 *	requesting-user-name		(process user)
+	 *	(object identifier)		printer-uri/job-id or job-uri
+	 *	requesting-user-name		(process user or none)
 	 */
-	papiAttributeListGetString(attributes, NULL,
-			"attributes-charset", &charset);
 	papiAttributeListAddString(op, PAPI_ATTR_EXCL,
 			"attributes-charset", charset);
 
-	papiAttributeListGetString(attributes, NULL,
-			"attributes-natural-language", &language);
 	papiAttributeListAddString(op, PAPI_ATTR_EXCL,
 			"attributes-natural-language", language);
 
+	if (printer != NULL)
+		ipp_add_printer_uri(svc, printer, op);
+
+	if ((printer != NULL) && (job_id >= 0))
+		papiAttributeListAddInteger(op, PAPI_ATTR_EXCL,
+			"job-id", job_id);
+
 	if ((pw = getpwuid(getuid())) != NULL)
 		user = pw->pw_name;
 	/*
@@ -195,8 +202,6 @@
 	if (geteuid() == 0) {
 		if (svc->user != NULL)
 			user = svc->user;
-		papiAttributeListGetString(attributes, NULL,
-				"requesting-user-name", &user);
 	}
 	papiAttributeListAddString(op, PAPI_ATTR_REPLACE,
 			"requesting-user-name", user);
@@ -225,7 +230,7 @@
 		return (PAPI_TEMPORARY_ERROR);
 
 	ipp_initialize_request(svc, &request, OPID_CUPS_GET_DEFAULT);
-	ipp_initialize_operational_attributes(svc, &op, NULL);
+	ipp_initialize_operational_attributes(svc, &op, NULL, -1);
 	papiAttributeListAddString(&op, PAPI_ATTR_APPEND,
 			"requested-attributes", "printer-uri-supported");
 	papiAttributeListAddCollection(&request, PAPI_ATTR_REPLACE,
@@ -253,7 +258,7 @@
 	return (result);
 }
 
-void
+static void
 ipp_add_printer_uri(service_t *svc, char *name, papi_attribute_t ***op)
 {
 	char *uri = name;
--- a/usr/src/lib/print/libpapi-ipp/common/job.c	Wed Mar 28 17:57:31 2007 -0700
+++ b/usr/src/lib/print/libpapi-ipp/common/job.c	Wed Mar 28 18:46:25 2007 -0700
@@ -20,7 +20,7 @@
  */
 
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  *
  */
@@ -125,8 +125,7 @@
 	ipp_initialize_request(svc, request, type);
 
 	/* create an operational attributes group */
-	ipp_initialize_operational_attributes(svc, &operational, NULL);
-	ipp_add_printer_uri(svc, printer, &operational);
+	ipp_initialize_operational_attributes(svc, &operational, printer, -1);
 
 	/* split up the attributes into operational and job attributes */
 	split_and_copy_attributes(operational_names, attributes,
@@ -156,11 +155,8 @@
 	ipp_initialize_request(svc, &request, type);
 
 	/* create an operational attributes group */
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, printer, &op);
+	ipp_initialize_operational_attributes(svc, &op, printer, id);
 
-	papiAttributeListAddInteger(&op, PAPI_ATTR_REPLACE, "job-id",
-				id);
 	papiAttributeListAddString(&op, PAPI_ATTR_REPLACE, "document-name",
 				file);
 	papiAttributeListAddBoolean(&op, PAPI_ATTR_REPLACE, "last-document",
@@ -445,10 +441,8 @@
 
 	ipp_initialize_request(svc, &request, OPID_GET_JOB_ATTRIBUTES);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, printer, &op);
+	ipp_initialize_operational_attributes(svc, &op, printer, job_id);
 
-	papiAttributeListAddInteger(&op, PAPI_ATTR_REPLACE, "job-id", job_id);
 	if (requested_attrs != NULL) {
 		int i;
 
@@ -491,10 +485,8 @@
 
 	ipp_initialize_request(svc, &request, type);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, printer, &op);
+	ipp_initialize_operational_attributes(svc, &op, printer, job_id);
 
-	papiAttributeListAddInteger(&op, PAPI_ATTR_REPLACE, "job-id", job_id);
 	papiAttributeListAddCollection(&request, PAPI_ATTR_REPLACE,
 			"operational-attributes-group", op);
 	papiAttributeListFree(op);
@@ -560,10 +552,8 @@
 
 	ipp_initialize_request(svc, &request, OPID_CUPS_MOVE_JOB);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, printer, &op);
+	ipp_initialize_operational_attributes(svc, &op, printer, job_id);
 
-	papiAttributeListAddInteger(&op, PAPI_ATTR_REPLACE, "job-id", job_id);
 	papiAttributeListAddCollection(&request, PAPI_ATTR_REPLACE,
 			"operational-attributes-group", op);
 	papiAttributeListFree(op);
@@ -605,10 +595,8 @@
 
 	ipp_initialize_request(svc, &request, OPID_SET_JOB_ATTRIBUTES);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, printer, &op);
+	ipp_initialize_operational_attributes(svc, &op, printer, job_id);
 
-	papiAttributeListAddInteger(&op, PAPI_ATTR_REPLACE, "job-id", job_id);
 	papiAttributeListAddCollection(&request, PAPI_ATTR_REPLACE,
 			"operational-attributes-group", op);
 	papiAttributeListFree(op);
--- a/usr/src/lib/print/libpapi-ipp/common/papi_impl.h	Wed Mar 28 17:57:31 2007 -0700
+++ b/usr/src/lib/print/libpapi-ipp/common/papi_impl.h	Wed Mar 28 18:46:25 2007 -0700
@@ -20,7 +20,7 @@
  */
 
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  *
  */
@@ -96,13 +96,10 @@
 				papi_attribute_t ***request, uint16_t type);
 extern void ipp_initialize_operational_attributes(service_t *svc,
 				papi_attribute_t ***op,
-				papi_attribute_t **attributes);
+				char *printer, int job_id);
 extern papi_status_t ipp_to_papi_status(uint16_t status);
 extern papi_status_t http_to_papi_status(http_status_t status);
 
-extern void ipp_add_printer_uri(service_t *svc, char *name,
-				papi_attribute_t ***op);
-
 /* service related interfaces */
 extern void detailed_error(service_t *svc, char *fmt, ...);
 extern papi_status_t service_connect(service_t *svc, char *service_name);
--- a/usr/src/lib/print/libpapi-ipp/common/printer.c	Wed Mar 28 17:57:31 2007 -0700
+++ b/usr/src/lib/print/libpapi-ipp/common/printer.c	Wed Mar 28 18:46:25 2007 -0700
@@ -20,7 +20,7 @@
  */
 
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  *
  */
@@ -96,7 +96,7 @@
 			return (result);
 	ipp_initialize_request(svc, &request, OPID_CUPS_GET_PRINTERS);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
+	ipp_initialize_operational_attributes(svc, &op, NULL, -1);
 
 	if (requested_attrs != NULL) {
 		int i;
@@ -156,8 +156,7 @@
 
 	ipp_initialize_request(svc, &request, OPID_GET_PRINTER_ATTRIBUTES);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, name, &op);
+	ipp_initialize_operational_attributes(svc, &op, name, -1);
 
 	if (requested_attrs != NULL) {
 		int i;
@@ -200,8 +199,7 @@
 
 	ipp_initialize_request(svc, &request, type);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, name, &op);
+	ipp_initialize_operational_attributes(svc, &op, name, -1);
 
 	switch (type) {
 	case OPID_DISABLE_PRINTER:
@@ -288,8 +286,7 @@
 
 	ipp_initialize_request(svc, &request, OPID_SET_PRINTER_ATTRIBUTES);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, name, &op);
+	ipp_initialize_operational_attributes(svc, &op, name, -1);
 
 	papiAttributeListAddCollection(&request, PAPI_ATTR_REPLACE,
 			"operational-attributes-group", op);
@@ -336,8 +333,7 @@
 
 	ipp_initialize_request(svc, &request, OPID_PURGE_JOBS);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, name, &op);
+	ipp_initialize_operational_attributes(svc, &op, name, -1);
 
 	papiAttributeListAddCollection(&request, PAPI_ATTR_REPLACE,
 			"operational-attributes-group", op);
@@ -385,8 +381,7 @@
 
 	ipp_initialize_request(svc, &request, OPID_GET_JOBS);
 
-	ipp_initialize_operational_attributes(svc, &op, NULL);
-	ipp_add_printer_uri(svc, name, &op);
+	ipp_initialize_operational_attributes(svc, &op, name, -1);
 
 	if (requested_attrs != NULL) {
 		int i;