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