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