#ifndef _CUPS_IPP_H_
# define _CUPS_IPP_H_
# include "http.h"
# include <stdarg.h>
# ifdef __cplusplus
extern "C" {
# endif
# define IPP_VERSION "\002\001"
# define IPP_PORT 631
# define IPP_MAX_CHARSET 64
# define IPP_MAX_KEYWORD 256
# define IPP_MAX_LANGUAGE 64
# define IPP_MAX_LENGTH 32767
# define IPP_MAX_MIMETYPE 256
# define IPP_MAX_NAME 256
# define IPP_MAX_OCTETSTRING 1023
# define IPP_MAX_TEXT 1024
# define IPP_MAX_URI 1024
# define IPP_MAX_URISCHEME 64
# define IPP_MAX_VALUES 8
typedef enum ipp_dstate_e
{
IPP_DOCUMENT_PENDING = 3,
IPP_DOCUMENT_PROCESSING = 5,
IPP_DOCUMENT_CANCELED = 7,
IPP_DOCUMENT_ABORTED,
IPP_DOCUMENT_COMPLETED
# ifndef _CUPS_NO_DEPRECATED
# define IPP_DOCUMENT_PENDING IPP_DSTATE_PENDING
# define IPP_DOCUMENT_PROCESSING IPP_DSTATE_PROCESSING
# define IPP_DOCUMENT_CANCELED IPP_DSTATE_CANCELED
# define IPP_DOCUMENT_ABORTED IPP_DSTATE_ABORTED
# define IPP_DOCUMENT_COMPLETED IPP_DSTATE_COMPLETED
# endif
} ipp_dstate_t;
typedef enum ipp_finishings_e
{
IPP_FINISHINGS_NONE = 3,
IPP_FINISHINGS_STAPLE,
IPP_FINISHINGS_PUNCH,
IPP_FINISHINGS_COVER,
IPP_FINISHINGS_BIND,
IPP_FINISHINGS_SADDLE_STITCH,
IPP_FINISHINGS_EDGE_STITCH,
IPP_FINISHINGS_FOLD,
IPP_FINISHINGS_TRIM,
IPP_FINISHINGS_BALE,
IPP_FINISHINGS_BOOKLET_MAKER,
IPP_FINISHINGS_JOG_OFFSET,
IPP_FINISHINGS_STAPLE_TOP_LEFT = 20,
IPP_FINISHINGS_STAPLE_BOTTOM_LEFT,
IPP_FINISHINGS_STAPLE_TOP_RIGHT,
IPP_FINISHINGS_STAPLE_BOTTOM_RIGHT,
IPP_FINISHINGS_EDGE_STITCH_LEFT,
IPP_FINISHINGS_EDGE_STITCH_TOP,
IPP_FINISHINGS_EDGE_STITCH_RIGHT,
IPP_FINISHINGS_EDGE_STITCH_BOTTOM,
IPP_FINISHINGS_STAPLE_DUAL_LEFT,
IPP_FINISHINGS_STAPLE_DUAL_TOP,
IPP_FINISHINGS_STAPLE_DUAL_RIGHT,
IPP_FINISHINGS_STAPLE_DUAL_BOTTOM,
IPP_FINISHINGS_BIND_LEFT = 50,
IPP_FINISHINGS_BIND_TOP,
IPP_FINISHINGS_BIND_RIGHT,
IPP_FINISHINGS_BIND_BOTTOM,
IPP_FINISHINGS_TRIM_AFTER_PAGES = 60,
IPP_FINISHINGS_TRIM_AFTER_DOCUMENTS,
IPP_FINISHINGS_TRIM_AFTER_COPIES,
IPP_FINISHINGS_TRIM_AFTER_JOB,
IPP_FINISHINGS_PUNCH_TOP_LEFT = 70,
IPP_FINISHINGS_PUNCH_BOTTOM_LEFT,
IPP_FINISHINGS_PUNCH_TOP_RIGHT,
IPP_FINISHINGS_PUNCH_BOTTOM_RIGHT,
IPP_FINISHINGS_PUNCH_DUAL_LEFT,
IPP_FINISHINGS_PUNCH_DUAL_TOP,
IPP_FINISHINGS_PUNCH_DUAL_RIGHT,
IPP_FINISHINGS_PUNCH_DUAL_BOTTOM,
IPP_FINISHINGS_PUNCH_TRIPLE_LEFT,
IPP_FINISHINGS_PUNCH_TRIPLE_TOP,
IPP_FINISHINGS_PUNCH_TRIPLE_RIGHT,
IPP_FINISHINGS_PUNCH_TRIPLE_BOTTOM,
IPP_FINISHINGS_PUNCH_QUAD_LEFT,
IPP_FINISHINGS_PUNCH_QUAD_TOP,
IPP_FINISHINGS_PUNCH_QUAD_RIGHT,
IPP_FINISHINGS_PUNCH_QUAD_BOTTOM,
IPP_FINISHINGS_FOLD_ACCORDIAN = 90,
IPP_FINISHINGS_FOLD_DOUBLE_GATE,
IPP_FINISHINGS_FOLD_GATE,
IPP_FINISHINGS_FOLD_HALF,
IPP_FINISHINGS_FOLD_HALF_Z,
IPP_FINISHINGS_FOLD_LEFT_GATE,
IPP_FINISHINGS_FOLD_LETTER,
IPP_FINISHINGS_FOLD_PARALLEL,
IPP_FINISHINGS_FOLD_POSTER,
IPP_FINISHINGS_FOLD_RIGHT_GATE,
IPP_FINISHINGS_FOLD_Z,
IPP_FINISHINGS_CUPS_PUNCH_TOP_LEFT = 0x40000046,
IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_LEFT,
IPP_FINISHINGS_CUPS_PUNCH_TOP_RIGHT,
IPP_FINISHINGS_CUPS_PUNCH_BOTTOM_RIGHT,
IPP_FINISHINGS_CUPS_PUNCH_DUAL_LEFT,
IPP_FINISHINGS_CUPS_PUNCH_DUAL_TOP,
IPP_FINISHINGS_CUPS_PUNCH_DUAL_RIGHT,
IPP_FINISHINGS_CUPS_PUNCH_DUAL_BOTTOM,
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_LEFT,
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_TOP,
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_RIGHT,
IPP_FINISHINGS_CUPS_PUNCH_TRIPLE_BOTTOM,
IPP_FINISHINGS_CUPS_PUNCH_QUAD_LEFT,
IPP_FINISHINGS_CUPS_PUNCH_QUAD_TOP,
IPP_FINISHINGS_CUPS_PUNCH_QUAD_RIGHT,
IPP_FINISHINGS_CUPS_PUNCH_QUAD_BOTTOM,
IPP_FINISHINGS_CUPS_FOLD_ACCORDIAN = 0x4000005A,
IPP_FINISHINGS_CUPS_FOLD_DOUBLE_GATE,
IPP_FINISHINGS_CUPS_FOLD_GATE,
IPP_FINISHINGS_CUPS_FOLD_HALF,
IPP_FINISHINGS_CUPS_FOLD_HALF_Z,
IPP_FINISHINGS_CUPS_FOLD_LEFT_GATE,
IPP_FINISHINGS_CUPS_FOLD_LETTER,
IPP_FINISHINGS_CUPS_FOLD_PARALLEL,
IPP_FINISHINGS_CUPS_FOLD_POSTER,
IPP_FINISHINGS_CUPS_FOLD_RIGHT_GATE,
IPP_FINISHINGS_CUPS_FOLD_Z
} ipp_finishings_t;
# ifndef _CUPS_NO_DEPRECATED
# define IPP_FINISHINGS_JOB_OFFSET IPP_FINISHINGS_JOG_OFFSET
typedef enum ipp_finishings_e ipp_finish_t;
# endif
typedef enum ipp_jcollate_e
{
IPP_JCOLLATE_UNCOLLATED_SHEETS = 3,
IPP_JCOLLATE_COLLATED_DOCUMENTS,
IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
# ifndef _CUPS_NO_DEPRECATED
# define IPP_JOB_UNCOLLATED_SHEETS IPP_JCOLLATE_UNCOLLATED_SHEETS
# define IPP_JOB_COLLATED_DOCUMENTS IPP_JCOLLATE_COLLATED_DOCUMENTS
# define IPP_JOB_UNCOLLATED_DOCUMENTS IPP_JCOLLATE_UNCOLLATED_DOCUMENTS
# endif
} ipp_jcollate_t;
typedef enum ipp_jstate_e
{
IPP_JSTATE_PENDING = 3,
IPP_JSTATE_HELD,
IPP_JSTATE_PROCESSING,
IPP_JSTATE_STOPPED,
IPP_JSTATE_CANCELED,
IPP_JSTATE_ABORTED,
IPP_JSTATE_COMPLETED
# ifndef _CUPS_NO_DEPRECATED
# define IPP_JOB_PENDING IPP_JSTATE_PENDING
# define IPP_JOB_HELD IPP_JSTATE_HELD
# define IPP_JOB_PROCESSING IPP_JSTATE_PROCESSING
# define IPP_JOB_STOPPED IPP_JSTATE_STOPPED
# define IPP_JOB_CANCELED IPP_JSTATE_CANCELED
# define IPP_JOB_ABORTED IPP_JSTATE_ABORTED
# define IPP_JOB_COMPLETED IPP_JSTATE_COMPLETED
# define IPP_JOB_CANCELLED IPP_JSTATE_CANCELED
# endif
} ipp_jstate_t;
typedef enum ipp_op_e
{
IPP_OP_CUPS_INVALID = -1,
IPP_OP_CUPS_NONE = 0,
IPP_OP_PRINT_JOB = 0x0002,
IPP_OP_PRINT_URI,
IPP_OP_VALIDATE_JOB,
IPP_OP_CREATE_JOB,
IPP_OP_SEND_DOCUMENT,
IPP_OP_SEND_URI,
IPP_OP_CANCEL_JOB,
IPP_OP_GET_JOB_ATTRIBUTES,
IPP_OP_GET_JOBS,
IPP_OP_GET_PRINTER_ATTRIBUTES,
IPP_OP_HOLD_JOB,
IPP_OP_RELEASE_JOB,
IPP_OP_RESTART_JOB,
IPP_OP_PAUSE_PRINTER = 0x0010,
IPP_OP_RESUME_PRINTER,
IPP_OP_PURGE_JOBS,
IPP_OP_SET_PRINTER_ATTRIBUTES,
IPP_OP_SET_JOB_ATTRIBUTES,
IPP_OP_GET_PRINTER_SUPPORTED_VALUES,
IPP_OP_CREATE_PRINTER_SUBSCRIPTION,
IPP_OP_CREATE_JOB_SUBSCRIPTION,
IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,
IPP_OP_GET_SUBSCRIPTIONS,
IPP_OP_RENEW_SUBSCRIPTION,
IPP_OP_CANCEL_SUBSCRIPTION,
IPP_OP_GET_NOTIFICATIONS,
IPP_OP_SEND_NOTIFICATIONS,
IPP_OP_GET_RESOURCE_ATTRIBUTES,
IPP_OP_GET_RESOURCE_DATA,
IPP_OP_GET_RESOURCES,
IPP_OP_GET_PRINT_SUPPORT_FILES,
IPP_OP_ENABLE_PRINTER,
IPP_OP_DISABLE_PRINTER,
IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB,
IPP_OP_HOLD_NEW_JOBS,
IPP_OP_RELEASE_HELD_NEW_JOBS,
IPP_OP_DEACTIVATE_PRINTER,
IPP_OP_ACTIVATE_PRINTER,
IPP_OP_RESTART_PRINTER,
IPP_OP_SHUTDOWN_PRINTER,
IPP_OP_STARTUP_PRINTER,
IPP_OP_REPROCESS_JOB,
IPP_OP_CANCEL_CURRENT_JOB,
IPP_OP_SUSPEND_CURRENT_JOB,
IPP_OP_RESUME_JOB,
IPP_OP_PROMOTE_JOB,
IPP_OP_SCHEDULE_JOB_AFTER,
IPP_OP_CANCEL_DOCUMENT = 0x0033,
IPP_OP_GET_DOCUMENT_ATTRIBUTES,
IPP_OP_GET_DOCUMENTS,
IPP_OP_DELETE_DOCUMENT,
IPP_OP_SET_DOCUMENT_ATTRIBUTES,
IPP_OP_CANCEL_JOBS,
IPP_OP_CANCEL_MY_JOBS,
IPP_OP_RESUBMIT_JOB,
IPP_OP_CLOSE_JOB,
IPP_OP_IDENTIFY_PRINTER,
IPP_OP_VALIDATE_DOCUMENT,
IPP_OP_SEND_HARDCOPY_DOCUMENT,
IPP_OP_PRIVATE = 0x4000,
IPP_OP_CUPS_GET_DEFAULT,
IPP_OP_CUPS_GET_PRINTERS,
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
IPP_OP_CUPS_DELETE_PRINTER,
IPP_OP_CUPS_GET_CLASSES,
IPP_OP_CUPS_ADD_MODIFY_CLASS,
IPP_OP_CUPS_DELETE_CLASS,
IPP_OP_CUPS_ACCEPT_JOBS,
IPP_OP_CUPS_REJECT_JOBS,
IPP_OP_CUPS_SET_DEFAULT,
IPP_OP_CUPS_GET_DEVICES,
IPP_OP_CUPS_GET_PPDS,
IPP_OP_CUPS_MOVE_JOB,
IPP_OP_CUPS_AUTHENTICATE_JOB,
IPP_OP_CUPS_GET_PPD,
IPP_OP_CUPS_GET_DOCUMENT = 0x4027
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PRINT_JOB IPP_OP_PRINT_JOB
# define IPP_PRINT_URI IPP_OP_PRINT_URI
# define IPP_VALIDATE_JOB IPP_OP_VALIDATE_JOB
# define IPP_CREATE_JOB IPP_OP_CREATE_JOB
# define IPP_SEND_DOCUMENT IPP_OP_SEND_DOCUMENT
# define IPP_SEND_URI IPP_OP_SEND_URI
# define IPP_CANCEL_JOB IPP_OP_CANCEL_JOB
# define IPP_GET_JOB_ATTRIBUTES IPP_OP_GET_JOB_ATTRIBUTES
# define IPP_GET_JOBS IPP_OP_GET_JOBS
# define IPP_GET_PRINTER_ATTRIBUTES IPP_OP_GET_PRINTER_ATTRIBUTES
# define IPP_HOLD_JOB IPP_OP_HOLD_JOB
# define IPP_RELEASE_JOB IPP_OP_RELEASE_JOB
# define IPP_RESTART_JOB IPP_OP_RESTART_JOB
# define IPP_PAUSE_PRINTER IPP_OP_PAUSE_PRINTER
# define IPP_RESUME_PRINTER IPP_OP_RESUME_PRINTER
# define IPP_PURGE_JOBS IPP_OP_PURGE_JOBS
# define IPP_SET_PRINTER_ATTRIBUTES IPP_OP_SET_PRINTER_ATTRIBUTES
# define IPP_SET_JOB_ATTRIBUTES IPP_OP_SET_JOB_ATTRIBUTES
# define IPP_GET_PRINTER_SUPPORTED_VALUES IPP_OP_GET_PRINTER_SUPPORTED_VALUES
# define IPP_CREATE_PRINTER_SUBSCRIPTION IPP_OP_CREATE_PRINTER_SUBSCRIPTION
# define IPP_CREATE_JOB_SUBSCRIPTION IPP_OP_CREATE_JOB_SUBSCRIPTION
# define IPP_GET_SUBSCRIPTION_ATTRIBUTES IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES
# define IPP_GET_SUBSCRIPTIONS IPP_OP_GET_SUBSCRIPTIONS
# define IPP_RENEW_SUBSCRIPTION IPP_OP_RENEW_SUBSCRIPTION
# define IPP_CANCEL_SUBSCRIPTION IPP_OP_CANCEL_SUBSCRIPTION
# define IPP_GET_NOTIFICATIONS IPP_OP_GET_NOTIFICATIONS
# define IPP_SEND_NOTIFICATIONS IPP_OP_SEND_NOTIFICATIONS
# define IPP_GET_RESOURCE_ATTRIBUTES IPP_OP_GET_RESOURCE_ATTRIBUTES
# define IPP_GET_RESOURCE_DATA IPP_OP_GET_RESOURCE_DATA
# define IPP_GET_RESOURCES IPP_OP_GET_RESOURCES
# define IPP_GET_PRINT_SUPPORT_FILES IPP_OP_GET_PRINT_SUPPORT_FILES
# define IPP_ENABLE_PRINTER IPP_OP_ENABLE_PRINTER
# define IPP_DISABLE_PRINTER IPP_OP_DISABLE_PRINTER
# define IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB
# define IPP_HOLD_NEW_JOBS IPP_OP_HOLD_NEW_JOBS
# define IPP_RELEASE_HELD_NEW_JOBS IPP_OP_RELEASE_HELD_NEW_JOBS
# define IPP_DEACTIVATE_PRINTER IPP_OP_DEACTIVATE_PRINTER
# define IPP_ACTIVATE_PRINTER IPP_OP_ACTIVATE_PRINTER
# define IPP_RESTART_PRINTER IPP_OP_RESTART_PRINTER
# define IPP_SHUTDOWN_PRINTER IPP_OP_SHUTDOWN_PRINTER
# define IPP_STARTUP_PRINTER IPP_OP_STARTUP_PRINTER
# define IPP_REPROCESS_JOB IPP_OP_REPROCESS_JOB
# define IPP_CANCEL_CURRENT_JOB IPP_OP_CANCEL_CURRENT_JOB
# define IPP_SUSPEND_CURRENT_JOB IPP_OP_SUSPEND_CURRENT_JOB
# define IPP_RESUME_JOB IPP_OP_RESUME_JOB
# define IPP_PROMOTE_JOB IPP_OP_PROMOTE_JOB
# define IPP_SCHEDULE_JOB_AFTER IPP_OP_SCHEDULE_JOB_AFTER
# define IPP_CANCEL_DOCUMENT IPP_OP_CANCEL_DOCUMENT
# define IPP_GET_DOCUMENT_ATTRIBUTES IPP_OP_GET_DOCUMENT_ATTRIBUTES
# define IPP_GET_DOCUMENTS IPP_OP_GET_DOCUMENTS
# define IPP_DELETE_DOCUMENT IPP_OP_DELETE_DOCUMENT
# define IPP_SET_DOCUMENT_ATTRIBUTES IPP_OP_SET_DOCUMENT_ATTRIBUTES
# define IPP_CANCEL_JOBS IPP_OP_CANCEL_JOBS
# define IPP_CANCEL_MY_JOBS IPP_OP_CANCEL_MY_JOBS
# define IPP_RESUBMIT_JOB IPP_OP_RESUBMIT_JOB
# define IPP_CLOSE_JOB IPP_OP_CLOSE_JOB
# define IPP_IDENTIFY_PRINTER IPP_OP_IDENTIFY_PRINTER
# define IPP_VALIDATE_DOCUMENT IPP_OP_VALIDATE_DOCUMENT
# define IPP_PRIVATE IPP_OP_PRIVATE
# define CUPS_GET_DEFAULT IPP_OP_CUPS_GET_DEFAULT
# define CUPS_GET_PRINTERS IPP_OP_CUPS_GET_PRINTERS
# define CUPS_ADD_MODIFY_PRINTER IPP_OP_CUPS_ADD_MODIFY_PRINTER
# define CUPS_DELETE_PRINTER IPP_OP_CUPS_DELETE_PRINTER
# define CUPS_GET_CLASSES IPP_OP_CUPS_GET_CLASSES
# define CUPS_ADD_MODIFY_CLASS IPP_OP_CUPS_ADD_MODIFY_CLASS
# define CUPS_DELETE_CLASS IPP_OP_CUPS_DELETE_CLASS
# define CUPS_ACCEPT_JOBS IPP_OP_CUPS_ACCEPT_JOBS
# define CUPS_REJECT_JOBS IPP_OP_CUPS_REJECT_JOBS
# define CUPS_SET_DEFAULT IPP_OP_CUPS_SET_DEFAULT
# define CUPS_GET_DEVICES IPP_OP_CUPS_GET_DEVICES
# define CUPS_GET_PPDS IPP_OP_CUPS_GET_PPDS
# define CUPS_MOVE_JOB IPP_OP_CUPS_MOVE_JOB
# define CUPS_AUTHENTICATE_JOB IPP_OP_CUPS_AUTHENTICATE_JOB
# define CUPS_GET_PPD IPP_OP_CUPS_GET_PPD
# define CUPS_GET_DOCUMENT IPP_OP_CUPS_GET_DOCUMENT
# define CUPS_ADD_PRINTER IPP_OP_CUPS_ADD_MODIFY_PRINTER
# define CUPS_ADD_CLASS IPP_OP_CUPS_ADD_MODIFY_CLASS
# endif
} ipp_op_t;
typedef enum ipp_orient_e
{
IPP_ORIENT_PORTRAIT = 3,
IPP_ORIENT_LANDSCAPE,
IPP_ORIENT_REVERSE_LANDSCAPE,
IPP_ORIENT_REVERSE_PORTRAIT
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PORTRAIT IPP_ORIENT_PORTRAIT
# define IPP_LANDSCAPE IPP_ORIENT_LANDSCAPE
# define IPP_REVERSE_LANDSCAPE IPP_ORIENT_REVERSE_LANDSCAPE
# define IPP_REVERSE_PORTRAIT IPP_ORIENT_REVERSE_PORTRAIT
# endif
} ipp_orient_t;
typedef enum ipp_pstate_e
{
IPP_PSTATE_IDLE = 3,
IPP_PSTATE_PROCESSING,
IPP_PSTATE_STOPPED
# ifndef _CUPS_NO_DEPRECATED
# define IPP_PRINTER_IDLE IPP_PSTATE_IDLE
# define IPP_PRINTER_PROCESSING IPP_PSTATE_PROCESSING
# define IPP_PRINTER_STOPPED IPP_PSTATE_STOPPED
# endif
} ipp_pstate_t;
typedef enum ipp_quality_e
{
IPP_QUALITY_DRAFT = 3,
IPP_QUALITY_NORMAL,
IPP_QUALITY_HIGH
} ipp_quality_t;
typedef enum ipp_res_e
{
IPP_RES_PER_INCH = 3,
IPP_RES_PER_CM
} ipp_res_t;
typedef enum ipp_state_e
{
IPP_STATE_ERROR = -1,
IPP_STATE_IDLE,
IPP_STATE_HEADER,
IPP_STATE_ATTRIBUTE,
IPP_STATE_DATA
# ifndef _CUPS_NO_DEPRECATED
# define IPP_ERROR IPP_STATE_ERROR
# define IPP_IDLE IPP_STATE_IDLE
# define IPP_HEADER IPP_STATE_HEADER
# define IPP_ATTRIBUTE IPP_STATE_ATTRIBUTE
# define IPP_DATA IPP_STATE_DATA
# endif
} ipp_state_t;
typedef enum ipp_status_e
{
IPP_STATUS_CUPS_INVALID = -1,
IPP_STATUS_OK = 0x0000,
IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED,
IPP_STATUS_OK_CONFLICTING,
IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS,
IPP_STATUS_OK_IGNORED_NOTIFICATIONS,
IPP_STATUS_OK_TOO_MANY_EVENTS,
IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION,
IPP_STATUS_OK_EVENTS_COMPLETE,
IPP_STATUS_REDIRECTION_OTHER_SITE = 0x0200,
IPP_STATUS_CUPS_SEE_OTHER = 0x0280,
IPP_STATUS_ERROR_BAD_REQUEST = 0x0400,
IPP_STATUS_ERROR_FORBIDDEN,
IPP_STATUS_ERROR_NOT_AUTHENTICATED,
IPP_STATUS_ERROR_NOT_AUTHORIZED,
IPP_STATUS_ERROR_NOT_POSSIBLE,
IPP_STATUS_ERROR_TIMEOUT,
IPP_STATUS_ERROR_NOT_FOUND,
IPP_STATUS_ERROR_GONE,
IPP_STATUS_ERROR_REQUEST_ENTITY,
IPP_STATUS_ERROR_REQUEST_VALUE,
IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED,
IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
IPP_STATUS_ERROR_URI_SCHEME,
IPP_STATUS_ERROR_CHARSET,
IPP_STATUS_ERROR_CONFLICTING,
IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED,
IPP_STATUS_ERROR_COMPRESSION_ERROR,
IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR,
IPP_STATUS_ERROR_DOCUMENT_ACCESS,
IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE,
IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS,
IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS,
IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS,
IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND,
IPP_STATUS_ERROR_DOCUMENT_PASSWORD,
IPP_STATUS_ERROR_DOCUMENT_PERMISSION,
IPP_STATUS_ERROR_DOCUMENT_SECURITY,
IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE,
IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED = 0x049C,
IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED,
IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED,
IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED,
IPP_STATUS_ERROR_INTERNAL = 0x0500,
IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
IPP_STATUS_ERROR_DEVICE,
IPP_STATUS_ERROR_TEMPORARY,
IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS,
IPP_STATUS_ERROR_BUSY,
IPP_STATUS_ERROR_JOB_CANCELED,
IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED,
IPP_STATUS_ERROR_TOO_MANY_JOBS,
IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS,
IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED = 0x1000,
IPP_STATUS_ERROR_CUPS_PKI,
IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED
# ifndef _CUPS_NO_DEPRECATED
# define IPP_OK IPP_STATUS_OK
# define IPP_OK_SUBST IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED
# define IPP_OK_CONFLICT IPP_STATUS_OK_CONFLICTING
# define IPP_OK_IGNORED_SUBSCRIPTIONS IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS
# define IPP_OK_IGNORED_NOTIFICATIONS IPP_STATUS_OK_IGNORED_NOTIFICATIONS
# define IPP_OK_TOO_MANY_EVENTS IPP_STATUS_OK_TOO_MANY_EVENTS
# define IPP_OK_BUT_CANCEL_SUBSCRIPTION IPP_STATUS_OK_BUT_CANCEL_SUBSCRIPTION
# define IPP_OK_EVENTS_COMPLETE IPP_STATUS_OK_EVENTS_COMPLETE
# define IPP_REDIRECTION_OTHER_SITE IPP_STATUS_REDIRECTION_OTHER_SITE
# define CUPS_SEE_OTHER IPP_STATUS_CUPS_SEE_OTHER
# define IPP_BAD_REQUEST IPP_STATUS_ERROR_BAD_REQUEST
# define IPP_FORBIDDEN IPP_STATUS_ERROR_FORBIDDEN
# define IPP_NOT_AUTHENTICATED IPP_STATUS_ERROR_NOT_AUTHENTICATED
# define IPP_NOT_AUTHORIZED IPP_STATUS_ERROR_NOT_AUTHORIZED
# define IPP_NOT_POSSIBLE IPP_STATUS_ERROR_NOT_POSSIBLE
# define IPP_TIMEOUT IPP_STATUS_ERROR_TIMEOUT
# define IPP_NOT_FOUND IPP_STATUS_ERROR_NOT_FOUND
# define IPP_GONE IPP_STATUS_ERROR_GONE
# define IPP_REQUEST_ENTITY IPP_STATUS_ERROR_REQUEST_ENTITY
# define IPP_REQUEST_VALUE IPP_STATUS_ERROR_REQUEST_VALUE
# define IPP_DOCUMENT_FORMAT IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED
# define IPP_ATTRIBUTES IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES
# define IPP_URI_SCHEME IPP_STATUS_ERROR_URI_SCHEME
# define IPP_CHARSET IPP_STATUS_ERROR_CHARSET
# define IPP_CONFLICT IPP_STATUS_ERROR_CONFLICTING
# define IPP_COMPRESSION_NOT_SUPPORTED IPP_STATUS_ERROR_COMPRESSION_NOT_SUPPORTED
# define IPP_COMPRESSION_ERROR IPP_STATUS_ERROR_COMPRESSION_ERROR
# define IPP_DOCUMENT_FORMAT_ERROR IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR
# define IPP_DOCUMENT_ACCESS_ERROR IPP_STATUS_ERROR_DOCUMENT_ACCESS
# define IPP_ATTRIBUTES_NOT_SETTABLE IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE
# define IPP_IGNORED_ALL_SUBSCRIPTIONS IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS
# define IPP_TOO_MANY_SUBSCRIPTIONS IPP_STATUS_ERROR_TOO_MANY_SUBSCRIPTIONS
# define IPP_IGNORED_ALL_NOTIFICATIONS IPP_STATUS_ERROR_IGNORED_ALL_NOTIFICATIONS
# define IPP_PRINT_SUPPORT_FILE_NOT_FOUND IPP_STATUS_ERROR_PRINT_SUPPORT_FILE_NOT_FOUND
# define IPP_DOCUMENT_PASSWORD_ERROR IPP_STATUS_ERROR_DOCUMENT_PASSWORD
# define IPP_DOCUMENT_PERMISSION_ERROR IPP_STATUS_ERROR_DOCUMENT_PERMISSION
# define IPP_DOCUMENT_SECURITY_ERROR IPP_STATUS_ERROR_DOCUMENT_SECURITY
# define IPP_DOCUMENT_UNPRINTABLE_ERROR IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE
# define IPP_INTERNAL_ERROR IPP_STATUS_ERROR_INTERNAL
# define IPP_OPERATION_NOT_SUPPORTED IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED
# define IPP_SERVICE_UNAVAILABLE IPP_STATUS_ERROR_SERVICE_UNAVAILABLE
# define IPP_VERSION_NOT_SUPPORTED IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED
# define IPP_DEVICE_ERROR IPP_STATUS_ERROR_DEVICE
# define IPP_TEMPORARY_ERROR IPP_STATUS_ERROR_TEMPORARY
# define IPP_NOT_ACCEPTING IPP_STATUS_ERROR_NOT_ACCEPTING_JOBS
# define IPP_PRINTER_BUSY IPP_STATUS_ERROR_BUSY
# define IPP_ERROR_JOB_CANCELED IPP_STATUS_ERROR_JOB_CANCELED
# define IPP_MULTIPLE_JOBS_NOT_SUPPORTED IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED
# define IPP_PRINTER_IS_DEACTIVATED IPP_STATUS_ERROR_PRINTER_IS_DEACTIVATED
# define IPP_TOO_MANY_JOBS IPP_STATUS_ERROR_TOO_MANY_JOBS
# define IPP_TOO_MANY_DOCUMENTS IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS
# define IPP_AUTHENTICATION_CANCELED IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED
# define IPP_PKI_ERROR IPP_STATUS_ERROR_CUPS_PKI
# define IPP_UPGRADE_REQUIRED IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED
# define IPP_ERROR_JOB_CANCELLED IPP_STATUS_ERROR_JOB_CANCELED
# endif
} ipp_status_t;
typedef enum ipp_tag_e
{
IPP_TAG_CUPS_INVALID = -1,
IPP_TAG_ZERO = 0x00,
IPP_TAG_OPERATION,
IPP_TAG_JOB,
IPP_TAG_END,
IPP_TAG_PRINTER,
IPP_TAG_UNSUPPORTED_GROUP,
IPP_TAG_SUBSCRIPTION,
IPP_TAG_EVENT_NOTIFICATION,
IPP_TAG_RESOURCE,
IPP_TAG_DOCUMENT,
IPP_TAG_UNSUPPORTED_VALUE = 0x10,
IPP_TAG_DEFAULT,
IPP_TAG_UNKNOWN,
IPP_TAG_NOVALUE,
IPP_TAG_NOTSETTABLE = 0x15,
IPP_TAG_DELETEATTR,
IPP_TAG_ADMINDEFINE,
IPP_TAG_INTEGER = 0x21,
IPP_TAG_BOOLEAN,
IPP_TAG_ENUM,
IPP_TAG_STRING = 0x30,
IPP_TAG_DATE,
IPP_TAG_RESOLUTION,
IPP_TAG_RANGE,
IPP_TAG_BEGIN_COLLECTION,
IPP_TAG_TEXTLANG,
IPP_TAG_NAMELANG,
IPP_TAG_END_COLLECTION,
IPP_TAG_TEXT = 0x41,
IPP_TAG_NAME,
IPP_TAG_RESERVED_STRING,
IPP_TAG_KEYWORD,
IPP_TAG_URI,
IPP_TAG_URISCHEME,
IPP_TAG_CHARSET,
IPP_TAG_LANGUAGE,
IPP_TAG_MIMETYPE,
IPP_TAG_MEMBERNAME,
IPP_TAG_EXTENSION = 0x7f,
IPP_TAG_CUPS_MASK = 0x7fffffff,
IPP_TAG_CUPS_CONST = -0x7fffffff-1
# ifndef _CUPS_NO_DEPRECATED
# define IPP_TAG_MASK IPP_TAG_CUPS_MASK
# define IPP_TAG_COPY IPP_TAG_CUPS_CONST
# endif
} ipp_tag_t;
typedef unsigned char ipp_uchar_t;
typedef struct _ipp_s ipp_t;
typedef struct _ipp_attribute_s ipp_attribute_t;
typedef ssize_t (*ipp_iocb_t)(void *context, ipp_uchar_t *buffer, size_t bytes);
typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
# ifdef _IPP_PRIVATE_STRUCTURES
# elif defined(_CUPS_SOURCE) || defined(_CUPS_IPP_PRIVATE_H_)
# define _IPP_PRIVATE_STRUCTURES 1
# elif defined(__APPLE__)
# if defined(MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
# define _IPP_PRIVATE_STRUCTURES 1
# elif !defined(MAC_OS_X_VERSION_10_8)
# define _IPP_PRIVATE_STRUCTURES 1
# endif
# else
# define _IPP_PRIVATE_STRUCTURES 0
# endif
# if _IPP_PRIVATE_STRUCTURES
typedef union _ipp_request_u
{
struct
{
ipp_uchar_t version[2];
int op_status;
int request_id;
} any;
struct
{
ipp_uchar_t version[2];
ipp_op_t operation_id;
int request_id;
} op;
struct
{
ipp_uchar_t version[2];
ipp_status_t status_code;
int request_id;
} status;
struct
{
ipp_uchar_t version[2];
ipp_status_t status_code;
int request_id;
} event;
} _ipp_request_t;
typedef union _ipp_value_u
{
int integer;
char boolean;
ipp_uchar_t date[11];
struct
{
int xres,
yres;
ipp_res_t units;
} resolution;
struct
{
int lower,
upper;
} range;
struct
{
char *language;
char *text;
} string;
struct
{
int length;
void *data;
} unknown;
ipp_t *collection;
} _ipp_value_t;
typedef _ipp_value_t ipp_value_t;
struct _ipp_attribute_s
{
ipp_attribute_t *next;
ipp_tag_t group_tag,
value_tag;
char *name;
int num_values;
_ipp_value_t values[1];
};
struct _ipp_s
{
ipp_state_t state;
_ipp_request_t request;
ipp_attribute_t *attrs;
ipp_attribute_t *last;
ipp_attribute_t *current;
ipp_tag_t curtag;
ipp_attribute_t *prev;
int use;
};
# endif
extern ipp_attribute_t *ippAddBoolean(ipp_t *ipp, ipp_tag_t group,
const char *name, char value);
extern ipp_attribute_t *ippAddBooleans(ipp_t *ipp, ipp_tag_t group,
const char *name, int num_values,
const char *values);
extern ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group,
const char *name, const ipp_uchar_t *value);
extern ipp_attribute_t *ippAddInteger(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
int value);
extern ipp_attribute_t *ippAddIntegers(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
int num_values, const int *values);
extern ipp_attribute_t *ippAddRange(ipp_t *ipp, ipp_tag_t group,
const char *name, int lower, int upper);
extern ipp_attribute_t *ippAddRanges(ipp_t *ipp, ipp_tag_t group,
const char *name, int num_values,
const int *lower, const int *upper);
extern ipp_attribute_t *ippAddResolution(ipp_t *ipp, ipp_tag_t group,
const char *name, ipp_res_t units,
int xres, int yres);
extern ipp_attribute_t *ippAddResolutions(ipp_t *ipp, ipp_tag_t group,
const char *name, int num_values,
ipp_res_t units, const int *xres,
const int *yres);
extern ipp_attribute_t *ippAddSeparator(ipp_t *ipp);
extern ipp_attribute_t *ippAddString(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language, const char *value);
extern ipp_attribute_t *ippAddStrings(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
int num_values, const char *language,
const char * const *values);
extern time_t ippDateToTime(const ipp_uchar_t *date);
extern void ippDelete(ipp_t *ipp);
extern const char *ippErrorString(ipp_status_t error);
extern ipp_attribute_t *ippFindAttribute(ipp_t *ipp, const char *name,
ipp_tag_t value_tag);
extern ipp_attribute_t *ippFindNextAttribute(ipp_t *ipp, const char *name,
ipp_tag_t value_tag);
extern size_t ippLength(ipp_t *ipp);
extern ipp_t *ippNew(void);
extern ipp_state_t ippRead(http_t *http, ipp_t *ipp);
extern const ipp_uchar_t *ippTimeToDate(time_t t);
extern ipp_state_t ippWrite(http_t *http, ipp_t *ipp);
extern int ippPort(void);
extern void ippSetPort(int p);
extern ipp_attribute_t *ippAddCollection(ipp_t *ipp, ipp_tag_t group,
const char *name, ipp_t *value) _CUPS_API_1_1_19;
extern ipp_attribute_t *ippAddCollections(ipp_t *ipp, ipp_tag_t group,
const char *name, int num_values,
const ipp_t **values) _CUPS_API_1_1_19;
extern void ippDeleteAttribute(ipp_t *ipp, ipp_attribute_t *attr) _CUPS_API_1_1_19;
extern ipp_state_t ippReadFile(int fd, ipp_t *ipp) _CUPS_API_1_1_19;
extern ipp_state_t ippWriteFile(int fd, ipp_t *ipp) _CUPS_API_1_1_19;
extern ipp_attribute_t *ippAddOctetString(ipp_t *ipp, ipp_tag_t group,
const char *name,
const void *data, int datalen) _CUPS_API_1_2;
extern ipp_status_t ippErrorValue(const char *name) _CUPS_API_1_2;
extern ipp_t *ippNewRequest(ipp_op_t op) _CUPS_API_1_2;
extern const char *ippOpString(ipp_op_t op) _CUPS_API_1_2;
extern ipp_op_t ippOpValue(const char *name) _CUPS_API_1_2;
extern ipp_state_t ippReadIO(void *src, ipp_iocb_t cb, int blocking,
ipp_t *parent, ipp_t *ipp) _CUPS_API_1_2;
extern ipp_state_t ippWriteIO(void *dst, ipp_iocb_t cb, int blocking,
ipp_t *parent, ipp_t *ipp) _CUPS_API_1_2;
extern const char *ippTagString(ipp_tag_t tag) _CUPS_API_1_4;
extern ipp_tag_t ippTagValue(const char *name) _CUPS_API_1_4;
extern ipp_attribute_t *ippAddOutOfBand(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name)
_CUPS_API_1_6;
extern size_t ippAttributeString(ipp_attribute_t *attr, char *buffer,
size_t bufsize) _CUPS_API_1_6;
extern ipp_attribute_t *ippCopyAttribute(ipp_t *dst, ipp_attribute_t *attr,
int quickcopy) _CUPS_API_1_6;
extern int ippCopyAttributes(ipp_t *dst, ipp_t *src,
int quickcopy, ipp_copycb_t cb,
void *context) _CUPS_API_1_6;
extern int ippDeleteValues(ipp_t *ipp, ipp_attribute_t **attr,
int element, int count) _CUPS_API_1_6;
extern const char *ippEnumString(const char *attrname, int enumvalue)
_CUPS_API_1_6;
extern int ippEnumValue(const char *attrname,
const char *enumstring) _CUPS_API_1_6;
extern ipp_attribute_t *ippFirstAttribute(ipp_t *ipp) _CUPS_API_1_6;
extern int ippGetBoolean(ipp_attribute_t *attr, int element)
_CUPS_API_1_6;
extern ipp_t *ippGetCollection(ipp_attribute_t *attr,
int element) _CUPS_API_1_6;
extern int ippGetCount(ipp_attribute_t *attr) _CUPS_API_1_6;
extern const ipp_uchar_t *ippGetDate(ipp_attribute_t *attr, int element)
_CUPS_API_1_6;
extern ipp_tag_t ippGetGroupTag(ipp_attribute_t *attr) _CUPS_API_1_6;
extern int ippGetInteger(ipp_attribute_t *attr, int element)
_CUPS_API_1_6;
extern const char *ippGetName(ipp_attribute_t *attr) _CUPS_API_1_6;
extern ipp_op_t ippGetOperation(ipp_t *ipp) _CUPS_API_1_6;
extern int ippGetRange(ipp_attribute_t *attr, int element,
int *upper) _CUPS_API_1_6;
extern int ippGetRequestId(ipp_t *ipp) _CUPS_API_1_6;
extern int ippGetResolution(ipp_attribute_t *attr, int element,
int *yres, ipp_res_t *units)
_CUPS_API_1_6;
extern ipp_state_t ippGetState(ipp_t *ipp) _CUPS_API_1_6;
extern ipp_status_t ippGetStatusCode(ipp_t *ipp) _CUPS_API_1_6;
extern const char *ippGetString(ipp_attribute_t *attr, int element,
const char **language) _CUPS_API_1_6;
extern ipp_tag_t ippGetValueTag(ipp_attribute_t *attr) _CUPS_API_1_6;
extern int ippGetVersion(ipp_t *ipp, int *minor) _CUPS_API_1_6;
extern ipp_attribute_t *ippNextAttribute(ipp_t *ipp) _CUPS_API_1_6;
extern int ippSetBoolean(ipp_t *ipp, ipp_attribute_t **attr,
int element, int boolvalue) _CUPS_API_1_6;
extern int ippSetCollection(ipp_t *ipp, ipp_attribute_t **attr,
int element, ipp_t *colvalue)
_CUPS_API_1_6;
extern int ippSetDate(ipp_t *ipp, ipp_attribute_t **attr,
int element, const ipp_uchar_t *datevalue)
_CUPS_API_1_6;
extern int ippSetGroupTag(ipp_t *ipp, ipp_attribute_t **attr,
ipp_tag_t group_tag) _CUPS_API_1_6;
extern int ippSetInteger(ipp_t *ipp, ipp_attribute_t **attr,
int element, int intvalue) _CUPS_API_1_6;
extern int ippSetName(ipp_t *ipp, ipp_attribute_t **attr,
const char *name) _CUPS_API_1_6;
extern int ippSetOperation(ipp_t *ipp, ipp_op_t op) _CUPS_API_1_6;
extern int ippSetRange(ipp_t *ipp, ipp_attribute_t **attr,
int element, int lowervalue, int uppervalue)
_CUPS_API_1_6;
extern int ippSetRequestId(ipp_t *ipp, int request_id)
_CUPS_API_1_6;
extern int ippSetResolution(ipp_t *ipp, ipp_attribute_t **attr,
int element, ipp_res_t unitsvalue,
int xresvalue, int yresvalue)
_CUPS_API_1_6;
extern int ippSetState(ipp_t *ipp, ipp_state_t state)
_CUPS_API_1_6;
extern int ippSetStatusCode(ipp_t *ipp, ipp_status_t status)
_CUPS_API_1_6;
extern int ippSetString(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *strvalue)
_CUPS_API_1_6;
extern int ippSetValueTag(ipp_t *ipp, ipp_attribute_t **attr,
ipp_tag_t value_tag) _CUPS_API_1_6;
extern int ippSetVersion(ipp_t *ipp, int major, int minor)
_CUPS_API_1_6;
extern ipp_attribute_t *ippAddStringf(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language, const char *format,
...) _CUPS_API_1_7;
extern ipp_attribute_t *ippAddStringfv(ipp_t *ipp, ipp_tag_t group,
ipp_tag_t value_tag, const char *name,
const char *language,
const char *format, va_list ap)
_CUPS_API_1_7;
extern int ippContainsInteger(ipp_attribute_t *attr, int value)
_CUPS_API_1_7;
extern int ippContainsString(ipp_attribute_t *attr,
const char *value) _CUPS_API_1_7;
extern cups_array_t *ippCreateRequestedArray(ipp_t *request) _CUPS_API_1_7;
extern void *ippGetOctetString(ipp_attribute_t *attr, int element,
int *datalen) _CUPS_API_1_7;
extern ipp_t *ippNewResponse(ipp_t *request) _CUPS_API_1_7;
extern int ippSetOctetString(ipp_t *ipp, ipp_attribute_t **attr,
int element, const void *data,
int datalen) _CUPS_API_1_7;
extern int ippSetStringf(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *format,
...) _CUPS_API_1_7;
extern int ippSetStringfv(ipp_t *ipp, ipp_attribute_t **attr,
int element, const char *format,
va_list ap) _CUPS_API_1_7;
extern int ippValidateAttribute(ipp_attribute_t *attr)
_CUPS_API_1_7;
extern int ippValidateAttributes(ipp_t *ipp) _CUPS_API_1_7;
# ifdef __cplusplus
}
# endif
#endif