summaryrefslogtreecommitdiff
path: root/usr/src/lib/print/libprint/common/job.h
blob: 932d993a16a1c59c45bd19cca6bd0bc8f5cfe521 (plain)
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef	_JOB_H
#define	_JOB_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#include <sys/va_list.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
 *	Sequence number space
 */
#define	JOB_ID_START		   0
#define	JOB_ID_END		   999

/*
 *	Job related files
 */
#define	SEQUENCE_FILE		".seq"  /* sequence numbers */
#define	TEMP_FILE_PREFIX	"tf"    /* printer:server */
#define	XFER_FILE_PREFIX	"xf"    /* printer:server */
#define	CONTROL_FILE_PREFIX	"cf"    /* job control data */
#define	DATA_FILE_PREFIX	"df"    /* job data file */

/*
 *	RFC-1179 Control File Primatives
 */
#define	CF_CLASS	'C'	 /* C(ClassName)\n - for banner page */
#define	CF_HOST		'H'	 /* H(Hostname)\n - host submitting job */
#define	CF_INDENT	'I'	 /* I(indent)\n - # of spaces for 'f' */
#define	CF_JOBNAME	'J'	 /* J(Jobname)\n - name of job for banner */
#define	CF_PRINT_BANNER	'L'	 /* L[User]\n - User name on burst page */
#define	CF_MAIL		'M'	 /* M(user)\n - User to mail when done */
#define	CF_SOURCE_NAME	'N'	 /* N(name)\n - source of data file */
#define	CF_USER		'P'	 /* P(name)\n - requesting user */
#define	CF_SYMLINK	'S'	 /* S(device) (inode)\n - foget it */
#define	CF_TITLE	'T'	 /* T(title)\n - for pr */
#define	CF_UNLINK	'U'	 /* U(file)\n - unlink file */
#define	CF_WIDTH	'W'	 /* W(width)\n - column width */
#define	CF_FONT_TROFF_R	'1'	 /* 1(file)\n - file with Times Roman font */
#define	CF_FONT_TROFF_I	'2'	 /* 2(file)\n - file with Times Italic font */
#define	CF_FONT_TROFF_B	'3'	 /* 3(file)\n - file with Times Bold font */
#define	CF_FONT_TROFF_S	'4'	 /* 4(file)\n - file with Times Special font */
#define	CF_PRINT_CIF	'c'	 /* c(file)\n - print/plot file as CIF data */
#define	CF_PRINT_DVI	'd'	 /* d(file)\n - print file as DVI data */
#define	CF_PRINT_ASCII	'f'	 /* f(file)\n - print file as ASCII */
#define	CF_PRINT_PLOT	'g'	 /* g(file)\n - print file as plot data */
#define	CF_KERBERIZED	'k'	 /* k...\n - for Kerberos */
#define	CF_PRINT_RAW	'l'	 /* l(file)\n - print file dammit */
#define	CF_PRINT_DROFF	'n'	 /* n(file)\n - print file as ditroff output */
#define	CF_PRINT_PS	'o'	 /* o(file)\n - print file as PostScript */
#define	CF_PRINT_PR	'p'	 /* p(file)\n - print file thru "pr" */
#define	CF_PRINT_FORT	'r'	 /* r(file)\n - print file as fortran */
#define	CF_PRINT_TROFF	't'	 /* n(file)\n - print file as troff output */
#define	CF_PRINT_RAS	'v'	 /* v(file)\n - print file as raster image */
#define	CF_PRINT_PLDM	'z'	 /* z...\n - for Palladium ??? */

/*
 *	Solaris 2.X LP - BSD protocol extensions
 */
#define	CF_SYSV_OPTION  'O'		/* for SVR4 LP '-o' option */
#define	CF_SYSV_FEATURE '5'		/* for SVR4 LP features */
#define	CF_SYSV_FORM		'f'	/* for SVR4 Forms */
#define	CF_SYSV_HANDLING	'H'	/* for SVR4 Handling */
#define	CF_SYSV_NOTIFICATION	'p'	/* for SVR4 Notification */
#define	CF_SYSV_PAGES		'P'	/* for SVR4 Pages */
#define	CF_SYSV_PRIORITY	'q'	/* for SVR4 Priority */
#define	CF_SYSV_CHARSET		'S'	/* for SVR4 Charset */
#define	CF_SYSV_TYPE		'T'	/* for SVR4 Type */
#define	CF_SYSV_MODE		'y'	/* for SVR4 Mode */


typedef struct _jobfile jobfile_t;
typedef struct _job job_t;

struct _jobfile {
	char	*jf_spl_path;	/* df file */
	char	*jf_src_path;	/* source file */
	char	*jf_name;	/* title/name */
	char	*jf_data;	/* ptr to mmapped file */
	long	jf_size;	/* size of data */
	char	jf_mmapped;	/* is this mmapped or malloced */
};

struct _job {
	int	job_id;
	char	*job_printer;
	char	*job_server;
	char	*job_user;
	char	*job_host;
	char	*job_spool_dir;
	jobfile_t *job_cf;
	char 	job_df_next;
	jobfile_t **job_df_list;
};


extern int	job_store(job_t *job);
extern void	job_free(job_t *job);
extern void	job_destroy(job_t *job);
extern job_t	*job_retrieve(char *xfer_file, char *spool);
extern job_t	**job_list_append(job_t **list, char *printer,
					char *server, char *spool);
extern int	vjob_match_attribute(char *attribute, __va_list ap);
extern int	vjob_cancel(job_t *job, __va_list ap);

#ifdef __cplusplus
}
#endif

#endif /* !_JOB_H */