Main Page | Data Structures | File List | Globals

include/global_defines.h

00001 /*
00002 ** mouse:~ppr/src/include/global_defines.h
00003 ** Copyright 1995--2003, Trinity College Computing Center.
00004 ** Written by David Chappell.
00005 **
00006 ** Redistribution and use in source and binary forms, with or without
00007 ** modification, are permitted provided that the following conditions are met:
00008 **
00009 ** * Redistributions of source code must retain the above copyright notice,
00010 ** this list of conditions and the following disclaimer.
00011 **
00012 ** * Redistributions in binary form must reproduce the above copyright
00013 ** notice, this list of conditions and the following disclaimer in the
00014 ** documentation and/or other materials provided with the distribution.
00015 **
00016 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00019 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
00020 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00021 ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00022 ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00023 ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00024 ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00025 ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00026 ** POSSIBILITY OF SUCH DAMAGE.
00027 **
00028 ** The PPR project was begun 28 December 1992.
00029 ** This file was last modified 11 February 2004.
00030 */
00031 
00032 /*
00033 ** There are many things in this file you may want to change.  This file
00034 ** should be the first include file.  It is the header file for the whole
00035 ** project.
00036 */
00037 
00038 #ifndef _INC_BEFORE_SYSTEM
00039 #warning Failed to include "before_system.h"
00040 #include "before_system.h"
00041 #endif
00042 
00043 #include <stdio.h>
00044 #include <sys/types.h>
00045 #include <sys/stat.h>
00046 #include <stdarg.h>
00047 
00048 /*=================================================================
00049 ** Things that are a matter of personal preference:
00050 =================================================================*/
00051 
00052 /*
00053 ** Define this if you wish a user's printing privledges to be
00054 ** revoked only if he tries to print during business hours when
00055 ** he doesn't have any money left in his account.  If this is
00056 ** not defined, his privledges are revoked even if he runs out of
00057 ** money in the middle of the night.
00058 **
00059 ** If you change this you must recompile libpprdb and pprdrv.
00060 */
00061 /* #define BUSINESS_HOURS 1 */
00062 
00063 /*
00064 ** These are used by lprsrv and papsrv.  They will not accept new
00065 ** jobs unless at least this many inodes and blocks are free
00066 ** in TEMPDIR and VAR_SPOOL_PPR.
00067 **
00068 ** If you change these you must recompile papsrv and lprsrv.
00069 */
00070 #define MIN_INODES 100
00071 #define MIN_BLOCKS 2048
00072 
00073 /*
00074 ** Define if we should include code to make GNU-C happy.
00075 ** This generaly means initializing a variable to zero
00076 ** in order to supress incorrect warnings about possible
00077 ** use of an uninitialized variable.
00078 */
00079 #define GNUC_HAPPY 1
00080 
00081 /*
00082 ** Allow Apple's non-standard quote mark quoting.  (Apple LaserWriter
00083 ** drivers may enclose a procset name in ASCII double quotes with the
00084 ** PostScript () quotes inside.  Don't change this, you won't like
00085 ** the results.
00086 */
00087 #define APPLE_QUOTE 1
00088 
00089 /*
00090 ** Define this if you have an AppleTalk printer which gives
00091 ** status messages with spaces missing after colons or
00092 ** line feed characters appended.  Just leave this defined.
00093 */
00094 #define DESKJET_STATUS_FIX 1
00095 
00096 /*
00097 ** This is the prefix that PPR uses for any comments
00098 ** which have been created especially for it.  I do
00099 ** not recommend changing this.  The value below stands
00100 ** for "Trinity College, Hartford, Connecticut".  See
00101 ** RBIIpp 696-698 for furthur information on this topic.
00102 */
00103 #define PPR_DSC_PREFIX "TCHCT"
00104 
00105 /*
00106 ** Include obsolete stuff?
00107 */
00108 #define CRUFT_AUTH 1
00109 
00110 /*======================================================================
00111 ** These are the default values for the PPR user and group names.  If
00112 ** you want to change these, don't do it here, it won't work.  You must
00113 ** change them in include/global.mk (which is created when you run
00114 ** Configure).
00115 =======================================================================*/
00116 #ifndef USER_PPR
00117 #define USER_PPR "ppr"
00118 #endif
00119 #ifndef GROUP_PPR
00120 #define GROUP_PPR "ppr"
00121 #endif
00122 #ifndef USER_PPRWWW
00123 #define USER_PPRWWW "pprwww"
00124 #endif
00125 
00126 /*======================================================================
00127 ** This section defines various directory and file names.
00128 ** You shouldn't want to change anything in this section.
00129 ** If you do you may have to change some makefiles too.
00130 ======================================================================*/
00131 
00132 /*
00133 ** These are the basic PPR directories in which its files and
00134 ** other directories are placed.  Notice that these are defined
00135 ** only if they have not been defined already.  Often, Configure
00136 ** will have generated an include/global.mk which defines these
00137 ** values first.
00138 */
00139 #ifndef CONFDIR
00140 #define CONFDIR "/etc/ppr"                              /* configuration files */
00141 #endif
00142 #ifndef HOMEDIR
00143 #define HOMEDIR "/usr/lib/ppr"                  /* architechture dependent files */
00144 #endif
00145 #ifndef SHAREDIR
00146 #define SHAREDIR "/usr/share/ppr"               /* architechture independent files */
00147 #endif
00148 #ifndef VAR_SPOOL_PPR
00149 #define VAR_SPOOL_PPR "/var/spool/ppr"  /* work files */
00150 #endif
00151 #ifndef TEMPDIR
00152 #define TEMPDIR "/tmp"                                  /* short life temporary files */
00153 #endif
00154 #ifndef SYSBINDIR
00155 #define SYSBINDIR "/usr/bin"                    /* for standard system programs */
00156 #endif
00157 #ifndef XWINBINDIR
00158 #define XWINBINDIR "/usr/bin/X11"               /* for standard X-Windows programs */
00159 #endif
00160 
00161 /* Subdirectories */
00162 #define RUNDIR VAR_SPOOL_PPR"/run"
00163 #define VAR_PRINTERS VAR_SPOOL_PPR"/printers"
00164 
00165 /* The main PPR configuration file. */
00166 #define PPR_CONF CONFDIR"/ppr.conf"
00167 
00168 /* Various configuration files: */
00169 #define DBNAME CONFDIR"/charge_users.db"                                                /* users database file name */
00170 #define MEDIAFILE CONFDIR"/media.db"                                                    /* media definitions */
00171 #define NEWPRN_CONFIG CONFDIR"/newprn.conf"                                             /* new printer configuration lines */
00172 #define UPRINTCONF CONFDIR"/uprint.conf"                                                /* for libuprint.a */
00173 #define UPRINTREMOTECONF CONFDIR"/uprint-remote.conf"                   /* list of remote printers */
00174 
00175 /* Configuration files that aren't meant to be changed: */
00176 #define MFMODES SHAREDIR"/lib/mfmodes.conf"                                             /* MetaFont modes for various printers */
00177 #define FONTSUB SHAREDIR"/lib/fontsub.conf"                                             /* font substitution database */
00178 #define LW_MESSAGES_CONF SHAREDIR"/lib/lw-messages.conf"                /* LaserWriter errors file */
00179 #define PJL_MESSAGES_CONF SHAREDIR"/lib/pjl-messages.conf"              /* PJL USTATUS DEVICE errors file */
00180 #define EDITPSCONF HOMEDIR"/editps/editps.conf"                                 /* for ppr -H editps */
00181 #define CHARSETSCONF SHAREDIR"/lib/charsets.conf"                               /* map characters set to PostScript encodings */
00182 #define FONTSCONF SHAREDIR"/lib/fonts.conf"                                             /* list of fonts and the PostScript encodings they support */
00183 #define PAGESIZES_CONF SHAREDIR"/lib/pagesizes.conf"                    /* additional PostScript *PageSize names */
00184 #define PSERRORS_CONF SHAREDIR"/lib/pserrors.conf"                              /* additional PostScript error explainations */
00185 
00186 /* Various configuration directories: */
00187 #define PRCONF CONFDIR"/printers"                               /* printer configuration files */
00188 #define GRCONF CONFDIR"/groups"                                 /* group configuration files */
00189 #define ALIASCONF CONFDIR"/aliases"                             /* queue alias configuration files */
00190 #define MOUNTEDDIR CONFDIR"/mounted"                    /* directory for media mounted files */
00191 #define ACLDIR CONFDIR"/acl"                                    /* Access Control Lists */
00192 
00193 /* Special files used by the spooler: */
00194 #define NEXTIDFILE RUNDIR"/lastid_ppr"                  /* file with previous queue id number */
00195 #define FIFO_NAME VAR_SPOOL_PPR"/PIPE"                  /* name of pipe between ppr & pprd */
00196 #define PPRD_LOCKFILE RUNDIR"/pprd.pid"                 /* created and locked by pprd */
00197 
00198 /* Directories where the spooler and friends find components: */
00199 #define FILTDIR HOMEDIR"/filters"                               /* directory for input filter programs */
00200 #define INTDIR HOMEDIR"/interfaces"                             /* directory for interface programs */
00201 #define COMDIR HOMEDIR"/commentators"                   /* directory for commentator programs */
00202 #define RESPONDERDIR HOMEDIR"/responders"               /* responder programs */
00203 #define PPDDIR SHAREDIR"/PPDFiles"                              /* our PPD file library (must be absolute) */
00204 #define STATIC_CACHEDIR SHAREDIR"/cache"                /* pre-loaded cache files */
00205 
00206 /* Directories where the spooler writes stuff: */
00207 #define QUEUEDIR VAR_SPOOL_PPR"/queue"                  /* queue directory */
00208 #define DATADIR VAR_SPOOL_PPR"/jobs"                    /* job data directory */
00209 #define ALERTDIR VAR_PRINTERS"/alerts"                  /* directory for printer alert files */
00210 #define STATUSDIR VAR_PRINTERS"/status"                 /* directory for printer status files */
00211 #define LOGDIR VAR_SPOOL_PPR"/logs"                             /* directory for log files */
00212 #define CACHEDIR VAR_SPOOL_PPR"/cache"                  /* directory for automatically cached files */
00213 #define ADDRESS_CACHE VAR_PRINTERS"/addr_cache" /* directory for cache of printer addresses */
00214 #define FONT_INDEX VAR_SPOOL_PPR"/fontindex.db"
00215 #define PPD_INDEX VAR_SPOOL_PPR"/ppdindex.db"
00216 
00217 /* The spooler state file for GUI interface: */
00218 #define STATE_UPDATE_FILE RUNDIR"/state_update"
00219 #define STATE_UPDATE_MAXLINES 1000
00220 #define STATE_UPDATE_PPRDRV_FILE RUNDIR"/state_update_pprdrv"
00221 #define STATE_UPDATE_PPRDRV_MAXBYTES 30000
00222 
00223 /* If this file exists, it will be filled with a log of all jobs printed: */
00224 #define PRINTLOG_PATH LOGDIR"/printlog"
00225 
00226 /* Paths to invoke various PPR components: */
00227 #define PPRDRV_PATH HOMEDIR"/lib/pprdrv"
00228 #define PPAD_PATH HOMEDIR"/bin/ppad"
00229 #define PPOP_PATH HOMEDIR"/bin/ppop"
00230 #define PPR_PATH HOMEDIR"/bin/ppr"
00231 #define TBCP2BIN_PATH HOMEDIR"/lib/tbcp2bin"
00232 #define PPR2SAMBA_PATH HOMEDIR"/bin/ppr2samba"
00233 #define TAIL_STATUS_PATH HOMEDIR"/lib/tail_status"
00234 #define PPJOB_PATH HOMEDIR"/bin/ppjob"
00235 
00236 /*=====================================================================
00237 ** Some Practical Limits
00238 =====================================================================*/
00239 
00240 #define MAX_LINE 1024                                   /* maximum PostScript input line length (now pretty meaningless) */
00241 #define MAX_CONT 32                                             /* maximum segment represented by "%%+" */
00242 #define MAX_TOKENIZED 512                               /* longest line we may pass to tokenize() */
00243 #define MAX_TOKENS 20                                   /* limit on words per comment line */
00244 #define MAX_PPR_PATH 128                                /* space to reserve for building a file name */
00245 
00246 #define MAX_BINNAME 16                                  /* max chars in name of input bin */
00247 #define MAX_MEDIANAME 16                                /* max chars in media name */
00248 #define MAX_COLOURNAME 16                               /* max chars in colour name */
00249 #define MAX_TYPENAME 16                                 /* max chars media type name */
00250 
00251 #define MAX_DOCMEDIA 4                                  /* max media types per job */
00252 
00253 #define MAX_DESTNAME 16                                 /* max length of destination name */
00254 #define MAX_NODENAME 16                                 /* max length of node name */
00255 #define MAX_NODES 25                                    /* max number of nodes pprd can keep track of */
00256 #define MAX_PRINTERS 250                                /* no more than 250 printers */
00257 #define MAX_BINS 10                                             /* max bins per printer */
00258 #define MAX_GROUPS 150                                  /* no more than this may groups */
00259 #define MAX_GROUPSIZE 8                                 /* no more than 8 printers per group */
00260 #define MAX_ALIASES 150                                 /* no more than 150 queue aliases */
00261 
00262 #define MAX_STATUS_MESSAGE 80                   /* maximum length of last message from printer */
00263 
00264 #define MAX_PPD_NEST 10                                 /* maximum PPD file include levels */
00265 #define MAX_PPD_LINE 255                                /* maximum line length for PPD files */
00266 #define MAX_VMOPTIONS 50                                /* maximun number of *VMOption lines in PPD file */
00267 
00268 /*=========================================================================
00269 ** End of values which an end user might want to change.
00270 =========================================================================*/
00271 
00272 /*=======================================================================
00273 ** System Dependent Stuff
00274 ** The system differences are handled in a separate file which
00275 ** is included here.
00276 =======================================================================*/
00277 
00278 #define PASS2
00279 #include "sysdep.h"
00280 #undef PASS2
00281 
00282 /* A signed number of at least 16 bits: */
00283 #ifndef SHORT_INT
00284 typedef short int SHORT_INT;
00285 #endif
00286 
00287 /* Some of our code assumes that signal()
00288    sets a BSD style signal handler. */
00289 #undef signal
00290 #define signal(a,b) signal_interupting(a,b)
00291 
00292 
00293 /*=======================================================================
00294 ** Internationalization Macros
00295 **
00296 ** _()  returns the internationalized version of a string.
00297 ** N_() marks a string for internationalization but returns the
00298 **              uninternationalized version.
00299 ** X_() marks a string which could be internationalized but won't be
00300 **              because it is not worth it.
00301 =======================================================================*/
00302 
00303 #define LOCALEDIR SHAREDIR"/locale"
00304 #define PACKAGE "PPR"
00305 #define PACKAGE_INTERFACES "PPR"
00306 #define PACKAGE_PPRD "PPRD"
00307 #define PACKAGE_PPRDRV "PPRDRV"
00308 #define PACKAGE_PAPSRV "PAPSRV"
00309 #define PACKAGE_PAPD "PAPD"
00310 #define PACKAGE_PPRWWW "PPRWWW"
00311 
00312 #ifdef INTERNATIONAL
00313 #define _(String) gettext(String)
00314 #else
00315 #define gettext(String) (String)
00316 #define _(String) (String)
00317 #endif
00318 
00319 #define gettext_noop(String) (String)
00320 #define N_(String) (String)
00321 #define X_(String) (String)
00322 
00323 /*==================================================================
00324 ** Sundry constants which the end user should not change because
00325 ** they are not options or because changing their values will only
00326 ** lead to undesireable results.
00327 ==================================================================*/
00328 
00329 /*
00330 ** Define if we should include code to make GNU-C happy.
00331 ** This generaly means initializing a variable to zero
00332 ** in order to supress incorrect warnings about possibly
00333 ** uninitialized variables.
00334 */
00335 #ifdef __GNUC__
00336 #define GNUC_HAPPY 1
00337 #endif
00338 
00339 /*
00340 ** Allow Apple's non-standard quote mark quoting.  (Apple LaserWriter
00341 ** drivers may enclose a procset name in ASCII double quotes with the
00342 ** PostScript () quotes inside.
00343 */
00344 #define APPLE_QUOTE 1
00345 
00346 /*
00347 ** Characters which are not allowed in printer
00348 ** and group names:
00349 **
00350 ** The tilde is not allowed because at the head of the name it is a
00351 ** shell user name interpolation character and at the end it is an
00352 ** Emacs-style backup file.      A period is not allowed as the initial
00353 ** character because it would make for a hidden configuration file.
00354 */
00355 #define DEST_DISALLOWED "/\n\r\t \b~"
00356 #define DEST_DISALLOWED_LEADING ".-"
00357 
00358 /*
00359 ** Value which umask should be set to.
00360 ** The daemons and control programs set
00361 ** this soon after they begin to execute.
00362 */
00363 #define PPR_UMASK UNIX_022
00364 
00365 /*
00366 ** Pprd needs a slightly more relaxed umask so that it can communicate
00367 ** with ipp.
00368 */
00369 #define PPR_PPRD_UMASK UNIX_002
00370 
00371 /*
00372 ** This umask is used by the job submission program "ppr".
00373 */
00374 #define PPR_JOBS_UMASK S_IRWXO
00375 
00376 /*
00377 ** The umasks used when running interfaces and filters.  These are
00378 ** very restrictive so as to protect the privacy of temporary
00379 ** files.
00380 */
00381 #define PPR_INTERFACE_UMASK UNIX_077
00382 #define PPR_FILTER_UMASK UNIX_077
00383 
00384 /* Types of PostScript language extensions.      This is used by ppr and pprdrv. */
00385 #define EXTENSION_DPS 1
00386 #define EXTENSION_CMYK 2
00387 #define EXTENSION_Composite 4
00388 #define EXTENSION_FileSystem 8
00389 
00390 /*
00391 ** Valid banner and trailer options.
00392 */
00393 
00394 /* ppr submits the jobs with one of these */
00395 #define BANNER_DONTCARE 0
00396 #define BANNER_YESPLEASE 1
00397 #define BANNER_NOTHANKYOU 2
00398 
00399 /* the printer configuration specifies one of these */
00400 #define BANNER_FORBIDDEN 0
00401 #define BANNER_DISCOURAGED 1
00402 #define BANNER_ENCOURAGED 2
00403 #define BANNER_REQUIRED 3
00404 #define BANNER_INVALID 4                        /* used internally in ppad */
00405 
00406 /*
00407 ** Flags stored in the unix file permissions of a font in
00408 ** the resource cache.  Both pprdrv and ppr use these
00409 ** values.
00410 */
00411 #define FONT_TYPE_1 1                   /* Font has Type 1 components present */
00412 #define FONT_TYPE_3 2
00413 #define FONT_TYPE_42 4                  /* Font has Type 42 components present */
00414 #define FONT_MACTRUETYPE 8              /* Is a Macintosh TrueType font in PostScript form */
00415 #define FONT_TYPE_TTF 16                                /* Font is MS-Windows .ttf format file (file mode isn't really set) */
00416 
00417 /* File modes used to represent some of those above in the file system. */
00418 #define FONT_MODE_MACTRUETYPE S_IXUSR
00419 #define FONT_MODE_TYPE_1 S_IXGRP
00420 #define FONT_MODE_TYPE_42 S_IXOTH
00421 
00422 /*
00423 ** Valid TrueType rasterizer settings.  These values
00424 ** are not communicated between ppr and pprdrv, but
00425 ** both use them.
00426 */
00427 #define TT_UNKNOWN 0
00428 #define TT_NONE 1
00429 #define TT_ACCEPT68K 2
00430 #define TT_TYPE42 3
00431 
00432 /*
00433 ** Job Flags Bitmap Values
00434 */
00435 #define JOB_FLAG_SAVE 1                                 /* job should be kept after printed */
00436 #define JOB_FLAG_DO_NOTIFY 2                    /* please schedual notification */
00437 #define JOB_FLAG_NOTIFYING 4                    /* notify in progress */
00438 #define JOB_FLAG_QUESTION_UNANSWERED 8  /* there is a "Question:" not yet answered */
00439 #define JOB_FLAG_QUESTION_ASKING_NOW 16 /* are we asking it now? */
00440 
00441 /*=========================================================================
00442 ** Stuff in libppr.a
00443 =========================================================================*/
00444 
00445 /* Description of the protocol abilities of a printer. */
00446 struct PPD_PROTOCOLS
00447         {
00448         gu_boolean TBCP;
00449         gu_boolean PJL;
00450         } ;
00451 
00452 /* Possible Codes values: */
00453 #define CODES_DEFAULT -1
00454 #define CODES_UNKNOWN 0
00455 #define CODES_Clean7Bit 1
00456 #define CODES_Clean8Bit 2
00457 #define CODES_Binary 3
00458 #define CODES_TBCP 4
00459 
00460 /*
00461 ** This is for find_cached_resource().
00462 */
00463 enum RES_SEARCH
00464         {
00465         RES_SEARCH_CACHE,
00466         RES_SEARCH_FONTINDEX,
00467         RES_SEARCH_END
00468         };
00469 
00470 /* Function prototypes */
00471 char *datestamp(void);
00472 void tokenize(void);
00473 extern char *tokens[];
00474 extern int tokens_count;
00475 const char *quote(const char *);
00476 int destination_protected(const char *destnode, const char *destname);
00477 char *money(int amount_times_ten);
00478 char *local_jobid(const char *destname, int id, int subid, const char *homenode);
00479 char *remote_jobid(const char *destnode, const char *destname, int id, int subid, const char *homenode);
00480 const char *network_destspec(const char *destnode, const char *destname);
00481 int pagesize(const char keyword[], char **corrected_keyword, double *width, double *length, gu_boolean *envelope);
00482 const char *noalloc_find_cached_resource(const char res_type[], const char res_name[], double version, int revision, const enum RES_SEARCH search_list[], int *new_revision, int *features, enum RES_SEARCH *where_found);
00483 char *find_cached_resource(const char res_type[], const char res_name[], double version, int revision, const enum RES_SEARCH search_list[], int *new_revision, int *features, enum RES_SEARCH *where_found);
00484 int get_responder_width(const char *name);
00485 double convert_dimension(const char *string);
00486 void filter_options_error(int exlevel, struct OPTIONS_STATE *o, const char *format, ...)
00487 #ifdef __GNUC__
00488 __attribute__ ((noreturn))
00489 #endif
00490 ;
00491 const char *pap_strerror(int err);
00492 const char *nbp_strerror(int err);
00493 const char *pap_look_string(int n);
00494 char *ppr_get_command(const char *prompt, int machine_input);
00495 const char *ppr_get_nodename(void)
00496 #ifdef __GNUC__
00497 __attribute__ ((const))
00498 #endif
00499 ;
00500 
00501 char *ppd_find_file(const char ppdname[]);
00502 int ppd_open(const char name[], FILE *errors);
00503 char *ppd_readline(void);
00504 void *ppdobj_new(const char ppdname[]);
00505 void ppdobj_delete(void *p);
00506 char *ppdobj_readline(void *p);
00507 void *ppd_finish_quoted_string(void *obj, char *initial_segment);
00508 char *ppd_finish_QuotedValue(void *obj, char *initial_segment);
00509 int ppd_decode_QuotedValue(char *p);
00510 
00511 void set_ppr_env(void);
00512 void prune_env(void);
00513 gu_boolean is_unsafe_ps_name(const char name[]);
00514 gu_boolean is_pap_PrinterError(const unsigned char *status);
00515 gu_boolean user_acl_allows(const char user[], const char acl[]);
00516 void ppr_fnamef(char target[], const char pattern[], ...);
00517 gu_boolean interface_default_feedback(const char interface[], const struct PPD_PROTOCOLS *prot);
00518 int interface_default_jobbreak(const char interface[], const struct PPD_PROTOCOLS *prot);
00519 int interface_default_codes(const char interface[], const struct PPD_PROTOCOLS *prot);
00520 void valert(const char printername[], int dateflag, const char string[], va_list args);
00521 void alert(const char printername[], int dateflag, const char string[], ...);
00522 void tail_status(gu_boolean tail_pprd, gu_boolean tail_pprdrv, gu_boolean (*callback)(char *p, void *extra), int timeout, void *extra);
00523 const char *dest_ppdfile(const char destnode[], const char destname[]);
00524 
00525 /*
00526 ** The callers of certain libppr routines must provide an error()
00527 ** callback function so that certain non-fatal conditions may be
00528 ** noted in their log files.
00529 */
00530 void error(const char string[], ...)
00531 #ifdef __GNUC__
00532 __attribute__ ((format (printf, 1, 2)))
00533 #endif
00534 ;
00535 
00536 /* end of file */
00537 

Generated on Fri Feb 20 15:17:46 2004 for PPR Libraries by doxygen 1.3.5