/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (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 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" /*LINTLIBRARY*/ #include #include #include #include papi_status_t addLPString(papi_attribute_t ***list, int flags, char *name, char *value) { papi_status_t result = PAPI_BAD_ARGUMENT; if ((list != NULL) && (name != NULL) && (value != NULL) && (value[0] != NULL)) result = papiAttributeListAddString(list, flags, name, value); return (result); } papi_status_t addLPStrings(papi_attribute_t ***list, int flags, char *name, char **values) { papi_status_t result = PAPI_OK; int i, flgs = flags; if ((list == NULL) || (name == NULL) || (values == NULL)) result = PAPI_BAD_ARGUMENT; for (i = 0; ((result == PAPI_OK) && (values[i] != NULL)); i++, flgs = PAPI_ATTR_APPEND) result = papiAttributeListAddString(list, flgs, name, values[i]); return (result); } char * printer_name_from_uri_id(const char *uri, int32_t id) { REQUEST *request = NULL; char *result = ""; if (uri != NULL) { if ((result = strrchr(uri, '/')) != NULL) { result += 1; } else result = (char *)uri; if ((strcmp(result, "jobs") == 0) || (strcmp(result, "any") == 0) || (strcmp(result, "all") == 0)) result = ""; } if ((result[0] == NULL) && (id != -1)) { char path[32]; snprintf(path, sizeof (path), "%d-0", id); if ((request = getrequest(path)) != NULL) result = request->destination; } result = strdup(result); if (request != NULL) freerequest(request); return (result); } /* * LP content type <-> MIME type conversion table. (order dependent) */ static struct { char *mime_type; char *lp_type; } type_map[] = { { "plain/text", "simple" }, { "application/octet-stream", "raw" }, { "application/octet-stream", "any" }, { "application/postscript", "postscript" }, { "application/postscript", "ps" }, { "application/x-cif", "cif" }, { "application/x-dvi", "dvi" }, { "application/x-plot", "plot" }, { "application/x-ditroff", "troff" }, { "application/x-troff", "otroff" }, { "application/x-pr", "pr" }, { "application/x-fortran", "fortran" }, { "application/x-raster", "raster" }, { NULL, NULL} }; char * mime_type_to_lp_type(char *mime_type) { int i; if (mime_type == NULL) return ("simple"); for (i = 0; type_map[i].mime_type != NULL; i++) if (strcasecmp(type_map[i].mime_type, mime_type) == 0) return (type_map[i].lp_type); return (mime_type); } char * lp_type_to_mime_type(char *lp_type) { int i; if (lp_type == NULL) return ("plain/text"); for (i = 0; type_map[i].lp_type != NULL; i++) if (strcasecmp(type_map[i].lp_type, lp_type) == 0) return (type_map[i].mime_type); return (lp_type); }