/* * 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 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* LINTLIBRARY */ /* PROTOLIB1 */ #pragma ident "%Z%%M% %I% %E% SMI" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void **list_append(void **, void *); void **list_append_unique(void **, void *, int (*)(void *, void*)); void **list_concatenate(void **, void **); void * list_locate(void **, int (*)(void *, void *), void *); int list_iterate(void **, int (*)(void *, __va_list), ...); void *dynamic_function(const char *, const char *); struct ns_bsd_addr { char *server; /* server name */ char *printer; /* printer name or NULL */ char *extension; /* RFC-1179 conformance */ char *pname; /* Local printer name */ }; typedef struct ns_bsd_addr ns_bsd_addr_t; /* Key/Value pair structure */ struct ns_kvp { char *key; /* key */ char *value; /* value string */ }; typedef struct ns_kvp ns_kvp_t; /* Printer Object structure */ struct ns_printer { char *name; /* primary name of printer */ char **aliases; /* aliases for printer */ char *source; /* name service derived from */ ns_kvp_t **attributes; /* key/value pairs. */ }; typedef struct ns_printer ns_printer_t; /* functions to get/put printer objects */ ns_printer_t *ns_printer_create(char *, char **, char *, ns_kvp_t **); ns_printer_t *ns_printer_get_name(const char *, const char *); ns_printer_t **ns_printer_get_list(const char *); int ns_printer_put(const ns_printer_t *); void ns_printer_destroy(ns_printer_t *); /* functions to manipulate key/value pairs */ void *ns_get_value(const char *, const ns_printer_t *); char *ns_get_value_string(const char *, const ns_printer_t *); int ns_set_value(const char *, const void *, ns_printer_t *); int ns_set_value_from_string(const char *, const char *, ns_printer_t *); ns_kvp_t *ns_kvp_create(const char *, const char *); /* for BSD bindings only */ ns_bsd_addr_t *ns_bsd_addr_get_default(void); ns_bsd_addr_t *ns_bsd_addr_get_name(char *name); ns_bsd_addr_t **ns_bsd_addr_get_all(int); ns_bsd_addr_t **ns_bsd_addr_get_list(int); /* others */ ns_printer_t *posix_name(const char *); int ns_printer_match_name(ns_printer_t *, const char *); char *ns_printer_name_list(const ns_printer_t *); char *value_to_string(const char *, void *); void *string_to_value(const char *, char *); ns_printer_t *_cvt_pconf_entry_to_printer(char *, char *); char *_cvt_printer_to_pconf_entry(ns_printer_t *); ns_printer_t *_cvt_user_string_to_printer(char *, char *); char *_cvt_printer_to_user_string(ns_printer_t *); ns_printer_t *_file_get_name(const char *, const char *, ns_printer_t *(*)(char *, char *), char *); ns_printer_t **_file_get_list(const char *, ns_printer_t *(*)(char *, char *), char *); int _file_put_printer(const char *, const ns_printer_t *, ns_printer_t *(*)(char *, char *), char *, char *(*)(ns_printer_t *)); ns_printer_t *_nis_get_name(const char *, const char *, ns_printer_t *(*)(char *, char *), char *); ns_printer_t **_nis_get_list(const char *, ns_printer_t *(*)(char *, char *), char *); int _nis_put_printer(const char *, const ns_printer_t *, ns_printer_t *(*)(char *, char *), char *, char *(*)(ns_printer_t *));