llib-lprint revision 355b4669e025ff377602b6fc7caaf30dbc218371
70N/A/*
70N/A * CDDL HEADER START
729N/A *
729N/A * The contents of this file are subject to the terms of the
70N/A * Common Development and Distribution License (the "License").
70N/A * You may not use this file except in compliance with the License.
70N/A *
70N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
70N/A * or http://www.opensolaris.org/os/licensing.
70N/A * See the License for the specific language governing permissions
70N/A * and limitations under the License.
70N/A *
70N/A * When distributing Covered Code, include this CDDL HEADER in each
70N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
70N/A * If applicable, add the following below this CDDL HEADER, with the
70N/A * fields enclosed by brackets "[]" replaced with your own identifying
70N/A * information: Portions Copyright [yyyy] [name of copyright owner]
70N/A *
70N/A * CDDL HEADER END
70N/A */
70N/A/*
70N/A * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
70N/A * Use is subject to license terms.
70N/A */
70N/A
70N/A/* LINTLIBRARY */
70N/A/* PROTOLIB1 */
70N/A
70N/A#pragma ident "%Z%%M% %I% %E% SMI"
70N/A
835N/A#include <arpa/inet.h>
70N/A#include <dirent.h>
70N/A#include <dlfcn.h>
70N/A#include <errno.h>
98N/A#include <fcntl.h>
551N/A#include <libintl.h>
321N/A#include <netdb.h>
493N/A#include <netinet/in.h>
321N/A#include <pwd.h>
550N/A#include <rpc/rpc.h>
550N/A#include <rpcsvc/yp_prot.h>
213N/A#include <rpcsvc/ypclnt.h>
649N/A#include <signal.h>
304N/A#include <stdarg.h>
530N/A#include <stdio.h>
425N/A#include <stdlib.h>
425N/A#include <string.h>
325N/A#include <sys/mman.h>
493N/A#include <sys/socket.h>
536N/A#include <sys/stat.h>
456N/A#include <sys/systeminfo.h>
320N/A#include <sys/types.h>
332N/A#include <syslog.h>
501N/A#include <unistd.h>
231N/A
550N/Atypedef struct _jobfile jobfile_t;
523N/Atypedef struct _job job_t;
98N/A
347N/Astruct _jobfile {
532N/A char *jf_spl_path; /* df file */
525N/A char *jf_src_path; /* source file */
463N/A char *jf_name; /* title/name */
493N/A char *jf_data; /* ptr to mmapped file */
425N/A long jf_size; /* size of data */
493N/A char jf_mmapped; /* is this mmapped or malloced */
791N/A};
472N/A
324N/Astruct _job {
347N/A int job_id;
310N/A char *job_printer;
316N/A char *job_server;
474N/A char *job_user;
290N/A char *job_host;
332N/A char *job_spool_dir;
464N/A jobfile_t *job_cf;
332N/A char job_df_next;
509N/A jobfile_t **job_df_list;
835N/A};
835N/A
332N/Aint job_store(job_t *job);
210N/Avoid job_free(job_t *job);
493N/Avoid job_destroy(job_t *job);
792N/Ajob_t *job_create(char *printer, char *server, char *spool);
128N/Ajob_t *job_retrieve(char *xfer_file, char *spool);
414N/Ajob_t **job_list_append(job_t **list, char *printer, char *spool);
484N/A#ifndef SUNOS_4
326N/Aint vjob_match_attribute(char *attribute, __va_list ap);
493N/Aint vjob_cancel(job_t *job, __va_list ap);
335N/A#endif
493N/A
493N/A
729N/Avoid **list_append(void **, void *);
425N/Avoid **list_append_unique(void **, void *, int (*)(void *, void*));
370N/Avoid **list_concatenate(void **, void **);
70N/Avoid * list_locate(void **, int (*)(void *, void *), void *);
400N/Aint list_iterate(void **, int (*)(void *, __va_list), ...);
294N/A
435N/Achar * get_user_name(void);
800N/Aint check_client_spool(char *printer);
98N/Aint get_lock(char *name, int write_pid);
434N/Auid_t get_user_id(void);
505N/Achar *strcdup(char *, char);
277N/Achar *strndup(char *, int);
433N/Achar **strsplit(char *, char *);
546N/Aint file_size(char *);
356N/Aint copy_file(char *src, char *dst);
289N/Aint map_in_file(const char *name, char **buf);
326N/Aint write_buffer(char *name, char *buf, int len);
439N/Avoid start_daemon(int do_fork);
501N/Aint kill_process(char *file);
469N/Avoid *dynamic_function(const char *, const char *);
290N/A
542N/Aint net_open(char *host, int timeout);
424N/Aint net_close(int nd);
286N/Aint net_read(int nd, char *buf, int len);
90N/Aint net_write(int nd, char *buf, int len);
475N/Aint net_printf(int nd, char *fmt, ...);
295N/Achar *net_gets(char *buf, int size, int nd);
70N/Aint net_send_message(int nd, char *fmt, ...);
299N/Aint net_response(int nd);
262N/Aint net_send_file(int nd, char *name, char *data, int data_len,
455N/A int type);
539N/A
277N/A
332N/Astruct ns_bsd_addr {
332N/A char *server; /* server name */
493N/A char *printer; /* printer name or NULL */
70N/A char *extension; /* RFC-1179 conformance */
70N/A char *pname; /* Local printer name */
319N/A};
280N/Atypedef struct ns_bsd_addr ns_bsd_addr_t;
319N/A
70N/A/* Key/Value pair structure */
98N/Astruct ns_kvp {
98N/A char *key; /* key */
414N/A char *value; /* value string */
98N/A};
744N/Atypedef struct ns_kvp ns_kvp_t;
744N/A
763N/A/* Printer Object structure */
763N/Astruct ns_printer {
763N/A char *name; /* primary name of printer */
744N/A char **aliases; /* aliases for printer */
493N/A char *source; /* name service derived from */
493N/A ns_kvp_t **attributes; /* key/value pairs. */
70N/A};
493N/Atypedef struct ns_printer ns_printer_t;
493N/A
493N/A/* 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 *));