summaryrefslogtreecommitdiff
path: root/usr/src/lib/print/libpapi-common/common/papi.h
diff options
context:
space:
mode:
authorjacobs <none@none>2006-06-22 13:28:31 -0700
committerjacobs <none@none>2006-06-22 13:28:31 -0700
commit355b4669e025ff377602b6fc7caaf30dbc218371 (patch)
tree29a740456e8d09f935e18068ce72814285fafeec /usr/src/lib/print/libpapi-common/common/papi.h
parent5d0bc3ededb82d77f7c33d8f58e517a837ba5140 (diff)
downloadillumos-joyent-355b4669e025ff377602b6fc7caaf30dbc218371.tar.gz
LSARC/2003/547 PAPI Print Commands
LSARC/2006/172 PAPI Print Commands Packaging Breakout 4144591 lpstat -d reports *process* default printer as *system* default printer 4299193 lp -cd <queue> <file> causes multiple -d options errors 4327963 RFE cancel on local queue should not require in.lpd 4331220 lpmove doesn't work on remote print queues 4470602 Customer wants to increase print limit of 52 files to 300 4949866 lpstat shows FAILED printers due to expanded status message 4994469 lpadmin doesn't add filter definitions for printers 6302778 RUNPATH & RPATH errors in SUNWipplu package 6314007 lpstat should report paper type list supported by a printer 6317991 lprm -Pprintername - command results in aSegmentation fault 6338002 lpsched support for PAPI is incomplete 6346505 print commands should use PAPI for service interaction (LSARC/2003/547) 6364267 psm-lpsched has replicated code 6389273 RUNPATH and RPATH failures in SUNWippcore --HG-- rename : usr/src/cmd/lp/cmd/cancel.c => deleted_files/usr/src/cmd/lp/cmd/cancel.c rename : usr/src/cmd/lp/cmd/comb.c => deleted_files/usr/src/cmd/lp/cmd/comb.c rename : usr/src/cmd/lp/cmd/lp.c => deleted_files/usr/src/cmd/lp/cmd/lp.c rename : usr/src/cmd/lp/cmd/lpc/Makefile => deleted_files/usr/src/cmd/lp/cmd/lpc/Makefile rename : usr/src/cmd/lp/cmd/lpc/cmds.c => deleted_files/usr/src/cmd/lp/cmd/lpc/cmds.c rename : usr/src/cmd/lp/cmd/lpc/cmdtab.c => deleted_files/usr/src/cmd/lp/cmd/lpc/cmdtab.c rename : usr/src/cmd/lp/cmd/lpc/fatalmsg.c => deleted_files/usr/src/cmd/lp/cmd/lpc/fatalmsg.c rename : usr/src/cmd/lp/cmd/lpc/global.c => deleted_files/usr/src/cmd/lp/cmd/lpc/global.c rename : usr/src/cmd/lp/cmd/lpc/lpc.c => deleted_files/usr/src/cmd/lp/cmd/lpc/lpc.c rename : usr/src/cmd/lp/cmd/lpc/lpc.h => deleted_files/usr/src/cmd/lp/cmd/lpc/lpc.h rename : usr/src/cmd/lp/cmd/lpc/process.c => deleted_files/usr/src/cmd/lp/cmd/lpc/process.c rename : usr/src/cmd/lp/cmd/lpc/sndrcv.c => deleted_files/usr/src/cmd/lp/cmd/lpc/sndrcv.c rename : usr/src/cmd/lp/cmd/lpc/topq.c => deleted_files/usr/src/cmd/lp/cmd/lpc/topq.c rename : usr/src/cmd/lp/cmd/lpmove.c => deleted_files/usr/src/cmd/lp/cmd/lpmove.c rename : usr/src/cmd/lp/cmd/lpstat/Makefile => deleted_files/usr/src/cmd/lp/cmd/lpstat/Makefile rename : usr/src/cmd/lp/cmd/lpstat/accept.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/accept.c rename : usr/src/cmd/lp/cmd/lpstat/add_mounted.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/add_mounted.c rename : usr/src/cmd/lp/cmd/lpstat/charset.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/charset.c rename : usr/src/cmd/lp/cmd/lpstat/class.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/class.c rename : usr/src/cmd/lp/cmd/lpstat/device.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/device.c rename : usr/src/cmd/lp/cmd/lpstat/done.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/done.c rename : usr/src/cmd/lp/cmd/lpstat/form.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/form.c rename : usr/src/cmd/lp/cmd/lpstat/lpstat.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/lpstat.c rename : usr/src/cmd/lp/cmd/lpstat/lpstat.h => deleted_files/usr/src/cmd/lp/cmd/lpstat/lpstat.h rename : usr/src/cmd/lp/cmd/lpstat/output.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/output.c rename : usr/src/cmd/lp/cmd/lpstat/parse.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/parse.c rename : usr/src/cmd/lp/cmd/lpstat/printer.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/printer.c rename : usr/src/cmd/lp/cmd/lpstat/request.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/request.c rename : usr/src/cmd/lp/cmd/lpstat/send_message.c => deleted_files/usr/src/cmd/lp/cmd/lpstat/send_message.c rename : usr/src/cmd/lp/lib/papi/attribute.c => deleted_files/usr/src/cmd/lp/lib/papi/attribute.c rename : usr/src/cmd/lp/lib/papi/list.c => deleted_files/usr/src/cmd/lp/lib/papi/list.c rename : usr/src/cmd/lp/lib/papi/papi.h => deleted_files/usr/src/cmd/lp/lib/papi/papi.h rename : usr/src/cmd/lp/lib/papi/status.c => deleted_files/usr/src/cmd/lp/lib/papi/status.c rename : usr/src/cmd/print/cancel/Makefile => deleted_files/usr/src/cmd/print/cancel/Makefile rename : usr/src/cmd/print/cancel/cancel.c => deleted_files/usr/src/cmd/print/cancel/cancel.c rename : usr/src/cmd/print/cancel/cancel_list.c => deleted_files/usr/src/cmd/print/cancel/cancel_list.c rename : usr/src/cmd/print/cancel/cancel_list.h => deleted_files/usr/src/cmd/print/cancel/cancel_list.h rename : usr/src/cmd/print/lp/Makefile => deleted_files/usr/src/cmd/print/lp/Makefile rename : usr/src/cmd/print/lpmove/Makefile => deleted_files/usr/src/cmd/print/lpmove/Makefile rename : usr/src/cmd/print/lpmove/lpmove.c => deleted_files/usr/src/cmd/print/lpmove/lpmove.c rename : usr/src/cmd/print/lpstat/Makefile => deleted_files/usr/src/cmd/print/lpstat/Makefile rename : usr/src/cmd/print/lpstat/bsd-functions.c => deleted_files/usr/src/cmd/print/lpstat/bsd-functions.c rename : usr/src/cmd/print/lpstat/bsd-functions.h => deleted_files/usr/src/cmd/print/lpstat/bsd-functions.h rename : usr/src/cmd/print/lpstat/lpstat.c => deleted_files/usr/src/cmd/print/lpstat/lpstat.c rename : usr/src/cmd/print/lpstat/parse.h => deleted_files/usr/src/cmd/print/lpstat/parse.h rename : usr/src/cmd/print/lpstat/parse_bsd.c => deleted_files/usr/src/cmd/print/lpstat/parse_bsd.c rename : usr/src/cmd/print/lpstat/sysv-functions.c => deleted_files/usr/src/cmd/print/lpstat/sysv-functions.c rename : usr/src/cmd/print/lpstat/sysv-functions.h => deleted_files/usr/src/cmd/print/lpstat/sysv-functions.h rename : usr/src/cmd/print/scripts/accept => deleted_files/usr/src/cmd/print/scripts/accept rename : usr/src/cmd/lp/lib/papi/mapfile-vers => usr/src/cmd/lp/lib/papi/mapfile rename : usr/src/cmd/print/lp/cleanup.xml => usr/src/cmd/print/gateway/cleanup.xml rename : usr/src/cmd/print/lp/print-cleanup => usr/src/cmd/print/gateway/print-cleanup rename : usr/src/cmd/print/lp/lp.c => usr/src/cmd/print/gateway/printd.c rename : usr/src/lib/print/job.c => usr/src/lib/print/libprint/common/job.c rename : usr/src/lib/print/job.h => usr/src/lib/print/libprint/common/job.h rename : usr/src/lib/print/list.c => usr/src/lib/print/libprint/common/list.c rename : usr/src/lib/print/list.h => usr/src/lib/print/libprint/common/list.h rename : usr/src/lib/print/llib-lprint => usr/src/lib/print/libprint/common/llib-lprint rename : usr/src/lib/print/mapfile-vers => usr/src/lib/print/libprint/common/mapfile-vers rename : usr/src/lib/print/misc.c => usr/src/lib/print/libprint/common/misc.c rename : usr/src/lib/print/misc.h => usr/src/lib/print/libprint/common/misc.h rename : usr/src/lib/print/network.c => usr/src/lib/print/libprint/common/network.c rename : usr/src/lib/print/network.h => usr/src/lib/print/libprint/common/network.h rename : usr/src/lib/print/ns.c => usr/src/lib/print/libprint/common/ns.c rename : usr/src/lib/print/ns.h => usr/src/lib/print/libprint/common/ns.h rename : usr/src/lib/print/ns_bsd_addr.c => usr/src/lib/print/libprint/common/ns_bsd_addr.c rename : usr/src/lib/print/ns_cmn_kvp.c => usr/src/lib/print/libprint/common/ns_cmn_kvp.c rename : usr/src/lib/print/ns_cmn_printer.c => usr/src/lib/print/libprint/common/ns_cmn_printer.c rename : usr/src/lib/print/nss_convert.c => usr/src/lib/print/libprint/common/nss_convert.c rename : usr/src/lib/print/nss_ldap.c => usr/src/lib/print/libprint/common/nss_ldap.c rename : usr/src/lib/print/nss_printer.c => usr/src/lib/print/libprint/common/nss_printer.c rename : usr/src/lib/print/nss_write.c => usr/src/lib/print/libprint/common/nss_write.c rename : usr/src/lib/print/sunPrinter.at.conf.txt => usr/src/lib/print/libprint/common/sunPrinter.at.conf.txt rename : usr/src/lib/print/sunPrinter.oc.conf.txt => usr/src/lib/print/libprint/common/sunPrinter.oc.conf.txt
Diffstat (limited to 'usr/src/lib/print/libpapi-common/common/papi.h')
-rw-r--r--usr/src/lib/print/libpapi-common/common/papi.h448
1 files changed, 448 insertions, 0 deletions
diff --git a/usr/src/lib/print/libpapi-common/common/papi.h b/usr/src/lib/print/libpapi-common/common/papi.h
new file mode 100644
index 0000000000..7c1d891eb2
--- /dev/null
+++ b/usr/src/lib/print/libpapi-common/common/papi.h
@@ -0,0 +1,448 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
+ */
+
+#ifndef _PAPI_H
+#define _PAPI_H
+
+/* $Id: papi.h 161 2006-05-03 04:32:59Z njacobs $ */
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/types.h>
+#include <time.h>
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Types
+ */
+
+/* service related types */
+typedef void *papi_service_t;
+typedef void *papi_printer_t;
+typedef void *papi_job_t;
+typedef void *papi_stream_t;
+
+typedef enum {
+ PAPI_ENCRYPT_IF_REQUESTED, /* Encrypt if requested (TLS upgrade) */
+ PAPI_ENCRYPT_NEVER, /* Never encrypt */
+ PAPI_ENCRYPT_REQUIRED, /* Encryption required (TLS upgrade) */
+ PAPI_ENCRYPT_ALWAYS /* Always encrypt (SSL) */
+} papi_encryption_t;
+
+/* attribute related types */
+typedef enum {
+ PAPI_STRING,
+ PAPI_INTEGER,
+ PAPI_BOOLEAN,
+ PAPI_RANGE,
+ PAPI_RESOLUTION,
+ PAPI_DATETIME,
+ PAPI_COLLECTION,
+ PAPI_METADATA
+} papi_attribute_value_type_t;
+
+typedef enum {
+ PAPI_RES_PER_INCH = 3,
+ PAPI_RES_PER_CM
+} papi_resolution_unit_t;
+
+enum { /* for boolean values */
+ PAPI_FALSE = 0,
+ PAPI_TRUE = 1
+};
+
+typedef enum {
+ PAPI_UNSUPPORTED = 0x10,
+ PAPI_DEFAULT = 0x11,
+ PAPI_UNKNOWN,
+ PAPI_NO_VALUE,
+ PAPI_NOT_SETTABLE = 0x15,
+ PAPI_DELETE = 0x16
+} papi_metadata_t;
+
+#define PAPI_LIST_JOBS_OTHERS 0x0001
+#define PAPI_LIST_JOBS_COMPLETED 0x0002
+#define PAPI_LIST_JOBS_NOT_COMPLETED 0x0004
+#define PAPI_LIST_JOBS_ALL 0xFFFF
+
+typedef struct papi_attribute_s papi_attribute_t;
+
+typedef union {
+ char *string; /* PAPI_STRING value */
+ int integer; /* PAPI_INTEGER value */
+ char boolean; /* PAPI_BOOLEAN value */
+ struct { /* PAPI_RANGE value */
+ int lower;
+ int upper;
+ } range;
+ struct { /* PAPI_RESOLUTION value */
+ int xres;
+ int yres;
+ papi_resolution_unit_t units;
+ } resolution;
+ time_t datetime; /* PAPI_DATETIME value */
+ papi_attribute_t **collection; /* PAPI_COLLECTION value */
+ papi_metadata_t metadata; /* PAPI_METADATA value */
+} papi_attribute_value_t;
+
+struct papi_attribute_s {
+ char *name; /* attribute name */
+ papi_attribute_value_type_t type; /* type of values */
+ papi_attribute_value_t **values; /* list of values */
+};
+
+#define PAPI_ATTR_APPEND 0x0001 /* Add values to attr */
+#define PAPI_ATTR_REPLACE 0x0002 /* Delete existing values, then add */
+#define PAPI_ATTR_EXCL 0x0004 /* Fail if attr exists */
+
+/* job related types */
+typedef enum {
+ PAPI_JT_FORMAT_JDF = 0,
+ PAPI_JT_FORMAT_PWG = 1
+} papi_jt_format_t;
+
+typedef struct {
+ papi_jt_format_t format;
+ char *ticket_data;
+ char *file_name;
+} papi_job_ticket_t;
+
+/* status related types */
+typedef enum {
+ PAPI_OK = 0x0000,
+ PAPI_OK_SUBST,
+ PAPI_OK_CONFLICT,
+ PAPI_OK_IGNORED_SUBSCRIPTIONS,
+ PAPI_OK_IGNORED_NOTIFICATIONS,
+ PAPI_OK_TOO_MANY_EVENTS,
+ PAPI_OK_BUT_CANCEL_SUBSCRIPTION,
+ PAPI_REDIRECTION_OTHER_SITE = 0x0300,
+ PAPI_BAD_REQUEST = 0x0400,
+ PAPI_FORBIDDEN,
+ PAPI_NOT_AUTHENTICATED,
+ PAPI_NOT_AUTHORIZED,
+ PAPI_NOT_POSSIBLE,
+ PAPI_TIMEOUT,
+ PAPI_NOT_FOUND,
+ PAPI_GONE,
+ PAPI_REQUEST_ENTITY,
+ PAPI_REQUEST_VALUE,
+ PAPI_DOCUMENT_FORMAT,
+ PAPI_ATTRIBUTES,
+ PAPI_URI_SCHEME,
+ PAPI_CHARSET,
+ PAPI_CONFLICT,
+ PAPI_COMPRESSION_NOT_SUPPORTED,
+ PAPI_COMPRESSION_ERROR,
+ PAPI_DOCUMENT_FORMAT_ERROR,
+ PAPI_DOCUMENT_ACCESS_ERROR,
+ PAPI_ATTRIBUTES_NOT_SETTABLE,
+ PAPI_IGNORED_ALL_SUBSCRIPTIONS,
+ PAPI_TOO_MANY_SUBSCRIPTIONS,
+ PAPI_IGNORED_ALL_NOTIFICATIONS,
+ PAPI_PRINT_SUPPORT_FILE_NOT_FOUND,
+ PAPI_INTERNAL_ERROR = 0x0500,
+ PAPI_OPERATION_NOT_SUPPORTED,
+ PAPI_SERVICE_UNAVAILABLE,
+ PAPI_VERSION_NOT_SUPPORTED,
+ PAPI_DEVICE_ERROR,
+ PAPI_TEMPORARY_ERROR,
+ PAPI_NOT_ACCEPTING,
+ PAPI_PRINTER_BUSY,
+ PAPI_ERROR_JOB_CANCELLED,
+ PAPI_MULTIPLE_JOBS_NOT_SUPPORTED,
+ PAPI_PRINTER_IS_DEACTIVATED,
+ PAPI_BAD_ARGUMENT,
+ PAPI_JOB_TICKET_NOT_SUPPORTED
+} papi_status_t;
+
+/* list filter related */
+typedef enum {
+ PAPI_FILTER_BITMASK = 0
+} papi_filter_type_t;
+
+typedef struct {
+ papi_filter_type_t type;
+ union {
+ struct { /* PAPI_FILTER_BITMASK */
+ unsigned int mask;
+ unsigned int value;
+ } bitmask;
+ } filter;
+} papi_filter_t;
+
+enum {
+ PAPI_PRINTER_LOCAL = 0x0000, /* Local destination */
+ PAPI_PRINTER_CLASS = 0x0001, /* Printer class */
+ PAPI_PRINTER_REMOTE = 0x0002, /* Remote destination */
+ PAPI_PRINTER_BW = 0x0004, /* Can do B&W printing */
+ PAPI_PRINTER_COLOR = 0x0008, /* Can do color printing */
+ PAPI_PRINTER_DUPLEX = 0x0010, /* Can do duplex printing */
+ PAPI_PRINTER_STAPLE = 0x0020, /* Can do stapling */
+ PAPI_PRINTER_COPIES = 0x0040, /* Can do copies */
+ PAPI_PRINTER_COLLATE = 0x0080, /* Can collate copies */
+ PAPI_PRINTER_PUNCH = 0x0100, /* Can punch output */
+ PAPI_PRINTER_COVER = 0x0200, /* Can cover output */
+ PAPI_PRINTER_BIND = 0x0400, /* Can bind output */
+ PAPI_PRINTER_SORT = 0x0800, /* Can sort output */
+ PAPI_PRINTER_SMALL = 0x1000, /* Can do letter/legal/a4 */
+ PAPI_PRINTER_MEDIUM = 0x2000, /* Can do tabloid/B/C/A3/A2 */
+ PAPI_PRINTER_LARGE = 0x4000, /* Can do D/E/A1/A0 */
+ PAPI_PRINTER_VARIABLE = 0x8000, /* Can do variable sizes */
+ PAPI_PRINTER_IMPLICIT = 0x10000, /* implicit class */
+ PAPI_PRINTER_DEFAULT = 0x20000, /* Default printer on network */
+ PAPI_PRINTER_OPTIONS = 0xfffc /* ~ (CLASS | REMOTE | IMPLICIT) */
+};
+
+/*
+ * Functions
+ */
+
+/* Service related */
+extern papi_status_t papiServiceCreate(papi_service_t *handle,
+ char *service_name, char *user_name,
+ char *password,
+ int (*authCB)(papi_service_t svc,
+ void *app_data),
+ papi_encryption_t encryption,
+ void *app_data);
+extern void papiServiceDestroy(papi_service_t handle);
+extern papi_status_t papiServiceSetUserName(papi_service_t handle,
+ char *user_name);
+extern papi_status_t papiServiceSetPassword(papi_service_t handle,
+ char *password);
+extern papi_status_t papiServiceSetEncryption(papi_service_t handle,
+ papi_encryption_t encryption);
+extern papi_status_t papiServiceSetAuthCB(papi_service_t handle,
+ int (*authCB)(papi_service_t s,
+ void *app_data));
+extern papi_status_t papiServiceSetAppData(papi_service_t handle,
+ void *app_data);
+extern char *papiServiceGetServiceName(papi_service_t handle);
+extern char *papiServiceGetUserName(papi_service_t handle);
+extern char *papiServiceGetPassword(papi_service_t handle);
+extern papi_encryption_t papiServiceGetEncryption(papi_service_t handle);
+extern void *papiServiceGetAppData(papi_service_t handle);
+extern papi_attribute_t **papiServiceGetAttributeList(papi_service_t handle);
+extern char *papiServiceGetStatusMessage(papi_service_t handle);
+
+/* Attribute related */
+extern papi_status_t papiAttributeListAddValue(papi_attribute_t ***attrs,
+ int flags, char *name,
+ papi_attribute_value_type_t type,
+ papi_attribute_value_t *value);
+extern papi_status_t papiAttributeListAddString(papi_attribute_t ***attrs,
+ int flags, char *name, char *string);
+extern papi_status_t papiAttributeListAddInteger(papi_attribute_t ***attrs,
+ int flags, char *name, int integer);
+extern papi_status_t papiAttributeListAddBoolean(papi_attribute_t ***attrs,
+ int flags, char *name, char boolean);
+extern papi_status_t papiAttributeListAddRange(papi_attribute_t ***attrs,
+ int flags, char *name,
+ int lower, int upper);
+extern papi_status_t papiAttributeListAddResolution(papi_attribute_t ***attrs,
+ int flags, char *name,
+ int xres, int yres,
+ papi_resolution_unit_t units);
+extern papi_status_t papiAttributeListAddDatetime(papi_attribute_t ***attrs,
+ int flags, char *name, time_t datetime);
+extern papi_status_t papiAttributeListAddCollection(papi_attribute_t ***attrs,
+ int flags, char *name,
+ papi_attribute_t **collection);
+extern papi_status_t papiAttributeListAddMetadata(papi_attribute_t ***attrs,
+ int flags, char *name,
+ papi_metadata_t metadata);
+extern papi_status_t papiAttributeListDelete(papi_attribute_t ***attributes,
+ char *name);
+extern papi_status_t papiAttributeListGetValue(papi_attribute_t **list,
+ void **iterator, char *name,
+ papi_attribute_value_type_t type,
+ papi_attribute_value_t **value);
+extern papi_status_t papiAttributeListGetString(papi_attribute_t **list,
+ void **iterator, char *name,
+ char **vptr);
+extern papi_status_t papiAttributeListGetInteger(papi_attribute_t **list,
+ void **iterator, char *name, int *vptr);
+extern papi_status_t papiAttributeListGetBoolean(papi_attribute_t **list,
+ void **iterator, char *name,
+ char *vptr);
+extern papi_status_t papiAttributeListGetRange(papi_attribute_t **list,
+ void **iterator, char *name,
+ int *min, int *max);
+extern papi_status_t papiAttributeListGetResolution(papi_attribute_t **list,
+ void **iterator, char *name,
+ int *x, int *y,
+ papi_resolution_unit_t *units);
+extern papi_status_t papiAttributeListGetDatetime(papi_attribute_t **list,
+ void **iterator, char *name,
+ time_t *dt);
+extern papi_status_t papiAttributeListGetCollection(papi_attribute_t **list,
+ void **iterator, char *name,
+ papi_attribute_t ***collection);
+extern papi_status_t papiAttributeListGetMetadata(papi_attribute_t **list,
+ void **iterator, char *name,
+ papi_metadata_t *vptr);
+extern papi_attribute_t *papiAttributeListFind(papi_attribute_t **list,
+ char *name);
+extern papi_attribute_t *papiAttributeListGetNext(papi_attribute_t **list,
+ void **iterator);
+extern void papiAttributeListFree(papi_attribute_t **attributes);
+
+extern papi_status_t papiAttributeListFromString(papi_attribute_t ***attrs,
+ int flags, char *string);
+extern papi_status_t papiAttributeListToString(papi_attribute_t **attrs,
+ char *delim,
+ char *buffer, size_t buflen);
+extern void papiAttributeListPrint(FILE *fp, papi_attribute_t **list,
+ char *prefix_fmt, ...);
+
+/* Printer related */
+extern papi_status_t papiPrintersList(papi_service_t handle,
+ char **requested_attrs,
+ papi_filter_t *filter,
+ papi_printer_t **printers);
+extern papi_status_t papiPrinterQuery(papi_service_t handle, char *name,
+ char **requested_attrs,
+ papi_attribute_t **job_attributes,
+ papi_printer_t *printer);
+extern papi_status_t papiPrinterAdd(papi_service_t handle, char *name,
+ papi_attribute_t **attributes,
+ papi_printer_t *printer);
+extern papi_status_t papiPrinterModify(papi_service_t handle, char *name,
+ papi_attribute_t **attributes,
+ papi_printer_t *printer);
+extern papi_status_t papiPrinterRemove(papi_service_t handle, char *name);
+extern papi_status_t papiPrinterDisable(papi_service_t handle, char *name,
+ char *message);
+extern papi_status_t papiPrinterEnable(papi_service_t handle, char *name);
+extern papi_status_t papiPrinterPause(papi_service_t handle, char *name,
+ char *message);
+extern papi_status_t papiPrinterResume(papi_service_t handle, char *name);
+extern papi_status_t papiPrinterPurgeJobs(papi_service_t handle,
+ char *name, papi_job_t **jobs);
+extern papi_status_t papiPrinterListJobs(papi_service_t handle,
+ char *name, char **requested_attrs,
+ int type_mask, int max_num_jobs,
+ papi_job_t **jobs);
+extern papi_attribute_t **papiPrinterGetAttributeList(papi_printer_t printer);
+extern void papiPrinterFree(papi_printer_t printer);
+extern void papiPrinterListFree(papi_printer_t *printers);
+
+/* Job related */
+extern papi_status_t papiJobSubmit(papi_service_t handle, char *printer,
+ papi_attribute_t **job_attributes,
+ papi_job_ticket_t *job_ticket,
+ char **files, papi_job_t *job);
+extern papi_status_t papiJobSubmitByReference(papi_service_t handle,
+ char *printer,
+ papi_attribute_t **job_attributes,
+ papi_job_ticket_t *job_ticket,
+ char **files, papi_job_t *job);
+extern papi_status_t papiJobValidate(papi_service_t handle, char *printer,
+ papi_attribute_t **job_attributes,
+ papi_job_ticket_t *job_ticket,
+ char **files, papi_job_t *job);
+extern papi_status_t papiJobStreamOpen(papi_service_t handle,
+ char *printer,
+ papi_attribute_t **job_attributes,
+ papi_job_ticket_t *job_ticket,
+ papi_stream_t *stream);
+extern papi_status_t papiJobStreamWrite(papi_service_t handle,
+ papi_stream_t stream,
+ void *buffer, size_t buflen);
+extern papi_status_t papiJobStreamClose(papi_service_t handle,
+ papi_stream_t stream,
+ papi_job_t *job);
+extern papi_status_t papiJobQuery(papi_service_t handle, char *printer,
+ int32_t job_id, char **requested_attrs,
+ papi_job_t *job);
+extern papi_status_t papiJobModify(papi_service_t handle, char *printer,
+ int32_t job_id,
+ papi_attribute_t **attributes,
+ papi_job_t *job);
+extern papi_status_t papiJobMove(papi_service_t handle, char *printer,
+ int32_t job_id, char *destination);
+extern papi_status_t papiJobCancel(papi_service_t handle, char *printer,
+ int32_t job_id);
+extern papi_status_t papiJobHold(papi_service_t handle, char *printer,
+ int32_t job_id);
+extern papi_status_t papiJobRelease(papi_service_t handle, char *printer,
+ int32_t job_id);
+extern papi_status_t papiJobRestart(papi_service_t handle, char *printer,
+ int32_t job_id);
+extern papi_status_t papiJobPromote(papi_service_t handle, char *printer,
+ int32_t job_id);
+extern papi_attribute_t **papiJobGetAttributeList(papi_job_t printer);
+extern char *papiJobGetPrinterName(papi_job_t printer);
+extern int32_t papiJobGetId(papi_job_t printer);
+extern papi_job_ticket_t *papiJobGetJobTicket(papi_job_t printer);
+extern void papiJobFree(papi_job_t job);
+extern void papiJobListFree(papi_job_t *jobs);
+
+#ifdef SOLARIS_PRIVATE_POST_0_9
+/*
+ * These have been added to support IPP create-job/send-document with PAPI v0.9
+ * in an IPP listener using PAPI as it's spooler interface. A future version
+ * of the API is expected to support this type of functionality
+ */
+extern papi_status_t papiJobCreate(papi_service_t handle, char *printer,
+ papi_attribute_t **job_attributes,
+ papi_job_ticket_t *job_ticket,
+ papi_job_t *job);
+extern papi_status_t papiJobStreamAdd(papi_service_t handle, char *printer,
+ int32_t id, papi_stream_t *stream);
+extern papi_status_t papiJobCommit(papi_service_t handle, char *printer,
+ int32_t id);
+extern papi_status_t papiServiceSetPeer(papi_service_t handle, int peerfd);
+#endif /* SOLARIS_PRIVATE_POST_0_9 */
+
+extern char *papiStatusString(papi_status_t status);
+
+/*
+ * Internal functions that aren't in the API, but are shared across
+ * protocol support implementations(psms) and the tightly bound
+ * listener library. Do not use these in your applications.
+ */
+extern void list_append();
+extern void list_concatenate();
+extern void list_remove();
+extern void copy_attributes(papi_attribute_t ***result,
+ papi_attribute_t **list);
+extern void split_and_copy_attributes(char **list,
+ papi_attribute_t **attributes,
+ papi_attribute_t ***in,
+ papi_attribute_t ***out);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PAPI_H */