summaryrefslogtreecommitdiff
path: root/usr/src/lib/print/libprint/common/job.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/print/libprint/common/job.h')
-rw-r--r--usr/src/lib/print/libprint/common/job.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/usr/src/lib/print/libprint/common/job.h b/usr/src/lib/print/libprint/common/job.h
new file mode 100644
index 0000000000..932d993a16
--- /dev/null
+++ b/usr/src/lib/print/libprint/common/job.h
@@ -0,0 +1,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 */