1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#ifndef foomatic_h
#define foomatic_h
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include "config.h"
#include <stddef.h>
#include <stdio.h>
#include <time.h>
/* This is the location of the debug logfile (and also the copy of the
* processed PostScript data) in case you have enabled debugging above.
* The logfile will get the extension ".log", the PostScript data ".ps".
*/
#ifndef LOG_FILE
#define LOG_FILE "/tmp/foomatic-rip"
#endif
/* Constants used by this filter
*
* Error codes, as some spooles behave different depending on the reason why
* the RIP failed, we return an error code. As I have only found a table of
* error codes for the PPR spooler. If our spooler is really PPR, these
* definitions get overwritten by the ones of the PPR version currently in use.
*/
#define EXIT_PRINTED 0 /* file was printed normally */
#define EXIT_PRNERR 1 /* printer error occured */
#define EXIT_PRNERR_NORETRY 2 /* printer error with no hope of retry */
#define EXIT_JOBERR 3 /* job is defective */
#define EXIT_SIGNAL 4 /* terminated after catching signal */
#define EXIT_ENGAGED 5 /* printer is otherwise engaged (connection refused) */
#define EXIT_STARVED = 6; /* starved for system resources */
#define EXIT_PRNERR_NORETRY_ACCESS_DENIED 7 /* bad password? bad port permissions? */
#define EXIT_PRNERR_NOT_RESPONDING 8 /* just doesn't answer at all (turned off?) */
#define EXIT_PRNERR_NORETRY_BAD_SETTINGS 9 /* interface settings are invalid */
#define EXIT_PRNERR_NO_SUCH_ADDRESS 10 /* address lookup failed, may be transient */
#define EXIT_PRNERR_NORETRY_NO_SUCH_ADDRESS 11 /* address lookup failed, not transient */
#define EXIT_INCAPABLE 50 /* printer wants (lacks) features or resources */
/* Supported spoolers are currently:
*
* cups - CUPS - Common Unix Printing System
* solaris - Solaris LP (possibly some other SysV LP services as well)
* lpd - LPD - Line Printer Daemon
* lprng - LPRng - LPR - New Generation
* gnulpr - GNUlpr, an enhanced LPD (development stopped)
* ppr - PPR (foomatic-rip runs as a PPR RIP)
* ppr_int - PPR (foomatic-rip runs as an interface)
* cps - CPS - Coherent Printing System
* pdq - PDQ - Print, Don't Queue (development stopped)
* direct - Direct, spooler-less printing
*/
#define SPOOLER_CUPS 1
#define SPOOLER_SOLARIS 2
#define SPOOLER_LPD 3
#define SPOOLER_LPRNG 4
#define SPOOLER_GNULPR 5
#define SPOOLER_PPR 6
#define SPOOLER_PPR_INT 7
#define SPOOLER_CPS 8
#define SPOOLER_PDQ 9
#define SPOOLER_DIRECT 10
/* The spooler from which foomatic-rip was called. set in main() */
extern int spooler;
#define PATH_MAX 1024
typedef struct {
char printer[256];
char id[128];
char user[128];
char host[128];
char title[128];
char ppdfile[256];
char copies[128];
int rbinumcopies;
struct dstr *optstr;
time_t time;
} jobparams_t;
jobparams_t * get_current_job();
void _log(const char* msg, ...);
int redirect_log_to_stderr();
void rip_die(int status, const char *msg, ...);
const char * get_modern_shell();
FILE * open_postpipe();
extern struct dstr *currentcmd;
extern struct dstr *jclappend;
extern char **jclprepend;
extern int jobhasjcl;
extern const char *accounting_prolog;
extern char fileconverter[PATH_MAX];
extern char cupsfilterpath[PATH_MAX];
extern int debug;
extern int do_docs;
extern char printer_model[];
extern int dontparse;
extern int pdfconvertedtops;
extern char gspath[PATH_MAX];
extern char echopath[PATH_MAX];
#endif
|