355b4669e025ff377602b6fc7caaf30dbc218371jacobs/*
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * CDDL HEADER START
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * The contents of this file are subject to the terms of the
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Common Development and Distribution License (the "License").
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * You may not use this file except in compliance with the License.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * or http://www.opensolaris.org/os/licensing.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * See the License for the specific language governing permissions
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * and limitations under the License.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * When distributing Covered Code, include this CDDL HEADER in each
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * If applicable, add the following below this CDDL HEADER, with the
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * fields enclosed by brackets "[]" replaced with your own identifying
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * information: Portions Copyright [yyyy] [name of copyright owner]
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * CDDL HEADER END
355b4669e025ff377602b6fc7caaf30dbc218371jacobs */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs/*
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Use is subject to license terms.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs/* $Id: ipp_types.c 146 2006-03-24 00:26:54Z njacobs $ */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#pragma ident "%Z%%M% %I% %E% SMI"
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <stdio.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <stdlib.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <stdarg.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <string.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <ipp.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <errno.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <values.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#ifndef MININT
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#define MININT (-MAXINT - 1)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#endif
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobstypedef struct {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs char *name;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int8_t ipp_type;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int min;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int max;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs} attr_info_list_t;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobsstatic attr_info_list_t attr_list[] = {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"operation-attribute-group", DTAG_OPERATION_ATTRIBUTES, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-attribute-group", DTAG_JOB_ATTRIBUTES, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-attribute-group", DTAG_PRINTER_ATTRIBUTES, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"unsupported-attribute-group", DTAG_UNSUPPORTED_ATTRIBUTES, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"subscription-attribute-group", DTAG_SUBSCRIPTION_ATTRIBUTES, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"even-notificaton-attribute-group",
355b4669e025ff377602b6fc7caaf30dbc218371jacobs DTAG_EVENT_NOTIFICATION_ATTRIBUTES, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"attributes-charset", VTAG_CHARSET, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"attributes-natural-language", VTAG_NATURAL_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"charset-configured", VTAG_CHARSET, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"charset-supported", VTAG_CHARSET, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"color-supported", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"compression", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"compression-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"copies", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"copies-default", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"copies-supported", VTAG_RANGE_OF_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"date-at-completed", VTAG_DATE_TIME, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"date-at-creation", VTAG_DATE_TIME, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"date-at-processing", VTAG_DATE_TIME, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"detailed-status-message", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-access-error", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-format", VTAG_MIME_MEDIA_TYPE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-format-default", VTAG_MIME_MEDIA_TYPE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-format-supported", VTAG_MIME_MEDIA_TYPE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-name", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-name", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"document-natural-language", VTAG_NATURAL_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"finishing", VTAG_ENUM, 3, 31},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"finishing-default", VTAG_ENUM, 3, 31},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"finishing-supported", VTAG_ENUM, 3, 31},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"generated-natural-language-supported", VTAG_NATURAL_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"ipp-attribute-fidelity", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"ipp-versions-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-detailed-status-messages", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-document-access-errors", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-hold-until", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-hold-until-default", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-hold-until-supported", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-id", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-impressions", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-impressions-completed", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-impressions-supported", VTAG_RANGE_OF_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-k-octets", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-k-octets-processed", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-k-octets-supported", VTAG_RANGE_OF_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-media-sheets", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-media-sheets-completed", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-media-sheets-supported", VTAG_RANGE_OF_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-message-from-operator", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-more-info", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-name", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-originating-user-name", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-printer-up-time", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-printer-uri", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-priority", VTAG_INTEGER, 1, 100},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-priority-default", VTAG_INTEGER, 1, 100},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-priority-supported", VTAG_INTEGER, 1, 100},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-sheets", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-sheets-default", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-sheets-supported", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-state", VTAG_ENUM, 3, 9},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-state-message", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-state-reasons", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"job-uri", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"last-document", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"limit", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"media", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"media-default", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"media-supported", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"message", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"multiple-document-handling", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"multiple-document-handling-default", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"multiple-document-handling-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"multiple-document-jobs-supported", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"multiple-operation-time-out", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"my-jobs", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"natural-language-configured", VTAG_NATURAL_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"number-of-documents", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"number-of-intervening-jobs", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"number-up", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"number-up-default", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"number-up-supported", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"operations-supported", VTAG_ENUM, 1, 0x8FFF},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"orientation-requested", VTAG_ENUM, 3, 6},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"orientation-requested-default", VTAG_ENUM, 3, 6},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"orientation-requested-supported", VTAG_ENUM, 3, 6},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"output-device-assigned", VTAG_NAME_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"page-ranges", VTAG_RANGE_OF_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"page-ranges-supported", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"pages-per-minute", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"pages-per-minute-color", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"pdl-override-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"print-quality", VTAG_ENUM, 3, 5},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"print-quality-default", VTAG_ENUM, 3, 5},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"print-quality-supported", VTAG_ENUM, 3, 5},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-current-time", VTAG_DATE_TIME, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-driver-installer", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-id", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-info", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-is-accepting-jobs", VTAG_BOOLEAN, 0, 1},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-location", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-make-and-model", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-message-from-operator", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-more-info", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-more-info-manufacturer", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-name", VTAG_NAME_WITHOUT_LANGUAGE, 0, 127},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-resolution", VTAG_RESOLUTION, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-resolution-default", VTAG_RESOLUTION, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-resolution-supported", VTAG_RESOLUTION, 0, 0},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-state", VTAG_ENUM, 3, 5},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-state-message", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-state-reasons", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-up-time", VTAG_INTEGER, 1, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-uri", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"printer-uri-supported", VTAG_URI, 0, 1023},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"queued-job-count", VTAG_INTEGER, 0, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"reference-uri-schemes-supported", VTAG_URI_SCHEME, 0, 63},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"requested-attributes", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"requesting-user-name", VTAG_NAME_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"sides", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"sides-default", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"sides-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"status-code", VTAG_ENUM, 1, 0x7FFF},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"status-message", VTAG_TEXT_WITHOUT_LANGUAGE, 0, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"time-at-completed", VTAG_INTEGER, MININT, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"time-at-creation", VTAG_INTEGER, MININT, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"time-at-processing", VTAG_INTEGER, MININT, MAXINT},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"uri-authentication-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"uri-security-supported", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {"which-jobs", VTAG_KEYWORD, 1, 255},
355b4669e025ff377602b6fc7caaf30dbc218371jacobs {NULL, 0, 0, 0}
355b4669e025ff377602b6fc7caaf30dbc218371jacobs};
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobsstatic attr_info_list_t *
355b4669e025ff377602b6fc7caaf30dbc218371jacobsget_attr_info_by_name(char *name)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (name != NULL) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int i;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs for (i = 0; attr_list[i].name != NULL; i++)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (strcasecmp(attr_list[i].name, name) == 0)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (&attr_list[i]);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (NULL);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobssize_t
355b4669e025ff377602b6fc7caaf30dbc218371jacobsmax_val_len(int8_t type, char *name)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs attr_info_list_t *t;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int result;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs switch (type) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_INTEGER:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_RANGE_OF_INTEGER:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_ENUM:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = MAXINT;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_URI:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_OCTET_STRING:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_TEXT_WITHOUT_LANGUAGE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = 1023;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_NATURAL_LANGUAGE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_URI_SCHEME:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_CHARSET:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = 63;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_NAME_WITHOUT_LANGUAGE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_MIME_MEDIA_TYPE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_KEYWORD:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = 255;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs default:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = MAXINT;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#define min(a, b) ((a < b) ? a : b)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if ((t = get_attr_info_by_name(name)) != NULL)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = min(t->max, result);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#undef min
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (result);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobssize_t
355b4669e025ff377602b6fc7caaf30dbc218371jacobsmin_val_len(int8_t type, char *name)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs attr_info_list_t *t;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int result;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs switch (type) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_INTEGER:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_RANGE_OF_INTEGER:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = MININT;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_ENUM:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = 1;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_URI:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_OCTET_STRING:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_TEXT_WITHOUT_LANGUAGE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_MIME_MEDIA_TYPE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_NAME_WITHOUT_LANGUAGE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_URI_SCHEME:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_CHARSET:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_NATURAL_LANGUAGE:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = 0;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case VTAG_KEYWORD:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = 1;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs default:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = MININT;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#define max(a, b) ((a > b) ? a : b)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if ((t = get_attr_info_by_name(name)) != NULL)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs result = max(t->min, result);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#undef max
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (result);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobsint
355b4669e025ff377602b6fc7caaf30dbc218371jacobsis_keyword(char *k)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs /* [a-z][a-z0-9._-]* */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (*k < 'a' && *k > 'z')
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (0);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs while (*(++k) != '\0')
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (*k < 'a' && *k > 'z' && *k < '0' && *k > '9' &&
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *k != '.' && *k != '_' && *k != '-')
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (0);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobsint8_t
355b4669e025ff377602b6fc7caaf30dbc218371jacobsname_to_ipp_type(char *name)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int i;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (name != NULL)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs for (i = 0; attr_list[i].name != NULL; i++)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (strcasecmp(attr_list[i].name, name) == 0)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (attr_list[i].ipp_type);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (0);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}