1/***************************************************************************
2 * LPRng - An Extended Print Spooler System
3 *
4 * Copyright 1988-2003, Patrick Powell, San Diego, CA
5 *     papowell@lprng.com
6 * See LICENSE for conditions of use.
7 * $Id: getqueue.h,v 1.1.1.1 2008/10/15 03:28:27 james26_jang Exp $
8 ***************************************************************************/
9
10
11
12#ifndef _GETQUEUE_H
13#define _GETQUEUE_H
14
15EXTERN char *CTRL_A_str DEFINE( = "\001" );
16
17/* SSL */
18EXTERN const char * ACTION				DEFINE( = "action" );
19EXTERN const char * ACCNTNAME			DEFINE( = "R" );
20EXTERN const char * ACTIVE_TIME			DEFINE( = "active_time" );
21EXTERN const char * ADDR				DEFINE( = "addr" );
22EXTERN const char * ALL					DEFINE( = "all" );
23EXTERN const char * ATTEMPT				DEFINE( = "attempt" );
24EXTERN const char * AUTH				DEFINE( = "auth" );
25EXTERN const char * AUTHCA				DEFINE( = "authca" );
26EXTERN const char * AUTHFROM			DEFINE( = "authfrom" );
27EXTERN const char * AUTHTYPE			DEFINE( = "authtype" );
28EXTERN const char * AUTHUSER			DEFINE( = "authuser" );
29EXTERN const char * AUTOHOLD			DEFINE( = "autohold" );
30EXTERN const char * BNRNAME				DEFINE( = "L" );
31EXTERN const char * CALL				DEFINE( = "call" );
32EXTERN const char * CF_OUT_IMAGE		DEFINE( = "cf_out_image" );
33EXTERN const char * CHANGE				DEFINE( = "change" );
34EXTERN const char * CLASS				DEFINE( = "C" );
35EXTERN const char * CLIENT				DEFINE( = "client" );
36EXTERN const char * CMD					DEFINE( = "cmd" );
37EXTERN const char * COPIES				DEFINE( = "copies" );
38EXTERN const char * COPY_DONE			DEFINE( = "copy_done" );
39EXTERN const char * DATAFILES			DEFINE( = "datafiles" );
40EXTERN const char * DATAFILE_COUNT		DEFINE( = "datafile_count" );
41EXTERN const char * DATE				DEFINE( = "D" );
42EXTERN const char * DEBUG				DEFINE( = "debug" );
43EXTERN const char * DEBUGFV				DEFINE( = "debugfv" );
44EXTERN const char * DEST				DEFINE( = "dest" );
45EXTERN const char * DESTINATION			DEFINE( = "destination" );
46EXTERN const char * DESTINATIONS		DEFINE( = "destinations" );
47EXTERN const char * DF_NAME				DEFINE( = "df_name" );
48EXTERN const char * DMALLOC_OPTIONS		DEFINE( = "DMALLOC_OPTIONS" );
49EXTERN const char * DMALLOC_OUTFILE		DEFINE( = "dmalloc_outfile" );
50EXTERN const char * DONE_TIME			DEFINE( = "done_time" );
51EXTERN const char * DONE_REMOVE			DEFINE( = "done_remove" );
52EXTERN const char * DUMP				DEFINE( = "dump" );
53EXTERN const char * END					DEFINE( = "end" );
54EXTERN const char * ERROR				DEFINE( = "error" );
55EXTERN const char * ERROR_TIME			DEFINE( = "error_time" );
56EXTERN const char * ESC_ID				DEFINE( = "esc_id" );
57EXTERN const char * FILENAMES			DEFINE( = "filenames" );
58EXTERN const char * FILE_HOSTNAME		DEFINE( = "file_hostname" );
59EXTERN const char * FILTER				DEFINE( = "filter" );
60EXTERN const char * FIRST_SCAN			DEFINE( = "first_scan" );
61EXTERN const char * FORMAT				DEFINE( = "format" );
62EXTERN const char * FORMAT_ERROR		DEFINE( = "format_error" );
63EXTERN const char * FORWARDING			DEFINE( = "forwarding" );
64EXTERN const char * FORWARD_ID			DEFINE( = "forward_id" );
65EXTERN const char * FROM				DEFINE( = "from" );
66EXTERN const char * FROMHOST			DEFINE( = "H" );
67EXTERN const char * HELD				DEFINE( = "held" );
68EXTERN const char * HF_IMAGE			DEFINE( = "hf_image" );
69EXTERN const char * HF_NAME				DEFINE( = "hf_name" );
70EXTERN const char * HOLD_ALL			DEFINE( = "hold_all" );
71EXTERN const char * HOLD_CLASS			DEFINE( = "hold_class" );
72EXTERN const char * HOLD_TIME			DEFINE( = "hold_time" );
73EXTERN const char * HOST				DEFINE( = "host" );
74EXTERN const char * HPFORMAT			DEFINE( = "hpformat" );
75EXTERN const char * ID					DEFINE( = "id" );
76EXTERN const char * IDENTIFIER			DEFINE( = "A" );
77EXTERN const char * INCOMING_TIME		DEFINE( = "incoming_time" );
78EXTERN const char * INPUT				DEFINE( = "input" );
79EXTERN const char * JOBNAME				DEFINE( = "J" );
80EXTERN const char * JOBSEQ				DEFINE( = "jobseq" );
81EXTERN const char * JOBSIZE				DEFINE( = "jobsize" );
82EXTERN const char * JOB_TIME			DEFINE( = "job_time" );
83EXTERN const char * JOB_TIME_USEC		DEFINE( = "job_time_usec" );
84EXTERN const char * KEYID				DEFINE( = "keyid" );
85EXTERN const char * LOCALHOST			DEFINE( = "localhost" );
86EXTERN const char * LOG					DEFINE( = "log" );
87EXTERN const char * LOGGER				DEFINE( = "logger" );
88EXTERN const char * LOGNAME				DEFINE( = "P" );
89EXTERN const char * LP					DEFINE( = "lp" );
90EXTERN const char * LPC					DEFINE( = "lpc" );
91EXTERN const char * LPD					DEFINE( = "lpd" );
92EXTERN const char * LPD_CONF			DEFINE( = "LPD_CONF" );
93EXTERN const char * LPD_PORT			DEFINE( = "lpd_port" );
94EXTERN const char * LPD_REQUEST			DEFINE( = "lpd_request" );
95EXTERN const char * MAILNAME			DEFINE( = "M" );
96EXTERN const char * MAIL_FD				DEFINE( = "mail_fd" );
97EXTERN const char * MOVE				DEFINE( = "move" );
98EXTERN const char * MOVE_DEST			DEFINE( = "move_dest" );
99EXTERN const char * MSG					DEFINE( = "msg" );
100EXTERN const char * NAME				DEFINE( = "name" );
101EXTERN const char * NEW_DEST			DEFINE( = "new_dest" );
102EXTERN const char * NONEP				DEFINE( = "none" );
103EXTERN const char * NUMBER				DEFINE( = "number" );
104EXTERN const char * OPENNAME			DEFINE( = "openname" );
105EXTERN const char * ORIG_IDENTIFIER		DEFINE( = "orig_identifier" );
106EXTERN const char * PGP					DEFINE( = "pgp" );
107EXTERN const char * PORT				DEFINE( = "port" );
108EXTERN const char * PRINTABLE			DEFINE( = "printable" );
109EXTERN const char * PRINTER				DEFINE( = "printer" );
110EXTERN const char * PRINTING_ABORTED	DEFINE( = "printing_aborted" );
111EXTERN const char * PRINTING_DISABLED	DEFINE( = "printing_disabled" );
112EXTERN const char * PRIORITY			DEFINE( = "priority" );
113EXTERN const char * PRIORITY_TIME		DEFINE( = "priority_time" );
114EXTERN const char * PROCESS				DEFINE( = "process" );
115EXTERN const char * PRSTATUS			DEFINE( = "prstatus" );
116EXTERN const char * QUEUE				DEFINE( = "queue" );
117EXTERN const char * QUEUENAME			DEFINE( = "Q" );
118EXTERN const char * QUEUE_CONTROL_FILE	DEFINE( = "queue_control_file" );
119EXTERN const char * QUEUE_STATUS_FILE	DEFINE( = "queue_status_file" );
120EXTERN const char * REDIRECT			DEFINE( = "redirect" );
121EXTERN const char * REMOTEHOST			DEFINE( = "remotehost" );
122EXTERN const char * REMOTEPORT			DEFINE( = "remoteport" );
123EXTERN const char * REMOTEUSER			DEFINE( = "remoteuser" );
124EXTERN const char * REMOVE_TIME			DEFINE( = "remove_time" );
125EXTERN const char * SD					DEFINE( = "sd" );
126EXTERN const char * SEQUENCE			DEFINE( = "sequence" );
127EXTERN const char * SERVER				DEFINE( = "server" );
128EXTERN const char * SERVER_ORDER		DEFINE( = "server_order" );
129EXTERN const char * SERVICE				DEFINE( = "service" );
130EXTERN const char * SIZE				DEFINE( = "size" );
131EXTERN const char * SORT_KEY			DEFINE( = "sort_key" );
132EXTERN const char * SPOOLDIR			DEFINE( = "spooldir" );
133EXTERN const char * SPOOLING_DISABLED 	DEFINE( = "spooling_disabled" );
134EXTERN const char * START_TIME			DEFINE( = "start_time" );
135EXTERN const char * STATE				DEFINE( = "state" );
136EXTERN const char * STATUS_CHANGE		DEFINE( = "status_change" );
137EXTERN const char * STATUS_FD			DEFINE( = "status_fd" );
138EXTERN const char * SUBSERVER			DEFINE( = "subserver" );
139EXTERN const char * TRACE				DEFINE( = "trace" );
140EXTERN const char * TRANSFERNAME		DEFINE( = "transfername" );
141EXTERN const char * OTRANSFERNAME		DEFINE( = "otransfername" );
142EXTERN const char * UNIXSOCKET			DEFINE( = "unixsocket" );
143EXTERN const char * UPDATE				DEFINE( = "update" );
144EXTERN const char * UPDATE_TIME			DEFINE( = "update_time" );
145EXTERN const char * USER				DEFINE( = "user" );
146EXTERN const char * VALUE				DEFINE( = "value" );
147
148/* PROTOTYPES */
149int Scan_queue( struct line_list *spool_control,
150	struct line_list *sort_order, int *pprintable, int *pheld, int *pmove,
151		int only_queue_process, int *perr, int *pdone,
152		const char *remove_prefix, const char *remove_suffix );
153char *Get_fd_image( int fd, off_t maxsize );
154char *Get_file_image( const char *file, off_t maxsize );
155int Get_fd_image_and_split( int fd,
156	int maxsize, int clean,
157	struct line_list *l, const char *sep,
158	int sort, const char *keysep, int uniq, int trim, int nocomments,
159	char **return_image );
160int Get_file_image_and_split( const char *file,
161	int maxsize, int clean,
162	struct line_list *l, const char *sep,
163	int sort, const char *keysep, int uniq, int trim, int nocomments,
164	char **return_image );
165void Check_for_hold( struct job *job, struct line_list *spool_control );
166void Setup_job( struct job *job, struct line_list *spool_control,
167	const char *cf_name, const char *hf_name, int check_for_existence );
168int Get_hold_class( struct line_list *info, struct line_list *sq );
169void Append_Z_value( struct job *job, char *s );
170int Setup_cf_info( struct job *job, int check_for_existence );
171char *Make_hf_image( struct job *job );
172int Set_hold_file( struct job *job, struct line_list *perm_check, int fd );
173void Get_hold_file( struct job *job, char *hf_name );
174void Get_spool_control( const char *file, struct line_list *info );
175void Set_spool_control( struct line_list *perm_check, const char *file,
176	struct line_list *info );
177void intval( const char *key, struct line_list *list, struct job *job );
178void revintval( const char *key, struct line_list *list, struct job *job );
179void strzval( const char *key, struct line_list *list, struct job *job );
180void strnzval( const char *key, struct line_list *list, struct job *job );
181void strval( const char *key, struct line_list *list, struct job *job,
182	int reverse );
183void Make_sort_key( struct job *job );
184int Setup_printer( char *prname, char *error, int errlen, int subserver );
185int Read_pid( int fd, char *str, int len );
186int Write_pid( int fd, int pid, char *str );
187int Patselect( struct line_list *token, struct line_list *cf, int starting );
188int Check_format( int type, const char *name, struct job *job );
189char *Find_start(char *str, const char *key );
190char *Frwarding(struct line_list *l);
191int Pr_disabled(struct line_list *l);
192int Sp_disabled(struct line_list *l);
193int Pr_aborted(struct line_list *l);
194int Hld_all(struct line_list *l);
195char *Clsses(struct line_list *l);
196char *Cntrol_debug(struct line_list *l);
197char *Srver_order(struct line_list *l);
198void Init_job( struct job *job );
199void Free_job( struct job *job );
200void Copy_job( struct job *dest, struct job *src );
201char *Fix_job_number( struct job *job, int n );
202char *Make_identifier( struct job *job );
203void Dump_job( char *title, struct job *job );
204void Job_printable( struct job *job, struct line_list *spool_control,
205	int *pprintable, int *pheld, int *pmove, int *perr, int *pdone );
206int Server_active( char *file );
207void Update_destination( struct job *job );
208int Get_destination( struct job *job, int n );
209int Get_destination_by_name( struct job *job, char *name );
210int Trim_status_file( int status_fd, char *file, int max, int min );
211char *Fix_datafile_info( struct job *job, char *number, char *suffix,
212	char *xlate_format );
213int ordercomp(  const void *left, const void *right, const void *orderp);
214void Fix_control( struct job *job, char *filter, char *xlate_format );
215int Create_control( struct job *job, char *error, int errlen,
216	char *xlate_format );
217void Init_buf(char **buf, int *max, int *len);
218void Put_buf_len( const char *s, int cnt, char **buf, int *max, int *len );
219void Put_buf_str( const char *s, char **buf, int *max, int *len );
220void Free_buf(char **buf, int *max, int *len);
221
222#endif
223