Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 289f19a5d3 |
@@ -1,88 +1,6 @@
|
||||
CHANGES.txt - 11/04/1999
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS v1.0.4
|
||||
|
||||
- Documentation updates.
|
||||
- Jobs would get stuck in the queue and wouldn't print
|
||||
until you enabled the queue.
|
||||
- The lp and lpr commands now catch SIGHUP and SIGINTR.
|
||||
- The lp and lpr commands now use sigaction or sigset
|
||||
when available.
|
||||
- CUPS library updates for WIN32/OS-2
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.3
|
||||
|
||||
- Documentation updates.
|
||||
- The lpq man page was missing.
|
||||
- The configure script was not properly detecting the
|
||||
image libraries.
|
||||
- The top-level makefile was calling "make" instead of
|
||||
"$(MAKE)".
|
||||
- PostScript filter fixes for number-up, OutputOrder,
|
||||
and %Trailer.
|
||||
- The imagetops filter didn't end the base-85 encoding
|
||||
properly if the image data was not a multiple of 4
|
||||
bytes in length.
|
||||
- The imagetoraster filter didn't generate good banded
|
||||
RGB or CMY data (was dividing the line width by 4
|
||||
instead of 3...)
|
||||
- The imagetoraster filter now records the bounding
|
||||
box of the image on the page.
|
||||
- The CUPS image library cache code wasn't working as
|
||||
designed; images larger than the maximum RIP cache
|
||||
would eventually thrash using the same cache tile.
|
||||
- The CUPS image library TIFF loading code didn't
|
||||
handle unknown resolution units properly; the fixed
|
||||
code uses a default resolution of 128 PPI.
|
||||
- cupsGetClasses() and cupsGetPrinters() did not free
|
||||
existing strings if they ran out of memory.
|
||||
- The scheduler logs incorrectly contained 3 digits for
|
||||
the timezone offset instead of 4.
|
||||
- The scheduler now does a lookup for the default user
|
||||
and group ID; the previous hardcoded values caused
|
||||
problems with the LPD backend.
|
||||
- The cancel-job operation now allows any user in the
|
||||
system group to cancel any job.
|
||||
- The cancel-job operation stopped the print queue if
|
||||
the job was being printed.
|
||||
- Now only stop printers if the backend fails. If the
|
||||
filter fails then the failure is noted in the
|
||||
error_log and printing continues with the next file in
|
||||
the queue.
|
||||
- Now log whether a filter fails because of a signal
|
||||
or because it returned a non-zero exit status.
|
||||
- The root user now always passes the system group test.
|
||||
- Printers with an interface script and remote printers
|
||||
and classes didn't have a printer-make-and-model
|
||||
attribute.
|
||||
- Added logging of lost/timed-out remote printers.
|
||||
- The HP-GL/2 filter was scaling the pen width twice.
|
||||
- Updated the HP-GL/2 filter to use a single SP (Set
|
||||
Pen) procedure. This makes the output smaller and is
|
||||
more appropriate since the filter keeps track of the
|
||||
pen states already.
|
||||
- The scheduler didn't handle passwords with spaces.
|
||||
- The IPP backend now does multiple copies and retries
|
||||
if the destination server requires it (e.g. HP
|
||||
JetDirect.)
|
||||
- The disable command didn't implement the "-c" option
|
||||
(cancel all jobs.)
|
||||
- Changed the CMYK generation function for the image file
|
||||
and PostScript RIPs.
|
||||
- The lp command didn't support the "-h" option as
|
||||
documented.
|
||||
- The AppSocket, IPP, and LPD backends now retry on all
|
||||
network errors. This should prevent stopped queues
|
||||
caused by a printer being disconnected from the
|
||||
network or powered off.
|
||||
- The scheduler now restarts a job if the corresponding
|
||||
printer is modified.
|
||||
- The image RIPs now rotate the image if needed to fit
|
||||
on the page.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.2
|
||||
|
||||
- The HP-GL/2 filter didn't always scale the output
|
||||
|
||||
+8
-24
@@ -38,7 +38,7 @@ DIRS = cups backend berkeley cgi-bin filter man pstoraster \
|
||||
all:
|
||||
for dir in $(DIRS); do\
|
||||
echo Making all in $$dir... ;\
|
||||
(cd $$dir; $(MAKE));\
|
||||
(cd $$dir; make);\
|
||||
done
|
||||
|
||||
#
|
||||
@@ -48,7 +48,7 @@ all:
|
||||
clean:
|
||||
for dir in $(DIRS); do\
|
||||
echo Cleaning in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) clean);\
|
||||
(cd $$dir; make clean);\
|
||||
done
|
||||
|
||||
#
|
||||
@@ -58,34 +58,18 @@ clean:
|
||||
install:
|
||||
for dir in $(DIRS); do\
|
||||
echo Installing in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) install);\
|
||||
(cd $$dir; make install);\
|
||||
done
|
||||
echo Installing in conf...
|
||||
(cd conf; $(MAKE) install)
|
||||
(cd conf; make install)
|
||||
echo Installing in data...
|
||||
(cd data; $(MAKE) install)
|
||||
(cd data; make install)
|
||||
echo Installing in doc...
|
||||
(cd doc; $(MAKE) install)
|
||||
(cd doc; make install)
|
||||
echo Installing in fonts...
|
||||
(cd fonts; $(MAKE) install)
|
||||
(cd fonts; make install)
|
||||
echo Installing in ppd...
|
||||
(cd ppd; $(MAKE) install)
|
||||
|
||||
#
|
||||
# Make a software distribution...
|
||||
#
|
||||
|
||||
epm:
|
||||
epm -v cups
|
||||
|
||||
rpm:
|
||||
epm -v -f rpm cups
|
||||
|
||||
deb:
|
||||
epm -v -f deb cups
|
||||
|
||||
tardist:
|
||||
epm -v -f tardist cups
|
||||
(cd ppd; make install)
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
README - CUPS v1.0.4 - 12/30/1999
|
||||
README - CUPS v1.0.2 - 11/04/1999
|
||||
---------------------------------
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
+242
-458
@@ -68,19 +68,16 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
char password[255], /* Password info */
|
||||
uri[HTTP_MAX_URI];/* Updated URI without user/pass */
|
||||
http_status_t status; /* Status of HTTP job */
|
||||
ipp_status_t ipp_status; /* Status of IPP request */
|
||||
FILE *fp; /* File to print */
|
||||
http_t *http; /* HTTP connection */
|
||||
ipp_t *request, /* IPP request */
|
||||
*response; /* IPP response */
|
||||
ipp_attribute_t *job_id; /* job-id attribute */
|
||||
ipp_attribute_t *copies_sup; /* copies-supported attribute */
|
||||
cups_lang_t *language; /* Default language */
|
||||
struct stat fileinfo; /* File statistics */
|
||||
size_t nbytes, /* Number of bytes written */
|
||||
tbytes; /* Total bytes written */
|
||||
char buffer[8192]; /* Output buffer */
|
||||
int copies; /* Number of copies remaining */
|
||||
|
||||
|
||||
if (argc < 6 || argc > 7)
|
||||
@@ -92,55 +89,18 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
/*
|
||||
* If we have 7 arguments, print the file named on the command-line.
|
||||
* Otherwise, copy stdin to a temporary file and print the temporary
|
||||
* file.
|
||||
* Otherwise, print stdin...
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
{
|
||||
/*
|
||||
* Copy stdin to a temporary file...
|
||||
*/
|
||||
|
||||
FILE *fp; /* Temporary file */
|
||||
char buffer[8192]; /* Buffer for copying */
|
||||
int bytes; /* Number of bytes read */
|
||||
|
||||
|
||||
if ((fp = fopen(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
|
||||
{
|
||||
perror("ERROR: unable to create temporary file");
|
||||
return (1);
|
||||
}
|
||||
|
||||
while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0)
|
||||
if (fwrite(buffer, 1, bytes, fp) < bytes)
|
||||
{
|
||||
perror("ERROR: unable to write to temporary file");
|
||||
fclose(fp);
|
||||
unlink(filename);
|
||||
return (1);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy(filename, argv[6], sizeof(filename) - 1);
|
||||
filename[sizeof(filename) - 1] = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
* Open the print file...
|
||||
*/
|
||||
|
||||
if ((fp = fopen(filename, "rb")) == NULL)
|
||||
fp = stdin;
|
||||
else if ((fp = fopen(argv[6], "rb")) == NULL)
|
||||
{
|
||||
perror("ERROR: Unable to open print file");
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
stat(filename, &fileinfo);
|
||||
stat(argv[6], &fileinfo);
|
||||
|
||||
/*
|
||||
* Extract the hostname and printer name from the URI...
|
||||
@@ -152,24 +112,16 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Try connecting to the remote server...
|
||||
*/
|
||||
|
||||
do
|
||||
{
|
||||
fprintf(stderr, "INFO: Connecting to %s...\n", hostname);
|
||||
fprintf(stderr, "INFO: Connecting to %s...\n", hostname);
|
||||
|
||||
if ((http = httpConnect(hostname, port)) == NULL)
|
||||
if (errno == ECONNREFUSED)
|
||||
{
|
||||
fprintf(stderr, "INFO: Network host \'%s\' is busy; will retry in 30 seconds...",
|
||||
hostname);
|
||||
sleep(30);
|
||||
}
|
||||
else
|
||||
{
|
||||
perror("ERROR: Unable to connect to IPP host");
|
||||
sleep(30);
|
||||
}
|
||||
if ((http = httpConnect(hostname, port)) == NULL)
|
||||
{
|
||||
perror("ERROR: Unable to connect to IPP host");
|
||||
|
||||
if (fp != stdin)
|
||||
fclose(fp);
|
||||
return (1);
|
||||
}
|
||||
while (http == NULL);
|
||||
|
||||
/*
|
||||
* Build a URI for the printer and fill the standard IPP attributes for
|
||||
@@ -177,451 +129,276 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* might contain username:password information...
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
request->request.op.operation_id = IPP_PRINT_JOB;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
language = cupsLangDefault();
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL,
|
||||
language != NULL ? language->language : "C");
|
||||
|
||||
snprintf(uri, sizeof(uri), "%s://%s:%d%s", method, hostname, port, resource);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
fprintf(stderr, "DEBUG: printer-uri = \"%s\"\n", uri);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, argv[2]);
|
||||
|
||||
fprintf(stderr, "DEBUG: requesting-user-name = \"%s\"\n", argv[2]);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
|
||||
argv[3]);
|
||||
|
||||
fprintf(stderr, "DEBUG: job-name = \"%s\"\n", argv[3]);
|
||||
|
||||
/*
|
||||
* First validate the destination and see if the device supports multiple
|
||||
* copies. We have to do this because some IPP servers (e.g. HP JetDirect)
|
||||
* don't support the copies attribute...
|
||||
* Handle options on the command-line...
|
||||
*/
|
||||
|
||||
language = cupsLangDefault();
|
||||
copies_sup = NULL;
|
||||
options = NULL;
|
||||
num_options = cupsParseOptions(argv[5], 0, &options);
|
||||
|
||||
do
|
||||
{
|
||||
/*
|
||||
* Build the IPP request...
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL,
|
||||
language != NULL ? language->language : "C");
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
/*
|
||||
* Now fill in the HTTP request stuff...
|
||||
*/
|
||||
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
if (username[0])
|
||||
{
|
||||
httpEncode64(password, username);
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, password);
|
||||
}
|
||||
|
||||
sprintf(buffer, "%u", ippLength(request));
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
* POST the request, retrying as needed...
|
||||
*/
|
||||
|
||||
if (httpPost(http, resource))
|
||||
{
|
||||
fputs("INFO: Unable to POST get-printer-attributes request; retrying...\n", stderr);
|
||||
sleep(10);
|
||||
httpReconnect(http);
|
||||
continue;
|
||||
}
|
||||
|
||||
fputs("INFO: POST successful, sending IPP request...\n", stderr);
|
||||
|
||||
/*
|
||||
* Send the IPP request...
|
||||
*/
|
||||
|
||||
request->state = IPP_IDLE;
|
||||
|
||||
if (ippWrite(http, request) == IPP_ERROR)
|
||||
{
|
||||
fputs("ERROR: Unable to send IPP request!\n", stderr);
|
||||
status = HTTP_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
fputs("INFO: IPP request sent, getting status...\n", stderr);
|
||||
|
||||
/*
|
||||
* Finally, check the status from the HTTP server...
|
||||
*/
|
||||
|
||||
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
|
||||
|
||||
if (status == HTTP_OK)
|
||||
{
|
||||
response = ippNew();
|
||||
ippRead(http, response);
|
||||
|
||||
ipp_status = response->request.status.status_code;
|
||||
|
||||
if (ipp_status > IPP_OK_CONFLICT)
|
||||
{
|
||||
if (ipp_status == IPP_PRINTER_BUSY ||
|
||||
ipp_status == IPP_SERVICE_UNAVAILABLE)
|
||||
{
|
||||
fputs("INFO: Printer busy; will retry in 10 seconds...\n", stderr);
|
||||
sleep(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "ERROR: Printer will not accept print file (%x)!\n",
|
||||
ipp_status);
|
||||
status = HTTP_ERROR;
|
||||
}
|
||||
}
|
||||
else if ((copies_sup = ippFindAttribute(response, "copies-supported",
|
||||
IPP_TAG_RANGE)) != NULL)
|
||||
{
|
||||
/*
|
||||
* Has the "copies-supported" attribute - does it have an upper
|
||||
* bound > 1?
|
||||
*/
|
||||
|
||||
if (copies_sup->values[0].range.upper <= 1)
|
||||
copies_sup = NULL; /* No */
|
||||
}
|
||||
|
||||
ippDelete(response);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (status == HTTP_ERROR)
|
||||
{
|
||||
fprintf(stderr, "WARNING: Did not receive the IPP response (%d)\n",
|
||||
errno);
|
||||
status = HTTP_OK;
|
||||
ipp_status = IPP_PRINTER_BUSY;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "ERROR: Validate request was not accepted (%d)!\n", status);
|
||||
}
|
||||
|
||||
httpFlush(http);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (status != HTTP_OK)
|
||||
{
|
||||
if (fp != stdin)
|
||||
fclose(fp);
|
||||
|
||||
httpClose(http);
|
||||
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
while (ipp_status > IPP_OK_CONFLICT);
|
||||
|
||||
/*
|
||||
* See if the printer supports multiple copies...
|
||||
*/
|
||||
|
||||
if (copies_sup)
|
||||
copies = 1;
|
||||
if (cupsGetOption("raw", num_options, options))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/vnd.cups-raw");
|
||||
else
|
||||
copies = atoi(argv[4]);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/octet-stream");
|
||||
|
||||
/*
|
||||
* Then issue the print-job request...
|
||||
*/
|
||||
if (fp != stdin)
|
||||
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
|
||||
|
||||
while (copies > 0)
|
||||
for (i = 0; i < num_options; i ++)
|
||||
{
|
||||
/*
|
||||
* Build the IPP request...
|
||||
* Skip the "raw" option - handled above...
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
request->request.op.operation_id = IPP_PRINT_JOB;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL,
|
||||
language != NULL ? language->language : "C");
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
fprintf(stderr, "DEBUG: printer-uri = \"%s\"\n", uri);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, argv[2]);
|
||||
|
||||
fprintf(stderr, "DEBUG: requesting-user-name = \"%s\"\n", argv[2]);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
|
||||
argv[3]);
|
||||
|
||||
fprintf(stderr, "DEBUG: job-name = \"%s\"\n", argv[3]);
|
||||
if (strcasecmp(options[i].name, "raw") == 0)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Handle options on the command-line...
|
||||
* See what the option value is; for compatibility with older interface
|
||||
* scripts, we have to support single-argument options as well as
|
||||
* option=value, option=low-high, and option=MxN.
|
||||
*/
|
||||
|
||||
options = NULL;
|
||||
num_options = cupsParseOptions(argv[5], 0, &options);
|
||||
option = options[i].name;
|
||||
val = options[i].value;
|
||||
|
||||
if (cupsGetOption("raw", num_options, options))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/vnd.cups-raw");
|
||||
if (*val == '\0')
|
||||
val = NULL;
|
||||
|
||||
if (val != NULL)
|
||||
{
|
||||
if (strcasecmp(val, "true") == 0 ||
|
||||
strcasecmp(val, "on") == 0 ||
|
||||
strcasecmp(val, "yes") == 0)
|
||||
{
|
||||
/*
|
||||
* Boolean value - true...
|
||||
*/
|
||||
|
||||
n = 1;
|
||||
val = "";
|
||||
}
|
||||
else if (strcasecmp(val, "false") == 0 ||
|
||||
strcasecmp(val, "off") == 0 ||
|
||||
strcasecmp(val, "no") == 0)
|
||||
{
|
||||
/*
|
||||
* Boolean value - false...
|
||||
*/
|
||||
|
||||
n = 0;
|
||||
val = "";
|
||||
}
|
||||
|
||||
n = strtol(val, &s, 0);
|
||||
}
|
||||
else
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/octet-stream");
|
||||
|
||||
if (copies_sup)
|
||||
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
|
||||
|
||||
for (i = 0; i < num_options; i ++)
|
||||
{
|
||||
/*
|
||||
* Skip the "raw" option - handled above...
|
||||
*/
|
||||
|
||||
if (strcasecmp(options[i].name, "raw") == 0)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* See what the option value is; for compatibility with older interface
|
||||
* scripts, we have to support single-argument options as well as
|
||||
* option=value, option=low-high, and option=MxN.
|
||||
*/
|
||||
|
||||
option = options[i].name;
|
||||
val = options[i].value;
|
||||
|
||||
if (*val == '\0')
|
||||
val = NULL;
|
||||
|
||||
if (val != NULL)
|
||||
if (strncasecmp(option, "no", 2) == 0)
|
||||
{
|
||||
if (strcasecmp(val, "true") == 0 ||
|
||||
strcasecmp(val, "on") == 0 ||
|
||||
strcasecmp(val, "yes") == 0)
|
||||
{
|
||||
/*
|
||||
* Boolean value - true...
|
||||
*/
|
||||
|
||||
n = 1;
|
||||
val = "";
|
||||
}
|
||||
else if (strcasecmp(val, "false") == 0 ||
|
||||
strcasecmp(val, "off") == 0 ||
|
||||
strcasecmp(val, "no") == 0)
|
||||
{
|
||||
/*
|
||||
* Boolean value - false...
|
||||
*/
|
||||
|
||||
n = 0;
|
||||
val = "";
|
||||
}
|
||||
|
||||
n = strtol(val, &s, 0);
|
||||
option += 2;
|
||||
n = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strncasecmp(option, "no", 2) == 0)
|
||||
{
|
||||
option += 2;
|
||||
n = 0;
|
||||
}
|
||||
else
|
||||
n = 1;
|
||||
n = 1;
|
||||
|
||||
s = "";
|
||||
s = "";
|
||||
}
|
||||
|
||||
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
|
||||
/*
|
||||
* String value(s)...
|
||||
*/
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
|
||||
else if (val != NULL)
|
||||
{
|
||||
/*
|
||||
* Numeric value, range, or resolution...
|
||||
*/
|
||||
|
||||
if (*s == '-')
|
||||
{
|
||||
n2 = strtol(s + 1, NULL, 0);
|
||||
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
|
||||
}
|
||||
|
||||
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
|
||||
/*
|
||||
* String value(s)...
|
||||
*/
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
|
||||
else if (val != NULL)
|
||||
else if (*s == 'x')
|
||||
{
|
||||
/*
|
||||
* Numeric value, range, or resolution...
|
||||
*/
|
||||
n2 = strtol(s + 1, &s, 0);
|
||||
|
||||
if (*s == '-')
|
||||
{
|
||||
n2 = strtol(s + 1, NULL, 0);
|
||||
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
|
||||
}
|
||||
else if (*s == 'x')
|
||||
{
|
||||
n2 = strtol(s + 1, &s, 0);
|
||||
|
||||
if (strcasecmp(s, "dpc") == 0)
|
||||
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_CM, n, n2);
|
||||
else if (strcasecmp(s, "dpi") == 0)
|
||||
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_INCH, n, n2);
|
||||
else
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
|
||||
}
|
||||
else
|
||||
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
|
||||
if (strcasecmp(s, "dpc") == 0)
|
||||
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_CM, n, n2);
|
||||
else if (strcasecmp(s, "dpi") == 0)
|
||||
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_INCH, n, n2);
|
||||
else
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
|
||||
}
|
||||
else
|
||||
/*
|
||||
* Boolean value...
|
||||
*/
|
||||
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
|
||||
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
|
||||
}
|
||||
else
|
||||
/*
|
||||
* Boolean value...
|
||||
*/
|
||||
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
|
||||
}
|
||||
|
||||
/*
|
||||
* Now fill in the HTTP request stuff...
|
||||
*/
|
||||
/*
|
||||
* Now fill in the HTTP request stuff...
|
||||
*/
|
||||
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
if (username[0])
|
||||
{
|
||||
httpEncode64(password, username);
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, password);
|
||||
}
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
if (username[0])
|
||||
{
|
||||
httpEncode64(password, username);
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, password);
|
||||
}
|
||||
|
||||
if (fp != stdin)
|
||||
{
|
||||
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
|
||||
}
|
||||
else
|
||||
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
* Do the request...
|
||||
* POST the request, retrying as needed...
|
||||
*/
|
||||
|
||||
for (;;)
|
||||
if (httpPost(http, resource))
|
||||
{
|
||||
/*
|
||||
* POST the request, retrying as needed...
|
||||
*/
|
||||
|
||||
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
|
||||
sleep(10);
|
||||
httpReconnect(http);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (httpPost(http, resource))
|
||||
{
|
||||
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
|
||||
sleep(10);
|
||||
continue;
|
||||
}
|
||||
fputs("INFO: POST successful, sending IPP request...\n", stderr);
|
||||
|
||||
fputs("INFO: POST successful, sending IPP request...\n", stderr);
|
||||
/*
|
||||
* Send the IPP request...
|
||||
*/
|
||||
|
||||
/*
|
||||
* Send the IPP request...
|
||||
*/
|
||||
|
||||
request->state = IPP_IDLE;
|
||||
|
||||
if (ippWrite(http, request) == IPP_ERROR)
|
||||
{
|
||||
fputs("ERROR: Unable to send IPP request!\n", stderr);
|
||||
status = HTTP_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
fputs("INFO: IPP request sent, sending print file...\n", stderr);
|
||||
|
||||
/*
|
||||
* Then send the file...
|
||||
*/
|
||||
|
||||
rewind(fp);
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
{
|
||||
tbytes += nbytes;
|
||||
fprintf(stderr, "INFO: Sending print file, %uk...\n", tbytes / 1024);
|
||||
|
||||
if (httpWrite(http, buffer, nbytes) < nbytes)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
status = HTTP_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fputs("INFO: Print file sent; checking status...\n", stderr);
|
||||
|
||||
/*
|
||||
* Finally, check the status from the HTTP server...
|
||||
*/
|
||||
|
||||
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
|
||||
|
||||
if (status == HTTP_OK)
|
||||
{
|
||||
response = ippNew();
|
||||
ippRead(http, response);
|
||||
|
||||
if ((ipp_status = response->request.status.status_code) > IPP_OK_CONFLICT)
|
||||
{
|
||||
if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
|
||||
ipp_status == IPP_PRINTER_BUSY)
|
||||
{
|
||||
fputs("INFO: Printer is busy; retrying print job...\n", stderr);
|
||||
sleep(10);
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "ERROR: Print file was not accepted (%04x)!\n",
|
||||
response->request.status.status_code);
|
||||
}
|
||||
else if ((job_id = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
|
||||
fputs("INFO: Print file accepted - job ID unknown.\n", stderr);
|
||||
else
|
||||
fprintf(stderr, "INFO: Print file accepted - job ID %d.\n",
|
||||
job_id->values[0].integer);
|
||||
}
|
||||
else
|
||||
{
|
||||
response = NULL;
|
||||
ipp_status = IPP_PRINTER_BUSY;
|
||||
|
||||
if (status == HTTP_ERROR)
|
||||
{
|
||||
fprintf(stderr, "WARNING: Did not receive the IPP response (%d)\n",
|
||||
errno);
|
||||
status = HTTP_OK;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "ERROR: Print request was not accepted (%d)!\n", status);
|
||||
}
|
||||
|
||||
httpFlush(http);
|
||||
request->state = IPP_IDLE;
|
||||
|
||||
if (ippWrite(http, request) == IPP_ERROR)
|
||||
{
|
||||
fputs("ERROR: Unable to send IPP request!\n", stderr);
|
||||
status = HTTP_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
if (request != NULL)
|
||||
ippDelete(request);
|
||||
if (response != NULL)
|
||||
ippDelete(response);
|
||||
fputs("INFO: IPP request sent, sending print file...\n", stderr);
|
||||
|
||||
if (ipp_status <= IPP_OK_CONFLICT)
|
||||
/*
|
||||
* Then send the file...
|
||||
*/
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
{
|
||||
fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
|
||||
copies --;
|
||||
tbytes += nbytes;
|
||||
fprintf(stderr, "INFO: Sending print file, %uk...\n", tbytes / 1024);
|
||||
|
||||
if (httpWrite(http, buffer, nbytes) < nbytes)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
status = HTTP_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we are chunking the output from stdin, make sure we end up with
|
||||
* a 0-length chunk at the end...
|
||||
*/
|
||||
|
||||
if (fp == stdin)
|
||||
httpWrite(http, buffer, 0);
|
||||
|
||||
fputs("INFO: Print file sent; checking status...\n", stderr);
|
||||
|
||||
/*
|
||||
* Finally, check the status from the HTTP server...
|
||||
*/
|
||||
|
||||
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
|
||||
|
||||
if (status == HTTP_OK)
|
||||
{
|
||||
response = ippNew();
|
||||
ippRead(http, response);
|
||||
|
||||
if (response->request.status.status_code > IPP_OK_CONFLICT)
|
||||
{
|
||||
ipp_attribute_t *attr;
|
||||
|
||||
fprintf(stderr, "ERROR: Print file was not accepted (%04x)!\n",
|
||||
response->request.status.status_code);
|
||||
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
if (attr->name != NULL)
|
||||
fprintf(stderr, "ERROR: attribute \"%s\"\n", attr->name);
|
||||
}
|
||||
else if ((job_id = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
|
||||
fputs("INFO: Print file accepted - job ID unknown.\n", stderr);
|
||||
else
|
||||
fprintf(stderr, "INFO: Print file accepted - job ID %d.\n",
|
||||
job_id->values[0].integer);
|
||||
}
|
||||
else
|
||||
{
|
||||
response = NULL;
|
||||
|
||||
if (status == HTTP_ERROR)
|
||||
{
|
||||
fprintf(stderr, "WARNING: Did not receive the IPP response (%d)\n",
|
||||
errno);
|
||||
status = HTTP_OK;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "ERROR: Print request was not accepted (%d)!\n", status);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -629,15 +406,22 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
httpClose(http);
|
||||
if (request != NULL)
|
||||
ippDelete(request);
|
||||
if (response != NULL)
|
||||
ippDelete(response);
|
||||
|
||||
/*
|
||||
* Close and remove the temporary file if necessary...
|
||||
* Close the print file as needed...
|
||||
*/
|
||||
|
||||
fclose(fp);
|
||||
if (fp != stdin)
|
||||
{
|
||||
if (status == HTTP_OK)
|
||||
fprintf(stderr, "PAGE: 1 %d\n", atoi(argv[4]));
|
||||
|
||||
if (argc < 7)
|
||||
unlink(filename);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the queue status...
|
||||
|
||||
+3
-4
@@ -262,9 +262,8 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
{
|
||||
if ((fd = rresvport(&port)) < 0)
|
||||
{
|
||||
perror("ERROR: Unable to reserve port");
|
||||
sleep(30);
|
||||
continue;
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||
@@ -288,7 +287,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
else
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
sleep(30);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+2
-2
@@ -147,7 +147,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
{
|
||||
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
||||
{
|
||||
perror("ERROR: Unable to create socket");
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
else
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
sleep(30);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+2
-26
@@ -44,7 +44,7 @@
|
||||
* Local functions.
|
||||
*/
|
||||
|
||||
void sighandler(int);
|
||||
void sighandler(void);
|
||||
#endif /* !WIN32 */
|
||||
|
||||
|
||||
@@ -76,9 +76,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
deletefile; /* Delete file after print? */
|
||||
char buffer[8192]; /* Copy buffer */
|
||||
FILE *temp; /* Temporary file pointer */
|
||||
#ifdef HAVE_SIGACTION
|
||||
struct sigaction action; /* Signal action */
|
||||
#endif /* HAVE_SIGACTION */
|
||||
|
||||
|
||||
silent = 0;
|
||||
@@ -233,22 +230,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
|
||||
#ifndef WIN32
|
||||
# if defined(HAVE_SIGSET)
|
||||
sigset(SIGHUP, sighandler);
|
||||
sigset(SIGINT, sighandler);
|
||||
sigset(SIGTERM, sighandler);
|
||||
# elif defined(HAVE_SIGACTION)
|
||||
memset(&action, 0, sizeof(action));
|
||||
action.sa_handler = sighandler;
|
||||
|
||||
sigaction(SIGHUP, &action, NULL);
|
||||
sigaction(SIGINT, &action, NULL);
|
||||
sigaction(SIGTERM, &action, NULL);
|
||||
# else
|
||||
signal(SIGHUP, sighandler);
|
||||
signal(SIGINT, sighandler);
|
||||
signal(SIGTERM, sighandler);
|
||||
# endif
|
||||
#endif /* !WIN32 */
|
||||
|
||||
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "w");
|
||||
@@ -296,19 +278,13 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
*/
|
||||
|
||||
void
|
||||
sighandler(int s) /* I - Signal number */
|
||||
sighandler(void)
|
||||
{
|
||||
/*
|
||||
* Remove the temporary file we're using to print from stdin...
|
||||
*/
|
||||
|
||||
unlink(tempfile);
|
||||
|
||||
/*
|
||||
* Exit...
|
||||
*/
|
||||
|
||||
exit(s);
|
||||
}
|
||||
#endif /* !WIN32 */
|
||||
|
||||
|
||||
+2
-5
@@ -50,21 +50,18 @@ clean:
|
||||
install:
|
||||
-$(MKDIR) $(SERVERROOT)/conf
|
||||
for file in $(KEEP); do \
|
||||
if test -r $(SERVERROOT)/conf/$$file ; then \
|
||||
if test -e $(SERVERROOT)/conf/$$file ; then \
|
||||
$(CP) $$file $(SERVERROOT)/conf/$$file.N ; \
|
||||
else \
|
||||
$(CP) $$file $(SERVERROOT)/conf ; \
|
||||
fi ; \
|
||||
done
|
||||
for file in $(REPLACE); do \
|
||||
if test -r $(SERVERROOT)/conf/$$file ; then \
|
||||
if test -e $(SERVERROOT)/conf/$$file ; then \
|
||||
$(MV) $(SERVERROOT)/conf/$$file $(SERVERROOT)/conf/$$file.O ; \
|
||||
fi ; \
|
||||
$(CP) $$file $(SERVERROOT)/conf ; \
|
||||
done
|
||||
if test -r /etc/printcap -a ! -r /etc/printcap.O; then \
|
||||
$(CP) /etc/printcap /etc/printcap.O ; \
|
||||
fi
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
#
|
||||
# "$Id: cupsd.conf-personal 407 1999-06-17 20:02:43Z mike $"
|
||||
#
|
||||
# Scheduler configuration file for ESP Print Personal.
|
||||
#
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# This is the CUPS configuration file. If you are familiar with #
|
||||
# Apache or any of the other popular web servers, we've followed the #
|
||||
# same format. Any configuration variable used here has the same #
|
||||
# semantics as the corresponding variable in Apache. If we need #
|
||||
# different functionality then a different name is used to avoid #
|
||||
# confusion... #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
#
|
||||
# Ports/addresses that we listen to. The default port 631 is reserved
|
||||
# for the Internet Printing Protocol (IPP) and is what we use here.
|
||||
#
|
||||
# You can have multiple Listen lines to listen to more than one
|
||||
# port:
|
||||
#
|
||||
# Listen 127.0.0.1:80
|
||||
# Listen 127.0.0.1:631
|
||||
#
|
||||
# For ESP Print Personal, we can only listen on the local host...
|
||||
#
|
||||
|
||||
#Listen 127.0.0.1:80
|
||||
Listen 127.0.0.1:631
|
||||
|
||||
#
|
||||
# User/Group: the user and group the server runs under. Normally this
|
||||
# must be lp and sys, however you can configure things for another user
|
||||
# or group as needed.
|
||||
#
|
||||
# Note: the server must be run initially as root to support the
|
||||
# default IPP port of 631. It changes users whenever an external
|
||||
# program is run...
|
||||
#
|
||||
|
||||
User lp
|
||||
Group sys
|
||||
|
||||
#
|
||||
# SystemGroup: the group name for "System" (printer administration)
|
||||
# access.
|
||||
#
|
||||
|
||||
SystemGroup sys
|
||||
|
||||
#
|
||||
# ServerName: the hostname of your server, as advertised to the world.
|
||||
# By default CUPS will use the hostname of the system.
|
||||
#
|
||||
|
||||
#ServerName myhost.domain.com
|
||||
|
||||
#
|
||||
# ServerAdmin: the email address to send all complaints/problems to.
|
||||
# By default CUPS will use "root@hostname".
|
||||
#
|
||||
|
||||
#ServerAdmin root@your.domain.com
|
||||
|
||||
#
|
||||
# ServerRoot: the root directory for the scheduler.
|
||||
# By default the compiled-in value.
|
||||
#
|
||||
|
||||
#ServerRoot /var/cups
|
||||
|
||||
#
|
||||
# AccessLog: the access log file; if this does not start with a leading /
|
||||
# then it is assumed to be relative to ServerRoot. By default set to
|
||||
# "logs/access_log"
|
||||
#
|
||||
|
||||
#AccessLog logs/access_log
|
||||
|
||||
#
|
||||
# ErrorLog: the error log file; if this does not start with a leading /
|
||||
# then it is assumed to be relative to ServerRoot. By default set to
|
||||
# "logs/error_log"
|
||||
#
|
||||
|
||||
#ErrorLog logs/error_log
|
||||
|
||||
#
|
||||
# PageLog: the page log file; if this does not start with a leading /
|
||||
# then it is assumed to be relative to ServerRoot. By default set to
|
||||
# "logs/page_log"
|
||||
#
|
||||
|
||||
#PageLog logs/page_log
|
||||
|
||||
#
|
||||
# LogLevel: controls the number of messages logged to the ErrorLog
|
||||
# file and can be one of the following:
|
||||
#
|
||||
# debug Log everything.
|
||||
# info Log all requests and state changes.
|
||||
# warn Log errors and warnings.
|
||||
# error Log only errors.
|
||||
# none Log nothing.
|
||||
#
|
||||
|
||||
LogLevel info
|
||||
|
||||
#
|
||||
# MaxLogSize: controls the maximum size of each log file before they are
|
||||
# rotated. Defaults to 1048576 (1MB). Set to 0 to disable log rotating.
|
||||
#
|
||||
|
||||
#MaxLogSize 0
|
||||
|
||||
#
|
||||
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
|
||||
# disable this feature (defaults to 0.)
|
||||
#
|
||||
|
||||
#MaxRequestSize 0
|
||||
|
||||
#
|
||||
# HostNameLookups: whether or not to do lookups on IP addresses to get a
|
||||
# fully-qualified hostname. This defaults to Off for performance reasons...
|
||||
#
|
||||
|
||||
#HostNameLookups On
|
||||
|
||||
#
|
||||
# Timeout: the timeout before requests time out. Default is 300 seconds.
|
||||
#
|
||||
|
||||
#Timeout 300
|
||||
|
||||
#
|
||||
# KeepAlive: whether or not to support the Keep-Alive connection
|
||||
# option. Default is on.
|
||||
#
|
||||
|
||||
#KeepAlive On
|
||||
|
||||
#
|
||||
# KeepAliveTimeout: the timeout before Keep-Alive connections are
|
||||
# automatically closed. Default is 60 seconds.
|
||||
#
|
||||
|
||||
#KeepAliveTimeout 60
|
||||
|
||||
#
|
||||
# Browsing: not available in ESP Print Personal.
|
||||
#
|
||||
|
||||
Browsing Off
|
||||
|
||||
#
|
||||
# DocumentRoot: the root directory for HTTP documents that are served.
|
||||
# By default the compiled in directory.
|
||||
#
|
||||
|
||||
#DocumentRoot /usr/share/cups/doc
|
||||
|
||||
#
|
||||
# DefaultLanguage: the default language if not specified by the browser.
|
||||
# If not specified, the current locale is used.
|
||||
#
|
||||
|
||||
#DefaultLanguage en
|
||||
|
||||
#
|
||||
# DefaultCharset: the default character set to use. If not specified,
|
||||
# defaults to iso-8859-1. Note that this can also be overridden in
|
||||
# HTML documents...
|
||||
#
|
||||
|
||||
#DefaultCharset iso-8859-1
|
||||
|
||||
#
|
||||
# RIPCache: the amount of memory that each RIP should use to cache
|
||||
# bitmaps. The value can be any real number followed by "k" for
|
||||
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
|
||||
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
|
||||
#
|
||||
|
||||
#RIPCache: 32m
|
||||
|
||||
#
|
||||
# Access permissions for each directory served by the scheduler.
|
||||
# Locations are relative to DocumentRoot...
|
||||
#
|
||||
# AuthType: the authorization to use; currently only "Basic" authorization is
|
||||
# supported.
|
||||
#
|
||||
# AuthClass: the authorization class; currently only "Anonymous", "User",
|
||||
# "System" (valid user belonging to group SystemGroup), and "Group"
|
||||
# (valid user belonging to the specified group) are supported.
|
||||
#
|
||||
# AuthGroupName: the group name for "Group" authorization.
|
||||
#
|
||||
# Order: the order of Allow/Deny processing.
|
||||
#
|
||||
# Allow: allows access from the specified hostname, domain, IP address, or
|
||||
# network.
|
||||
#
|
||||
# Deny: denies access from the specified hostname, domain, IP address, or
|
||||
# network.
|
||||
#
|
||||
|
||||
<Location />
|
||||
</Location>
|
||||
|
||||
<Location /printers>
|
||||
#
|
||||
# You may wish to limit access to printers and classes, either with Allow
|
||||
# and Deny lines, or by requiring a username and password.
|
||||
#
|
||||
|
||||
## Require a username and password
|
||||
#AuthType Basic
|
||||
#AuthClass User
|
||||
|
||||
## Restrict access to local domain
|
||||
#Order Deny,Allow
|
||||
#Deny From All
|
||||
#Allow From .mydomain.com
|
||||
</Location>
|
||||
|
||||
<Location /admin>
|
||||
#
|
||||
# You definitely will want to limit access to the administration tools.
|
||||
# The default configuration requires a local connection from a user who
|
||||
# is a member of group "sys" to do any admin tasks. You can change the
|
||||
# group name using the SystemGroup directive.
|
||||
#
|
||||
|
||||
AuthType Basic
|
||||
AuthClass System
|
||||
|
||||
## Restrict access to local domain
|
||||
Order Deny,Allow
|
||||
Deny From All
|
||||
Allow From 127.0.0.1
|
||||
</Location>
|
||||
|
||||
#
|
||||
# End of "$Id: cupsd.conf-personal 407 1999-06-17 20:02:43Z mike $".
|
||||
#
|
||||
@@ -0,0 +1,313 @@
|
||||
#
|
||||
# "$Id: cupsd.conf-professional 407 1999-06-17 20:02:43Z mike $"
|
||||
#
|
||||
# Scheduler configuration file for ESP Print Professional.
|
||||
#
|
||||
|
||||
########################################################################
|
||||
# #
|
||||
# This is the CUPS configuration file. If you are familiar with #
|
||||
# Apache or any of the other popular web servers, we've followed the #
|
||||
# same format. Any configuration variable used here has the same #
|
||||
# semantics as the corresponding variable in Apache. If we need #
|
||||
# different functionality then a different name is used to avoid #
|
||||
# confusion... #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
#
|
||||
# Ports/addresses that we listen to. The default port 631 is reserved
|
||||
# for the Internet Printing Protocol (IPP) and is what we use here.
|
||||
#
|
||||
# You can have multiple Port/Listen lines to listen to more than one
|
||||
# port or address, or to restrict access:
|
||||
#
|
||||
# Port 80
|
||||
# Port 631
|
||||
# Listen hostname
|
||||
# Listen hostname:80
|
||||
# Listen hostname:631
|
||||
# Listen 1.2.3.4
|
||||
# Listen 1.2.3.4:631
|
||||
#
|
||||
|
||||
#Port 80
|
||||
Port 631
|
||||
|
||||
#
|
||||
# User/Group: the user and group the server runs under. Normally this
|
||||
# must be lp and sys, however you can configure things for another user
|
||||
# or group as needed.
|
||||
#
|
||||
# Note: the server must be run initially as root to support the
|
||||
# default IPP port of 631. It changes users whenever an external
|
||||
# program is run...
|
||||
#
|
||||
|
||||
User lp
|
||||
Group sys
|
||||
|
||||
#
|
||||
# SystemGroup: the group name for "System" (printer administration)
|
||||
# access.
|
||||
#
|
||||
|
||||
SystemGroup sys
|
||||
|
||||
#
|
||||
# ServerName: the hostname of your server, as advertised to the world.
|
||||
# By default CUPS will use the hostname of the system.
|
||||
#
|
||||
|
||||
#ServerName myhost.domain.com
|
||||
|
||||
#
|
||||
# ServerAdmin: the email address to send all complaints/problems to.
|
||||
# By default CUPS will use "root@hostname".
|
||||
#
|
||||
|
||||
#ServerAdmin root@your.domain.com
|
||||
|
||||
#
|
||||
# ServerRoot: the root directory for the scheduler.
|
||||
# By default the compiled-in value.
|
||||
#
|
||||
|
||||
#ServerRoot /var/cups
|
||||
|
||||
#
|
||||
# AccessLog: the access log file; if this does not start with a leading /
|
||||
# then it is assumed to be relative to ServerRoot. By default set to
|
||||
# "logs/access_log"
|
||||
#
|
||||
|
||||
#AccessLog logs/access_log
|
||||
|
||||
#
|
||||
# ErrorLog: the error log file; if this does not start with a leading /
|
||||
# then it is assumed to be relative to ServerRoot. By default set to
|
||||
# "logs/error_log"
|
||||
#
|
||||
|
||||
#ErrorLog logs/error_log
|
||||
|
||||
#
|
||||
# PageLog: the page log file; if this does not start with a leading /
|
||||
# then it is assumed to be relative to ServerRoot. By default set to
|
||||
# "logs/page_log"
|
||||
#
|
||||
|
||||
#PageLog logs/page_log
|
||||
|
||||
#
|
||||
# LogLevel: controls the number of messages logged to the ErrorLog
|
||||
# file and can be one of the following:
|
||||
#
|
||||
# debug Log everything.
|
||||
# info Log all requests and state changes.
|
||||
# warn Log errors and warnings.
|
||||
# error Log only errors.
|
||||
# none Log nothing.
|
||||
#
|
||||
|
||||
LogLevel info
|
||||
|
||||
#
|
||||
# MaxLogSize: controls the maximum size of each log file before they are
|
||||
# rotated. Defaults to 1048576 (1MB). Set to 0 to disable log rotating.
|
||||
#
|
||||
|
||||
#MaxLogSize 0
|
||||
|
||||
#
|
||||
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
|
||||
# disable this feature (defaults to 0.)
|
||||
#
|
||||
|
||||
#MaxRequestSize 0
|
||||
|
||||
#
|
||||
# HostNameLookups: whether or not to do lookups on IP addresses to get a
|
||||
# fully-qualified hostname. This defaults to Off for performance reasons...
|
||||
#
|
||||
|
||||
#HostNameLookups On
|
||||
|
||||
#
|
||||
# Timeout: the timeout before requests time out. Default is 300 seconds.
|
||||
#
|
||||
|
||||
#Timeout 300
|
||||
|
||||
#
|
||||
# KeepAlive: whether or not to support the Keep-Alive connection
|
||||
# option. Default is on.
|
||||
#
|
||||
|
||||
#KeepAlive On
|
||||
|
||||
#
|
||||
# KeepAliveTimeout: the timeout before Keep-Alive connections are
|
||||
# automatically closed. Default is 60 seconds.
|
||||
#
|
||||
|
||||
#KeepAliveTimeout 60
|
||||
|
||||
#
|
||||
# ImplicitClasses: whether or not to use implicit classes.
|
||||
#
|
||||
# Printer classes can be specified explicitly in the classes.conf
|
||||
# file, implicitly based upon the printers available on the LAN, or
|
||||
# both.
|
||||
#
|
||||
# When ImplicitClasses is On, printers on the LAN with the same name
|
||||
# (e.g. Acme-LaserPrint-1000) will be put into a class with the same
|
||||
# name. This allows you to setup multiple redundant queues on a LAN
|
||||
# without a lot of administrative difficulties. If a user sends a
|
||||
# job to Acme-LaserPrint-1000, the job will go to the first available
|
||||
# queue.
|
||||
#
|
||||
# Enabled by default.
|
||||
#
|
||||
|
||||
#ImplicitClasses On
|
||||
|
||||
#
|
||||
# Browsing: whether or not to broadcast printer information to
|
||||
# other CUPS servers. Enabled by default.
|
||||
#
|
||||
|
||||
#Browsing On
|
||||
|
||||
#
|
||||
# BrowseInterval: the time between browsing updates in seconds. Default
|
||||
# is 30 seconds.
|
||||
#
|
||||
# Note that browsing information is sent whenever a printer's state changes
|
||||
# as well, so this represents the maximum time between updates.
|
||||
#
|
||||
|
||||
#BrowseInterval 30
|
||||
|
||||
#
|
||||
# BrowseTimeout: the timeout for network printers - if we don't
|
||||
# get an update within this time the printer will be removed
|
||||
# from the printer list. This number definitely should not be
|
||||
# less the BrowseInterval value for obvious reasons. Defaults
|
||||
# to 300 seconds.
|
||||
#
|
||||
|
||||
#BrowseTimeout 300
|
||||
|
||||
#
|
||||
# BrowsePort: the port used for UDP broadcasts. By default this is
|
||||
# the IPP port; if you change this you need to do it on all servers.
|
||||
# Only one BrowsePort is recognized.
|
||||
#
|
||||
|
||||
#BrowsePort 631
|
||||
|
||||
#
|
||||
# BrowseAddress: specifies a broadcast address to be used. By
|
||||
# default browsing information is broadcast to all active interfaces.
|
||||
#
|
||||
# Note: HP-UX 10.20 and earlier do not properly handle broadcast unless
|
||||
# you have a Class A, B, C, or D netmask (i.e. no CIDR support).
|
||||
#
|
||||
|
||||
#BrowseAddress x.y.z.255
|
||||
#BrowseAddress x.y.255.255
|
||||
#BrowseAddress x.255.255.255
|
||||
|
||||
#
|
||||
# DocumentRoot: the root directory for HTTP documents that are served.
|
||||
# By default the compiled in directory.
|
||||
#
|
||||
|
||||
#DocumentRoot /usr/share/cups/doc
|
||||
|
||||
#
|
||||
# DefaultLanguage: the default language if not specified by the browser.
|
||||
# If not specified, the current locale is used.
|
||||
#
|
||||
|
||||
#DefaultLanguage en
|
||||
|
||||
#
|
||||
# DefaultCharset: the default character set to use. If not specified,
|
||||
# defaults to iso-8859-1. Note that this can also be overridden in
|
||||
# HTML documents...
|
||||
#
|
||||
|
||||
#DefaultCharset iso-8859-1
|
||||
|
||||
#
|
||||
# RIPCache: the amount of memory that each RIP should use to cache
|
||||
# bitmaps. The value can be any real number followed by "k" for
|
||||
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
|
||||
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
|
||||
#
|
||||
|
||||
#RIPCache: 32m
|
||||
|
||||
#
|
||||
# Access permissions for each directory served by the scheduler.
|
||||
# Locations are relative to DocumentRoot...
|
||||
#
|
||||
# AuthType: the authorization to use; currently only "Basic" authorization is
|
||||
# supported.
|
||||
#
|
||||
# AuthClass: the authorization class; currently only "Anonymous", "User",
|
||||
# "System" (valid user belonging to group SystemGroup), and "Group"
|
||||
# (valid user belonging to the specified group) are supported.
|
||||
#
|
||||
# AuthGroupName: the group name for "Group" authorization.
|
||||
#
|
||||
# Order: the order of Allow/Deny processing.
|
||||
#
|
||||
# Allow: allows access from the specified hostname, domain, IP address, or
|
||||
# network.
|
||||
#
|
||||
# Deny: denies access from the specified hostname, domain, IP address, or
|
||||
# network.
|
||||
#
|
||||
|
||||
<Location />
|
||||
</Location>
|
||||
|
||||
<Location /printers>
|
||||
#
|
||||
# You may wish to limit access to printers and classes, either with Allow
|
||||
# and Deny lines, or by requiring a username and password.
|
||||
#
|
||||
|
||||
## Require a username and password
|
||||
#AuthType Basic
|
||||
#AuthClass User
|
||||
|
||||
## Restrict access to local domain
|
||||
#Order Deny,Allow
|
||||
#Deny From All
|
||||
#Allow From .mydomain.com
|
||||
</Location>
|
||||
|
||||
<Location /admin>
|
||||
#
|
||||
# You definitely will want to limit access to the administration tools.
|
||||
# The default configuration requires a local connection from a user who
|
||||
# is a member of group "sys" to do any admin tasks. You can change the
|
||||
# group name using the SystemGroup directive.
|
||||
#
|
||||
|
||||
AuthType Basic
|
||||
AuthClass System
|
||||
|
||||
## Restrict access to local domain
|
||||
Order Deny,Allow
|
||||
Deny From All
|
||||
Allow From 127.0.0.1
|
||||
</Location>
|
||||
|
||||
#
|
||||
# End of "$Id: cupsd.conf-professional 407 1999-06-17 20:02:43Z mike $".
|
||||
#
|
||||
+1
-9
@@ -28,7 +28,7 @@
|
||||
* Version of software...
|
||||
*/
|
||||
|
||||
#define CUPS_SVERSION "CUPS v1.0.4"
|
||||
#define CUPS_SVERSION "CUPS v1.0.2"
|
||||
|
||||
/*
|
||||
* Where are files stored?
|
||||
@@ -62,14 +62,6 @@
|
||||
#undef HAVE_SYS_NDIR_H
|
||||
#undef HAVE_NDIR_H
|
||||
|
||||
/*
|
||||
* Do we have PAM stuff?
|
||||
*/
|
||||
|
||||
#ifndef HAVE_LIBPAM
|
||||
#define HAVE_LIBPAM 0
|
||||
#endif /* !HAVE_LIBPAM */
|
||||
|
||||
/*
|
||||
* Do we have <shadow.h>?
|
||||
*/
|
||||
|
||||
+8
-25
@@ -42,7 +42,7 @@ AC_SUBST(OPTIM)
|
||||
PICFLAG=1
|
||||
CFLAGS="${CFLAGS:=}"
|
||||
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],[if eval "test x$enable_debug = xyes"; then
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],[if eval "test x$enable_debug = xyes"; then
|
||||
OPTIM="-g "
|
||||
fi])
|
||||
AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries [default=yes]])
|
||||
@@ -88,8 +88,6 @@ else
|
||||
DSO=":"
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(pam, [ --enable-pam turn on PAM support [default=yes]])
|
||||
|
||||
dnl Checks for programs...
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CC
|
||||
@@ -135,10 +133,6 @@ dnl Check for libraries...
|
||||
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
|
||||
AC_CHECK_HEADER(crypt.h, AC_DEFINE(HAVE_CRYPT_H))
|
||||
AC_CHECK_LIB(sec,getspent)
|
||||
if test "$enable_pam" != "no"; then
|
||||
AC_CHECK_LIB(dl,dlopen)
|
||||
AC_CHECK_LIB(pam,pam_start)
|
||||
fi
|
||||
|
||||
NETLIBS=""
|
||||
AC_SUBST(NETLIBS)
|
||||
@@ -155,11 +149,6 @@ else
|
||||
echo "Not using -lnsl since you are running IRIX."
|
||||
fi)
|
||||
|
||||
dnl Save the current libraries since we don't want the image libraries
|
||||
dnl included with every program...
|
||||
SAVELIBS="$LIBS"
|
||||
|
||||
dnl Check for image libraries...
|
||||
LIBJPEG=""
|
||||
LIBPNG=""
|
||||
LIBTIFF=""
|
||||
@@ -170,18 +159,10 @@ AC_SUBST(LIBPNG)
|
||||
AC_SUBST(LIBTIFF)
|
||||
AC_SUBST(LIBZ)
|
||||
|
||||
dnl AC_CHECK_HEADER(jpeglib.h,
|
||||
AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
|
||||
AC_DEFINE(HAVE_LIBJPEG)
|
||||
LIBJPEG="-ljpeg"
|
||||
LIBS="$LIBS -ljpeg")
|
||||
|
||||
AC_CHECK_LIB(z, deflate,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz"
|
||||
LIBS="$LIBS -lz")
|
||||
|
||||
dnl PNG library uses math library functions...
|
||||
AC_CHECK_LIB(m, pow)
|
||||
LIBJPEG="-ljpeg")
|
||||
|
||||
dnl AC_CHECK_HEADER(png.h,
|
||||
AC_CHECK_LIB(png, png_read_info,
|
||||
@@ -193,8 +174,10 @@ AC_CHECK_LIB(tiff, TIFFReadScanline,
|
||||
AC_DEFINE(HAVE_LIBTIFF)
|
||||
LIBTIFF="-ltiff")
|
||||
|
||||
dnl Restore original LIBS settings...
|
||||
LIBS="$SAVELIBS"
|
||||
dnl AC_CHECK_HEADER(zlib.h,
|
||||
AC_CHECK_LIB(z, deflateInit,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz")
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
@@ -217,7 +200,7 @@ AC_CHECK_FUNCS(waitpid)
|
||||
AC_CHECK_FUNCS(wait3)
|
||||
|
||||
dnl Update compiler options...
|
||||
if test -n "$GXX" -o $uname = Linux; then
|
||||
if test -n "$GXX"; then
|
||||
if test -z "$OPTIM"; then
|
||||
OPTIM="-O2"
|
||||
fi
|
||||
|
||||
-15
@@ -15,21 +15,6 @@ Package=<4>
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "cupsd"=.\scheduler\cupsd.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name cups
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "hpgltops"=.\filter\hpgltops.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
||||
+7
-9
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups.list 835 1999-12-29 17:27:56Z $"
|
||||
# "$Id: cups.list 775 1999-11-04 13:35:01Z mike $"
|
||||
#
|
||||
# ESP Package Manager (EPM) file list for the Common UNIX Printing
|
||||
# System (CUPS).
|
||||
@@ -31,7 +31,7 @@
|
||||
%vendor Easy Software Products
|
||||
%license LICENSE.cups
|
||||
%readme README.cups
|
||||
%version 1.0.4
|
||||
%version 1.0.2
|
||||
%incompat printpro
|
||||
|
||||
%system all
|
||||
@@ -213,10 +213,8 @@ c 0644 root sys /var/cups/conf/printers.conf conf/printers.conf
|
||||
|
||||
# Dummy printcap file for Digital UNIX and Linux...
|
||||
%system dunix linux
|
||||
%format !rpm
|
||||
f 0644 root sys /etc/printcap conf/printcap
|
||||
%system all
|
||||
%format all
|
||||
|
||||
# Developer files
|
||||
f 0444 root sys /usr/include/cups/cups.h cups/cups.h
|
||||
@@ -259,12 +257,14 @@ f 0444 root sys /usr/share/cups/doc/sam.html doc/sam.html
|
||||
f 0444 root sys /usr/share/cups/doc/sam.pdf doc/sam.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/sdd.html doc/sdd.html
|
||||
f 0444 root sys /usr/share/cups/doc/sdd.pdf doc/sdd.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/spm.html doc/spm.html
|
||||
f 0444 root sys /usr/share/cups/doc/spm.pdf doc/spm.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/ssr.html doc/ssr.html
|
||||
f 0444 root sys /usr/share/cups/doc/ssr.pdf doc/ssr.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/stp.html doc/stp.html
|
||||
f 0444 root sys /usr/share/cups/doc/stp.pdf doc/stp.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/sum.html doc/sum.html
|
||||
f 0444 root sys /usr/share/cups/doc/sum.pdf doc/sum.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/svd.html doc/svd.html
|
||||
f 0444 root sys /usr/share/cups/doc/svd.pdf doc/svd.pdf
|
||||
|
||||
# Man pages
|
||||
%system irix
|
||||
@@ -279,7 +279,6 @@ l 0444 root sys /usr/share/catman/a_man/cat1/disable.z enable.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/filter.z man/filter.z
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/lpadmin.z man/lpadmin.z
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/lpc.z man/lpc.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpq.z man/lpq.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lprm.z man/lprm.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpr.z man/lpr.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpstat.z man/lpstat.z
|
||||
@@ -300,7 +299,6 @@ l 0444 root sys /usr/man/man8/disable.8 enable.8
|
||||
f 0444 root sys /usr/man/man1/filter.1 man/filter.1
|
||||
f 0444 root sys /usr/man/man8/lpadmin.8 man/lpadmin.8
|
||||
f 0444 root sys /usr/man/man8/lpc.8 man/lpc.8
|
||||
f 0444 root sys /usr/man/man1/lpq.1 man/lpq.1
|
||||
f 0444 root sys /usr/man/man1/lprm.1 man/lprm.1
|
||||
f 0444 root sys /usr/man/man1/lpr.1 man/lpr.1
|
||||
f 0444 root sys /usr/man/man1/lpstat.1 man/lpstat.1
|
||||
@@ -315,5 +313,5 @@ f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
|
||||
i 0555 root sys cups cups.sh
|
||||
|
||||
#
|
||||
# End of "$Id: cups.list 835 1999-12-29 17:27:56Z $".
|
||||
# End of "$Id: cups.list 775 1999-11-04 13:35:01Z mike $".
|
||||
#
|
||||
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups.spec 835 1999-12-29 17:27:56Z $"
|
||||
# "$Id: cups.spec 775 1999-11-04 13:35:01Z mike $"
|
||||
#
|
||||
# RPM "spec" file for the Common UNIX Printing System (CUPS).
|
||||
#
|
||||
@@ -26,11 +26,11 @@
|
||||
|
||||
Summary: Common Unix Printing System
|
||||
Name: cups
|
||||
Version: 1.0.4
|
||||
Version: 1.0.2
|
||||
Release: 0
|
||||
Copyright: GPL
|
||||
Group: System Environment/Daemons
|
||||
Source: ftp://ftp.easysw.com/pub/cups/1.0.4/cups-1.0.4-source.tar.gz
|
||||
Source: ftp://ftp.easysw.com/pub/cups/1.0.2/cups-1.0.2-source.tar.gz
|
||||
Url: http://www.cups.org
|
||||
Packager: Michael Sweet <mike@easysw.com>
|
||||
Vendor: Easy Software Products
|
||||
@@ -130,5 +130,5 @@ rm -rf $RPM_BUILD_ROOT
|
||||
/usr/include/cups/*
|
||||
|
||||
#
|
||||
# End of "$Id: cups.spec 835 1999-12-29 17:27:56Z $".
|
||||
# End of "$Id: cups.spec 775 1999-11-04 13:35:01Z mike $".
|
||||
#
|
||||
|
||||
@@ -68,7 +68,6 @@ install: all
|
||||
-$(MKDIR) $(LIBDIR)
|
||||
$(CP) $(LIBCUPS) $(LIBDIR)
|
||||
if test $(LIBCUPS) != "libcups.a"; then \
|
||||
$(RM) `basename $(LIBCUPS) .1`; \
|
||||
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1`; \
|
||||
fi
|
||||
|
||||
|
||||
+1
-5
@@ -64,7 +64,7 @@ LIB32=link.exe -lib
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\visualc" /I ".." /I "../visualc" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\visualc" /I ".." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -129,10 +129,6 @@ SOURCE=.\raster.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\snprintf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\string.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
+3
-12
@@ -21,8 +21,8 @@
|
||||
"Copyright 1993-1999 by Easy Software Products, All Rights Reserved.",
|
||||
"General",
|
||||
"Printer",
|
||||
"Image",
|
||||
"HP-GL/2",
|
||||
"Image Options",
|
||||
"HP-GL/2 Options",
|
||||
"Extra",
|
||||
"Document",
|
||||
"Other",
|
||||
@@ -82,7 +82,7 @@
|
||||
"Stopped",
|
||||
"All",
|
||||
"Odd",
|
||||
"Even",
|
||||
"Even Pages",
|
||||
"Darker Lighter",
|
||||
"Media Size",
|
||||
"Media Type",
|
||||
@@ -99,15 +99,6 @@
|
||||
"Pending",
|
||||
"Output Mode",
|
||||
"Resolution",
|
||||
"Text",
|
||||
"Pretty Print",
|
||||
"Margins",
|
||||
"Left",
|
||||
"Right",
|
||||
"Bottom",
|
||||
"Top",
|
||||
"Filename(s)",
|
||||
"Print",
|
||||
"400 Your browser sent a request that this server could not understand.",
|
||||
"This server could not verify that you are authorized to access the resource.",
|
||||
"You must pay to access this server.",
|
||||
|
||||
+3
-28
@@ -329,11 +329,7 @@ httpReconnect(http_t *http) /* I - HTTP data */
|
||||
|
||||
if ((http->fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
||||
{
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
http->error = WSAGetLastError();
|
||||
#else
|
||||
http->error = errno;
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
http->status = HTTP_ERROR;
|
||||
return (-1);
|
||||
}
|
||||
@@ -358,11 +354,7 @@ httpReconnect(http_t *http) /* I - HTTP data */
|
||||
if (connect(http->fd, (struct sockaddr *)&(http->hostaddr),
|
||||
sizeof(http->hostaddr)) < 0)
|
||||
{
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
http->error = WSAGetLastError();
|
||||
#else
|
||||
http->error = errno;
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
http->status = HTTP_ERROR;
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -755,11 +747,7 @@ httpRead(http_t *http, /* I - HTTP data */
|
||||
if (bytes > 0)
|
||||
http->data_remaining -= bytes;
|
||||
else if (bytes < 0)
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
http->error = WSAGetLastError();
|
||||
#else
|
||||
http->error = errno;
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
|
||||
if (http->data_remaining == 0)
|
||||
{
|
||||
@@ -788,8 +776,9 @@ httpWrite(http_t *http, /* I - HTTP data */
|
||||
const char *buffer, /* I - Buffer for data */
|
||||
int length) /* I - Number of bytes to write */
|
||||
{
|
||||
int tbytes, /* Total bytes sent */
|
||||
bytes; /* Bytes sent */
|
||||
int tbytes, /* Total bytes sent */
|
||||
bytes; /* Bytes sent */
|
||||
char len[32]; /* Length string */
|
||||
|
||||
|
||||
if (http == NULL || buffer == NULL)
|
||||
@@ -890,11 +879,7 @@ httpGets(char *line, /* I - Line to read into */
|
||||
* Pre-scan the buffer and see if there is a newline in there...
|
||||
*/
|
||||
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
WSASetLastError(0);
|
||||
#else
|
||||
errno = 0;
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
|
||||
do
|
||||
{
|
||||
@@ -919,15 +904,6 @@ httpGets(char *line, /* I - Line to read into */
|
||||
* Nope, can't get a line this time...
|
||||
*/
|
||||
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
if (WSAGetLastError() != http->error)
|
||||
{
|
||||
http->error = WSAGetLastError();
|
||||
continue;
|
||||
}
|
||||
|
||||
DEBUG_printf(("httpGets(): recv() error %d!\n", WSAGetLastError()));
|
||||
#else
|
||||
if (errno != http->error)
|
||||
{
|
||||
http->error = errno;
|
||||
@@ -935,7 +911,6 @@ httpGets(char *line, /* I - Line to read into */
|
||||
}
|
||||
|
||||
DEBUG_printf(("httpGets(): recv() error %d!\n", errno));
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "string.h"
|
||||
#include <string.h>
|
||||
|
||||
#include "ipp.h"
|
||||
#include "debug.h"
|
||||
|
||||
@@ -141,15 +141,6 @@ typedef enum /**** Message Indices ****/
|
||||
CUPS_MSG_PENDING,
|
||||
CUPS_MSG_OUTPUT_MODE,
|
||||
CUPS_MSG_RESOLUTION,
|
||||
CUPS_MSG_TEXT,
|
||||
CUPS_MSG_PRETTYPRINT,
|
||||
CUPS_MSG_MARGINS,
|
||||
CUPS_MSG_LEFT,
|
||||
CUPS_MSG_RIGHT,
|
||||
CUPS_MSG_BOTTOM,
|
||||
CUPS_MSG_TOP,
|
||||
CUPS_MSG_FILENAME,
|
||||
CUPS_MSG_PRINT,
|
||||
CUPS_MSG_HTTP_BASE = 200,
|
||||
CUPS_MSG_HTTP_END = 505,
|
||||
CUPS_MSG_MAX
|
||||
|
||||
@@ -287,6 +287,7 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
|
||||
{
|
||||
int i; /* Looping variables */
|
||||
ppd_group_t *g; /* Current group */
|
||||
ppd_option_t *o; /* PageSize option */
|
||||
|
||||
|
||||
if (ppd == NULL)
|
||||
|
||||
+12
-12
@@ -85,30 +85,30 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
|
||||
|
||||
if (strcasecmp(units, "in") == 0)
|
||||
{
|
||||
ppd->sizes[i].width = w * 72.0f;
|
||||
ppd->sizes[i].length = l * 72.0f;
|
||||
ppd->sizes[i].width = w * 72.0;
|
||||
ppd->sizes[i].length = l * 72.0;
|
||||
ppd->sizes[i].left = ppd->custom_margins[0];
|
||||
ppd->sizes[i].bottom = ppd->custom_margins[1];
|
||||
ppd->sizes[i].right = w * 72.0f - ppd->custom_margins[2];
|
||||
ppd->sizes[i].top = l * 72.0f - ppd->custom_margins[3];
|
||||
ppd->sizes[i].right = w * 72.0 - ppd->custom_margins[2];
|
||||
ppd->sizes[i].top = l * 72.0 - ppd->custom_margins[3];
|
||||
}
|
||||
else if (strcasecmp(units, "cm") == 0)
|
||||
{
|
||||
ppd->sizes[i].width = w / 2.54f * 72.0f;
|
||||
ppd->sizes[i].length = l / 2.54f * 72.0f;
|
||||
ppd->sizes[i].width = w * 2.54 * 72.0;
|
||||
ppd->sizes[i].length = l * 2.54 * 72.0;
|
||||
ppd->sizes[i].left = ppd->custom_margins[0];
|
||||
ppd->sizes[i].bottom = ppd->custom_margins[1];
|
||||
ppd->sizes[i].right = w / 2.54f * 72.0f - ppd->custom_margins[2];
|
||||
ppd->sizes[i].top = l / 2.54f * 72.0f - ppd->custom_margins[3];
|
||||
ppd->sizes[i].right = w * 2.54 * 72.0 - ppd->custom_margins[2];
|
||||
ppd->sizes[i].top = l * 2.54 * 72.0 - ppd->custom_margins[3];
|
||||
}
|
||||
else if (strcasecmp(units, "mm") == 0)
|
||||
{
|
||||
ppd->sizes[i].width = w / 25.4f * 72.0f;
|
||||
ppd->sizes[i].length = l / 25.4f * 72.0f;
|
||||
ppd->sizes[i].width = w * 25.4 * 72.0;
|
||||
ppd->sizes[i].length = l * 25.4 * 72.0;
|
||||
ppd->sizes[i].left = ppd->custom_margins[0];
|
||||
ppd->sizes[i].bottom = ppd->custom_margins[1];
|
||||
ppd->sizes[i].right = w / 25.4f * 72.0f - ppd->custom_margins[2];
|
||||
ppd->sizes[i].top = l / 25.4f * 72.0f - ppd->custom_margins[3];
|
||||
ppd->sizes[i].right = w * 25.4 * 72.0 - ppd->custom_margins[2];
|
||||
ppd->sizes[i].top = l * 25.4 * 72.0 - ppd->custom_margins[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+2
-2
@@ -674,9 +674,9 @@ ppdOpen(FILE *fp) /* I - File to read from */
|
||||
option = NULL;
|
||||
}
|
||||
else if (strcmp(keyword, "MaxMediaWidth") == 0)
|
||||
ppd->custom_max[0] = (float)atof(string);
|
||||
ppd->custom_max[0] = atof(string);
|
||||
else if (strcmp(keyword, "MaxMediaHeight") == 0)
|
||||
ppd->custom_max[1] = (float)atof(string);
|
||||
ppd->custom_max[1] = atof(string);
|
||||
else if (strcmp(keyword, "ParamCustomPageSize") == 0)
|
||||
{
|
||||
if (strcmp(name, "Width") == 0)
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /I "../visualc" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /I "../visualc" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
||||
+17
-49
@@ -293,11 +293,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
|
||||
}
|
||||
else if (status == HTTP_ERROR)
|
||||
{
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
if (http->error != WSAENETDOWN && http->error != WSAENETUNREACH)
|
||||
#else
|
||||
if (http->error != ENETDOWN && http->error != ENETUNREACH)
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
continue;
|
||||
else
|
||||
break;
|
||||
@@ -371,7 +367,6 @@ cupsGetClasses(char ***classes) /* O - Classes */
|
||||
*response; /* IPP Response */
|
||||
ipp_attribute_t *attr; /* Current attribute */
|
||||
cups_lang_t *language; /* Default language */
|
||||
char **temp; /* Temporary pointer */
|
||||
|
||||
|
||||
/*
|
||||
@@ -397,10 +392,10 @@ cupsGetClasses(char ***classes) /* O - Classes */
|
||||
language = cupsLangDefault();
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
@@ -409,39 +404,26 @@ cupsGetClasses(char ***classes) /* O - Classes */
|
||||
n = 0;
|
||||
*classes = NULL;
|
||||
|
||||
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
|
||||
if ((response = cupsDoRequest(cups_server, request, "/classes/")) != NULL)
|
||||
{
|
||||
last_error = response->request.status.status_code;
|
||||
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
if (attr->name != NULL &&
|
||||
strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
if (strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
attr->value_tag == IPP_TAG_NAME)
|
||||
{
|
||||
if (n == 0)
|
||||
temp = malloc(sizeof(char *));
|
||||
*classes = malloc(sizeof(char *));
|
||||
else
|
||||
temp = realloc(*classes, sizeof(char *) * (n + 1));
|
||||
*classes = realloc(*classes, sizeof(char *) * (n + 1));
|
||||
|
||||
if (temp == NULL)
|
||||
if (*classes == NULL)
|
||||
{
|
||||
/*
|
||||
* Ran out of memory!
|
||||
*/
|
||||
|
||||
while (n > 0)
|
||||
{
|
||||
n --;
|
||||
free((*classes)[n]);
|
||||
}
|
||||
|
||||
free(*classes);
|
||||
ippDelete(response);
|
||||
return (0);
|
||||
}
|
||||
|
||||
*classes = temp;
|
||||
temp[n] = strdup(attr->values[0].string.text);
|
||||
(*classes)[n] = strdup(attr->values[0].string.text);
|
||||
n ++;
|
||||
}
|
||||
|
||||
@@ -664,7 +646,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
|
||||
*response; /* IPP Response */
|
||||
ipp_attribute_t *attr; /* Current attribute */
|
||||
cups_lang_t *language; /* Default language */
|
||||
char **temp; /* Temporary pointer */
|
||||
|
||||
|
||||
/*
|
||||
@@ -690,10 +671,10 @@ cupsGetPrinters(char ***printers) /* O - Printers */
|
||||
language = cupsLangDefault();
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
@@ -702,39 +683,26 @@ cupsGetPrinters(char ***printers) /* O - Printers */
|
||||
n = 0;
|
||||
*printers = NULL;
|
||||
|
||||
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
|
||||
if ((response = cupsDoRequest(cups_server, request, "/printers/")) != NULL)
|
||||
{
|
||||
last_error = response->request.status.status_code;
|
||||
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
if (attr->name != NULL &&
|
||||
strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
if (strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
attr->value_tag == IPP_TAG_NAME)
|
||||
{
|
||||
if (n == 0)
|
||||
temp = malloc(sizeof(char *));
|
||||
*printers = malloc(sizeof(char *));
|
||||
else
|
||||
temp = realloc(*printers, sizeof(char *) * (n + 1));
|
||||
*printers = realloc(*printers, sizeof(char *) * (n + 1));
|
||||
|
||||
if (temp == NULL)
|
||||
if (*printers == NULL)
|
||||
{
|
||||
/*
|
||||
* Ran out of memory!
|
||||
*/
|
||||
|
||||
while (n > 0)
|
||||
{
|
||||
n --;
|
||||
free((*printers)[n]);
|
||||
}
|
||||
|
||||
free(*printers);
|
||||
ippDelete(response);
|
||||
return (0);
|
||||
}
|
||||
|
||||
*printers = temp;
|
||||
temp[n] = strdup(attr->values[0].string.text);
|
||||
(*printers)[n] = strdup(attr->values[0].string.text);
|
||||
n ++;
|
||||
}
|
||||
|
||||
@@ -1026,7 +994,7 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
|
||||
if ((tmpdir = getenv("TMPDIR")) == NULL)
|
||||
tmpdir = "/var/tmp";
|
||||
|
||||
if ((int)(strlen(tmpdir) + 8) > len)
|
||||
if ((strlen(tmpdir) + 8) > len)
|
||||
{
|
||||
/*
|
||||
* The specified directory exceeds the size of the buffer; default it...
|
||||
|
||||
+3
-12
@@ -41,8 +41,8 @@ include ../Makedefs
|
||||
# Document files...
|
||||
#
|
||||
|
||||
DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml spm.shtml \
|
||||
ssr.shtml stp.shtml sum.shtml
|
||||
DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml ssr.shtml \
|
||||
stp.shtml sum.shtml
|
||||
DOCIMAGES = images/cups-block-diagram.gif images/cups-large.gif \
|
||||
images/cups-medium.gif images/cups-small.gif
|
||||
WEBPAGES = cups.css cupsdoc.css index.html documentation.html
|
||||
@@ -81,8 +81,7 @@ install:
|
||||
$(CP) $(DOCIMAGES) $(DATADIR)/doc/images
|
||||
|
||||
#
|
||||
# The overview, admin manual, programmers manual, and users manual get
|
||||
# special attention...
|
||||
# The overview, admin guide, and user's guide get special attention...
|
||||
#
|
||||
|
||||
overview.pdf: overview.html
|
||||
@@ -97,14 +96,6 @@ sam.pdf: sam.shtml
|
||||
htmldoc --title images/cups-large.gif --duplex --compression=9 \
|
||||
--jpeg -f $@ $<
|
||||
|
||||
spm.html: spm.shtml
|
||||
echo Formatting $@...
|
||||
htmldoc --title images/cups-large.gif -f $@ $<
|
||||
spm.pdf: spm.shtml
|
||||
echo Formatting $@...
|
||||
htmldoc --title images/cups-large.gif --duplex --compression=9 \
|
||||
--jpeg -f $@ $<
|
||||
|
||||
sum.html: sum.shtml
|
||||
echo Formatting $@...
|
||||
htmldoc --title images/cups-large.gif -f $@ $<
|
||||
|
||||
+116
-218
@@ -1,213 +1,111 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>CUPS Configuration Management Plan</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-CMP-1.0">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
H1 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H2 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H3 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H4 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H5 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H6 { font-family: sans-serif; font-size: 20.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><H1>CUPS Configuration Management Plan</H1></A><BR>
|
||||
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Configuration Management Plan</H1></A><BR>
|
||||
CUPS-CMP-1.0<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-1999, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
<HR>
|
||||
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
|
||||
<H1 ALIGN=CENTER><A NAME=CONTENTS>Table of Contents</A></H1>
|
||||
<BR>
|
||||
<BR><B><A HREF="#1">1 Scope</A></B>
|
||||
<BR><B><A HREF=#1>1 Scope</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">1.1 Identification</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
|
||||
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
|
||||
<LI><A HREF=#1_1>1.1 Identification</A></LI>
|
||||
<LI><A HREF=#1_2>1.2 System Overview</A></LI>
|
||||
<LI><A HREF=#1_3>1.3 Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">2 References</A></B>
|
||||
<B><A HREF=#2>2 References</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
|
||||
<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#3">3 File Management</A></B>
|
||||
<B><A HREF=#3>3 File Management</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1">3.1 Directory Structure</A></LI>
|
||||
<LI><A HREF="#3_2">3.2 Source Files</A></LI>
|
||||
<LI><A HREF="#3_3">3.3 Configuration Management</A></LI>
|
||||
<LI><A HREF=#3_1>3.1 Directory Structure</A></LI>
|
||||
<LI><A HREF=#3_2>3.2 Source Files</A></LI>
|
||||
<LI><A HREF=#3_3>3.3 Configuration Management</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#4">4 Trouble Report Processing</A></B>
|
||||
<B><A HREF=#4>4 Trouble Report Processing</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#4_1">4.1 Classification</A></LI>
|
||||
<LI><A HREF="#4_2">4.2 Identification</A></LI>
|
||||
<LI><A HREF="#4_3">4.3 Correction</A></LI>
|
||||
<LI><A HREF="#4_4">4.4 Notification</A></LI>
|
||||
<LI><A HREF=#4_1>4.1 Classification</A></LI>
|
||||
<LI><A HREF=#4_2>4.2 Identification</A></LI>
|
||||
<LI><A HREF=#4_3>4.3 Correction</A></LI>
|
||||
<LI><A HREF=#4_4>4.4 Notification</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#5">5 Software Releases</A></B>
|
||||
<B><A HREF=#5>5 Software Releases</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#5_1">5.1 Version Numbering</A></LI>
|
||||
<LI><A HREF="#5_2">5.2 Generation</A></LI>
|
||||
<LI><A HREF="#5_3">5.3 Testing</A></LI>
|
||||
<LI><A HREF="#5_4">5.4 Release</A></LI>
|
||||
<LI><A HREF=#5_1>5.1 Version Numbering</A></LI>
|
||||
<LI><A HREF=#5_2>5.2 Generation</A></LI>
|
||||
<LI><A HREF=#5_3>5.3 Testing</A></LI>
|
||||
<LI><A HREF=#5_4>5.4 Release</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#6">A Glossary</A></B>
|
||||
<B><A HREF=#6>A Glossary</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#6_1">A.1 Terms</A></LI>
|
||||
<LI><A HREF="#6_2">A.2 Acronyms</A></LI>
|
||||
<LI><A HREF=#6_1>A.1 Terms</A></LI>
|
||||
<LI><A HREF=#6_2>A.2 Acronyms</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#7">B Coding Requirements</A></B>
|
||||
<B><A HREF=#7>B Coding Requirements</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#7_1">B.1 Source Files</A></LI>
|
||||
<LI><A HREF=#7_1>B.1 Source Files</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_1_1">B.1.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_1_2">B.1.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_1_1>B.1.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_1_2>B.1.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_2">B.2 Functions</A></LI>
|
||||
<LI><A HREF=#7_2>B.2 Functions</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_2_1">B.2.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_2_2">B.2.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_2_1>B.2.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_2_2>B.2.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_3">B.3 Methods</A></LI>
|
||||
<LI><A HREF=#7_3>B.3 Methods</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_3_1">B.3.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_3_2">B.3.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_3_1>B.3.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_3_2>B.3.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_4">B.4 Variables</A></LI>
|
||||
<LI><A HREF=#7_4>B.4 Variables</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_4_1">B.4.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_4_2">B.4.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_4_1>B.4.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_4_2>B.4.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_5">B.5 Types</A></LI>
|
||||
<LI><A HREF=#7_5>B.5 Types</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_5_1">B.5.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_5_2">B.5.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_5_1>B.5.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_5_2>B.5.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_6">B.6 Structures</A></LI>
|
||||
<LI><A HREF=#7_6>B.6 Structures</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_6_1">B.6.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_6_2">B.6.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_6_1>B.6.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_6_2>B.6.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_7">B.7 Classes</A></LI>
|
||||
<LI><A HREF=#7_7>B.7 Classes</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_7_1">B.7.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_7_2">B.7.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_7_1>B.7.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_7_2>B.7.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_8">B.8 Constants</A></LI>
|
||||
<LI><A HREF=#7_8>B.8 Constants</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_8_1">B.8.1 Naming</A></LI>
|
||||
<LI><A HREF="#7_8_2">B.8.2 Documentation</A></LI>
|
||||
<LI><A HREF=#7_8_1>B.8.1 Naming</A></LI>
|
||||
<LI><A HREF=#7_8_2>B.8.2 Documentation</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#7_9">B.9 Code</A></LI>
|
||||
<LI><A HREF=#7_9>B.9 Code</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_9_1">B.9.1 Documentation</A></LI>
|
||||
<LI><A HREF="#7_9_2">B.9.2 Style</A></LI>
|
||||
<LI><A HREF=#7_9_1>B.9.1 Documentation</A></LI>
|
||||
<LI><A HREF=#7_9_2>B.9.2 Style</A></LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<B><A HREF="#8">C Software Trouble Report Form</A></B><HR>
|
||||
GIF89a¯ÿòÌÌÌ™™™fff333ÿÿÿÿÿÿÿÿÿ!ù,¯ÿBþXºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª2€0p,Ïtmßx®ï
|
||||
|
||||
<!--=�•pH,��Ö«Çl:ŸÐ¨”ù ¯Ø¬ÖXN¿à°xL~¬Û´zmxËð¸|N§Ùø¼(Pïûÿ€�bwz…jn‚‰Š‹Œ�9„†‘!-->
|
||||
;±Ýíˆndý !¸ ž³wà…MƒƒY~¿{,gÚ\‚äé
|
||||
Œ×Ø(tÙî!Ï=Ñ.ûz¯�áÑŸ:ì;Ã9qöíÉë]/¿ºÉ¤Et/†'Îþt9ÀØ–ž_ÙÇ\|W•wArö¸Ý�2Ô×
|
||||
tN°0Tï}�¡û‰$!‚yMxî)ˆš‰Ô�ø@nB°U½ÊwE„§!ŠF H L8B
|
||||
c‰;ždŠ-æDVWdг€h±äÚ“P¶%#(4Fiå•Ï\hŠ:�Re!\ÒÄ—X^¦%€¥À-$E€Ö/úHŽšlââöÌQX
|
||||
|
||||
<!--äÇ"iL :a7‚]›0IZ¡YØø¡‡D}¤–Uj±á
|
||||
^â䙿`Ú@¦5b|šà�«Á±§3Ñ KwÔ\ªB¨±H)+�=¡Ó©"
|
||||
©¢ 8uƒ†¸öŠD§•lþ:„d�RX�ilÌ:Ë!´;¹t+„e<
|
||||
‡;øô+‚bbhaÚ0Ê6é.D™ð޹̹ñÖkoê({ï¾ü{f¿-->
|
||||
¸1Nô¯b"œŠüjåÁÂE0…È8ö5GkZ|ÒÁwt„C»ÔQSÇo6ÔÙ�[�W„$²*Ž+4Pb-8¹P1þ'8"‘ФÄ$ Cyê‘„)>ãŠtè`Ð3‡‹¾z"«rE'Âqfä°Ë
|
||||
‘qÂ\|€„Ž¡ôö»%É(.—bڽȀ�íÉ`{¬EÇ1w’ »[Hß`(B6ö�“
|
||||
†')ÊRŽÎa[�ÃrbC!Tå°Œ
|
||||
2Q·ÈHZê#–®üË/àô¯FÝê(Û²% ºXË9öÀbÁ4f.ù-oý�™XËB…�IÎÒ7¹*@ÃÓŽÍT€hà‘ÌWâ�™Ã$f:µyžn†ó†r„'té�Kv`
|
||||
Ç+dª– œ79s�ò|'=×¢Ìx¶òœÿ„¦œˆeÎ;*à$þ” IÝÆaÏ{–3ŽÅ�Á
|
||||
P“ÍS[ÙL¨3©òQ7éÆò#ãûô0F×ðsE°t§@‘ØQÜ´´ ©:3ÓRíd �¥*MITnŒ£¨H]ØQÁd
|
||||
@òþ—¬rMœŽaO
|
||||
<!--x‹ŒÖ3½4 °XT'ª®ƒ:T£uéWeºádËeú¸è¬Ù7
|
||||
|
||||
ëÒÏ;„sœåµ7m(ýПtl¤RV�)-->
|
||||
rë^yÀ·(¸îéêû$uDòrã/a,I.°ÙUÀœb hˆ`�¾B ë"
|
||||
Ü`HØxȸo1þ[á\8f^æ|\ý‚¢¢zø0(ˆ\ {ƒÄgäÞõ€çâ§Á˜0*\³n¼‹m¶/Äeª±ÿ†ì
|
||||
Ç,½DN2€œº+ùÉ|í0L¡Le*ð¸Ã>­2ëf,eIPOËÅàr—±”80SAŸcFªatç»ãy¤¸ršçÌ¡5ïoõËsžï|¿8˙Φ¬þ,ï¼èà)ÁÌ;øk¡—†dDpÑòø2¢q�fHã!Ë“~ÙŸ-í
|
||||
'g:,æ4y?ýäP‹Z›ž#ÏÕ´Î5AK‰k]ûš›ÒKõ¯‡më€õzØÈƫ؎Ý>B{PЪ.6hf]º?©ÌIŽuO„í�M‚ÌÇÜcµ3˜
|
||||
61‹NÒ[†W£ ¦m¿­{ÂPâvζKnUˆ[ ònĽ±÷n?l:Áž3ušë�¬sP[ÿnn¾çP�…WõÔFj[Â÷
|
||||
¹vÏ™à‰˜xú�'ˆ£ÀÀ†p¸4.êãKÇ¿ÂÁ±o§¢ü"Á|Nk`îʘ
|
||||
<!--•¤7 yþ D-->
|
||||
�
|
||||
jl©ÌuˆËi™0pmC´«+‰÷6¤2­éÏe`(ŽJ]¥iõð3ƒØí"p|ª!:qøFس 6£
|
||||
@­,þŠqüã��oÌÇ®ž�ÖüV�“¶QÇ›Evî¹²É8ÙªS"æÀç‡x± àþ‡�>—Iãg
|
||||
ïÝ>Y‰çN80æ§ ±¾GLLìÕµ…(1Þ¼!8}þ¬“*…ª‰Ùì:e»´œ
|
||||
ª¿ên_6ÂÃSÀ`eG;Ö„CƒCcˆ¿‡4¸yeî¯Í)oøByRm½0?íLîÅ`QÿjÓÙ/ºôÓN|Ý
|
||||
<!--â9ço‘SŽà•?œýáu¿þá¯~!ÒŸ¿ÍÏüýÏ�Iw1ßþZÈN¥Ex£&\(¤á[ɤ€v2€WW-->
|
||||
|
||||
þÙAÜŒÁ¸D5©D a�ævx ?жx°DM@•!h‰àÈ€Ž§®
|
||||
• �á×B`ð¤ªE?›“”Þdƒ"8$Ý`Ki0…OðƒnΓ±µvtžè€I([,¹Ndɨh\'6X
|
||||
�Pã—Š‰Éøt ¢‘¥�˜¬è €ˆ†Ky™FˆŒë`š”yƒ„¨š €š‰ƒM©‡øFQhY„
|
||||
9¶X¯×–í4š¤™Y\)"¹AN]‰xéz÷Gq07�)�©ñ™•Y€r°ŒŽi‹ �z ™ÇäFÍÉT�–ù›
|
||||
ËŽC œwI›üX]‹¹\ëY]þf lïYbj8ŸÈuœbŸÍÅtú©fÞןfBI—“*øé:ÛØUj Ò
|
||||
ˆõ¹ Õp $(~ ¡Ú ¡gù{îp�ZI?¡ƒîÀv:“a¦˜6¢§Ô]Ý‘(ªê)!ŸÚ¢:
|
||||
jwµ¡4ÚvíHÛǘ9ºXhó•üù£¥Á¢VÉ{Dº2š‰(°¤3š¤a÷ +У¥“p¢þò4Vº—
|
||||
E´¥è¤k°7ºhT*€¿èw`ÚžiÄ …S¦Æ¦mê Nêƒ#ú¢f€ xê†ý
|
||||
8z©7�uÚp{Ú=~]7`«h‡ÚsÚg:…zd˜ó§ÎA-vþAñr¦'–AÚ)9–š¢âSi;£…š 1�ªo"ª
|
||||
¦J;“º rº8Ui|é>¡Úœú
|
||||
<!--pv³2<ƒj£·«É¦kÉ 1Š:¬Èe ”«ÉÚlÑ•ªÍZn¯Š2Ì‹s«ÁÖÚàé¨Ûº=¤zŽŸú6áUä
|
||||
Øš¨¿újá
|
||||
¦0®éJ«
|
||||
¯NÕ井öÐVeζ¯õbm¶7ù´Ž-->
|
||||
“ë¥Dfný2»ƒ–0j«�®»ºK;zë¢Íö»—!µ—S»³r>K+6ˆ‹¨XÒ»; CÈ
|
||||
8Ê;¢»ÃÛ/Œ‹¥ž!¬s½VR½óõÏ‹Oâ[/çK¨þ˜Ñ:Í‹\Ý+ Sc:ïËž’º¶ë9Æ»
|
||||
<!--ëSç�½¤tj ½YUÀœãÀ©%
|
||||
Ìró)Á0¨§—³½Ç…Á¬Ì¤LÛ6øK!<Á:Àê*ª…ÃÁî…Á.‡²
|
||||
¥¼‘z Âä ¦ýËÀ~¸7<,´GóÃý‹ÂöêÀe:Ä¢‰°ë«£m£,žyAI¡…˜Q!8-->
|
||||
ô 8ly$
|
||||
8©ÙÅmX2Ùh>—?¯!šHüÁ^LsP,Ÿ«Y‹âá¿ÿtšì‚£Y
|
||||
r¦Éš¥9ÇjžÄ8-ÆÇŒ¶iêPÂbA˜ù‰Ã¸š»³7RœCWRoìŠå MŒŠ�”åt™ Œ›�réÉq
|
||||
<!--Zva&‹Z¤jzÊŠ¬‡7èV)“‹|›ká�!¦*€Á¶öÄ84’Wž¶L�Êñ½Fª6ÄOq̰Š}Ŭ—|žÎ|4!ÍAh+è•L¢
|
||||
%|‹Û¬Å$-->
|
||||
|
||||
å�>}�Lê}ÎǨ 5:àŒ|�"þÇwÐsøæ�Nΰ¹#R>~-N‰®èƒ ßcðÞÚÎÑ¥®åGÎâ툉Ýè*‚¸
|
||||
=‚ž ºëâ…­ëÀ>Û·žën^žmèÊëð¼ã>å×Λ«}êØ÷
|
||||
“�Œ¬ËI�Á·AÔNÍëv>]t.âÚLЫþíï¾ñnäÖÜæs¹¿±â°+†
|
||||
¬UØïî•.ç¬ÎìÍ.è´ÞŠG=ðù��‚§ž¯”ë^äÛ®êh-‹ê�ê!i!�ÕvMíiªîþ¾òîá/þÑ-OÖGð,oñº!å’gOâ P�OìOôBþÈàhâ+?ï>ßÊVHÀsaõ™€õ$óSîõ—»�ó8.žß¹
|
||||
~áßÈ©ö»]ò3ëÆt_÷[ïôb¯ç‚Ü÷Õ«@u™ð;zܘ‘Ü@óŽ2’?ùƒ¸ÙlùF ¶™¯ù›N ž0œú£¶¤ÿ0#9:�ß§½ž©Ÿ\#ÃÙæó2é+û‚ÀÓ¸�_äM/ÓtaÚý3”]Ù«¿¸iîaF>ª�}ŒØvÍïMÍ÷Ðëä©îrÜŒöqñ_ÀüªrâF®ò
|
||||
ýþ¸—hT_ã�4sx”ýÝî)ç.Qgû�àŸÏ%ì‹}i´ASû|þð@QÜ
|
||||
$J9€»-̱÷Üô�MØ‘hZ˜¦:°œ*ÏlßxÒ|ϼ¡ÅLÀ� ¬Áfù9BÑdìÁ|«VV„¢�“énKv
|
||||
<!--u贮̮iiçͦt›šV/.²ê}mywu#|Yc‚X|jŽ�x‹dE“)0U
|
||||
�’ T–<W€o zbQ`F�¥2›�³:�°Ctª·‰!™²*¨…º»¢~аz¬†Á¯Ä‡´Õ޶Ó(iÃm²F›ÍÚhÜޓơօäc|ØËUÒÙþ²ëøçõƒ³ÜØ<î™w‰Ö¿Eéhä›@ðÂ
|
||||
-->
|
||||
|
||||
kB�_ƒg 3ʳ8#Þ¬L=0;J¤äÈ@¤F|'i~±© žaÊŠÆg;d*3²”©bPÏ¢TäHô¦?�[†
|
||||
ÄäƒhN6ZM¢D:c*BR!$±ckƒ’V­-uÛ@[øp„Ÿ]¼8ö-1{TήWÏ2ñ� Šp=¸q«Ñ½es.‰„4+#Ëe¦¥W5µekxr䛓/XÍš5Iǃ=kÝúµì˰û�N–2q�Å[r¦yZ£QŽ›ÇÞ�txŠäcK—Ííɹ
|
||||
iþ¡9¼m1oñ¢©/²8îìSté4l’Wm¾9óéÖÛÐãã{{üzÞ¿çøêöÞzà}œàL¨ "˜
|
||||
ÄÐsà¶PGLUúå`MÞ ¡†9¬§Û{pX¸¡wÚw߇¡¨ ‰í "M�UXNx
|
||||
<!--É……¡×ƒ��à¨âŠêÄõ#ƒå“Ž:Å(ã4Ö¸Až˜�:@Ùw¸ YÝ‹tIã’Ö”˜$…a(å‹X¥F7×IÈbŠ["Y€M縹K~`¶Øä-->
|
||||
+l´á¦
|
||||
j²F:Á.êÆÛj¤³Búî ¼Ê«/£Ö’[н#í+ð¥ænJÞ¸«æ;ð©õ‹¨ _ËðÄŠÒ»*º?
|
||||
ƒÂwœ�Ãyzh±°Øzl2,#oZ2È›r|òË‚°¼$Ç)ë
|
||||
óÍÙÔ,éfs€1Î@/øîÏPõÌiÐH·�ðÃBkLtÒP¯bôS;NÝWÔXÏ
|
||||
ó’dlÍtÖ`�°tžOc óÅa§}AÄ›²1vËjÇmþu+`ÍÍÁ·qwü6˜‚ì½sÞXŸ�¨Ë$xM6àP³-iÉSÚ½AÙˆïë84–ø=xä8^!ä*L>Þ˜ƒk¹Œ({Iè�^!ḘN$ê
|
||||
«®ç!ºû‚ÿÝ ë¯ßoî—Oü¨¾ÿî9í]ñÞ{ñÙÊ®ãlhŽ(èÌÃê¼~ÔS¢|öÕŸzýw¬Ë§|øÝ—*½ŒÈ×­|úåwzþæ“)Nrû¾Ê?*ô¥
|
||||
¿*÷ô7ú½~Múúú÷ª÷Ɉ•S3x*ûí�P”ùH£�°°àó(è¾í-Jƒú™
|
||||
åAF�{#\”g…Áœ)�!),Ô #ÓÂǼ�jþ1œŒþh©²K„9$ƒYè)Ž ˆA È
|
||||
—‡)#1‰Óp"˜ð'Ã%n‰P´‡Ù¨-‹1³¢^\%ƈÔp„CLÖ5Ã
|
||||
<!--a‘�^œßâx¯
|
||||
€±peŒ-->
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<B><A HREF=#8>C Software Trouble Report Form</A></B><HR>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
This configuration management plan document provides the guidelines
|
||||
for development and maintainance of the Common UNIX Printing System
|
||||
("CUPS") Version 1.0 software.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<H2><A NAME=1_2>1.2 System Overview</A></H2>
|
||||
The Common UNIX Printing System provides a portable printing layer for
|
||||
UNIX® operating systems. It has been developed by Easy Software
|
||||
Products to promote a standard printing solution for all UNIX vendors
|
||||
@@ -223,7 +121,7 @@ applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 4.03) and an image file RIP that
|
||||
can be used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<H2><A NAME=1_3>1.3 Document Overview</A></H2>
|
||||
This configuration management document is organized into the following
|
||||
sections:
|
||||
<UL>
|
||||
@@ -235,8 +133,8 @@ sections:
|
||||
<LI>A - Glossary</LI>
|
||||
<LI>B - Coding Requirements</LI>
|
||||
</UL>
|
||||
<H1><A NAME="2">2 References</A></H1>
|
||||
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
|
||||
<H1><A NAME=2>2 References</A></H1>
|
||||
<H2><A NAME=2_1>2.1 CUPS Documentation</A></H2>
|
||||
The following CUPS documentation is referenced by this document:
|
||||
<UL>
|
||||
<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan </LI>
|
||||
@@ -249,7 +147,7 @@ sections:
|
||||
<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.0.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<H2><A NAME=2_2>2.2 Other Documents</A></H2>
|
||||
The following non-CUPS documents are referenced by this document:
|
||||
<UL>
|
||||
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
|
||||
@@ -259,22 +157,22 @@ sections:
|
||||
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
|
||||
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 File Management</A></H1>
|
||||
<H2><A NAME="3_1">3.1 Directory Structure</A></H2>
|
||||
<H1><A NAME=3>3 File Management</A></H1>
|
||||
<H2><A NAME=3_1>3.1 Directory Structure</A></H2>
|
||||
Each source file shall be placed a sub-directory corresponding to the
|
||||
software sub-system it belongs to ("scheduler", "libcups", etc.) To
|
||||
remain compatible with older UNIX filesystems, directory names shall
|
||||
not exceed 16 characters in length.
|
||||
<H2><A NAME="3_2">3.2 Source Files</A></H2>
|
||||
<H2><A NAME=3_2>3.2 Source Files</A></H2>
|
||||
Source files shall be documented and formatted as described in
|
||||
Appendix B, Coding Requirements.
|
||||
<H2><A NAME="3_3">3.3 Configuration Management</A></H2>
|
||||
<H2><A NAME=3_3>3.3 Configuration Management</A></H2>
|
||||
Source files shall be placed under the control of the Concurrent
|
||||
Versions System ("CVS") software. Source files shall be "checked in"
|
||||
with each change so that modifications can be tracked.
|
||||
<P>Documentation on the CVS software is included with the whitepaper,
|
||||
"CVS II: Parallelizing Software Development". </P>
|
||||
<H1><A NAME="4">4 Trouble Report Processing</A></H1>
|
||||
<H1><A NAME=4>4 Trouble Report Processing</A></H1>
|
||||
A Software Trouble Report ("STR") shall be submitted every time a user
|
||||
or vendor experiences a problem with the CUPS software. Trouble reports
|
||||
are maintained in a database with one of the following states:
|
||||
@@ -285,7 +183,7 @@ are maintained in a database with one of the following states:
|
||||
<LI>STR is pending (new STR or additional information available)</LI>
|
||||
</OL>
|
||||
Trouble reports shall be processed using the following steps.
|
||||
<H2><A NAME="4_1">4.1 Classification</A></H2>
|
||||
<H2><A NAME=4_1>4.1 Classification</A></H2>
|
||||
When a trouble report is received it must be classified at one of the
|
||||
following levels:
|
||||
<OL>
|
||||
@@ -301,7 +199,7 @@ following levels:
|
||||
<LI>Specific to an operating system</LI>
|
||||
<LI>Applies to all machines and operating systems</LI>
|
||||
</OL>
|
||||
<H2><A NAME="4_2">4.2 Identification</A></H2>
|
||||
<H2><A NAME=4_2>4.2 Identification</A></H2>
|
||||
Once the level and scope of the trouble report is determined the
|
||||
software sub-system(s) involved with the problem are determined. This
|
||||
may involve additional communication with the user or vendor to isolate
|
||||
@@ -309,16 +207,16 @@ the problem to a specific cause.
|
||||
<P>When the sub-system(s) involved have been identified, an engineer
|
||||
will then determine the change(s) needed and estimate the time required
|
||||
for the change(s). </P>
|
||||
<H2><A NAME="4_3">4.3 Correction</A></H2>
|
||||
<H2><A NAME=4_3>4.3 Correction</A></H2>
|
||||
Corrections are scheduled based upon the severity and complexity of
|
||||
the problem. Once all changes have been made, documented, and tested
|
||||
successfully a new software release snapshot is generated. Additional
|
||||
tests are added as necessary for proper testing of the changes.
|
||||
<H2><A NAME="4_4">4.4 Notification</A></H2>
|
||||
<H2><A NAME=4_4>4.4 Notification</A></H2>
|
||||
The user or vendor is notified when the fix is available or if the
|
||||
problem was caused by user error.
|
||||
<H1><A NAME="5">5 Software Releases</A></H1>
|
||||
<H2><A NAME="5_1">5.1 Version Numbering</A></H2>
|
||||
<H1><A NAME=5>5 Software Releases</A></H1>
|
||||
<H2><A NAME=5_1>5.1 Version Numbering</A></H2>
|
||||
CUPS uses a three-part version number separated by periods to
|
||||
represent the major, minor, and patch release numbers:
|
||||
<UL>
|
||||
@@ -363,22 +261,22 @@ numbers reset to 0:
|
||||
2.0.0 Production release of 2.0.0
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="5_2">5.2 Generation</A></H2>
|
||||
<H2><A NAME=5_2>5.2 Generation</A></H2>
|
||||
Software releases shall be generated for each successfully completed
|
||||
software trouble report. All object and executable files shall be
|
||||
deleted prior to performing a full build to ensure that source files
|
||||
are recompiled.
|
||||
<H2><A NAME="5_3">5.3 Testing</A></H2>
|
||||
<H2><A NAME=5_3>5.3 Testing</A></H2>
|
||||
Software testing shall be conducted according to the CUPS Software
|
||||
Test Plan, CUPS-STP-1.0. Failed tests cause STRs to be generated to
|
||||
correct the problems found.
|
||||
<H2><A NAME="5_4">5.4 Release</A></H2>
|
||||
<H2><A NAME=5_4>5.4 Release</A></H2>
|
||||
When testing has been completed successfully a new distribution image
|
||||
is created from the current CVS code "snapshot". No production release
|
||||
shall contain software that has not passed the appropriate software
|
||||
tests.
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="6">A Glossary</A></H1>
|
||||
<H2><A NAME="6_1">A.1 Terms</A></H2>
|
||||
<H1 TYPE=A VALUE=1><A NAME=6>A Glossary</A></H1>
|
||||
<H2><A NAME=6_1>A.1 Terms</A></H2>
|
||||
<DL>
|
||||
<DT>C </DT>
|
||||
<DD>A computer language. </DD>
|
||||
@@ -391,7 +289,7 @@ tests.
|
||||
<DT>socket </DT>
|
||||
<DD>A two-way network communications channel. </DD>
|
||||
</DL>
|
||||
<H2><A NAME="6_2">A.2 Acronyms</A></H2>
|
||||
<H2><A NAME=6_2>A.2 Acronyms</A></H2>
|
||||
<DL>
|
||||
<DT>ASCII </DT>
|
||||
<DD>American Standard Code for Information Interchange </DD>
|
||||
@@ -426,18 +324,18 @@ tests.
|
||||
<DT>TFTP </DT>
|
||||
<DD>Trivial File Transfer Protocol </DD>
|
||||
</DL>
|
||||
<H1><A NAME="7">B Coding Requirements</A></H1>
|
||||
<H1><A NAME=7>B Coding Requirements</A></H1>
|
||||
These coding requirements provide detailed information on source file
|
||||
formatting and documentation content. These guidelines shall be applied
|
||||
to all C and C++ source files provided with CUPS.
|
||||
<H2><A NAME="7_1">B.1 Source Files</A></H2>
|
||||
<H3><A NAME="7_1_1">B.1.1 Naming</A></H3>
|
||||
<H2><A NAME=7_1>B.1 Source Files</A></H2>
|
||||
<H3><A NAME=7_1_1>B.1.1 Naming</A></H3>
|
||||
All source files names shall be 16 characters or less in length to
|
||||
ensure compatibility with older UNIX filesystems. Source files
|
||||
containing functions shall have an extension of ".c" for ANSI C and
|
||||
".cpp" for C++ source files. All other "include" files shall have an
|
||||
extension of ".h".
|
||||
<H3><A NAME="7_1_2">B.1.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_1_2>B.1.2 Documentation</A></H3>
|
||||
The top of each source file shall contain a header giving the name of
|
||||
the file, the purpose or nature of the source file, the copyright and
|
||||
licensing notice, and the functions contained in the file. The file
|
||||
@@ -489,8 +387,8 @@ been lost near the end of the file:
|
||||
*/
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_2">B.2 Functions</A></H2>
|
||||
<H3><A NAME="7_2_1">B.2.1 Naming</A></H3>
|
||||
<H2><A NAME=7_2>B.2 Functions</A></H2>
|
||||
<H3><A NAME=7_2_1>B.2.1 Naming</A></H3>
|
||||
Functions with a global scope shall be capitalized ("DoThis",
|
||||
"DoThat", "DoSomethingElse", etc.) The only exception to this rule
|
||||
shall be the CUPS interface library functions which may begin with a
|
||||
@@ -498,7 +396,7 @@ prefix word in lowercase ("cupsDoThis", "cupsDoThat", etc.)
|
||||
<P>Functions with a local scope shall be declared "static" and be
|
||||
lowercase with underscores between words ("do_this", "do_that",
|
||||
"do_something_else", etc.) </P>
|
||||
<H3><A NAME="7_2_2">B.2.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_2_2>B.2.2 Documentation</A></H3>
|
||||
Each function shall begin with a comment header describing what the
|
||||
function does, the possible input limits (if any), and the possible
|
||||
output values (if any), and any special information needed:
|
||||
@@ -518,11 +416,11 @@ do_this(float x) /* I - Power value (0.0 <= x <= 1.0) */
|
||||
}
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_3">B.3 Methods</A></H2>
|
||||
<H3><A NAME="7_3_1">B.3.1 Naming</A></H3>
|
||||
<H2><A NAME=7_3>B.3 Methods</A></H2>
|
||||
<H3><A NAME=7_3_1>B.3.1 Naming</A></H3>
|
||||
Methods shall be in lowercase with underscores between words
|
||||
("do_this", "do_that", "do_something_else", etc.)
|
||||
<H3><A NAME="7_3_2">B.3.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_3_2>B.3.2 Documentation</A></H3>
|
||||
Each method shall begin with a comment header describing what the
|
||||
method does, the possible input limits (if any), and the possible
|
||||
output values (if any), and any special information needed:
|
||||
@@ -542,8 +440,8 @@ class::do_this(float x) /* I - Power value (0.0 <= x <= 1.0) */
|
||||
}
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_4">B.4 Variables</A></H2>
|
||||
<H3><A NAME="7_4_1">B.4.1 Naming</A></H3>
|
||||
<H2><A NAME=7_4>B.4 Variables</A></H2>
|
||||
<H3><A NAME=7_4_1>B.4.1 Naming</A></H3>
|
||||
Variables with a global scope shall be capitalized ("ThisVariable",
|
||||
"ThatVariable", "ThisStateVariable", etc.) The only exception to this
|
||||
rule shall be the CUPS interface library global variables which must
|
||||
@@ -554,7 +452,7 @@ possible.
|
||||
between words ("this_variable", "that_variable", etc.) Any local
|
||||
variables shared by functions within a source file shall be declared
|
||||
"static". </P>
|
||||
<H3><A NAME="7_4_2">B.4.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_4_2>B.4.2 Documentation</A></H3>
|
||||
Each variable shall be declared on a separate line and shall be
|
||||
immediately followed by a comment block describing the variable:
|
||||
<UL>
|
||||
@@ -563,12 +461,12 @@ int this_variable; /* The current state of this */
|
||||
int that_variable; /* The current state of that */
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_5">B.5 Types</A></H2>
|
||||
<H3><A NAME="7_5_1">B.5.1 Naming</A></H3>
|
||||
<H2><A NAME=7_5>B.5 Types</A></H2>
|
||||
<H3><A NAME=7_5_1>B.5.1 Naming</A></H3>
|
||||
All type names shall be lowercase with underscores between words and
|
||||
"_t" appended to the end of the name ("this_type_t", "that_type_t",
|
||||
etc.)
|
||||
<H3><A NAME="7_5_2">B.5.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_5_2>B.5.2 Documentation</A></H3>
|
||||
Each type shall have a comment block immediately before the typedef:
|
||||
<UL>
|
||||
<PRE>
|
||||
@@ -578,12 +476,12 @@ etc.)
|
||||
typedef int cups_this_type_t;
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_6">B.6 Structures</A></H2>
|
||||
<H3><A NAME="7_6_1">B.6.1 Naming</A></H3>
|
||||
<H2><A NAME=7_6>B.6 Structures</A></H2>
|
||||
<H3><A NAME=7_6_1>B.6.1 Naming</A></H3>
|
||||
All structure names shall be lowercase with underscores between words
|
||||
and "_str" appended to the end of the name ("this_struct_str",
|
||||
"that_struct_str", etc.)
|
||||
<H3><A NAME="7_6_2">B.6.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_6_2>B.6.2 Documentation</A></H3>
|
||||
Each structure shall have a comment block immediately before the
|
||||
struct and each member shall be documented in accordance with the
|
||||
variable naming policy above:
|
||||
@@ -599,11 +497,11 @@ struct cups_this_struct_str
|
||||
};
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_7">B.7 Classes</A></H2>
|
||||
<H3><A NAME="7_7_1">B.7.1 Naming</A></H3>
|
||||
<H2><A NAME=7_7>B.7 Classes</A></H2>
|
||||
<H3><A NAME=7_7_1>B.7.1 Naming</A></H3>
|
||||
All class names shall be lowercase with underscores between words
|
||||
("this_class", "that_class", etc.)
|
||||
<H3><A NAME="7_7_2">B.7.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_7_2>B.7.2 Documentation</A></H3>
|
||||
Each class shall have a comment block immediately before the class and
|
||||
each member shall be documented in accordance with the variable naming
|
||||
policy above:
|
||||
@@ -619,15 +517,15 @@ class cups_this_class
|
||||
};
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_8">B.8 Constants</A></H2>
|
||||
<H3><A NAME="7_8_1">B.8.1 Naming</A></H3>
|
||||
<H2><A NAME=7_8>B.8 Constants</A></H2>
|
||||
<H3><A NAME=7_8_1>B.8.1 Naming</A></H3>
|
||||
All constant names shall be uppercase with underscored between words
|
||||
("THIS_CONSTANT", "THAT_CONSTANT", etc.) Constants defined for the CUPS
|
||||
interface library must begin with an uppercase prefix
|
||||
("CUPS_THIS_CONSTANT", "CUPS_THAT_CONSTANT", etc.)
|
||||
<P>Typed enumerations shall be used whenever possible to allow for type
|
||||
checking by the compiler. </P>
|
||||
<H3><A NAME="7_8_2">B.8.2 Documentation</A></H3>
|
||||
<H3><A NAME=7_8_2>B.8.2 Documentation</A></H3>
|
||||
Comment blocks shall immediately follow each constant:
|
||||
<UL>
|
||||
<PRE>
|
||||
@@ -638,8 +536,8 @@ enum
|
||||
};
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_9">B.9 Code</A></H2>
|
||||
<H3><A NAME="7_9_1">B.9.1 Documentation</A></H3>
|
||||
<H2><A NAME=7_9>B.9 Code</A></H2>
|
||||
<H3><A NAME=7_9_1>B.9.1 Documentation</A></H3>
|
||||
All source code shall utilize block comments within functions to
|
||||
describe the operations being performed by a group of statements:
|
||||
<UL>
|
||||
@@ -666,8 +564,8 @@ do
|
||||
} while (i == (sizeof(array) / sizeof(array[0])));
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="7_9_2">B.9.2 Style</A></H3>
|
||||
<H4 TYPE="a">B.9.2.a Indentation</H4>
|
||||
<H3><A NAME=7_9_2>B.9.2 Style</A></H3>
|
||||
<H4 TYPE=a>B.9.2.a Indentation</H4>
|
||||
All code blocks enclosed by brackets shall begin with the opening
|
||||
brace on a new line. The code then follows starting on a new line after
|
||||
the brace and is indented 2 spaces. The closing brace is then placed on
|
||||
@@ -728,20 +626,20 @@ for (i = sizeof(array) / sizeof(array[0]) - 1; i >= 0; i --)
|
||||
array[i] = STATE_IDLE;
|
||||
</PRE>
|
||||
</UL>
|
||||
<H1 ALIGN="RIGHT"><A NAME="8">C Software Trouble Report Form</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=8>C Software Trouble Report Form</A></H1>
|
||||
<CENTER>
|
||||
<TABLE WIDTH="80%">
|
||||
<TR><TH ALIGN="RIGHT">Summary of Problem:</TH><TD ALIGN="LEFT">
|
||||
<TABLE WIDTH=80%>
|
||||
<TR><TH ALIGN=RIGHT>Summary of Problem:</TH><TD ALIGN=LEFT>
|
||||
________________________________________</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT">Problem Severity:</TH><TD ALIGN="LEFT">__1=RFE
|
||||
<TR><TH ALIGN=RIGHT>Problem Severity:</TH><TD ALIGN=LEFT>__1=RFE
|
||||
<BR>__2=Documentation-Error
|
||||
<BR>__3=Unable-to-Print-a-File
|
||||
<BR>__4=Unable-to-Print-to-a-Printer
|
||||
<BR>__5=Unable-to-Print-at-All</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT">Problem Scope:</TH><TD ALIGN="LEFT">__1=Machine
|
||||
<TR><TH ALIGN=RIGHT>Problem Scope:</TH><TD ALIGN=LEFT>__1=Machine
|
||||
__2=Operating-System __3=All</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Detailed Description of Problem:</TH><TD
|
||||
ALIGN="LEFT">________________________________________
|
||||
<TR><TH ALIGN=RIGHT VALIGN=TOP>Detailed Description of Problem:</TH><TD ALIGN=LEFT>
|
||||
________________________________________
|
||||
<BR>________________________________________
|
||||
<BR>________________________________________
|
||||
<BR>________________________________________
|
||||
|
||||
+745
-726
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -35,10 +35,6 @@ The following documentation for CUPS is available on this server:
|
||||
<A HREF="sam.html">HTML</A> |
|
||||
<A HREF="sam.pdf">PDF</A> )
|
||||
|
||||
<LI>Software Programmers Manual (
|
||||
<A HREF="spm.html">HTML</A> |
|
||||
<A HREF="spm.pdf">PDF</A> )
|
||||
|
||||
<LI>Configuration Management Plan (
|
||||
<A HREF="cmp.html">HTML</A> |
|
||||
<A HREF="cmp.pdf">PDF</A> )
|
||||
|
||||
+111
-213
@@ -1,193 +1,91 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>CUPS Interface Design Description</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-IDD-1.0">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
H1 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H2 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H3 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H4 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H5 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H6 { font-family: sans-serif; font-size: 20.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><H1>CUPS Interface Design Description</H1></A><BR>
|
||||
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Interface Design Description</H1></A><BR>
|
||||
CUPS-IDD-1.0<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-1999, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
<HR>
|
||||
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
|
||||
<H1 ALIGN=CENTER><A NAME=CONTENTS>Table of Contents</A></H1>
|
||||
<BR>
|
||||
<BR><B><A HREF="#1">1 Scope</A></B>
|
||||
<BR><B><A HREF=#1>1 Scope</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">1.1 Identification</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
|
||||
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
|
||||
<LI><A HREF=#1_1>1.1 Identification</A></LI>
|
||||
<LI><A HREF=#1_2>1.2 System Overview</A></LI>
|
||||
<LI><A HREF=#1_3>1.3 Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">2 References</A></B>
|
||||
<B><A HREF=#2>2 References</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
|
||||
<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#3">3 Internal Interfaces</A></B>
|
||||
<B><A HREF=#3>3 Internal Interfaces</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1">3.1 Character Set Files</A></LI>
|
||||
<LI><A HREF="#3_2">3.2 Language Files</A></LI>
|
||||
<LI><A HREF="#3_3">3.3 MIME Files</A></LI>
|
||||
<LI><A HREF=#3_1>3.1 Character Set Files</A></LI>
|
||||
<LI><A HREF=#3_2>3.2 Language Files</A></LI>
|
||||
<LI><A HREF=#3_3>3.3 MIME Files</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_3_1">3.3.1 mime.types</A></LI>
|
||||
<LI><A HREF="#3_3_2">3.3.2 mime.convs</A></LI>
|
||||
<LI><A HREF=#3_3_1>3.3.1 mime.types</A></LI>
|
||||
<LI><A HREF=#3_3_2>3.3.2 mime.convs</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_4">3.4 PostScript Printer Description Files</A></LI>
|
||||
<LI><A HREF=#3_4>3.4 PostScript Printer Description Files</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_4_1">3.4.1 CUPS Extensions to PPD Files</A></LI>
|
||||
<LI><A HREF=#3_4_1>3.4.1 CUPS Extensions to PPD Files</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_5">3.5 Scheduler Configuration Files</A></LI>
|
||||
<LI><A HREF=#3_5>3.5 Scheduler Configuration Files</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_5_1">3.5.1 classes.conf</A></LI>
|
||||
<LI><A HREF="#3_5_2">3.5.2 cupsd.conf</A></LI>
|
||||
<LI><A HREF="#3_5_3">3.5.3 printers.conf</A></LI>
|
||||
<LI><A HREF=#3_5_1>3.5.1 classes.conf</A></LI>
|
||||
<LI><A HREF=#3_5_2>3.5.2 cupsd.conf</A></LI>
|
||||
<LI><A HREF=#3_5_3>3.5.3 printers.conf</A></LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<B><A HREF="#4">4 External Interfaces</A></B>
|
||||
<B><A HREF=#4>4 External Interfaces</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#4_1">4.1 AppSocket Protocol</A></LI>
|
||||
<LI><A HREF="#4_2">4.2 CUPS Browsing Protocol</A></LI>
|
||||
<LI><A HREF="#4_3">4.3 CUPS PostScript File</A></LI>
|
||||
<LI><A HREF="#4_4">4.4 CUPS Raster File</A></LI>
|
||||
<LI><A HREF="#4_5">4.5 CUPS Raw Files</A></LI>
|
||||
<LI><A HREF="#4_6">4.6 Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF=#4_1>4.1 AppSocket Protocol</A></LI>
|
||||
<LI><A HREF=#4_2>4.2 CUPS Browsing Protocol</A></LI>
|
||||
<LI><A HREF=#4_3>4.3 CUPS PostScript File</A></LI>
|
||||
<LI><A HREF=#4_4>4.4 CUPS Raster File</A></LI>
|
||||
<LI><A HREF=#4_5>4.5 CUPS Raw Files</A></LI>
|
||||
<LI><A HREF=#4_6>4.6 Internet Printing Protocol</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_6_1">4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
|
||||
<LI><A HREF=#4_6_1>4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
|
||||
0x4001)</A></LI>
|
||||
<LI><A HREF="#4_6_2">4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></LI>
|
||||
<LI><A HREF="#4_6_3">4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></LI>
|
||||
<LI><A HREF="#4_6_4">4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
|
||||
<LI><A HREF=#4_6_2>4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></LI>
|
||||
<LI><A HREF=#4_6_3>4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></LI>
|
||||
<LI><A HREF=#4_6_4>4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
|
||||
</LI>
|
||||
<LI><A HREF="#4_6_5">4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></LI>
|
||||
<LI><A HREF="#4_6_6">4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></LI>
|
||||
<LI><A HREF="#4_6_7">4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></LI>
|
||||
<LI><A HREF="#4_6_8">4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></LI>
|
||||
<LI><A HREF="#4_6_9">4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></LI>
|
||||
<LI><A HREF="#4_6_10">4.6.10 Set Default Destination (CUPS_SET_DEFAULT
|
||||
= 0x400A)</A></LI>
|
||||
<LI><A HREF=#4_6_5>4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></LI>
|
||||
<LI><A HREF=#4_6_6>4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></LI>
|
||||
<LI><A HREF=#4_6_7>4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></LI>
|
||||
<LI><A HREF=#4_6_8>4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></LI>
|
||||
<LI><A HREF=#4_6_9>4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></LI>
|
||||
<LI><A HREF=#4_6_10>4.6.10 Set Default Destination (CUPS_SET_DEFAULT =
|
||||
0x400A)</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_7">4.7 Line Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="#4_8">4.8 Server Message Block Protocol</A></LI>
|
||||
<LI><A HREF=#4_7>4.7 Line Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF=#4_8>4.8 Server Message Block Protocol</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#5">5 5 - Directories</A></B>
|
||||
<B><A HREF=#5>5 5 - Directories</A></B>
|
||||
<BR>
|
||||
<BR><B><A HREF="#6">A Glossary</A></B>
|
||||
<BR><B><A HREF=#6>A Glossary</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#6_1">A.1 Terms</A></LI>
|
||||
<LI><A HREF="#6_2">A.2 Acronyms</A></LI>
|
||||
<LI><A HREF=#6_1>A.1 Terms</A></LI>
|
||||
<LI><A HREF=#6_2>A.2 Acronyms</A></LI>
|
||||
</UL>
|
||||
<HR>
|
||||
GIF89a¯ÿòÌÌÌ™™™fff333ÿÿÿÿÿÿÿÿÿ!ù,¯ÿBþXºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª2€0p,Ïtmßx®ï
|
||||
|
||||
<!--=�•pH,��Ö«Çl:ŸÐ¨”ù ¯Ø¬ÖXN¿à°xL~¬Û´zmxËð¸|N§Ùø¼(Pïûÿ€�bwz…jn‚‰Š‹Œ�9„†‘!-->
|
||||
;±Ýíˆndý !¸ ž³wà…MƒƒY~¿{,gÚ\‚äé
|
||||
Œ×Ø(tÙî!Ï=Ñ.ûz¯�áÑŸ:ì;Ã9qöíÉë]/¿ºÉ¤Et/†'Îþt9ÀØ–ž_ÙÇ\|W•wArö¸Ý�2Ô×
|
||||
tN°0Tï}�¡û‰$!‚yMxî)ˆš‰Ô�ø@nB°U½ÊwE„§!ŠF H L8B
|
||||
c‰;ždŠ-æDVWdг€h±äÚ“P¶%#(4Fiå•Ï\hŠ:�Re!\ÒÄ—X^¦%€¥À-$E€Ö/úHŽšlââöÌQX
|
||||
|
||||
<!--äÇ"iL :a7‚]›0IZ¡YØø¡‡D}¤–Uj±á
|
||||
^â䙿`Ú@¦5b|šà�«Á±§3Ñ KwÔ\ªB¨±H)+�=¡Ó©"
|
||||
©¢ 8uƒ†¸öŠD§•lþ:„d�RX�ilÌ:Ë!´;¹t+„e<
|
||||
‡;øô+‚bbhaÚ0Ê6é.D™ð޹̹ñÖkoê({ï¾ü{f¿-->
|
||||
¸1Nô¯b"œŠüjåÁÂE0…È8ö5GkZ|ÒÁwt„C»ÔQSÇo6ÔÙ�[�W„$²*Ž+4Pb-8¹P1þ'8"‘ФÄ$ Cyê‘„)>ãŠtè`Ð3‡‹¾z"«rE'Âqfä°Ë
|
||||
‘qÂ\|€„Ž¡ôö»%É(.—bڽȀ�íÉ`{¬EÇ1w’ »[Hß`(B6ö�“
|
||||
†')ÊRŽÎa[�ÃrbC!Tå°Œ
|
||||
2Q·ÈHZê#–®üË/àô¯FÝê(Û²% ºXË9öÀbÁ4f.ù-oý�™XËB…�IÎÒ7¹*@ÃÓŽÍT€hà‘ÌWâ�™Ã$f:µyžn†ó†r„'té�Kv`
|
||||
Ç+dª– œ79s�ò|'=×¢Ìx¶òœÿ„¦œˆeÎ;*à$þ” IÝÆaÏ{–3ŽÅ�Á
|
||||
P“ÍS[ÙL¨3©òQ7éÆò#ãûô0F×ðsE°t§@‘ØQÜ´´ ©:3ÓRíd �¥*MITnŒ£¨H]ØQÁd
|
||||
@òþ—¬rMœŽaO
|
||||
<!--x‹ŒÖ3½4 °XT'ª®ƒ:T£uéWeºádËeú¸è¬Ù7
|
||||
|
||||
ëÒÏ;„sœåµ7m(ýПtl¤RV�)-->
|
||||
rë^yÀ·(¸îéêû$uDòrã/a,I.°ÙUÀœb hˆ`�¾B ë"
|
||||
Ü`HØxȸo1þ[á\8f^æ|\ý‚¢¢zø0(ˆ\ {ƒÄgäÞõ€çâ§Á˜0*\³n¼‹m¶/Äeª±ÿ†ì
|
||||
Ç,½DN2€œº+ùÉ|í0L¡Le*ð¸Ã>­2ëf,eIPOËÅàr—±”80SAŸcFªatç»ãy¤¸ršçÌ¡5ïoõËsžï|¿8˙Φ¬þ,ï¼èà)ÁÌ;øk¡—†dDpÑòø2¢q�fHã!Ë“~ÙŸ-í
|
||||
'g:,æ4y?ýäP‹Z›ž#ÏÕ´Î5AK‰k]ûš›ÒKõ¯‡më€õzØÈƫ؎Ý>B{PЪ.6hf]º?©ÌIŽuO„í�M‚ÌÇÜcµ3˜
|
||||
61‹NÒ[†W£ ¦m¿­{ÂPâvζKnUˆ[ ònĽ±÷n?l:Áž3ušë�¬sP[ÿnn¾çP�…WõÔFj[Â÷
|
||||
¹vÏ™à‰˜xú�'ˆ£ÀÀ†p¸4.êãKÇ¿ÂÁ±o§¢ü"Á|Nk`îʘ
|
||||
<!--•¤7 yþ D-->
|
||||
�
|
||||
jl©ÌuˆËi™0pmC´«+‰÷6¤2­éÏe`(ŽJ]¥iõð3ƒØí"p|ª!:qøFس 6£
|
||||
@­,þŠqüã��oÌÇ®ž�ÖüV�“¶QÇ›Evî¹²É8ÙªS"æÀç‡x± àþ‡�>—Iãg
|
||||
ïÝ>Y‰çN80æ§ ±¾GLLìÕµ…(1Þ¼!8}þ¬“*…ª‰Ùì:e»´œ
|
||||
ª¿ên_6ÂÃSÀ`eG;Ö„CƒCcˆ¿‡4¸yeî¯Í)oøByRm½0?íLîÅ`QÿjÓÙ/ºôÓN|Ý
|
||||
<!--â9ço‘SŽà•?œýáu¿þá¯~!ÒŸ¿ÍÏüýÏ�Iw1ßþZÈN¥Ex£&\(¤á[ɤ€v2€WW-->
|
||||
|
||||
þÙAÜŒÁ¸D5©D a�ævx ?жx°DM@•!h‰àÈ€Ž§®
|
||||
• �á×B`ð¤ªE?›“”Þdƒ"8$Ý`Ki0…OðƒnΓ±µvtžè€I([,¹Ndɨh\'6X
|
||||
�Pã—Š‰Éøt ¢‘¥�˜¬è €ˆ†Ky™FˆŒë`š”yƒ„¨š €š‰ƒM©‡øFQhY„
|
||||
9¶X¯×–í4š¤™Y\)"¹AN]‰xéz÷Gq07�)�©ñ™•Y€r°ŒŽi‹ �z ™ÇäFÍÉT�–ù›
|
||||
ËŽC œwI›üX]‹¹\ëY]þf lïYbj8ŸÈuœbŸÍÅtú©fÞןfBI—“*øé:ÛØUj Ò
|
||||
ˆõ¹ Õp $(~ ¡Ú ¡gù{îp�ZI?¡ƒîÀv:“a¦˜6¢§Ô]Ý‘(ªê)!ŸÚ¢:
|
||||
jwµ¡4ÚvíHÛǘ9ºXhó•üù£¥Á¢VÉ{Dº2š‰(°¤3š¤a÷ +У¥“p¢þò4Vº—
|
||||
E´¥è¤k°7ºhT*€¿èw`ÚžiÄ …S¦Æ¦mê Nêƒ#ú¢f€ xê†ý
|
||||
8z©7�uÚp{Ú=~]7`«h‡ÚsÚg:…zd˜ó§ÎA-vþAñr¦'–AÚ)9–š¢âSi;£…š 1�ªo"ª
|
||||
¦J;“º rº8Ui|é>¡Úœú
|
||||
<!--pv³2<ƒj£·«É¦kÉ 1Š:¬Èe ”«ÉÚlÑ•ªÍZn¯Š2Ì‹s«ÁÖÚàé¨Ûº=¤zŽŸú6áUä
|
||||
Øš¨¿újá
|
||||
¦0®éJ«
|
||||
¯NÕ井öÐVeζ¯õbm¶7ù´Ž-->
|
||||
“ë¥Dfný2»ƒ–0j«�®»ºK;zë¢Íö»—!µ—S»³r>K+6ˆ‹¨XÒ»; CÈ
|
||||
8Ê;¢»ÃÛ/Œ‹¥ž!¬s½VR½óõÏ‹Oâ[/çK¨þ˜Ñ:Í‹\Ý+ Sc:ïËž’º¶ë9Æ»
|
||||
<!--ëSç�½¤tj ½YUÀœãÀ©%
|
||||
Ìró)Á0¨§—³½Ç…Á¬Ì¤LÛ6øK!<Á:Àê*ª…ÃÁî…Á.‡²
|
||||
¥¼‘z Âä ¦ýËÀ~¸7<,´GóÃý‹ÂöêÀe:Ä¢‰°ë«£m£,žyAI¡…˜Q!8-->
|
||||
ô 8ly$
|
||||
8©ÙÅmX2Ùh>—?¯!šHüÁ^LsP,Ÿ«Y‹âá¿ÿtšì‚£Y
|
||||
r¦Éš¥9ÇjžÄ8-ÆÇŒ¶iêPÂbA˜ù‰Ã¸š»³7RœCWRoìŠå MŒŠ�”åt™ Œ›�réÉq
|
||||
<!--Zva&‹Z¤jzÊŠ¬‡7èV)“‹|›ká�!¦*€Á¶öÄ84’Wž¶L�Êñ½Fª6ÄOq̰Š}Ŭ—|žÎ|4!ÍAh+è•L¢
|
||||
%|‹Û¬Å$-->
|
||||
|
||||
å�>}�Lê}ÎǨ 5:àŒ|�"þÇwÐsøæ�Nΰ¹#R>~-N‰®èƒ ßcðÞÚÎÑ¥®åGÎâ툉Ýè*‚¸
|
||||
=‚ž ºëâ…­ëÀ>Û·žën^žmèÊëð¼ã>å×Λ«}êØ÷
|
||||
“�Œ¬ËI�Á·AÔNÍëv>]t.âÚLЫþíï¾ñnäÖÜæs¹¿±â°+†
|
||||
¬UØïî•.ç¬ÎìÍ.è´ÞŠG=ðù��‚§ž¯”ë^äÛ®êh-‹ê�ê!i!�ÕvMíiªîþ¾òîá/þÑ-OÖGð,oñº!å’gOâ P�OìOôBþÈàhâ+?ï>ßÊVHÀsaõ™€õ$óSîõ—»�ó8.žß¹
|
||||
~áßÈ©ö»]ò3ëÆt_÷[ïôb¯ç‚Ü÷Õ«@u™ð;zܘ‘Ü@óŽ2’?ùƒ¸ÙlùF ¶™¯ù›N ž0œú£¶¤ÿ0#9:�ß§½ž©Ÿ\#ÃÙæó2é+û‚ÀÓ¸�_äM/ÓtaÚý3”]Ù«¿¸iîaF>ª�}ŒØvÍïMÍ÷Ðëä©îrÜŒöqñ_ÀüªrâF®ò
|
||||
ýþ¸—hT_ã�4sx”ýÝî)ç.Qgû�àŸÏ%ì‹}i´ASû|þð@QÜ
|
||||
$J9€»-̱÷Üô�MØ‘hZ˜¦:°œ*ÏlßxÒ|ϼ¡ÅLÀ� ¬Áfù9BÑdìÁ|«VV„¢�“énKv
|
||||
<!--u贮̮iiçͦt›šV/.²ê}mywu#|Yc‚X|jŽ�x‹dE“)0U
|
||||
�’ T–<W€o zbQ`F�¥2›�³:�°Ctª·‰!™²*¨…º»¢~аz¬†Á¯Ä‡´Õ޶Ó(iÃm²F›ÍÚhÜޓơօäc|ØËUÒÙþ²ëøçõƒ³ÜØ<î™w‰Ö¿Eéhä›@ðÂ
|
||||
-->
|
||||
|
||||
kB�_ƒg 3ʳ8#Þ¬L=0;J¤äÈ@¤F|'i~±© žaÊŠÆg;d*3²”©bPÏ¢TäHô¦?�[†
|
||||
ÄäƒhN6ZM¢D:c*BR!$±ckƒ’V­-uÛ@[øp„Ÿ]¼8ö-1{TήWÏ2ñ� Šp=¸q«Ñ½es.‰„4+#Ëe¦¥W5µekxr䛓/XÍš5Iǃ=kÝúµì˰û�N–2q�Å[r¦yZ£QŽ›ÇÞ�txŠäcK—Ííɹ
|
||||
iþ¡9¼m1oñ¢©/²8îìSté4l’Wm¾9óéÖÛÐãã{{üzÞ¿çøêöÞzà}œàL¨ "˜
|
||||
ÄÐsà¶PGLUúå`MÞ ¡†9¬§Û{pX¸¡wÚw߇¡¨ ‰í "M�UXNx
|
||||
<!--É……¡×ƒ��à¨âŠêÄõ#ƒå“Ž:Å(ã4Ö¸Až˜�:@Ùw¸ YÝ‹tIã’Ö”˜$…a(å‹X¥F7×IÈbŠ["Y€M縹K~`¶Øä-->
|
||||
+l´á¦
|
||||
j²F:Á.êÆÛj¤³Búî ¼Ê«/£Ö’[н#í+ð¥ænJÞ¸«æ;ð©õ‹¨ _ËðÄŠÒ»*º?
|
||||
ƒÂwœ�Ãyzh±°Øzl2,#oZ2È›r|òË‚°¼$Ç)ë
|
||||
óÍÙÔ,éfs€1Î@/øîÏPõÌiÐH·�ðÃBkLtÒP¯bôS;NÝWÔXÏ
|
||||
ó’dlÍtÖ`�°tžOc óÅa§}AÄ›²1vËjÇmþu+`ÍÍÁ·qwü6˜‚ì½sÞXŸ�¨Ë$xM6àP³-iÉSÚ½AÙˆïë84–ø=xä8^!ä*L>Þ˜ƒk¹Œ({Iè�^!ḘN$ê
|
||||
«®ç!ºû‚ÿÝ ë¯ßoî—Oü¨¾ÿî9í]ñÞ{ñÙÊ®ãlhŽ(èÌÃê¼~ÔS¢|öÕŸzýw¬Ë§|øÝ—*½ŒÈ×­|úåwzþæ“)Nrû¾Ê?*ô¥
|
||||
¿*÷ô7ú½~Múúú÷ª÷Ɉ•S3x*ûí�P”ùH£�°°àó(è¾í-Jƒú™
|
||||
åAF�{#\”g…Áœ)�!),Ô #ÓÂǼ�jþ1œŒþh©²K„9$ƒYè)Ž ˆA È
|
||||
—‡)#1‰Óp"˜ð'Ã%n‰P´‡Ù¨-‹1³¢^\%ƈÔp„CLÖ5Ã
|
||||
<!--a‘�^œßâx¯
|
||||
€±peŒ-->
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
<P>This interface design description document provides detailed file
|
||||
formats, message formats, and program conventions for the Common UNIX
|
||||
Printing System ("CUPS") Version 1.0. </P>
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<H2><A NAME=1_2>1.2 System Overview</A></H2>
|
||||
<P>The Common UNIX Printing System provides a portable printing layer
|
||||
for UNIX® operating systems. It has been developed by Easy Software
|
||||
Products to promote a standard printing solution for all UNIX vendors
|
||||
@@ -203,7 +101,7 @@ applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 4.03) and an image file RIP that
|
||||
can be used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<H2><A NAME=1_3>1.3 Document Overview</A></H2>
|
||||
<P>This interface design description document is organized into the
|
||||
following sections: </P>
|
||||
<UL>
|
||||
@@ -214,8 +112,8 @@ following sections: </P>
|
||||
<LI>5 - Directories </LI>
|
||||
<LI>A - Glossary </LI>
|
||||
</UL>
|
||||
<H1><A NAME="2">2 References</A></H1>
|
||||
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
|
||||
<H1><A NAME=2>2 References</A></H1>
|
||||
<H2><A NAME=2_1>2.1 CUPS Documentation</A></H2>
|
||||
<P>The following CUPS documentation is referenced by this document: </P>
|
||||
<UL>
|
||||
<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan </LI>
|
||||
@@ -228,7 +126,7 @@ following sections: </P>
|
||||
<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.0.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<H2><A NAME=2_2>2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
|
||||
@@ -238,8 +136,8 @@ following sections: </P>
|
||||
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
|
||||
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Internal Interfaces</A></H1>
|
||||
<H2><A NAME="3_1">3.1 Character Set Files</A></H2>
|
||||
<H1><A NAME=3>3 Internal Interfaces</A></H1>
|
||||
<H2><A NAME=3_1>3.1 Character Set Files</A></H2>
|
||||
<P>The character set files define a mapping between 8-bit characters
|
||||
and the Unicode character set. They are named using the ISO standard
|
||||
number defined for the character set. Each file consists of up to 256
|
||||
@@ -247,7 +145,7 @@ lines of ASCII text. Each line consists of two hexadecimal numbers; the
|
||||
first number is the character number in the character set (0x00 to
|
||||
0xff), and the second number is the Unicode character number (0x0000 to
|
||||
0xffff). </P>
|
||||
<H2><A NAME="3_2">3.2 Language Files</A></H2>
|
||||
<H2><A NAME=3_2>3.2 Language Files</A></H2>
|
||||
<P>The language files define the default character set and a collection
|
||||
of text messages in that language. They are named by prefixing the
|
||||
string "cups_" to the front of the language specifier (e.g. "cups_en",
|
||||
@@ -272,9 +170,9 @@ messages. The currently recognized values are: </P>
|
||||
<P>The second and succeeding lines define text messages. If the message
|
||||
text is preceded by a number, then the current message number is
|
||||
updated and the text after the number is used. </P>
|
||||
<H2><A NAME="3_3">3.3 MIME Files</A></H2>
|
||||
<H2><A NAME=3_3>3.3 MIME Files</A></H2>
|
||||
<P>CUPS uses two MIME files in its standard configuration. </P>
|
||||
<H3><A NAME="3_3_1">3.3.1 mime.types</A></H3>
|
||||
<H3><A NAME=3_3_1>3.3.1 mime.types</A></H3>
|
||||
<P>The mime.types file defines the recognized file types and consists
|
||||
of 1 or more lines of ASCII text. Comment lines start with the pound
|
||||
("#") character. The backslash ("\") character can be used at the end
|
||||
@@ -305,7 +203,7 @@ operator := "+" | [ logical AND ]
|
||||
<P>The <CODE>int</CODE> and <CODE>short</CODE> rules match look for
|
||||
integers in network byte order (a.k.a. big-endian) with the
|
||||
most-significant byte first. </P>
|
||||
<H3><A NAME="3_3_2">3.3.2 mime.convs</A></H3>
|
||||
<H3><A NAME=3_3_2>3.3.2 mime.convs</A></H3>
|
||||
<P>The mime.types file defines the recognized file filters and consists
|
||||
of 1 or more lines of ASCII text. Comment lines start with the pound
|
||||
("#") character. </P>
|
||||
@@ -314,12 +212,12 @@ of 1 or more lines of ASCII text. Comment lines start with the pound
|
||||
the MIME types are a cost value (0 to 100) and the filter program to
|
||||
use. If the filter program is not specified using the full path then it
|
||||
must reside in the CUPS filter directory. </P>
|
||||
<H2><A NAME="3_4">3.4 PostScript Printer Description Files</A></H2>
|
||||
<H2><A NAME=3_4>3.4 PostScript Printer Description Files</A></H2>
|
||||
<P>The PostScript Printer Description (PPD) file format is described in <A
|
||||
HREF="http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe TechNote #5003: PostScript Printer Description File Format
|
||||
HREF=http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf>
|
||||
Adobe TechNote #5003: PostScript Printer Description File Format
|
||||
Specification Version 4.3</A>. </P>
|
||||
<H3><A NAME="3_4_1">3.4.1 CUPS Extensions to PPD Files</A></H3>
|
||||
<H3><A NAME=3_4_1>3.4.1 CUPS Extensions to PPD Files</A></H3>
|
||||
<P>CUPS adds several new attributes that are described below. </P>
|
||||
<H4>3.4.1.1 cupsFilter</H4>
|
||||
<P>This string attribute provides a conversion rule of the form: </P>
|
||||
@@ -363,7 +261,7 @@ after</I> the CMY transformation. </P>
|
||||
<P>This required attribute describes which version of the CUPS IDD was
|
||||
used for the PPD file extensions. Currently it must be the string
|
||||
"1.0". </P>
|
||||
<H2><A NAME="3_5">3.5 Scheduler Configuration Files</A></H2>
|
||||
<H2><A NAME=3_5>3.5 Scheduler Configuration Files</A></H2>
|
||||
<P>The scheduler reads three configuration files that define the
|
||||
available printers, classes, and services: </P>
|
||||
<DL>
|
||||
@@ -375,15 +273,15 @@ the scheduler. </DD>
|
||||
<DT>printers.conf </DT>
|
||||
<DD>This file defines all of the printers known to the system. </DD>
|
||||
</DL>
|
||||
<H3><A NAME="3_5_1">3.5.1 classes.conf</A></H3>
|
||||
<H3><A NAME=3_5_1>3.5.1 classes.conf</A></H3>
|
||||
<P>The classes.conf file consists of 1 or more lines of ASCII text.
|
||||
Comment lines start with the pound ("#") character. </P>
|
||||
<P>Each non-blank line starts with the name of a configuration
|
||||
directive followed by its value. The following directives are
|
||||
understood:
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="90%">
|
||||
<TR><TH WIDTH="25%">Directive</TH><TH>Description</TH></TR>
|
||||
<TABLE BORDER=1 WIDTH=90%>
|
||||
<TR><TH WIDTH=25%>Directive</TH><TH>Description</TH></TR>
|
||||
<TR><TD><Class name>
|
||||
<BR> </Class></TD><TD>Surrounds a class definition.</TD></TR>
|
||||
<TR><TD><DefaultClass name>
|
||||
@@ -400,15 +298,15 @@ class.</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H3><A NAME="3_5_2">3.5.2 cupsd.conf</A></H3>
|
||||
<H3><A NAME=3_5_2>3.5.2 cupsd.conf</A></H3>
|
||||
<P>The cupsd.conf file consists of 1 or more lines of ASCII text.
|
||||
Comment lines start with the pound ("#") character. </P>
|
||||
<P>Each non-blank line starts with the name of a configuration
|
||||
directive followed by its value. The following directives are
|
||||
understood:
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="90%">
|
||||
<TR><TH WIDTH="25%">Directive</TH><TH>Default</TH><TH>Description</TH></TR>
|
||||
<TABLE BORDER=1 WIDTH=90%>
|
||||
<TR><TH WIDTH=25%>Directive</TH><TH>Default</TH><TH>Description</TH></TR>
|
||||
<TR><TD>AccessLog</TD><TD>logs/access_log</TD><TD>Specifies the
|
||||
location of the access log file.</TD></TR>
|
||||
<TR><TD>Allow</TD><TD>-</TD><TD>Allows connections from the specified
|
||||
@@ -498,15 +396,15 @@ running external programs.</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H3><A NAME="3_5_3">3.5.3 printers.conf</A></H3>
|
||||
<H3><A NAME=3_5_3>3.5.3 printers.conf</A></H3>
|
||||
<P>The printers.conf file consists of 1 or more lines of ASCII text.
|
||||
Comment lines start with the pound ("#") character. </P>
|
||||
<P>Each non-blank line starts with the name of a configuration
|
||||
directive followed by its value. The following directives are
|
||||
understood:
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="90%">
|
||||
<TR><TH WIDTH="25%">Directive</TH><TH>Description</TH></TR>
|
||||
<TABLE BORDER=1 WIDTH=90%>
|
||||
<TR><TH WIDTH=25%>Directive</TH><TH>Description</TH></TR>
|
||||
<TR><TD>Accepting</TD><TD>Specifies whether the printer is accepting
|
||||
new jobs. May be the names "Yes" or "No".</TD></TR>
|
||||
<TR><TD><DefaultPrinter name>
|
||||
@@ -525,11 +423,11 @@ be "Idle" or "Stopped".</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H1><A NAME="4">4 External Interfaces</A></H1>
|
||||
<H2><A NAME="4_1">4.1 AppSocket Protocol</A></H2>
|
||||
<H1><A NAME=4>4 External Interfaces</A></H1>
|
||||
<H2><A NAME=4_1>4.1 AppSocket Protocol</A></H2>
|
||||
<P>The AppSocket protocol is an 8-bit clean TCP/IP socket connection.
|
||||
The default IP service port is 9100. The URI method name is "socket". </P>
|
||||
<H2><A NAME="4_2">4.2 CUPS Browsing Protocol</A></H2>
|
||||
<H2><A NAME=4_2>4.2 CUPS Browsing Protocol</A></H2>
|
||||
<P>The CUPS Browsing Protocol is a UDP/IP-based broadcast service. By
|
||||
default this service operates on IP service port 631. </P>
|
||||
<P>Each broadcast packet describes the state of a single printer or
|
||||
@@ -545,8 +443,8 @@ printer-state</CODE> and <CODE>printer-uri-supported</CODE> attributes. </P>
|
||||
<P>The <I>type</I> value is a hexadecimal number string representing
|
||||
capability/type bits:
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="40%">
|
||||
<TR><TH WIDTH="8%">Bit</TH><TH>Description</TH></TR>
|
||||
<TABLE BORDER=1 WIDTH=40%>
|
||||
<TR><TH WIDTH=8%>Bit</TH><TH>Description</TH></TR>
|
||||
<TR><TD>0</TD><TD>0 = printer
|
||||
<BR> 1 = class</TD></TR>
|
||||
<TR><TD>1</TD><TD>0 = local
|
||||
@@ -569,13 +467,13 @@ capability/type bits:
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H2><A NAME="4_3">4.3 CUPS PostScript File</A></H2>
|
||||
<H2><A NAME=4_3>4.3 CUPS PostScript File</A></H2>
|
||||
<P>CUPS PostScript files are device-dependent Adobe PostScript program
|
||||
files. The PostScript language is described in the <A HREF="http://partners.adobe.com/supportservice/devrelations/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference Manual, Third Edition</A>. </P>
|
||||
files. The PostScript language is described in the <A HREF=http://partners.adobe.com/supportservice/devrelations/PDFS/TN/PLRM.pdf>
|
||||
Adobe PostScript Language Reference Manual, Third Edition</A>. </P>
|
||||
<P>The MIME type for CUPS PostScript files is <CODE>
|
||||
application/vnd.cups-postscript</CODE>. </P>
|
||||
<H2><A NAME="4_4">4.4 CUPS Raster File</A></H2>
|
||||
<H2><A NAME=4_4>4.4 CUPS Raster File</A></H2>
|
||||
<P>CUPS raster files are device-dependent raster image files that
|
||||
contain a PostScript page device dictionary and device-dependent raster
|
||||
imagery for each page in the document. These files are used to
|
||||
@@ -593,8 +491,8 @@ automatically. </P>
|
||||
Each page starts with a page device dictionary header and is followed
|
||||
immediately by the raster data for that page.
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="80%">
|
||||
<TR><TH WIDTH="10%">Bytes</TH><TH WIDTH="20%">Description</TH><TH>Values</TH>
|
||||
<TABLE BORDER=1 WIDTH=80%>
|
||||
<TR><TH WIDTH=10%>Bytes</TH><TH WIDTH=20%>Description</TH><TH>Values</TH>
|
||||
</TR>
|
||||
<TR><TD>0-63</TD><TD>MediaClass</TD><TD>Nul-terminated ASCII string</TD></TR>
|
||||
<TR><TD>64-127</TD><TD>MediaColor</TD><TD>Nul-terminated ASCII string</TD>
|
||||
@@ -701,40 +599,40 @@ CMYK CMYK)
|
||||
</P>
|
||||
<P>The MIME type for CUPS Raster files is <CODE>
|
||||
application/vnd.cups-raster</CODE>. </P>
|
||||
<H2><A NAME="4_5">4.5 CUPS Raw Files</A></H2>
|
||||
<H2><A NAME=4_5>4.5 CUPS Raw Files</A></H2>
|
||||
<P>Raw files are printer-dependent print files that are in a format
|
||||
suitable to the destination printer (e.g. HP-PCL, HP-RTL, etc.) The
|
||||
MIME type for CUPS Raw files is <CODE>application/vnd.cups-raw</CODE>. </P>
|
||||
<H2><A NAME="4_6">4.6 Internet Printing Protocol</A></H2>
|
||||
<H2><A NAME=4_6>4.6 Internet Printing Protocol</A></H2>
|
||||
<P>The Internet Printing Protocol is described by the following RFCs: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2565.txt"> RFC 2565: Internet
|
||||
<LI><A HREF=http://www.ietf.org/rfc/rfc2565.txt>RFC 2565: Internet
|
||||
Printing Protocol/1.0: Encoding and Transport</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2566.txt"> RFC 2566: Internet
|
||||
<LI><A HREF=http://www.ietf.org/rfc/rfc2566.txt>RFC 2566: Internet
|
||||
Printing Protocol/1.0: Model and Semantics</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt"> RFC 2567: Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt"> RFC 2568: Rationale
|
||||
for the Structure of the Model and Protocol for the Internet Printing
|
||||
<LI><A HREF=http://www.ietf.org/rfc/rfc2567.txt>RFC 2567: Design Goals
|
||||
for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF=http://www.ietf.org/rfc/rfc2568.txt>RFC 2568: Rationale for
|
||||
the Structure of the Model and Protocol for the Internet Printing
|
||||
Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt"> RFC 2569: Mapping
|
||||
<LI><A HREF=http://www.ietf.org/rfc/rfc2569.txt>RFC 2569: Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
</UL>
|
||||
<P>The URI method name for IPP is "ipp". </P>
|
||||
<P>CUPS defines the following extension operations to IPP. </P>
|
||||
<H3><A NAME="4_6_1">4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
|
||||
<H3><A NAME=4_6_1>4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
|
||||
0x4001)</A></H3>
|
||||
<P>The get default destination operation returns the printer attributes
|
||||
for the system default printer or class. The only required attributes
|
||||
are <CODE>attributes-charset</CODE> and <CODE>
|
||||
attributes-natural-language</CODE>. </P>
|
||||
<P>Get default destination will only return <CODE>ipp-ok</CODE>. </P>
|
||||
<H3><A NAME="4_6_2">4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></H3>
|
||||
<H3><A NAME=4_6_2>4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></H3>
|
||||
<P>The get printers operation returns the printer attributes for all
|
||||
printers known to the system. The only required attributes are <CODE>
|
||||
attributes-charset</CODE> and <CODE>attributes-natural-language</CODE>. </P>
|
||||
<P>Get printers will only return <CODE>ipp-ok</CODE>. </P>
|
||||
<H3><A NAME="4_6_3">4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></H3>
|
||||
<H3><A NAME=4_6_3>4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></H3>
|
||||
<P>The add printer operation adds or replaces the specified printer.
|
||||
The <CODE>attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>
|
||||
and <CODE>printer-uri</CODE> attributes are required. </P>
|
||||
@@ -747,19 +645,19 @@ body. If a valid interface script or PPD file is not provided then the
|
||||
printer is treated as a generic PostScript device. </P>
|
||||
<P>Add printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>
|
||||
, <CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>. </P>
|
||||
<H3><A NAME="4_6_4">4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
|
||||
<H3><A NAME=4_6_4>4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
|
||||
</H3>
|
||||
<P>The delete printer operation removes the specified printer. The only
|
||||
required attributes are <CODE>attributes-charset</CODE>, <CODE>
|
||||
attributes-natural-language</CODE>, and <CODE>printer-uri</CODE>. </P>
|
||||
<P>Delete printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
|
||||
, or <CODE>ipp-not-authorized</CODE>. </P>
|
||||
<H3><A NAME="4_6_5">4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></H3>
|
||||
<H3><A NAME=4_6_5>4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></H3>
|
||||
<P>The get classes operation returns the printer attributes for all
|
||||
classes known to the system. The only required attributes are <CODE>
|
||||
attributes-charset</CODE> and <CODE>attributes-natural-language</CODE>. </P>
|
||||
<P>Get classes will only return <CODE>ipp-ok</CODE>. </P>
|
||||
<H3><A NAME="4_6_6">4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></H3>
|
||||
<H3><A NAME=4_6_6>4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></H3>
|
||||
<P>The add class operation adds or replaces the specified class. The <CODE>
|
||||
attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>,
|
||||
and <CODE>printer-uri</CODE> attributes are required. </P>
|
||||
@@ -769,27 +667,27 @@ required when initially adding a printer and optional when modifying a
|
||||
printer. </P>
|
||||
<P>Add class will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>
|
||||
, <CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>. </P>
|
||||
<H3><A NAME="4_6_7">4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></H3>
|
||||
<H3><A NAME=4_6_7>4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></H3>
|
||||
<P>The delete class operation removes the specified class. The only
|
||||
required attributes are <CODE>attributes-charset</CODE>, <CODE>
|
||||
attributes-natural-language</CODE>, and <CODE>printer-uri</CODE>. </P>
|
||||
<P>Delete class will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
|
||||
, or <CODE>ipp-not-authorized</CODE>. </P>
|
||||
<H3><A NAME="4_6_8">4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></H3>
|
||||
<H3><A NAME=4_6_8>4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></H3>
|
||||
<P>The accept jobs operation allows jobs to be accepted by the
|
||||
specified destination. The only required attributes are <CODE>
|
||||
attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>,
|
||||
and <CODE>printer-uri</CODE>. </P>
|
||||
<P>Accept jobs will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
|
||||
, or <CODE>ipp-not-authorized</CODE>. </P>
|
||||
<H3><A NAME="4_6_9">4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></H3>
|
||||
<H3><A NAME=4_6_9>4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></H3>
|
||||
<P>The reject jobs operation prevents jobs from being accepted by the
|
||||
specified destination. The only required attributes are <CODE>
|
||||
attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>,
|
||||
and <CODE>printer-uri</CODE>. </P>
|
||||
<P>Reject jobs will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
|
||||
, or <CODE>ipp-not-authorized</CODE>. </P>
|
||||
<H3><A NAME="4_6_10">4.6.10 Set Default Destination (CUPS_SET_DEFAULT =
|
||||
<H3><A NAME=4_6_10>4.6.10 Set Default Destination (CUPS_SET_DEFAULT =
|
||||
0x400A)</A></H3>
|
||||
<P>The set default destination operation returns the printer attributes
|
||||
for the system default printer or class. The only required attributes
|
||||
@@ -798,16 +696,16 @@ are <CODE>attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>
|
||||
<P>Set default destination will return <CODE>ipp-ok</CODE>, <CODE>
|
||||
ipp-not-authorized</CODE>, <CODE>ipp-bad-request</CODE>, or <CODE>
|
||||
ipp-not-found</CODE>. </P>
|
||||
<H2><A NAME="4_7">4.7 Line Printer Daemon Protocol</A></H2>
|
||||
<P>The Line Printer Daemon (LPD) protocol is described by <A HREF="http://www.ietf.org/rfc/rfc1179.txt">
|
||||
<H2><A NAME=4_7>4.7 Line Printer Daemon Protocol</A></H2>
|
||||
<P>The Line Printer Daemon (LPD) protocol is described by <A HREF=http://www.ietf.org/rfc/rfc1179.txt>
|
||||
RFC 1179: Line Printer Daemon Protocol</A>. </P>
|
||||
<P>The URI method name for LPD is "lpd". </P>
|
||||
<H2><A NAME="4_8">4.8 Server Message Block Protocol</A></H2>
|
||||
<H2><A NAME=4_8>4.8 Server Message Block Protocol</A></H2>
|
||||
<P>The Server Message Block (SMB) and related Common Internet File
|
||||
System (CIFS) protocols are described at <A HREF="http://anu.samba.org/cifs">
|
||||
System (CIFS) protocols are described at <A HREF=http://anu.samba.org/cifs>
|
||||
http://anu.samba.org/cifs</A>. </P>
|
||||
<P>The URI method name for SMB is "smb". </P>
|
||||
<H1><A NAME="5">5 5 - Directories</A></H1>
|
||||
<H1><A NAME=5>5 5 - Directories</A></H1>
|
||||
<DL>
|
||||
<DT>/usr/bin </DT>
|
||||
<DD>The <CODE>cancel</CODE>, <CODE>lp</CODE>, <CODE>lpq</CODE>, <CODE>
|
||||
@@ -848,8 +746,8 @@ page_log</CODE> files reside here. </DD>
|
||||
<DT>/var/cups/requests </DT>
|
||||
<DD>This directory contains pending print job files. </DD>
|
||||
</DL>
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="6">A Glossary</A></H1>
|
||||
<H2><A NAME="6_1">A.1 Terms</A></H2>
|
||||
<H1 TYPE=A VALUE=1><A NAME=6>A Glossary</A></H1>
|
||||
<H2><A NAME=6_1>A.1 Terms</A></H2>
|
||||
<DL>
|
||||
<DT>C </DT>
|
||||
<DD>A computer language. </DD>
|
||||
@@ -862,7 +760,7 @@ page_log</CODE> files reside here. </DD>
|
||||
<DT>socket </DT>
|
||||
<DD>A two-way network communications channel. </DD>
|
||||
</DL>
|
||||
<H2><A NAME="6_2">A.2 Acronyms</A></H2>
|
||||
<H2><A NAME=6_2>A.2 Acronyms</A></H2>
|
||||
<DL>
|
||||
<DT>ASCII </DT>
|
||||
<DD>American Standard Code for Information Interchange </DD>
|
||||
|
||||
+1170
-1169
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Arquivo binário não exibido.
+116
-265
@@ -1,207 +1,99 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>CUPS Software Administrators Manual</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.4">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
H1 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H2 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H3 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H4 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H5 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H6 { font-family: sans-serif; font-size: 20.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.2">
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><H1>CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.0.4<BR>
|
||||
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.0.2<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-1999, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
<HR>
|
||||
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
|
||||
<H1 ALIGN=CENTER><A NAME=CONTENTS>Table of Contents</A></H1>
|
||||
<BR>
|
||||
<BR><B><A HREF="#1">Preface</A></B>
|
||||
<BR><B><A HREF=#1>Preface</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">System Overview</A></LI>
|
||||
<LI><A HREF="#1_2">Document Overview</A></LI>
|
||||
<LI><A HREF=#1_1>System Overview</A></LI>
|
||||
<LI><A HREF=#1_2>Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">1 - Printing System Overview</A></B>
|
||||
<B><A HREF=#2>1 - Printing System Overview</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#2_1">The Printing Problem</A></LI>
|
||||
<LI><A HREF="#2_2">The Technology</A></LI>
|
||||
<LI><A HREF="#2_3">Jobs</A></LI>
|
||||
<LI><A HREF="#2_4">Classes</A></LI>
|
||||
<LI><A HREF="#2_5">Filters</A></LI>
|
||||
<LI><A HREF="#2_6">Printer Drivers</A></LI>
|
||||
<LI><A HREF="#2_7">Networking</A></LI>
|
||||
<LI><A HREF=#2_1>The Printing Problem</A></LI>
|
||||
<LI><A HREF=#2_2>The Technology</A></LI>
|
||||
<LI><A HREF=#2_3>Jobs</A></LI>
|
||||
<LI><A HREF=#2_4>Classes</A></LI>
|
||||
<LI><A HREF=#2_5>Filters</A></LI>
|
||||
<LI><A HREF=#2_6>Printer Drivers</A></LI>
|
||||
<LI><A HREF=#2_7>Networking</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#3">2 - Building and Installing CUPS</A></B>
|
||||
<B><A HREF=#3>2 - Building and Installing CUPS</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1">Installing a Source Distribution</A></LI>
|
||||
<LI><A HREF=#3_1>Installing a Source Distribution</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1_1">Requirements</A></LI>
|
||||
<LI><A HREF="#3_1_2">Compiling CUPS</A></LI>
|
||||
<LI><A HREF="#3_1_3">Installing the Software</A></LI>
|
||||
<LI><A HREF="#3_1_4">Running the Software</A></LI>
|
||||
<LI><A HREF=#3_1_1>Requirements</A></LI>
|
||||
<LI><A HREF=#3_1_2>Compiling CUPS</A></LI>
|
||||
<LI><A HREF=#3_1_3>Installing the Software</A></LI>
|
||||
<LI><A HREF=#3_1_4>Running the Software</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#binary">Installing a Binary Distribution</A></LI>
|
||||
<LI><A HREF=#binary>Installing a Binary Distribution</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#4">3 - Printer Queue Management</A></B>
|
||||
<B><A HREF=#4>3 - Printer Queue Management</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#4_1">The lpadmin Command</A></LI>
|
||||
<LI><A HREF="#4_2">Adding and Modifying Printers</A></LI>
|
||||
<LI><A HREF=#4_1>The lpadmin Command</A></LI>
|
||||
<LI><A HREF=#4_2>Adding and Modifying Printers</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_2_1">Using Standard Printer Drivers</A></LI>
|
||||
<LI><A HREF=#4_2_1>Using Standard Printer Drivers</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_3">Removing Printers</A></LI>
|
||||
<LI><A HREF="#4_4">Printer Classes</A></LI>
|
||||
<LI><A HREF="#4_5">Setting the Default Printer</A></LI>
|
||||
<LI><A HREF="#4_6">Starting and Stopping Printers</A></LI>
|
||||
<LI><A HREF="#4_7">Accepting and Rejecting Print Jobs</A></LI>
|
||||
<LI><A HREF=#4_3>Removing Printers</A></LI>
|
||||
<LI><A HREF=#4_4>Printer Classes</A></LI>
|
||||
<LI><A HREF=#4_5>Setting the Default Printer</A></LI>
|
||||
<LI><A HREF=#4_6>Starting and Stopping Printers</A></LI>
|
||||
<LI><A HREF=#4_7>Accepting and Rejecting Print Jobs</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#5">4 - Printing System Management</A></B>
|
||||
<B><A HREF=#5>4 - Printing System Management</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#5_1">Changing the Configuration Files</A></LI>
|
||||
<LI><A HREF="#5_2">Temporary Files</A></LI>
|
||||
<LI><A HREF="#5_3">Network Configuration</A></LI>
|
||||
<LI><A HREF=#5_1>Changing the Configuration Files</A></LI>
|
||||
<LI><A HREF=#5_2>Temporary Files</A></LI>
|
||||
<LI><A HREF=#5_3>Network Configuration</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#5_3_1">Port</A></LI>
|
||||
<LI><A HREF="#5_3_2">Listen</A></LI>
|
||||
<LI><A HREF="#5_3_3">BrowsePort</A></LI>
|
||||
<LI><A HREF="#5_3_4">BrowseAddress</A></LI>
|
||||
<LI><A HREF=#5_3_1>Port</A></LI>
|
||||
<LI><A HREF=#5_3_2>Listen</A></LI>
|
||||
<LI><A HREF=#5_3_3>BrowsePort</A></LI>
|
||||
<LI><A HREF=#5_3_4>BrowseAddress</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#5_4">Printer Security</A></LI>
|
||||
<LI><A HREF=#5_4>Printer Security</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#5_4_1">Location</A></LI>
|
||||
<LI><A HREF="#5_4_2">Order</A></LI>
|
||||
<LI><A HREF="#5_4_3">Allow</A></LI>
|
||||
<LI><A HREF="#5_4_4">Deny</A></LI>
|
||||
<LI><A HREF="#5_4_5">AuthType</A></LI>
|
||||
<LI><A HREF="#5_4_6">AuthClass</A></LI>
|
||||
<LI><A HREF="#5_4_7">AuthGroupName</A></LI>
|
||||
<LI><A HREF="#5_4_8">SystemGroup</A></LI>
|
||||
<LI><A HREF=#5_4_1>Location</A></LI>
|
||||
<LI><A HREF=#5_4_2>Order</A></LI>
|
||||
<LI><A HREF=#5_4_3>Allow</A></LI>
|
||||
<LI><A HREF=#5_4_4>Deny</A></LI>
|
||||
<LI><A HREF=#5_4_5>AuthType</A></LI>
|
||||
<LI><A HREF=#5_4_6>AuthClass</A></LI>
|
||||
<LI><A HREF=#5_4_7>AuthGroupName</A></LI>
|
||||
<LI><A HREF=#5_4_8>SystemGroup</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#5_5">File Formats</A></LI>
|
||||
<LI><A HREF=#5_5>File Formats</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#5_5_1">mime.types</A></LI>
|
||||
<LI><A HREF="#5_5_2">mime.convs</A></LI>
|
||||
<LI><A HREF=#5_5_1>mime.types</A></LI>
|
||||
<LI><A HREF=#5_5_2>mime.convs</A></LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<B><A HREF="#6">5 - Printer Accounting</A></B>
|
||||
<B><A HREF=#6>5 - Printer Accounting</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#6_1">Where to Find the Log Files</A></LI>
|
||||
<LI><A HREF="#6_2">The access_log File</A></LI>
|
||||
<LI><A HREF="#6_3">The error_log File</A></LI>
|
||||
<LI><A HREF="#6_4">The page_log File</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#7">A - Using CUPS with SAMBA</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#7_1">What is SAMBA?</A></LI>
|
||||
<LI><A HREF="#7_2">How Do I Configure SAMBA for CUPS?</A></LI>
|
||||
<LI><A HREF="#7_3">How Do I Configure CUPS for SAMBA?</A></LI>
|
||||
<LI><A HREF=#6_1>Where to Find the Log Files</A></LI>
|
||||
<LI><A HREF=#6_2>The access_log File</A></LI>
|
||||
<LI><A HREF=#6_3>The error_log File</A></LI>
|
||||
<LI><A HREF=#6_4>The page_log File</A></LI>
|
||||
</UL>
|
||||
<HR>
|
||||
GIF89a¯ÿòÌÌÌ™™™fff333ÿÿÿÿÿÿÿÿÿ!ù,¯ÿBþXºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª2€0p,Ïtmßx®ï
|
||||
|
||||
<!--=�•pH,��Ö«Çl:ŸÐ¨”ù ¯Ø¬ÖXN¿à°xL~¬Û´zmxËð¸|N§Ùø¼(Pïûÿ€�bwz…jn‚‰Š‹Œ�9„†‘!-->
|
||||
;±Ýíˆndý !¸ ž³wà…MƒƒY~¿{,gÚ\‚äé
|
||||
Œ×Ø(tÙî!Ï=Ñ.ûz¯�áÑŸ:ì;Ã9qöíÉë]/¿ºÉ¤Et/†'Îþt9ÀØ–ž_ÙÇ\|W•wArö¸Ý�2Ô×
|
||||
tN°0Tï}�¡û‰$!‚yMxî)ˆš‰Ô�ø@nB°U½ÊwE„§!ŠF H L8B
|
||||
c‰;ždŠ-æDVWdг€h±äÚ“P¶%#(4Fiå•Ï\hŠ:�Re!\ÒÄ—X^¦%€¥À-$E€Ö/úHŽšlââöÌQX
|
||||
|
||||
<!--äÇ"iL :a7‚]›0IZ¡YØø¡‡D}¤–Uj±á
|
||||
^â䙿`Ú@¦5b|šà�«Á±§3Ñ KwÔ\ªB¨±H)+�=¡Ó©"
|
||||
©¢ 8uƒ†¸öŠD§•lþ:„d�RX�ilÌ:Ë!´;¹t+„e<
|
||||
‡;øô+‚bbhaÚ0Ê6é.D™ð޹̹ñÖkoê({ï¾ü{f¿-->
|
||||
¸1Nô¯b"œŠüjåÁÂE0…È8ö5GkZ|ÒÁwt„C»ÔQSÇo6ÔÙ�[�W„$²*Ž+4Pb-8¹P1þ'8"‘ФÄ$ Cyê‘„)>ãŠtè`Ð3‡‹¾z"«rE'Âqfä°Ë
|
||||
‘qÂ\|€„Ž¡ôö»%É(.—bڽȀ�íÉ`{¬EÇ1w’ »[Hß`(B6ö�“
|
||||
†')ÊRŽÎa[�ÃrbC!Tå°Œ
|
||||
2Q·ÈHZê#–®üË/àô¯FÝê(Û²% ºXË9öÀbÁ4f.ù-oý�™XËB…�IÎÒ7¹*@ÃÓŽÍT€hà‘ÌWâ�™Ã$f:µyžn†ó†r„'té�Kv`
|
||||
Ç+dª– œ79s�ò|'=×¢Ìx¶òœÿ„¦œˆeÎ;*à$þ” IÝÆaÏ{–3ŽÅ�Á
|
||||
P“ÍS[ÙL¨3©òQ7éÆò#ãûô0F×ðsE°t§@‘ØQÜ´´ ©:3ÓRíd �¥*MITnŒ£¨H]ØQÁd
|
||||
@òþ—¬rMœŽaO
|
||||
<!--x‹ŒÖ3½4 °XT'ª®ƒ:T£uéWeºádËeú¸è¬Ù7
|
||||
|
||||
ëÒÏ;„sœåµ7m(ýПtl¤RV�)-->
|
||||
rë^yÀ·(¸îéêû$uDòrã/a,I.°ÙUÀœb hˆ`�¾B ë"
|
||||
Ü`HØxȸo1þ[á\8f^æ|\ý‚¢¢zø0(ˆ\ {ƒÄgäÞõ€çâ§Á˜0*\³n¼‹m¶/Äeª±ÿ†ì
|
||||
Ç,½DN2€œº+ùÉ|í0L¡Le*ð¸Ã>­2ëf,eIPOËÅàr—±”80SAŸcFªatç»ãy¤¸ršçÌ¡5ïoõËsžï|¿8˙Φ¬þ,ï¼èà)ÁÌ;øk¡—†dDpÑòø2¢q�fHã!Ë“~ÙŸ-í
|
||||
'g:,æ4y?ýäP‹Z›ž#ÏÕ´Î5AK‰k]ûš›ÒKõ¯‡më€õzØÈƫ؎Ý>B{PЪ.6hf]º?©ÌIŽuO„í�M‚ÌÇÜcµ3˜
|
||||
61‹NÒ[†W£ ¦m¿­{ÂPâvζKnUˆ[ ònĽ±÷n?l:Áž3ušë�¬sP[ÿnn¾çP�…WõÔFj[Â÷
|
||||
¹vÏ™à‰˜xú�'ˆ£ÀÀ†p¸4.êãKÇ¿ÂÁ±o§¢ü"Á|Nk`îʘ
|
||||
<!--•¤7 yþ D-->
|
||||
�
|
||||
jl©ÌuˆËi™0pmC´«+‰÷6¤2­éÏe`(ŽJ]¥iõð3ƒØí"p|ª!:qøFس 6£
|
||||
@­,þŠqüã��oÌÇ®ž�ÖüV�“¶QÇ›Evî¹²É8ÙªS"æÀç‡x± àþ‡�>—Iãg
|
||||
ïÝ>Y‰çN80æ§ ±¾GLLìÕµ…(1Þ¼!8}þ¬“*…ª‰Ùì:e»´œ
|
||||
ª¿ên_6ÂÃSÀ`eG;Ö„CƒCcˆ¿‡4¸yeî¯Í)oøByRm½0?íLîÅ`QÿjÓÙ/ºôÓN|Ý
|
||||
<!--â9ço‘SŽà•?œýáu¿þá¯~!ÒŸ¿ÍÏüýÏ�Iw1ßþZÈN¥Ex£&\(¤á[ɤ€v2€WW-->
|
||||
|
||||
þÙAÜŒÁ¸D5©D a�ævx ?жx°DM@•!h‰àÈ€Ž§®
|
||||
• �á×B`ð¤ªE?›“”Þdƒ"8$Ý`Ki0…OðƒnΓ±µvtžè€I([,¹Ndɨh\'6X
|
||||
�Pã—Š‰Éøt ¢‘¥�˜¬è €ˆ†Ky™FˆŒë`š”yƒ„¨š €š‰ƒM©‡øFQhY„
|
||||
9¶X¯×–í4š¤™Y\)"¹AN]‰xéz÷Gq07�)�©ñ™•Y€r°ŒŽi‹ �z ™ÇäFÍÉT�–ù›
|
||||
ËŽC œwI›üX]‹¹\ëY]þf lïYbj8ŸÈuœbŸÍÅtú©fÞןfBI—“*øé:ÛØUj Ò
|
||||
ˆõ¹ Õp $(~ ¡Ú ¡gù{îp�ZI?¡ƒîÀv:“a¦˜6¢§Ô]Ý‘(ªê)!ŸÚ¢:
|
||||
jwµ¡4ÚvíHÛǘ9ºXhó•üù£¥Á¢VÉ{Dº2š‰(°¤3š¤a÷ +У¥“p¢þò4Vº—
|
||||
E´¥è¤k°7ºhT*€¿èw`ÚžiÄ …S¦Æ¦mê Nêƒ#ú¢f€ xê†ý
|
||||
8z©7�uÚp{Ú=~]7`«h‡ÚsÚg:…zd˜ó§ÎA-vþAñr¦'–AÚ)9–š¢âSi;£…š 1�ªo"ª
|
||||
¦J;“º rº8Ui|é>¡Úœú
|
||||
<!--pv³2<ƒj£·«É¦kÉ 1Š:¬Èe ”«ÉÚlÑ•ªÍZn¯Š2Ì‹s«ÁÖÚàé¨Ûº=¤zŽŸú6áUä
|
||||
Øš¨¿újá
|
||||
¦0®éJ«
|
||||
¯NÕ井öÐVeζ¯õbm¶7ù´Ž-->
|
||||
“ë¥Dfný2»ƒ–0j«�®»ºK;zë¢Íö»—!µ—S»³r>K+6ˆ‹¨XÒ»; CÈ
|
||||
8Ê;¢»ÃÛ/Œ‹¥ž!¬s½VR½óõÏ‹Oâ[/çK¨þ˜Ñ:Í‹\Ý+ Sc:ïËž’º¶ë9Æ»
|
||||
<!--ëSç�½¤tj ½YUÀœãÀ©%
|
||||
Ìró)Á0¨§—³½Ç…Á¬Ì¤LÛ6øK!<Á:Àê*ª…ÃÁî…Á.‡²
|
||||
¥¼‘z Âä ¦ýËÀ~¸7<,´GóÃý‹ÂöêÀe:Ä¢‰°ë«£m£,žyAI¡…˜Q!8-->
|
||||
ô 8ly$
|
||||
8©ÙÅmX2Ùh>—?¯!šHüÁ^LsP,Ÿ«Y‹âá¿ÿtšì‚£Y
|
||||
r¦Éš¥9ÇjžÄ8-ÆÇŒ¶iêPÂbA˜ù‰Ã¸š»³7RœCWRoìŠå MŒŠ�”åt™ Œ›�réÉq
|
||||
<!--Zva&‹Z¤jzÊŠ¬‡7èV)“‹|›ká�!¦*€Á¶öÄ84’Wž¶L�Êñ½Fª6ÄOq̰Š}Ŭ—|žÎ|4!ÍAh+è•L¢
|
||||
%|‹Û¬Å$-->
|
||||
|
||||
å�>}�Lê}ÎǨ 5:àŒ|�"þÇwÐsøæ�Nΰ¹#R>~-N‰®èƒ ßcðÞÚÎÑ¥®åGÎâ툉Ýè*‚¸
|
||||
=‚ž ºëâ…­ëÀ>Û·žën^žmèÊëð¼ã>å×Λ«}êØ÷
|
||||
“�Œ¬ËI�Á·AÔNÍëv>]t.âÚLЫþíï¾ñnäÖÜæs¹¿±â°+†
|
||||
¬UØïî•.ç¬ÎìÍ.è´ÞŠG=ðù��‚§ž¯”ë^äÛ®êh-‹ê�ê!i!�ÕvMíiªîþ¾òîá/þÑ-OÖGð,oñº!å’gOâ P�OìOôBþÈàhâ+?ï>ßÊVHÀsaõ™€õ$óSîõ—»�ó8.žß¹
|
||||
~áßÈ©ö»]ò3ëÆt_÷[ïôb¯ç‚Ü÷Õ«@u™ð;zܘ‘Ü@óŽ2’?ùƒ¸ÙlùF ¶™¯ù›N ž0œú£¶¤ÿ0#9:�ß§½ž©Ÿ\#ÃÙæó2é+û‚ÀÓ¸�_äM/ÓtaÚý3”]Ù«¿¸iîaF>ª�}ŒØvÍïMÍ÷Ðëä©îrÜŒöqñ_ÀüªrâF®ò
|
||||
ýþ¸—hT_ã�4sx”ýÝî)ç.Qgû�àŸÏ%ì‹}i´ASû|þð@QÜ
|
||||
$J9€»-̱÷Üô�MØ‘hZ˜¦:°œ*ÏlßxÒ|ϼ¡ÅLÀ� ¬Áfù9BÑdìÁ|«VV„¢�“énKv
|
||||
<!--u贮̮iiçͦt›šV/.²ê}mywu#|Yc‚X|jŽ�x‹dE“)0U
|
||||
�’ T–<W€o zbQ`F�¥2›�³:�°Ctª·‰!™²*¨…º»¢~аz¬†Á¯Ä‡´Õ޶Ó(iÃm²F›ÍÚhÜޓơօäc|ØËUÒÙþ²ëøçõƒ³ÜØ<î™w‰Ö¿Eéhä›@ðÂ
|
||||
-->
|
||||
|
||||
kB�_ƒg 3ʳ8#Þ¬L=0;J¤äÈ@¤F|'i~±© žaÊŠÆg;d*3²”©bPÏ¢TäHô¦?�[†
|
||||
ÄäƒhN6ZM¢D:c*BR!$±ckƒ’V­-uÛ@[øp„Ÿ]¼8ö-1{TήWÏ2ñ� Šp=¸q«Ñ½es.‰„4+#Ëe¦¥W5µekxr䛓/XÍš5Iǃ=kÝúµì˰û�N–2q�Å[r¦yZ£QŽ›ÇÞ�txŠäcK—Ííɹ
|
||||
iþ¡9¼m1oñ¢©/²8îìSté4l’Wm¾9óéÖÛÐãã{{üzÞ¿çøêöÞzà}œàL¨ "˜
|
||||
ÄÐsà¶PGLUúå`MÞ ¡†9¬§Û{pX¸¡wÚw߇¡¨ ‰í "M�UXNx
|
||||
<!--É……¡×ƒ��à¨âŠêÄõ#ƒå“Ž:Å(ã4Ö¸Až˜�:@Ùw¸ YÝ‹tIã’Ö”˜$…a(å‹X¥F7×IÈbŠ["Y€M縹K~`¶Øä-->
|
||||
+l´á¦
|
||||
j²F:Á.êÆÛj¤³Búî ¼Ê«/£Ö’[н#í+ð¥ænJÞ¸«æ;ð©õ‹¨ _ËðÄŠÒ»*º?
|
||||
ƒÂwœ�Ãyzh±°Øzl2,#oZ2È›r|òË‚°¼$Ç)ë
|
||||
óÍÙÔ,éfs€1Î@/øîÏPõÌiÐH·�ðÃBkLtÒP¯bôS;NÝWÔXÏ
|
||||
ó’dlÍtÖ`�°tžOc óÅa§}AÄ›²1vËjÇmþu+`ÍÍÁ·qwü6˜‚ì½sÞXŸ�¨Ë$xM6àP³-iÉSÚ½AÙˆïë84–ø=xä8^!ä*L>Þ˜ƒk¹Œ({Iè�^!ḘN$ê
|
||||
«®ç!ºû‚ÿÝ ë¯ßoî—Oü¨¾ÿî9í]ñÞ{ñÙÊ®ãlhŽ(èÌÃê¼~ÔS¢|öÕŸzýw¬Ë§|øÝ—*½ŒÈ×­|úåwzþæ“)Nrû¾Ê?*ô¥
|
||||
¿*÷ô7ú½~Múúú÷ª÷Ɉ•S3x*ûí�P”ùH£�°°àó(è¾í-Jƒú™
|
||||
åAF�{#\”g…Áœ)�!),Ô #ÓÂǼ�jþ1œŒþh©²K„9$ƒYè)Ž ˆA È
|
||||
—‡)#1‰Óp"˜ð'Ã%n‰P´‡Ù¨-‹1³¢^\%ƈÔp„CLÖ5Ã
|
||||
<!--a‘�^œßâx¯
|
||||
€±peŒ-->
|
||||
<HR>
|
||||
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=1>Preface</A></H1>
|
||||
This software administrators manual provides printer administration
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.4.
|
||||
<H2><A NAME="1_1">System Overview</A></H2>
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.2.
|
||||
<H2><A NAME=1_1>System Overview</A></H2>
|
||||
The Common UNIX Printing System provides a portable printing layer for
|
||||
UNIX® operating systems. It has been developed by Easy Software
|
||||
Products to promote a standard printing solution for all UNIX vendors
|
||||
@@ -217,7 +109,7 @@ applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 4.03) and an image file RIP that
|
||||
can be used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_2">Document Overview</A></H2>
|
||||
<H2><A NAME=1_2>Document Overview</A></H2>
|
||||
<P>This software administrators manual is organized into the following
|
||||
sections:</P>
|
||||
<UL>
|
||||
@@ -226,12 +118,11 @@ sections:</P>
|
||||
<LI>3 - Printer Queue Management</LI>
|
||||
<LI>4 - Printing System Management</LI>
|
||||
<LI>5 - Printer Accounting</LI>
|
||||
<LI>A - Using CUPS with SAMBA</LI>
|
||||
</UL>
|
||||
<H1 ALIGN="RIGHT"><A NAME="2">1 - Printing System Overview</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=2>1 - Printing System Overview</A></H1>
|
||||
<P>This chapter provides an overview of how the Common UNIX Printing
|
||||
System works. </P>
|
||||
<H2><A NAME="2_1">The Printing Problem</A></H2>
|
||||
<H2><A NAME=2_1>The Printing Problem</A></H2>
|
||||
<P>For years <I>the printing problem</I> has plagued UNIX®. Unlike
|
||||
Microsoft® Windows® or MacOS, UNIX has no standard interface or system
|
||||
in place for supporting printers. Among the solutions previously
|
||||
@@ -253,7 +144,7 @@ that supports a wide range of file formats with little or no effort.
|
||||
Since CUPS provides both the System V and Berkeley printing commands,
|
||||
users (and applications) can reap the benefits of this new technology
|
||||
with no changes. </P>
|
||||
<H2><A NAME="2_2">The Technology</A></H2>
|
||||
<H2><A NAME=2_2>The Technology</A></H2>
|
||||
<P>CUPS is based upon an emerging Internet standard called the Internet
|
||||
Printing Protocol, or IPP. IPP has been embraced by dozens of printer
|
||||
and printer server manufacturers, and will be supported by the next
|
||||
@@ -273,17 +164,17 @@ using their web browser. </P>
|
||||
Basic authentication and domain or IP-based access control. Digest
|
||||
authentication and TLS encryption will be available in future versions
|
||||
of CUPS. </P>
|
||||
<H2><A NAME="2_3">Jobs</A></H2>
|
||||
<H2><A NAME=2_3>Jobs</A></H2>
|
||||
<P>Each file that is submitted for printing is called a <I>job</I>.
|
||||
Jobs are identified by a unique number starting at 1 and are assigned
|
||||
to a particular destination (usually a printer). Jobs can also have
|
||||
options associated with them such as media size, number of copies, and
|
||||
priority. </P>
|
||||
<H2><A NAME="2_4">Classes</A></H2>
|
||||
<H2><A NAME=2_4>Classes</A></H2>
|
||||
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs
|
||||
sent to a class are forwarded to the first available printer in the
|
||||
class. </P>
|
||||
<H2><A NAME="2_5">Filters</A></H2>
|
||||
<H2><A NAME=2_5>Filters</A></H2>
|
||||
<P>Filters allow a user or application to print many types of files
|
||||
without extra effort. Print jobs sent to a CUPS server are filtered
|
||||
before sending them to a printer. Some filters convert job files to
|
||||
@@ -299,13 +190,13 @@ printer. </P>
|
||||
<P>CUPS provides backends for printing over parallel and serial ports,
|
||||
and over the network via the JetDirect (AppSocket), Server Message
|
||||
Block, and Line Printer Daemon protocols. </P>
|
||||
<H2><A NAME="2_6">Printer Drivers</A></H2>
|
||||
<H2><A NAME=2_6>Printer Drivers</A></H2>
|
||||
<P>Printer drivers in CUPS consist of one of more filters specific to a
|
||||
printer. CUPS includes a sample printer driver for Hewlett-Packard
|
||||
LaserJet and DeskJet printers. While this driver does not generate
|
||||
optimal output for different printer models, it does demonstrate how
|
||||
you can write your own printer drivers and incorporate them into CUPS. </P>
|
||||
<H2><A NAME="2_7">Networking</A></H2>
|
||||
<H2><A NAME=2_7>Networking</A></H2>
|
||||
<P>Printers and classes on the local system are automatically shared
|
||||
with other systems on the network. This allows you to setup one system
|
||||
to print to a printer and use this system as a printer server or spool
|
||||
@@ -321,13 +212,13 @@ example, so that you aren't relying on a single system for printing.
|
||||
Because this also works with printer classes, you can setup multiple
|
||||
servers and printers and never worry about a "single point of failure"
|
||||
unless all of the printers and servers goes down! </P>
|
||||
<H1 ALIGN="RIGHT"><A NAME="3">2 - Building and Installing CUPS</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=3>2 - Building and Installing CUPS</A></H1>
|
||||
<P>This chapter shows how to build and install the Common UNIX Printing
|
||||
System. If you are installing a binary distribution from the CUPS web
|
||||
site, proceed to the section titled, <A HREF="#binary">Installing a
|
||||
site, proceed to the section titled, <A HREF=#binary>Installing a
|
||||
Binary Distribution</A>. </P>
|
||||
<H2><A NAME="3_1">Installing a Source Distribution</A></H2>
|
||||
<H3><A NAME="3_1_1">Requirements</A></H3>
|
||||
<H2><A NAME=3_1>Installing a Source Distribution</A></H2>
|
||||
<H3><A NAME=3_1_1>Requirements</A></H3>
|
||||
<P>You'll need an ANSI C compiler to build CUPS on your system. As its
|
||||
name implies, CUPS is designed to run on the UNIX operating system,
|
||||
however the CUPS interface library and most of the filters and backends
|
||||
@@ -338,24 +229,24 @@ reduced functionality. Easy Software Products maintains a mirror of the
|
||||
current versions of these libraries at: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<A HREF="ftp://ftp.easysw.com/pub/libraries">ftp://ftp.easysw.com/pub/libraries</A>
|
||||
<A HREF=ftp://ftp.easysw.com/pub/libraries>ftp://ftp.easysw.com/pub/libraries</A>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>If you make changes to the man pages you'll need GNU groff or
|
||||
another nroff-like package. GNU groff is available from: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<A HREF="ftp://ftp.gnu.org/pub/groff">ftp://ftp.gnu.org/pub/groff</A>
|
||||
<A HREF=ftp://ftp.gnu.org/pub/groff>ftp://ftp.gnu.org/pub/groff</A>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The documentation is formatted using the HTMLDOC software. If you
|
||||
need to make changes you can get the HTMLDOC software from: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<A HREF="http://www.easysw.com/htmldoc">http://www.easysw.com/htmldoc</A>
|
||||
<A HREF=http://www.easysw.com/htmldoc>http://www.easysw.com/htmldoc</A>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_2">Compiling CUPS</A></H3>
|
||||
<H3><A NAME=3_1_2>Compiling CUPS</A></H3>
|
||||
<P>CUPS uses GNU autoconf to configure the makefiles and source code
|
||||
for your system. To configure CUPS for your system type: </P>
|
||||
<UL>
|
||||
@@ -390,14 +281,14 @@ LDFLAGS</CODE> environment variables prior to running configure: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>to build the software. </P>
|
||||
<H3><A NAME="3_1_3">Installing the Software</A></H3>
|
||||
<H3><A NAME=3_1_3>Installing the Software</A></H3>
|
||||
<P>To install the software type: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
% make install ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_4">Running the Software</A></H3>
|
||||
<H3><A NAME=3_1_4>Running the Software</A></H3>
|
||||
Once you have installed the software you can start the CUPS daemon by
|
||||
typing:
|
||||
<UL>
|
||||
@@ -405,7 +296,7 @@ typing:
|
||||
% /usr/sbin/cupsd & ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="binary">Installing a Binary Distribution</A></H2>
|
||||
<H2><A NAME=binary>Installing a Binary Distribution</A></H2>
|
||||
<P>We are currently distributing CUPS binary distributions in TAR
|
||||
format with installation and removal scripts. </P>
|
||||
<UL><B>WARNING:</B>
|
||||
@@ -425,16 +316,16 @@ installation script with: </P>
|
||||
</UL>
|
||||
<P>After asking you a few yes/no questions the CUPS software will be
|
||||
installed and the scheduler will be started automatically. </P>
|
||||
<H1 ALIGN="RIGHT"><A NAME="4">3 - Printer Queue Management</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=4>3 - Printer Queue Management</A></H1>
|
||||
<P>This chapter discusses how to add, modify, and delete print queues
|
||||
on your system. </P>
|
||||
<H2><A NAME="4_1">The lpadmin Command</A></H2>
|
||||
<H2><A NAME=4_1>The lpadmin Command</A></H2>
|
||||
<P>The <CODE>lpadmin</CODE> command allows you to perform most printer
|
||||
administration tasks from the command-line. Since <CODE>lpadmin</CODE>
|
||||
is also a System V printing system command, it is located in the <CODE>
|
||||
/usr/lib</CODE> directory instead of a more common one like <CODE>
|
||||
/usr/bin</CODE> or <CODE>/usr/sbin</CODE>. </P>
|
||||
<H2><A NAME="4_2">Adding and Modifying Printers</A></H2>
|
||||
<H2><A NAME=4_2>Adding and Modifying Printers</A></H2>
|
||||
<P>To add a printer to CUPS you simply run the <CODE>lpadmin</CODE>
|
||||
command with the "-p" option: </P>
|
||||
<UL>
|
||||
@@ -475,7 +366,6 @@ character:
|
||||
</UL>
|
||||
</DD>
|
||||
<DT>smb://[username:password@]hostname/queue </DT>
|
||||
<DT>smb://[username:password@]workgroup/hostname/queue </DT>
|
||||
<DD>Sends all output to the specified SMB (Windows) printer queue
|
||||
using the SAMBA software. </DD>
|
||||
<DT>socket://hostname[:port] </DT>
|
||||
@@ -486,7 +376,7 @@ protocol. The <I>port</I> parameter defaults to 9100. </DD>
|
||||
file to use for this printer. Many options (such as media size, etc.)
|
||||
will not be available if you omit this part of the <CODE>lpadmin</CODE>
|
||||
command. </P>
|
||||
<H3><A NAME="4_2_1">Using Standard Printer Drivers</A></H3>
|
||||
<H3><A NAME=4_2_1>Using Standard Printer Drivers</A></H3>
|
||||
<P>The <CODE>lpadmin</CODE> command allows you to use "standard" PPD
|
||||
files and interface scripts located in the <CODE>/usr/share/cups/model</CODE>
|
||||
directory with the "-m" option: </P>
|
||||
@@ -504,7 +394,7 @@ would use: </P>
|
||||
% /usr/lib/lpadmin -pDeskJet -E -vparallel:/dev/par1 -mdeskjet.ppd ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="4_3">Removing Printers</A></H2>
|
||||
<H2><A NAME=4_3>Removing Printers</A></H2>
|
||||
<P>To remove a printer to CUPS you simply run the <CODE>lpadmin</CODE>
|
||||
command with the "-x" option: </P>
|
||||
<UL>
|
||||
@@ -512,7 +402,7 @@ would use: </P>
|
||||
% /usr/lib/lpadmin -x<I>printer</I> ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="4_4">Printer Classes</A></H2>
|
||||
<H2><A NAME=4_4>Printer Classes</A></H2>
|
||||
<P>CUPS allows you to group similar printers in a <I>printer class</I>.
|
||||
When a user sends a print job to a class, the job will be processed by
|
||||
the first available printer in that class. </P>
|
||||
@@ -530,7 +420,7 @@ remove a class just use the "-x" option: </P>
|
||||
% /usr/lib/lpadmin -x<I>class</I> ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="4_5">Setting the Default Printer</A></H2>
|
||||
<H2><A NAME=4_5>Setting the Default Printer</A></H2>
|
||||
<P>To set the default printer or class simply run the <CODE>lpadmin</CODE>
|
||||
command with the "-d" option: </P>
|
||||
<UL>
|
||||
@@ -539,7 +429,7 @@ remove a class just use the "-x" option: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The <I>destination</I> argument is the name of the printer or class. </P>
|
||||
<H2><A NAME="4_6">Starting and Stopping Printers</A></H2>
|
||||
<H2><A NAME=4_6>Starting and Stopping Printers</A></H2>
|
||||
<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and
|
||||
stop printer queues, respectively: </P>
|
||||
<UL>
|
||||
@@ -552,7 +442,7 @@ stop printer queues, respectively: </P>
|
||||
won't actually print any files until they are restarted. This is useful
|
||||
if the printer malfunctions and you need time to correct the problem.
|
||||
Any queues jobs are printed after the printer is enabled (started). </P>
|
||||
<H2><A NAME="4_7">Accepting and Rejecting Print Jobs</A></H2>
|
||||
<H2><A NAME=4_7>Accepting and Rejecting Print Jobs</A></H2>
|
||||
<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and
|
||||
reject print jobs for the named printer, respectively: </P>
|
||||
<UL>
|
||||
@@ -566,9 +456,9 @@ jobs. A printer can also be rejecting new print jobs while it finishes
|
||||
those that have been queued. This is useful for when you must perform
|
||||
maintenance on the printer and will not have it available to users for
|
||||
a long period of time. </P>
|
||||
<H1 ALIGN="RIGHT"><A NAME="5">4 - Printing System Management</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=5>4 - Printing System Management</A></H1>
|
||||
<P>This chapter shows how you can configure the CUPS server. </P>
|
||||
<H2><A NAME="5_1">Changing the Configuration Files</A></H2>
|
||||
<H2><A NAME=5_1>Changing the Configuration Files</A></H2>
|
||||
<P>All of the server configuration files are located in the <CODE>
|
||||
/var/cups/conf</CODE> directory. Once you have made a change to a file
|
||||
you need to restart the CUPS server by sending it a HUP signal or using
|
||||
@@ -581,7 +471,7 @@ the supplied script "<CODE>cups.sh</CODE>": </P>
|
||||
<P>The binary distribution installs the script in the <CODE>init.d</CODE>
|
||||
directory with the name <CODE>lp</CODE> or <CODE>lpd</CODE> depending
|
||||
on the vendor-supplied printing system. </P>
|
||||
<H2><A NAME="5_2">Temporary Files</A></H2>
|
||||
<H2><A NAME=5_2>Temporary Files</A></H2>
|
||||
<P>Normally CUPS puts all of its temporary files in <CODE>/var/tmp</CODE>
|
||||
. If you'd like to change this directory you'll need to edit the <CODE>
|
||||
/var/cups/conf/cupsd.conf</CODE> file. </P>
|
||||
@@ -602,19 +492,19 @@ TempDir <I>/foo/bar/tmp</I>
|
||||
</UL>
|
||||
<P>Finally, restart the server as outlined in the first section of this
|
||||
chapter. </P>
|
||||
<H2><A NAME="5_3">Network Configuration</A></H2>
|
||||
<H2><A NAME=5_3>Network Configuration</A></H2>
|
||||
<P>The default configuration of the CUPS server listens for connections
|
||||
from all network interfaces on port 631 (the standard IPP port).
|
||||
Administration functions are limited to local connections with the
|
||||
appropriate username and password. </P>
|
||||
<P>If you'd like to limit access to your system you'll need to edit the <CODE>
|
||||
/var/cups/conf/cupsd.conf</CODE> file. </P>
|
||||
<H3><A NAME="5_3_1">Port</A></H3>
|
||||
<H3><A NAME=5_3_1>Port</A></H3>
|
||||
<P>The <CODE>Port</CODE> directive specifies a port to listen on for
|
||||
all interfaces. Besides the standard IPP port (631) you can also setup
|
||||
your server to listen on the HTTP port (80) to use your CUPS server as
|
||||
a standard web server as well. </P>
|
||||
<H3><A NAME="5_3_2">Listen</A></H3>
|
||||
<H3><A NAME=5_3_2>Listen</A></H3>
|
||||
<P>The <CODE>Listen</CODE> directive specifies a listening address and
|
||||
port, extending the functionality of the <CODE>Port</CODE> directive.
|
||||
If you want to allow connections only from the local machine you can
|
||||
@@ -628,7 +518,7 @@ Listen 127.0.0.1:631
|
||||
<P>If you want to limit access to a specific network/subnet, make sure
|
||||
you specify only the network address and not your system's network
|
||||
address! </P>
|
||||
<H3><A NAME="5_3_3">BrowsePort</A></H3>
|
||||
<H3><A NAME=5_3_3>BrowsePort</A></H3>
|
||||
<P>The <CODE>BrowsePort</CODE> directive controls which port is
|
||||
monitored for remote printers. By default it is set to the IPP port
|
||||
(631), however you can change it as needed. </P>
|
||||
@@ -636,7 +526,7 @@ monitored for remote printers. By default it is set to the IPP port
|
||||
<P>You must set the <CODE>BrowsePort</CODE> to the same value on all
|
||||
of the systems that you want to see. </P>
|
||||
</UL>
|
||||
<H3><A NAME="5_3_4">BrowseAddress</A></H3>
|
||||
<H3><A NAME=5_3_4>BrowseAddress</A></H3>
|
||||
<P>The <CODE>BrowseAddress</CODE> directive specifies a broadcast
|
||||
address to use when sending printer status updates over the network.
|
||||
The default browse address is <CODE>255.255.255.255</CODE> which will
|
||||
@@ -646,10 +536,10 @@ send printer information to all subnets. </P>
|
||||
bits, printer browsing (and in fact all broadcast reception) will not
|
||||
work. This problem appears to be fixed in HP-UX 11.0. </P>
|
||||
</UL>
|
||||
<H2><A NAME="5_4">Printer Security</A></H2>
|
||||
<H2><A NAME=5_4>Printer Security</A></H2>
|
||||
<P>CUPS provides IP and domain-name based access control and Basic
|
||||
authentication for authentication. </P>
|
||||
<H3><A NAME="5_4_1">Location</A></H3>
|
||||
<H3><A NAME=5_4_1>Location</A></H3>
|
||||
<P>The <CODE>Location</CODE> directive defines access control for a
|
||||
specific HTTP directory. The following pseudo directories are provided
|
||||
by the CUPS server: </P>
|
||||
@@ -680,7 +570,7 @@ Allow From 127.0.0.1
|
||||
</Location>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="5_4_2">Order</A></H3>
|
||||
<H3><A NAME=5_4_2>Order</A></H3>
|
||||
<P>The <CODE>Order</CODE> directive defines the default access control.
|
||||
The following values are supported: </P>
|
||||
<UL>
|
||||
@@ -691,7 +581,7 @@ listed in an <CODE>Allow</CODE> directive. </LI>
|
||||
</UL>
|
||||
<P>The <CODE>Order</CODE> directive must appear inside a <CODE>Location</CODE>
|
||||
directive. </P>
|
||||
<H3><A NAME="5_4_3">Allow</A></H3>
|
||||
<H3><A NAME=5_4_3>Allow</A></H3>
|
||||
<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address,
|
||||
or network that is allowed access to the server: </P>
|
||||
<UL>
|
||||
@@ -713,7 +603,7 @@ Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
|
||||
Allow</CODE> directives can be used to allow access for multiple hosts
|
||||
or networks. The <CODE>/mm</CODE> notation specifies a CIDR netmask:
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="80%">
|
||||
<TABLE BORDER=1 WIDTH=80%>
|
||||
<TR><TH>mm</TH><TH>netmask</TH></TR>
|
||||
<TR><TD>0</TD><TD>0.0.0.0</TD></TR>
|
||||
<TR><TD>1</TD><TD>128.0.0.0</TD></TR>
|
||||
@@ -728,7 +618,7 @@ or networks. The <CODE>/mm</CODE> notation specifies a CIDR netmask:
|
||||
</P>
|
||||
<P>The <CODE>Allow</CODE> directive must appear inside a <CODE>Location</CODE>
|
||||
directive. </P>
|
||||
<H3><A NAME="5_4_4">Deny</A></H3>
|
||||
<H3><A NAME=5_4_4>Deny</A></H3>
|
||||
<P>The <CODE>Deny</CODE> directive specifies a hostname, IP address, or
|
||||
network that is allowed access to the server: </P>
|
||||
<UL>
|
||||
@@ -750,7 +640,7 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
|
||||
directives can be used to allow access for multiple hosts or networks.
|
||||
The <CODE>/mm</CODE> notation specifies a CIDR netmask:
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="80%">
|
||||
<TABLE BORDER=1 WIDTH=80%>
|
||||
<TR><TH>mm</TH><TH>netmask</TH></TR>
|
||||
<TR><TD>0</TD><TD>0.0.0.0</TD></TR>
|
||||
<TR><TD>1</TD><TD>128.0.0.0</TD></TR>
|
||||
@@ -765,7 +655,7 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
|
||||
</P>
|
||||
<P>The <CODE>Deny</CODE> directive must appear inside a <CODE>Location</CODE>
|
||||
directive. </P>
|
||||
<H3><A NAME="5_4_5">AuthType</A></H3>
|
||||
<H3><A NAME=5_4_5>AuthType</A></H3>
|
||||
<P>The <CODE>AuthType</CODE> directive defines the type of
|
||||
authentication to perform: </P>
|
||||
<UL>
|
||||
@@ -776,7 +666,7 @@ using the UNIX password and group files. </LI>
|
||||
</UL>
|
||||
<P>The <CODE>AuthType</CODE> directive must appear inside a <CODE>
|
||||
Location</CODE> directive. </P>
|
||||
<H3><A NAME="5_4_6">AuthClass</A></H3>
|
||||
<H3><A NAME=5_4_6>AuthClass</A></H3>
|
||||
<P>The <CODE>AuthClass</CODE> directive defines what level of <CODE>
|
||||
Basic</CODE> access is required: </P>
|
||||
<UL>
|
||||
@@ -792,21 +682,21 @@ AuthGroupName</CODE> directive. </LI>
|
||||
</UL>
|
||||
<P>The <CODE>AuthClass</CODE> directive must appear inside a <CODE>
|
||||
Location</CODE> directive. </P>
|
||||
<H3><A NAME="5_4_7">AuthGroupName</A></H3>
|
||||
<H3><A NAME=5_4_7>AuthGroupName</A></H3>
|
||||
<P>The <CODE>AuthGroupName</CODE> directive sets the group to use for <CODE>
|
||||
Group</CODE> authentication. </P>
|
||||
<P>The <CODE>AuthGroupName</CODE> directive must appear inside a <CODE>
|
||||
Location</CODE> directive. </P>
|
||||
<H3><A NAME="5_4_8">SystemGroup</A></H3>
|
||||
<H3><A NAME=5_4_8>SystemGroup</A></H3>
|
||||
<P>The <CODE>SystemGroup</CODE> directive sets the administration group
|
||||
used when authenticating the <CODE>System</CODE> type. It defaults to
|
||||
the "sys" group. </P>
|
||||
<H2><A NAME="5_5">File Formats</A></H2>
|
||||
<H2><A NAME=5_5>File Formats</A></H2>
|
||||
<P>CUPS provides a MIME-based file typing and filtering mechanism to
|
||||
convert files to a printable format for each printer. The <CODE>
|
||||
mime.types</CODE> and <CODE>mime.convs</CODE> files define the file
|
||||
type and filters that are available on the system. </P>
|
||||
<H3><A NAME="5_5_1">mime.types</A></H3>
|
||||
<H3><A NAME=5_5_1>mime.types</A></H3>
|
||||
<P>The <CODE>mime.types</CODE> defines the known file types. Each line
|
||||
of the file starts with the MIME type and may be followed by one or
|
||||
more file type recognition rules. For example, the <CODE>text/html</CODE>
|
||||
@@ -848,7 +738,7 @@ identical (network or "big-endian" byte order) </LI>
|
||||
<LI><CODE>locale("string")</CODE> - True if current locale matches
|
||||
string </LI>
|
||||
</UL>
|
||||
<H3><A NAME="5_5_2">mime.convs</A></H3>
|
||||
<H3><A NAME=5_5_2>mime.convs</A></H3>
|
||||
<P>The <CODE>mime.convs</CODE> file defines all of the filter programs
|
||||
that are known to the system. Each line consists of: </P>
|
||||
<UL>
|
||||
@@ -885,13 +775,13 @@ program job user title options [filename]
|
||||
<P>If specified, the <I>filename</I> argument defines a file to read
|
||||
when filtering, otherwise the filter must read from the standard input.
|
||||
All filtered output must go to the standard output. </P>
|
||||
<H1 ALIGN="RIGHT"><A NAME="6">5 - Printer Accounting</A></H1>
|
||||
<H1 ALIGN=RIGHT><A NAME=6>5 - Printer Accounting</A></H1>
|
||||
This chapter describes the CUPS log files.
|
||||
<H2><A NAME="6_1">Where to Find the Log Files</A></H2>
|
||||
<H2><A NAME=6_1>Where to Find the Log Files</A></H2>
|
||||
<P>The log files are normally stored in the <CODE>/var/cups/logs</CODE>
|
||||
directory. You can change this by editing the <CODE>
|
||||
/var/cups/conf/cupsd.conf</CODE> configuration file. </P>
|
||||
<H2><A NAME="6_2">The access_log File</A></H2>
|
||||
<H2><A NAME=6_2>The access_log File</A></H2>
|
||||
<P>The <CODE>access_log</CODE> file lists each HTTP resource that is
|
||||
accessed by a web browser or CUPS/IPP client. Each line is in the
|
||||
so-called "Common Log Format" used by many web servers and web
|
||||
@@ -930,7 +820,7 @@ above. </P>
|
||||
<P>The <I>bytes</I> field contains the number of bytes in the request.
|
||||
For POST requests the <I>bytes</I> field contains the number of bytes
|
||||
of non-IPP data that is received from the client. </P>
|
||||
<H2><A NAME="6_3">The error_log File</A></H2>
|
||||
<H2><A NAME=6_3>The error_log File</A></H2>
|
||||
<P>The <CODE>error_log</CODE> file lists messages from the scheduler
|
||||
(errors, warnings, etc.): </P>
|
||||
<UL>
|
||||
@@ -953,7 +843,7 @@ I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.
|
||||
page started printing. The format of this field is identical to the <I>
|
||||
data-time</I> field in the <CODE>access_log</CODE> file. </P>
|
||||
<P>The <I>message</I> fields contains a free-form textual message. </P>
|
||||
<H2><A NAME="6_4">The page_log File</A></H2>
|
||||
<H2><A NAME=6_4>The page_log File</A></H2>
|
||||
<P>The <CODE>page_log</CODE> file lists each page that is sent to a
|
||||
printer. Each line contains the following information: </P>
|
||||
<UL>
|
||||
@@ -979,44 +869,5 @@ data-time</I> field in the <CODE>access_log</CODE> file. </P>
|
||||
number and number of copies being printed of that page. For printer
|
||||
that can not produce copies on their own, the <I>num-pages</I> field
|
||||
will always be 1. </P>
|
||||
<H1 ALIGN="RIGHT"><A NAME="7">A - Using CUPS with SAMBA</A></H1>
|
||||
<P>This appendix describes how to use CUPS with SAMBA. </P>
|
||||
<H2><A NAME="7_1">What is SAMBA?</A></H2>
|
||||
<P>In case you haven't heard of SAMBA, it is basically a software
|
||||
package that allows you to configure your UNIX system as a Windows file
|
||||
and printer server. It also allows you to access files and printers on
|
||||
a Windows system. Like CUPS, SAMBA is free software. </P>
|
||||
<P>SAMBA version 2.0.6 is the first release of SAMBA that supports
|
||||
CUPS. You can download SAMBA from: </P>
|
||||
<P ALIGN="CENTER"><A HREF="http://www.samba.org">http://www.samba.org</A>
|
||||
</P>
|
||||
<H2><A NAME="7_2">How Do I Configure SAMBA for CUPS?</A></H2>
|
||||
<P>To configure SAMBA for CUPS, edit the <CODE>smb.conf</CODE> file and
|
||||
replace the existing printing commands and options with the line: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
printing = cups
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>That's all there is to it! Remote users will now be able to browse
|
||||
and print to printers on your system. </P>
|
||||
<H2><A NAME="7_3">How Do I Configure CUPS for SAMBA?</A></H2>
|
||||
<P>To configure CUPS for SAMBA, run the following command: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
% ln -s `which smbspool` /var/cups/backend/smb ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The <CODE>smbspool</CODE> program is provided with SAMBA starting
|
||||
with SAMBA 2.0.6. Once you have made the link you can use the <CODE>smb</CODE>
|
||||
method in the device URI for your printers: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
% lpadmin -p <I>printer</I> -v smb://<I>hostname/printer</I> ... ENTER
|
||||
% lpadmin -p <I>printer</I> -v smb://<I>workgroup/hostname/printer</I> ... ENTER
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The second form only needs to be used if the Windows system is in a
|
||||
different workgroup. </P>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+931
-1013
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+2
-52
@@ -1,7 +1,7 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.4">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.2">
|
||||
<META NAME="Author" CONTENT="Easy Software Products">
|
||||
<TITLE>CUPS Software Administrators Manual</TITLE>
|
||||
</HEAD>
|
||||
@@ -10,7 +10,7 @@
|
||||
<H1 ALIGN=RIGHT>Preface</H1>
|
||||
|
||||
This software administrators manual provides printer administration
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.4.
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.2.
|
||||
|
||||
<H2>System Overview</H2>
|
||||
|
||||
@@ -42,7 +42,6 @@ can be used to support non-PostScript printers.
|
||||
<LI>3 - Printer Queue Management</LI>
|
||||
<LI>4 - Printing System Management</LI>
|
||||
<LI>5 - Printer Accounting</LI>
|
||||
<LI>A - Using CUPS with SAMBA</LI>
|
||||
</UL>
|
||||
|
||||
<H1 ALIGN=RIGHT>1 - Printing System Overview</H1>
|
||||
@@ -345,7 +344,6 @@ CUPS:
|
||||
</UL>
|
||||
|
||||
<DT>smb://[username:password@]hostname/queue
|
||||
<DT>smb://[username:password@]workgroup/hostname/queue
|
||||
<DD>Sends all output to the specified SMB (Windows) printer queue
|
||||
using the SAMBA software.
|
||||
|
||||
@@ -1036,53 +1034,5 @@ field in the <CODE>access_log</CODE> file.
|
||||
and number of copies being printed of that page. For printer that can not
|
||||
produce copies on their own, the <I>num-pages</I> field will always be 1.
|
||||
|
||||
<H1 ALIGN="RIGHT">A - Using CUPS with SAMBA</H1>
|
||||
|
||||
<P>This appendix describes how to use CUPS with SAMBA.
|
||||
|
||||
<H2>What is SAMBA?</H2>
|
||||
|
||||
<P>In case you haven't heard of SAMBA, it is basically a software package
|
||||
that allows you to configure your UNIX system as a Windows file and printer
|
||||
server. It also allows you to access files and printers on a Windows system.
|
||||
Like CUPS, SAMBA is free software.
|
||||
|
||||
<P>SAMBA version 2.0.6 is the first release of SAMBA that supports CUPS.
|
||||
You can download SAMBA from:
|
||||
|
||||
<P ALIGN="CENTER"><A HREF="http://www.samba.org">http://www.samba.org</A></P>
|
||||
|
||||
<H2>How Do I Configure SAMBA for CUPS?</H2>
|
||||
|
||||
<P>To configure SAMBA for CUPS, edit the <CODE>smb.conf</CODE> file and
|
||||
replace the existing printing commands and options with the line:
|
||||
|
||||
<UL><PRE>
|
||||
printing = cups
|
||||
</PRE></UL>
|
||||
|
||||
<P>That's all there is to it! Remote users will now be able to browse and
|
||||
print to printers on your system.
|
||||
|
||||
<H2>How Do I Configure CUPS for SAMBA?</H2>
|
||||
|
||||
<P>To configure CUPS for SAMBA, run the following command:
|
||||
|
||||
<UL><PRE>
|
||||
% ln -s `which smbspool` /var/cups/backend/smb ENTER
|
||||
</PRE></UL>
|
||||
|
||||
<P>The <CODE>smbspool</CODE> program is provided with SAMBA starting with
|
||||
SAMBA 2.0.6. Once you have made the link you can use the <CODE>smb</CODE>
|
||||
method in the device URI for your printers:
|
||||
|
||||
<UL><PRE>
|
||||
% lpadmin -p <I>printer</I> -v smb://<I>hostname/printer</I> ... ENTER
|
||||
% lpadmin -p <I>printer</I> -v smb://<I>workgroup/hostname/printer</I> ... ENTER
|
||||
</PRE></UL>
|
||||
|
||||
<P>The second form only needs to be used if the Windows system is in a
|
||||
different workgroup.
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+125
-227
@@ -1,212 +1,110 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>CUPS Software Design Description</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.0">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
H1 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H2 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H3 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H4 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H5 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H6 { font-family: sans-serif; font-size: 20.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><H1>CUPS Software Design Description</H1></A><BR>
|
||||
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Software Design Description</H1></A><BR>
|
||||
CUPS-SDD-1.0<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-1999, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
<HR>
|
||||
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
|
||||
<H1 ALIGN=CENTER><A NAME=CONTENTS>Table of Contents</A></H1>
|
||||
<BR>
|
||||
<BR><B><A HREF="#1">1 Scope</A></B>
|
||||
<BR><B><A HREF=#1>1 Scope</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">1.1 Identification</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
|
||||
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
|
||||
<LI><A HREF=#1_1>1.1 Identification</A></LI>
|
||||
<LI><A HREF=#1_2>1.2 System Overview</A></LI>
|
||||
<LI><A HREF=#1_3>1.3 Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">2 References</A></B>
|
||||
<B><A HREF=#2>2 References</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
|
||||
<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#3">3 Design Overview</A></B>
|
||||
<B><A HREF=#3>3 Design Overview</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1">3.1 Backends</A></LI>
|
||||
<LI><A HREF=#3_1>3.1 Backends</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1_1">3.1.1 ipp</A></LI>
|
||||
<LI><A HREF="#3_1_2">3.1.2 lpd</A></LI>
|
||||
<LI><A HREF="#3_1_3">3.1.3 parallel</A></LI>
|
||||
<LI><A HREF="#3_1_4">3.1.4 serial</A></LI>
|
||||
<LI><A HREF="#3_1_5">3.1.5 socket</A></LI>
|
||||
<LI><A HREF=#3_1_1>3.1.1 ipp</A></LI>
|
||||
<LI><A HREF=#3_1_2>3.1.2 lpd</A></LI>
|
||||
<LI><A HREF=#3_1_3>3.1.3 parallel</A></LI>
|
||||
<LI><A HREF=#3_1_4>3.1.4 serial</A></LI>
|
||||
<LI><A HREF=#3_1_5>3.1.5 socket</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_2">3.2 Berkeley Commands</A></LI>
|
||||
<LI><A HREF=#3_2>3.2 Berkeley Commands</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_2_1">3.2.1 lpc</A></LI>
|
||||
<LI><A HREF="#3_2_2">3.2.2 lpr</A></LI>
|
||||
<LI><A HREF="#3_2_3">3.2.3 lprm</A></LI>
|
||||
<LI><A HREF=#3_2_1>3.2.1 lpc</A></LI>
|
||||
<LI><A HREF=#3_2_2>3.2.2 lpr</A></LI>
|
||||
<LI><A HREF=#3_2_3>3.2.3 lprm</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_3">3.3 CGI</A></LI>
|
||||
<LI><A HREF=#3_3>3.3 CGI</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_3_1">3.3.1 classes.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_2">3.3.2 jobs.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_3">3.3.3 printers.cgi</A></LI>
|
||||
<LI><A HREF=#3_3_1>3.3.1 classes.cgi</A></LI>
|
||||
<LI><A HREF=#3_3_2>3.3.2 jobs.cgi</A></LI>
|
||||
<LI><A HREF=#3_3_3>3.3.3 printers.cgi</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_4">3.4 CUPS Interface Library</A></LI>
|
||||
<LI><A HREF=#3_4>3.4 CUPS Interface Library</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_4_1">3.4.1 Convenience Functions</A></LI>
|
||||
<LI><A HREF="#3_4_2">3.4.2 HTTP Functions</A></LI>
|
||||
<LI><A HREF="#3_4_3">3.4.3 IPP Functions</A></LI>
|
||||
<LI><A HREF="#3_4_4">3.4.4 Language Functions</A></LI>
|
||||
<LI><A HREF="#3_4_5">3.4.5 MIME Functions</A></LI>
|
||||
<LI><A HREF="#3_4_6">3.4.6 PPD Functions</A></LI>
|
||||
<LI><A HREF="#3_4_7">3.4.7 Raster Functions</A></LI>
|
||||
<LI><A HREF=#3_4_1>3.4.1 Convenience Functions</A></LI>
|
||||
<LI><A HREF=#3_4_2>3.4.2 HTTP Functions</A></LI>
|
||||
<LI><A HREF=#3_4_3>3.4.3 IPP Functions</A></LI>
|
||||
<LI><A HREF=#3_4_4>3.4.4 Language Functions</A></LI>
|
||||
<LI><A HREF=#3_4_5>3.4.5 MIME Functions</A></LI>
|
||||
<LI><A HREF=#3_4_6>3.4.6 PPD Functions</A></LI>
|
||||
<LI><A HREF=#3_4_7>3.4.7 Raster Functions</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_5">3.5 Filters</A></LI>
|
||||
<LI><A HREF=#3_5>3.5 Filters</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_5_1">3.5.1 hpgltops</A></LI>
|
||||
<LI><A HREF="#3_5_2">3.5.2 imagetops</A></LI>
|
||||
<LI><A HREF="#3_5_3">3.5.3 imagetoraster</A></LI>
|
||||
<LI><A HREF="#3_5_4">3.5.4 pstops</A></LI>
|
||||
<LI><A HREF="#3_5_5">3.5.5 pstoraster</A></LI>
|
||||
<LI><A HREF="#3_5_6">3.5.6 rastertohp</A></LI>
|
||||
<LI><A HREF="#3_5_7">3.5.7 texttops</A></LI>
|
||||
<LI><A HREF=#3_5_1>3.5.1 hpgltops</A></LI>
|
||||
<LI><A HREF=#3_5_2>3.5.2 imagetops</A></LI>
|
||||
<LI><A HREF=#3_5_3>3.5.3 imagetoraster</A></LI>
|
||||
<LI><A HREF=#3_5_4>3.5.4 pstops</A></LI>
|
||||
<LI><A HREF=#3_5_5>3.5.5 pstoraster</A></LI>
|
||||
<LI><A HREF=#3_5_6>3.5.6 rastertohp</A></LI>
|
||||
<LI><A HREF=#3_5_7>3.5.7 texttops</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_6">3.6 Scheduler</A></LI>
|
||||
<LI><A HREF=#3_6>3.6 Scheduler</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_6_1">3.6.1 Authorization</A></LI>
|
||||
<LI><A HREF="#3_6_2">3.6.2 Classes</A></LI>
|
||||
<LI><A HREF="#3_6_3">3.6.3 Client</A></LI>
|
||||
<LI><A HREF="#3_6_4">3.6.4 Configuration</A></LI>
|
||||
<LI><A HREF="#3_6_5">3.6.5 Directory Services</A></LI>
|
||||
<LI><A HREF="#3_6_6">3.6.6 IPP</A></LI>
|
||||
<LI><A HREF="#3_6_7">3.6.7 Jobs</A></LI>
|
||||
<LI><A HREF="#3_6_8">3.6.8 Logging</A></LI>
|
||||
<LI><A HREF="#3_6_9">3.6.9 Main</A></LI>
|
||||
<LI><A HREF="#3_6_10">3.6.10 Printers</A></LI>
|
||||
<LI><A HREF=#3_6_1>3.6.1 Authorization</A></LI>
|
||||
<LI><A HREF=#3_6_2>3.6.2 Classes</A></LI>
|
||||
<LI><A HREF=#3_6_3>3.6.3 Client</A></LI>
|
||||
<LI><A HREF=#3_6_4>3.6.4 Configuration</A></LI>
|
||||
<LI><A HREF=#3_6_5>3.6.5 Directory Services</A></LI>
|
||||
<LI><A HREF=#3_6_6>3.6.6 IPP</A></LI>
|
||||
<LI><A HREF=#3_6_7>3.6.7 Jobs</A></LI>
|
||||
<LI><A HREF=#3_6_8>3.6.8 Logging</A></LI>
|
||||
<LI><A HREF=#3_6_9>3.6.9 Main</A></LI>
|
||||
<LI><A HREF=#3_6_10>3.6.10 Printers</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_7">3.7 System V Commands</A></LI>
|
||||
<LI><A HREF=#3_7>3.7 System V Commands</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_7_1">3.7.1 accept</A></LI>
|
||||
<LI><A HREF="#3_7_2">3.7.2 cancel</A></LI>
|
||||
<LI><A HREF="#3_7_3">3.7.3 disable</A></LI>
|
||||
<LI><A HREF="#3_7_4">3.7.4 enable</A></LI>
|
||||
<LI><A HREF="#3_7_5">3.7.5 lp</A></LI>
|
||||
<LI><A HREF="#3_7_6">3.7.6 lpadmin</A></LI>
|
||||
<LI><A HREF="#3_7_7">3.7.7 lpstat</A></LI>
|
||||
<LI><A HREF="#3_7_8">3.7.8 reject</A></LI>
|
||||
<LI><A HREF=#3_7_1>3.7.1 accept</A></LI>
|
||||
<LI><A HREF=#3_7_2>3.7.2 cancel</A></LI>
|
||||
<LI><A HREF=#3_7_3>3.7.3 disable</A></LI>
|
||||
<LI><A HREF=#3_7_4>3.7.4 enable</A></LI>
|
||||
<LI><A HREF=#3_7_5>3.7.5 lp</A></LI>
|
||||
<LI><A HREF=#3_7_6>3.7.6 lpadmin</A></LI>
|
||||
<LI><A HREF=#3_7_7>3.7.7 lpstat</A></LI>
|
||||
<LI><A HREF=#3_7_8>3.7.8 reject</A></LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<B><A HREF="#4">A Glossary</A></B>
|
||||
<B><A HREF=#4>A Glossary</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#4_1">A.1 Terms</A></LI>
|
||||
<LI><A HREF="#4_2">A.2 Acronyms</A></LI>
|
||||
<LI><A HREF=#4_1>A.1 Terms</A></LI>
|
||||
<LI><A HREF=#4_2>A.2 Acronyms</A></LI>
|
||||
</UL>
|
||||
<HR>
|
||||
GIF89a¯ÿòÌÌÌ™™™fff333ÿÿÿÿÿÿÿÿÿ!ù,¯ÿBþXºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª2€0p,Ïtmßx®ï
|
||||
|
||||
<!--=�•pH,ŹťÖ«Çl:źĐ¨”ů ŻŘ¬ÖXNżŕ°xL~¬Ű´zmxËđ¸|N§ŮřĽ(Pďű˙€�bwz…jn‚‰Š‹ŚŤ9„†‘!-->
|
||||
;±Ýí�ndý !¸ ž³wà…M��Y~¿{,gÚ\‚äé
|
||||
Ś×Ø(tÙî!Ï=Ñ.ûz¯ŤáÑź:ì;Ã9qöíÉë]/¿ºÉ¤Et/†'Îþt9ÀØ–ž_ÙÇ\|W•wArö¸Ý�2Ô×
|
||||
tN°0Tï}�¡û‰$!‚yMxî)�š‰Ô�ø@nB°U½ÊwE„§!ŠF H L8B
|
||||
c‰;ždŠ-æDVWdг€h±äÚ“P¶%#(4Fiå•Ï\hŠ:ŤRe!\ÒÄ—X^¦%€¥À-$E€Ö/úHŽšlââöÌQX
|
||||
|
||||
<!--äÇ"iL :a7‚]›0IZˇYŘřˇ‡D}¤–Uj±á
|
||||
^âä™ć`Ú@¦5b|šŕ�«Á±§3Ń KwÔ\ŞB¨±H)+Ź=ˇÓ©"
|
||||
©˘ 8u�†¸öŠD§•lţ:„d�RXťilĚ:Ë!´;ąt+„e<
|
||||
‡;řô+‚bbhaÚ0Ę6é.D™đ޹̹ńÖkoę({ďľü{fż-->
|
||||
¸1Nô¯b"śŠüjåÁÂE0…È8ö5GkZ|ÒÁwt„C»ÔQSÇo6ÔÙ�[�W„$²*Ž+4Pb-8¹P1þ'8"‘ФÄ$ Cyê‘„)>ãŠtè`Ð3‡‹¾z"«rE'Âqfä°Ë
|
||||
‘qÂ\|€„Ž¡ôö»%É(.—bڽȀ�íÉ`{¬EÇ1w’ »[Hß`(B6ö�“
|
||||
†')ÊRŽÎa[�ÃrbC!Tå°Ś
|
||||
2Q·ÈHZê#–®üË/àô¯FÝê(Û²% ºXË9öÀbÁ4f.ù-oýŹ™XËB…�IÎÒ7¹*@ÃÓŽÍT€hà‘ÌWâ�™Ã$f:µyžn†ó†r„'téŤKv`
|
||||
Ç+dª– ś79sťò|'=×¢Ìx¶òśÿ„¦ś�eÎ;*à$þ” IÝÆaÏ{–3ŽÅ�Á
|
||||
P“ÍS[ÙL¨3©òQ7éÆò#ãûô0F×ðsE°t§@‘ØQÜ´´ ©:3ÓRíd �¥*MITnŚ£¨H]ØQÁd
|
||||
@òþ—¬rMśŽaO
|
||||
<!--x‹ŚÖ3˝4 °XT'Ş®�:TŁuéWeşádËeú¸č¬Ů7
|
||||
|
||||
ëŇĎ;„sśĺµ7m(ýĐźtl¤RVť)-->
|
||||
rë^yÀ·(¸îéêû$uDòrã/a,I.°ÙUÀśb h�`Ť¾B ë"
|
||||
Ü`HØxȸo1þ[á\8f^æ|\ý‚¢¢zø0(�\ {�ÄgäÞõ€çâ§Á�0*\³n¼‹m¶/Äeª±ÿ†ì
|
||||
Ç,½DN2€śº+ùÉ|í0L¡Le*ð¸Ã>­2ëf,eIPOËÅàr—±”80SAźcFªatç»ãy¤¸ršçÌ¡5ïoõËsžï|¿8˙Φ¬þ,ï¼èà)ÁÌ;øk¡—†dDpÑòø2¢q�fHã!Ë“~Ùź-í
|
||||
'g:,æ4y?ýäP‹Z›ž#ÏÕ´Î5AK‰k]ûš›ÒKõ¯‡më€õzØÈƫ؎Ý>B{PЪ.6hf]º?©ÌIŽuO„íŤM‚ÌÇÜcµ3�
|
||||
61‹NÒ[†W£ ¦m¿­{ÂPâvζKnU�[ ònĽ±÷n?l:Áž3ušëť¬sP[ÿnn¾çPŤ…WõÔFj[Â÷
|
||||
¹vÏ™à‰�xúŤ'�£ÀÀ†p¸4.êãKÇ¿ÂÁ±o§¢ü"Á|Nk`îÊ�
|
||||
<!--•¤7 yţ D-->
|
||||
ť
|
||||
jl©Ìu�Ëi™0pmC´«+‰÷6¤2­éÏe`(ŽJ]¥iõð3�Øí"p|ª!:qøFس 6£
|
||||
@­,þŠqüã��oÌÇ®žŤÖüVŹ“¶QÇ›Evî¹²É8ÙªS"æÀç‡x± àþ‡Ź>—Iãg
|
||||
ïÝ>Y‰çN80æ§ ±¾GLLìÕµ…(1Þ¼!8}þ¬“*…ª‰Ùì:e»´ś
|
||||
ª¿ên_6ÂÃSÀ`eG;Ö„C�Cc�¿‡4¸yeî¯Í)oøByRm½0?íLîÅ`QÿjÓÙ/ºôÓN|Ý
|
||||
<!--â9ço‘SŽŕ•?śýáużţáŻ~!ŇźżÍĎüýĎťIw1ßţZČNĄExŁ&\(¤á[ɤ€v2€WW-->
|
||||
|
||||
þÙAÜŚÁ¸D5©D aŤævx ?жx°DM@•!h‰àÈ€Ž§®
|
||||
• Źá×B`ð¤ªE?›“”Þd�"8$Ý`Ki0…Oð�nΓ±µvtžè€I([,¹Ndɨh\'6X
|
||||
ŤPã—Š‰Éøt ¢‘¥��¬è €�†Ky™F�Śë`š”y�„¨š €š‰�M©‡øFQhY„
|
||||
9¶X¯×–í4š¤™Y\)"¹AN]‰xéz÷Gq07�)�©ñ™•Y€r°ŚŽi‹ �z ™ÇäFÍÉT�–ù›
|
||||
ËŽC śwI›üX]‹¹\ëY]þf lïYbj8źÈuśbźÍÅtú©fÞןfBI—“*øé:ÛØUj Ò
|
||||
�õ¹ Õp $(~ ¡Ú ¡gù{îpŹZI?¡�îÀv:“a¦�6¢§Ô]Ý‘(ªê)!źÚ¢:
|
||||
jwµ¡4ÚvíHÛÇ�9ºXhó•üù£¥Á¢VÉ{Dº2š‰(°¤3š¤a÷ +У¥“p¢þò4Vº—
|
||||
E´¥è¤k°7ºhT*€¿èw`ÚžiÄ …S¦Æ¦mê Nê�#ú¢f€ xê†ý
|
||||
8z©7ŹuÚp{Ú=~]7`«h‡ÚsÚg:…zd�ó§ÎA-vþAñr¦'–AÚ)9–š¢âSi;£…š 1Źªo"ª
|
||||
¦J;“º rº8Ui|é>¡Úśú
|
||||
<!--pvł2<�jŁ·«É¦kÉ 1Š:¬Če ”«ÉÚlŃ•ŞÍZnŻŠ2Ě‹s«ÁÖÚŕé¨Űş=¤zŽźú6áUä
|
||||
Řš¨żújá
|
||||
¦0®éJ«
|
||||
ŻNŐäş•öĐVeζŻőbm¶7ů´Ž-->
|
||||
“ë¥Dfný2»�–0j«�®»ºK;zë¢Íö»—!µ—S»³r>K+6�‹¨XÒ»; CÈ
|
||||
8Ê;¢»ÃÛ/Ś‹¥ž!¬s½VR½óõÏ‹Oâ[/çK¨þ�Ñ:Í‹\Ý+ Sc:ïËž’º¶ë9Æ»
|
||||
<!--ëSç�˝¤tj ˝YUŔśăŔ©%
|
||||
Ěró)Á0¨§—ł˝Ç…Á¬Ě¤LŰ6řK!<Á:Ŕę*Ş…ĂÁî…Á.‡˛
|
||||
ĄĽ‘z Âä ¦ýËŔ~¸7<,´GóĂý‹ÂöęŔe:̉°ë«ŁmŁ,žyAIˇ…�Q!8-->
|
||||
ô 8ly$
|
||||
8©ÙÅmX2Ùh>—?¯!šHüÁ^LsP,ź«Y‹âá¿ÿtšì‚£Y
|
||||
r¦Éš¥9ÇjžÄ8-ÆÇڶiêPÂbAÂ�ù‰Ã¸š»³7RśCWRoìŠå MŚŠť”åt™ Ś›ŹréÉq
|
||||
<!--Zva&‹Z¤jzĘŠ¬‡7čV)“‹|›káť!¦*€Á¶öÄ84’Wž¶L�Ęń˝FŞ6ÄOq̰Š}Ŭ—|žÎ|4!ÍAh+č•L˘
|
||||
%|‹Ű¬Ĺ$-->
|
||||
|
||||
å�>}ŤLê}ÎǨ 5:àŚ|�"þÇwÐsøæ�Nΰ¹#R>~-N‰®è� ßcðÞÚÎÑ¥®åGÎâí�‰Ýè*‚¸
|
||||
=‚ž ºëâ…­ëÀ>Û·žën^žmèÊëð¼ã>å×Λ«}êØ÷
|
||||
“ťŚ¬ËIťÁ·AÔNÍëv>]t.âÚLЫþíï¾ñnäÖÜæs¹¿±â°+†
|
||||
¬UØïî•.ç¬ÎìÍ.è´ÞŠG=ðùŤŤ‚§ž¯”ë^äÛ®êh-‹êŹê!i!ŹÕvMíiªîþ¾òîá/þÑ-OÖGð,oñº!å’gOâ PŤOìOôBþÈàhâ+?ï>ßÊVHÀsaõ™€õ$óSîõ—»ťó8.žß¹
|
||||
~áßÈ©ö»]ò3ëÆt_÷[ïôb¯ç‚Ü÷Õ«@u™ð;zÜ�‘Ü@óŽ2’?ù�¸ÙlùF ¶™¯ù›N ž0śú£¶¤ÿ0#9:�ß§½ž©ź\#ÃÙæó2é+û‚ÀÓ¸�_äM/ÓtaÚý3”]Ù«¿¸iîaF>ª�}ŚØvÍïMÍ÷Ðëä©îrÜŚöqñ_ÀüªrâF®ò
|
||||
ýþ¸—hT_ãŤ4sx”ýÝî)ç.Qgû�àźÏ%ì‹}i´ASû|þð@QÜ
|
||||
$J9€»-̱÷ÜôŤMØ‘hZ�¦:°ś*ÏlßxÒ|ϼ¡ÅLÀ� ¬Áfù9BÑdìÁ|«VV„¢�“énKv
|
||||
<!--u贮̮iiçͦt›šV/.˛ę}mywu#|Yc‚X|jŽŹx‹dE“)0U
|
||||
Ť’ T–<W€o zbQ`F�Ą2›�ł:ť°CtŞ·‰!™˛*¨…ş»˘~аz¬†ÁŻÄ‡´Ő޶Ó(iĂm˛F›ÍÚhÜޓơօäc|ŘËUŇŮţ˛ëřçő�łÜŘ<î™w‰ÖżEéhä›@đÂ
|
||||
-->
|
||||
|
||||
kBŹ_�g 3ʳ8#Þ¬L=0;J¤äÈ@¤F|'i~±© žaÊŠÆg;d*3²”©bPÏ¢TäHô¦?ť[†
|
||||
Ää�hN6ZM¢D:c*BR!$±ck�’V­-uÛ@[øp„ź]¼8ö-1{TήWÏ2ñŤ Šp=¸q«Ñ½es.‰„4+#Ëe¦¥W5µekxr䛓/XÍš5IÇ�=kÝúµì˰ûŤN–2q�Å[r¦yZ£QŽ›ÇÞťtxŠäcK—Ííɹ
|
||||
iþ¡9¼m1oñ¢©/²8îìSté4l’Wm¾9óéÖÛÐãã{{üzÞ¿çøêöÞzà}śàL¨ "�
|
||||
ÄÐsà¶PGLUúå`MÞ ¡†9¬§Û{pX¸¡wÚw߇¡¨ ‰í "M�UXNx
|
||||
<!--É……ˇ×�ŤŹŕ¨âŠęÄő#�哎:Ĺ(ă4Ö¸Až�Ź:@Ůw¸ YÝ‹tIă’Ö”�$…a(ĺ‹XĄF7×IČbŠ["Y€M縹K~`¶Řä-->
|
||||
+l´á¦
|
||||
j²F:Á.êÆÛj¤³Búî ¼Ê«/£Ö’[н#í+ð¥ænJÞ¸«æ;ð©õ‹¨ _ËðÄŠÒ»*º?
|
||||
�ÂwśŤÃyzh±°Øzl2,#oZ2È›r|òË‚°¼$Ç)ë
|
||||
óÍÙÔ,éfs€1Î@/øîÏPõÌiÐH·�ðÃBkLtÒP¯bôS;NÝWÔXÏ
|
||||
ó’dlÍtÖ`ʰtžOc óÅa§}AÄ›²1vËjÇmþu+`ÍÍÁ·qwü6�‚ì½sÞXźŤ¨Ë$xM6àP³-iÉSÚ½AÙ�ïë84–ø=xä8^!ä*L>Þ��k¹Ś({IèŹ^!á¸�N$ê
|
||||
«®ç!ºû‚ÿÝ ë¯ßoî—Oü¨¾ÿî9í]ñÞ{ñÙÊ®ãlhŽ(èÌÃê¼~ÔS¢|öÕźzýw¬Ë§|øÝ—*½ŚÈ×­|úåwzþæ“)Nrû¾Ê?*ô¥
|
||||
¿*÷ô7ú½~Múúú÷ª÷É�•S3x*ûíŹP”ùH£�°°àó(è¾í-J�ú™
|
||||
åAF�{#\”g…Áś)�!),Ô #ÓÂǼ�jþ1śŚþh©²K„9$�Yè)Ž �A È
|
||||
—‡)#1‰Óp"�ð'Ã%n‰P´‡Ù¨-‹1³¢^\%Æ�Ôp„CLÖ5Ã
|
||||
<!--a‘�^śßâxŻ
|
||||
€±peŚ-->
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
This software design description document provides detailed
|
||||
information on the architecture and coding of the Common UNIX Printing
|
||||
System ("CUPS") Version 1.0.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<H2><A NAME=1_2>1.2 System Overview</A></H2>
|
||||
The Common UNIX Printing System provides a portable printing layer for
|
||||
UNIX® operating systems. It has been developed by Easy Software
|
||||
Products to promote a standard printing solution for all UNIX vendors
|
||||
@@ -222,7 +120,7 @@ applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 4.03) and an image file RIP that
|
||||
can be used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<H2><A NAME=1_3>1.3 Document Overview</A></H2>
|
||||
This software design description document is organized into the
|
||||
following sections:
|
||||
<UL>
|
||||
@@ -231,8 +129,8 @@ can be used to support non-PostScript printers. </P>
|
||||
<LI>3 - Design Overview </LI>
|
||||
<LI>A - Glossary </LI>
|
||||
</UL>
|
||||
<H1><A NAME="2">2 References</A></H1>
|
||||
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
|
||||
<H1><A NAME=2>2 References</A></H1>
|
||||
<H2><A NAME=2_1>2.1 CUPS Documentation</A></H2>
|
||||
The following CUPS documentation is referenced by this document:
|
||||
<UL>
|
||||
<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan </LI>
|
||||
@@ -245,7 +143,7 @@ can be used to support non-PostScript printers. </P>
|
||||
<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.0.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<H2><A NAME=2_2>2.2 Other Documents</A></H2>
|
||||
The following non-CUPS documents are referenced by this document:
|
||||
<UL>
|
||||
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
|
||||
@@ -255,7 +153,7 @@ can be used to support non-PostScript printers. </P>
|
||||
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
|
||||
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Design Overview</A></H1>
|
||||
<H1><A NAME=3>3 Design Overview</A></H1>
|
||||
CUPS is composed of 7 software sub-systems that operate together to
|
||||
perform common printing tasks:
|
||||
<UL>
|
||||
@@ -267,7 +165,7 @@ can be used to support non-PostScript printers. </P>
|
||||
<LI>Scheduler </LI>
|
||||
<LI>System V Commands </LI>
|
||||
</UL>
|
||||
<H2><A NAME="3_1">3.1 Backends</A></H2>
|
||||
<H2><A NAME=3_1>3.1 Backends</A></H2>
|
||||
The backends implement communications over a number of different
|
||||
interfaces. All backends are called with a common set of arguments:
|
||||
<UL>
|
||||
@@ -286,18 +184,18 @@ interfaces. All backends are called with a common set of arguments:
|
||||
</UL>
|
||||
Backends are named using the method of the URI, so a URI of
|
||||
"ipp://hostname/resource" would be processed by the "ipp" backend.
|
||||
<H3><A NAME="3_1_1">3.1.1 ipp</A></H3>
|
||||
<H3><A NAME=3_1_1>3.1.1 ipp</A></H3>
|
||||
The ipp backend sends the specified job to a network printer or host
|
||||
using the Internet Printing Protocol. The URI is as specified by the <CODE>
|
||||
printer-uri-supported</CODE> attribute from the printer or host.
|
||||
<H3><A NAME="3_1_2">3.1.2 lpd</A></H3>
|
||||
<H3><A NAME=3_1_2>3.1.2 lpd</A></H3>
|
||||
The lpd backend sends the specified job to a network printer or host
|
||||
using the Line Printer Daemon protocol. The URI is of the form:
|
||||
<UL>
|
||||
<PRE>lpd://hostname/queue
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_3">3.1.3 parallel</A></H3>
|
||||
<H3><A NAME=3_1_3>3.1.3 parallel</A></H3>
|
||||
The parallel backend sends the specified job to a local printer
|
||||
connected via the specified parallel port device. The URI is of the
|
||||
form:
|
||||
@@ -305,7 +203,7 @@ form:
|
||||
<PRE>parallel:/dev/file
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_4">3.1.4 serial</A></H3>
|
||||
<H3><A NAME=3_1_4>3.1.4 serial</A></H3>
|
||||
The serial backend sends the specified job to a local printer
|
||||
connected via the specified serial port device. The URI is of the
|
||||
form:
|
||||
@@ -321,7 +219,7 @@ form:
|
||||
<LI><CODE>parity=<I>odd</I></CODE> - Sets odd parity checking. </LI>
|
||||
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_5">3.1.5 socket</A></H3>
|
||||
<H3><A NAME=3_1_5>3.1.5 socket</A></H3>
|
||||
The socket backend sends the specified job to a network host using the
|
||||
AppSocket protocol commonly used by Hewlett-Packard and Tektronix
|
||||
printers. The URI is of the form:
|
||||
@@ -330,11 +228,11 @@ printers. The URI is of the form:
|
||||
</PRE>
|
||||
</UL>
|
||||
The default port number is 9100.
|
||||
<H2><A NAME="3_2">3.2 Berkeley Commands</A></H2>
|
||||
<H2><A NAME=3_2>3.2 Berkeley Commands</A></H2>
|
||||
The Berkeley commands provide a simple command-line interface to CUPS
|
||||
to submit and control print jobs. It is provided for compatibility with
|
||||
existing software that is hard coded to use the Berkeley commands.
|
||||
<H3><A NAME="3_2_1">3.2.1 lpc</A></H3>
|
||||
<H3><A NAME=3_2_1>3.2.1 lpc</A></H3>
|
||||
The lpc command allows users and administrators to check the status
|
||||
and control print queues. The version provided with CUPS supports the
|
||||
following commands:
|
||||
@@ -342,57 +240,57 @@ following commands:
|
||||
<LI>quit - Quits the lpc command. </LI>
|
||||
<LI>status - Shows the status of printers and jobs in the queue. </LI>
|
||||
</UL>
|
||||
<H3><A NAME="3_2_2">3.2.2 lpr</A></H3>
|
||||
<H3><A NAME=3_2_2>3.2.2 lpr</A></H3>
|
||||
The lpr command submits a job for printing. The CUPS version of lpr
|
||||
silently ignores the "i", "t", "m", "h", and "s" options.
|
||||
<H3><A NAME="3_2_3">3.2.3 lprm</A></H3>
|
||||
<H3><A NAME=3_2_3>3.2.3 lprm</A></H3>
|
||||
The lprm removes one or more print jobs.
|
||||
<H2><A NAME="3_3">3.3 CGI</A></H2>
|
||||
<H2><A NAME=3_3>3.3 CGI</A></H2>
|
||||
The Common Gateway Interface (CGI) programs provide a web-based status
|
||||
interface to monitor the status of printers, classes, and jobs.
|
||||
<H3><A NAME="3_3_1">3.3.1 classes.cgi</A></H3>
|
||||
<H3><A NAME=3_3_1>3.3.1 classes.cgi</A></H3>
|
||||
The classes CGI lists the available printer classes and any pending
|
||||
jobs for the class. The user can click on individual classes to limit
|
||||
the display and click on jobs to see the job status.
|
||||
<H3><A NAME="3_3_2">3.3.2 jobs.cgi</A></H3>
|
||||
<H3><A NAME=3_3_2>3.3.2 jobs.cgi</A></H3>
|
||||
The jobs CGI lists the queued print jobs in order of priority. The
|
||||
list can be limited by printer or job. When the user displays the
|
||||
status of an individual print job all job options are displayed.
|
||||
<H3><A NAME="3_3_3">3.3.3 printers.cgi</A></H3>
|
||||
<H3><A NAME=3_3_3>3.3.3 printers.cgi</A></H3>
|
||||
The printers CGI lists the available printer queues and any pending
|
||||
jobs for the printer. The user can click on individual printers to
|
||||
limit the display and click on jobs to see the job status.
|
||||
<H2><A NAME="3_4">3.4 CUPS Interface Library</A></H2>
|
||||
<H2><A NAME=3_4>3.4 CUPS Interface Library</A></H2>
|
||||
The CUPS interface library provides common convenience, HTTP, IPP,
|
||||
language, MIME, PPD, and raster functions used by the CUPS software.
|
||||
<H3><A NAME="3_4_1">3.4.1 Convenience Functions</A></H3>
|
||||
<H3><A NAME=3_4_1>3.4.1 Convenience Functions</A></H3>
|
||||
Convenience functions are provided to submit an IPP request, send a
|
||||
print file, cancel a job, get a list of available printers, get a list
|
||||
of available classes, get the default printer or class, get the default
|
||||
server name, get the local username, and get a password string.
|
||||
<H3><A NAME="3_4_2">3.4.2 HTTP Functions</A></H3>
|
||||
<H3><A NAME=3_4_2>3.4.2 HTTP Functions</A></H3>
|
||||
The HTTP functions provide functions to connect to HTTP servers, issue
|
||||
requests, read data from a server, and write data to a server.
|
||||
<H3><A NAME="3_4_3">3.4.3 IPP Functions</A></H3>
|
||||
<H3><A NAME=3_4_3>3.4.3 IPP Functions</A></H3>
|
||||
The IPP function provide functions to manage IPP request data and
|
||||
attributes, read IPP responses from a server, and write IPP requests to
|
||||
a server.
|
||||
<H3><A NAME="3_4_4">3.4.4 Language Functions</A></H3>
|
||||
<H3><A NAME=3_4_4>3.4.4 Language Functions</A></H3>
|
||||
The language functions provide a standard interface for retrieving
|
||||
common textual messages for a particular locale and determining the
|
||||
correct encoding (e.g. US ASCII, ISO-8859-1, etc.)
|
||||
<H3><A NAME="3_4_5">3.4.5 MIME Functions</A></H3>
|
||||
<H3><A NAME=3_4_5>3.4.5 MIME Functions</A></H3>
|
||||
The Multimedia Internet Mail Exchange functions manage a MIME type and
|
||||
conversion database that supports file typing by extension and content,
|
||||
and least-cost file filtering from a source to a destination file type.
|
||||
<H3><A NAME="3_4_6">3.4.6 PPD Functions</A></H3>
|
||||
<H3><A NAME=3_4_6>3.4.6 PPD Functions</A></H3>
|
||||
The PostScript Printer Description functions manage PPD files, select
|
||||
options, check for option conflicts, and emit selected options in the
|
||||
correct order.
|
||||
<H3><A NAME="3_4_7">3.4.7 Raster Functions</A></H3>
|
||||
<H3><A NAME=3_4_7>3.4.7 Raster Functions</A></H3>
|
||||
The raster functions manage streams of CUPS raster data (described in
|
||||
the Interface Design Document) used by non-PostScript printer drivers.
|
||||
<H2><A NAME="3_5">3.5 Filters</A></H2>
|
||||
<H2><A NAME=3_5>3.5 Filters</A></H2>
|
||||
The filters implement file conversion services for CUPS. All filters
|
||||
are called with a common set of arguments:
|
||||
<UL>
|
||||
@@ -409,37 +307,37 @@ are called with a common set of arguments:
|
||||
</UL>
|
||||
Filters are added to the MIME conversion data file and implement all
|
||||
necessary conversions from one file type to another.
|
||||
<H3><A NAME="3_5_1">3.5.1 hpgltops</A></H3>
|
||||
<H3><A NAME=3_5_1>3.5.1 hpgltops</A></H3>
|
||||
The hpgltops filter converts HP-GL/2 files into PostScript.
|
||||
<H3><A NAME="3_5_2">3.5.2 imagetops</A></H3>
|
||||
<H3><A NAME=3_5_2>3.5.2 imagetops</A></H3>
|
||||
The imagetops filter converts image files into PostScript.
|
||||
<H3><A NAME="3_5_3">3.5.3 imagetoraster</A></H3>
|
||||
<H3><A NAME=3_5_3>3.5.3 imagetoraster</A></H3>
|
||||
The imagetoraster filter converts image files into CUPS raster data.
|
||||
<H3><A NAME="3_5_4">3.5.4 pstops</A></H3>
|
||||
<H3><A NAME=3_5_4>3.5.4 pstops</A></H3>
|
||||
The pstops filter inserts printer-specific commands from PPD files and
|
||||
performs page filtering as requested by the user.
|
||||
<H3><A NAME="3_5_5">3.5.5 pstoraster</A></H3>
|
||||
<H3><A NAME=3_5_5>3.5.5 pstoraster</A></H3>
|
||||
The pstoraster filter converts PostScript program data into CUPS
|
||||
raster data.
|
||||
<H3><A NAME="3_5_6">3.5.6 rastertohp</A></H3>
|
||||
<H3><A NAME=3_5_6>3.5.6 rastertohp</A></H3>
|
||||
The rastertohp filter handles converting CUPS raster data to HP PCL
|
||||
and supports both color and black-and-white printers.
|
||||
<H3><A NAME="3_5_7">3.5.7 texttops</A></H3>
|
||||
<H3><A NAME=3_5_7>3.5.7 texttops</A></H3>
|
||||
The texttops filter converts text files into PostScript.
|
||||
<H2><A NAME="3_6">3.6 Scheduler</A></H2>
|
||||
<H2><A NAME=3_6>3.6 Scheduler</A></H2>
|
||||
The scheduler is a fully-functional HTTP/1.1 and IPP/1.0 server that
|
||||
manages the printers, classes, and jobs in the system. It also handles
|
||||
a simple broadcast-based directory service so that remote print queues
|
||||
and classes can be accessed transparently from the local system.
|
||||
<H3><A NAME="3_6_1">3.6.1 Authorization</A></H3>
|
||||
<H3><A NAME=3_6_1>3.6.1 Authorization</A></H3>
|
||||
The authorization module is responsible for performing access control
|
||||
and authentication for all HTTP and IPP requests entering the system.
|
||||
<H3><A NAME="3_6_2">3.6.2 Classes</A></H3>
|
||||
<H3><A NAME=3_6_2>3.6.2 Classes</A></H3>
|
||||
The classes module is responsible for managing printer classes in the
|
||||
system. Each class is a collection of local and/or remote printers.
|
||||
The classes module also reads and writes the classes configuration
|
||||
file.
|
||||
<H3><A NAME="3_6_3">3.6.3 Client</A></H3>
|
||||
<H3><A NAME=3_6_3>3.6.3 Client</A></H3>
|
||||
The client module is responsible for all HTTP client communications.
|
||||
It handles listening on selected interfaces, accepting connections
|
||||
from prospective clients, processing incoming HTTP requests, and
|
||||
@@ -447,13 +345,13 @@ sending HTTP responses to those requests. The client module also is
|
||||
responsible for executing the external CGI programs as needed to
|
||||
support web-based printer, class, and job status monitoring.
|
||||
<P>Once authorized, all IPP requests are sent to the IPP module. </P>
|
||||
<H3><A NAME="3_6_4">3.6.4 Configuration</A></H3>
|
||||
<H3><A NAME=3_6_4>3.6.4 Configuration</A></H3>
|
||||
The configuration module is responsible for reading the CUPS
|
||||
configuration file and initializing the appropriate data structures and
|
||||
values. The configuration module also stops CUPS services before
|
||||
reading the configuration file and restarts them after the
|
||||
configuration file has been read.
|
||||
<H3><A NAME="3_6_5">3.6.5 Directory Services</A></H3>
|
||||
<H3><A NAME=3_6_5>3.6.5 Directory Services</A></H3>
|
||||
The directory services module sends and recieves printer state
|
||||
information over a broadcast socket. Remote printers and classes are
|
||||
automatically added to or removed from the local printer and class
|
||||
@@ -461,63 +359,63 @@ lists as needed.
|
||||
<P>The directory services module can only recieve printer state
|
||||
information over a single UDP port, however it can broadcast to
|
||||
multiple addresses and ports as needed. </P>
|
||||
<H3><A NAME="3_6_6">3.6.6 IPP</A></H3>
|
||||
<H3><A NAME=3_6_6>3.6.6 IPP</A></H3>
|
||||
The IPP module handles IPP requests and acts accordingly. URI
|
||||
validation is also performed here, as a client can post IPP data to any
|
||||
URI on the server which might sidestep the access control or
|
||||
authentication of the HTTP server.
|
||||
<H3><A NAME="3_6_7">3.6.7 Jobs</A></H3>
|
||||
<H3><A NAME=3_6_7>3.6.7 Jobs</A></H3>
|
||||
The jobs module manages print jobs, starts filter and backend
|
||||
processes for jobs to be printed, and monitors status messages from
|
||||
those filters and backends.
|
||||
<H3><A NAME="3_6_8">3.6.8 Logging</A></H3>
|
||||
<H3><A NAME=3_6_8>3.6.8 Logging</A></H3>
|
||||
The logging module manages the access, error, and page log files that
|
||||
are generated by the scheduler.
|
||||
<H3><A NAME="3_6_9">3.6.9 Main</A></H3>
|
||||
<H3><A NAME=3_6_9>3.6.9 Main</A></H3>
|
||||
The main module is responsible for timing out and dispatching input
|
||||
and output for client connections. It also watches for incoming <CODE>
|
||||
SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the server
|
||||
configuration files as needed, and handles child process errors and
|
||||
exits.
|
||||
<H3><A NAME="3_6_10">3.6.10 Printers</A></H3>
|
||||
<H3><A NAME=3_6_10>3.6.10 Printers</A></H3>
|
||||
The printers module is responsible for managing printers and PPD files
|
||||
in the system. The printers module also reads and writes the printers
|
||||
configuration file.
|
||||
<H2><A NAME="3_7">3.7 System V Commands</A></H2>
|
||||
<H2><A NAME=3_7>3.7 System V Commands</A></H2>
|
||||
The System V commands provide a robust command-line interface to CUPS
|
||||
to submit and control printers and jobs.
|
||||
<H3><A NAME="3_7_1">3.7.1 accept</A></H3>
|
||||
<H3><A NAME=3_7_1>3.7.1 accept</A></H3>
|
||||
The accept command tells the scheduler to accept new jobs for specific
|
||||
printers.
|
||||
<H3><A NAME="3_7_2">3.7.2 cancel</A></H3>
|
||||
<H3><A NAME=3_7_2>3.7.2 cancel</A></H3>
|
||||
The cancel command tells the scheduler to cancel one or more jobs that
|
||||
are queued for printing.
|
||||
<H3><A NAME="3_7_3">3.7.3 disable</A></H3>
|
||||
<H3><A NAME=3_7_3>3.7.3 disable</A></H3>
|
||||
The disable command tells the scheduler to stop printing jobs on the
|
||||
specified printers.
|
||||
<H3><A NAME="3_7_4">3.7.4 enable</A></H3>
|
||||
<H3><A NAME=3_7_4>3.7.4 enable</A></H3>
|
||||
The enable command tells the scheduler to start printing jobs on the
|
||||
specified printers.
|
||||
<H3><A NAME="3_7_5">3.7.5 lp</A></H3>
|
||||
<H3><A NAME=3_7_5>3.7.5 lp</A></H3>
|
||||
The lp command submits submits files for printing. Unlike the
|
||||
standard System V lp command, a single CUPS lp command will generate a
|
||||
separate job ID for each file that is printed. Also, the Solaris "f",
|
||||
"H", "P", "S", and "y" options are silently ignored.
|
||||
<H3><A NAME="3_7_6">3.7.6 lpadmin</A></H3>
|
||||
<H3><A NAME=3_7_6>3.7.6 lpadmin</A></H3>
|
||||
The lpadmin command manages printer queues and classes. The Solaris
|
||||
"A", "F", "I", "M", "P", "Q", "S", "T", "U", "W", "f", "l", "m", "o",
|
||||
"s", "t", and "u" options are not supported, and new options "P" (PPD
|
||||
file), "F" (filter), and "E" (enable and accept) are provided to
|
||||
configure CUPS-specific features such as PPD file and conversion
|
||||
filters.
|
||||
<H3><A NAME="3_7_7">3.7.7 lpstat</A></H3>
|
||||
<H3><A NAME=3_7_7>3.7.7 lpstat</A></H3>
|
||||
The lpstat command lists printers, classes, and jobs as requested by
|
||||
the user.
|
||||
<H3><A NAME="3_7_8">3.7.8 reject</A></H3>
|
||||
<H3><A NAME=3_7_8>3.7.8 reject</A></H3>
|
||||
The reject command tells the scheduler not to accept new jobs for
|
||||
specific printers.
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="4">A Glossary</A></H1>
|
||||
<H2><A NAME="4_1">A.1 Terms</A></H2>
|
||||
<H1 TYPE=A VALUE=1><A NAME=4>A Glossary</A></H1>
|
||||
<H2><A NAME=4_1>A.1 Terms</A></H2>
|
||||
<DL>
|
||||
<DT>C </DT>
|
||||
<DD>A computer language. </DD>
|
||||
@@ -530,7 +428,7 @@ specific printers.
|
||||
<DT>socket </DT>
|
||||
<DD>A two-way network communications channel. </DD>
|
||||
</DL>
|
||||
<H2><A NAME="4_2">A.2 Acronyms</A></H2>
|
||||
<H2><A NAME=4_2>A.2 Acronyms</A></H2>
|
||||
<DL>
|
||||
<DT>ASCII </DT>
|
||||
<DD>American Standard Code for Information Interchange </DD>
|
||||
|
||||
+786
-749
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-4090
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-9119
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
-4555
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+33
-135
@@ -1,154 +1,52 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>DRAFT - CUPS Software Security Report</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SSR-1.0">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
H1 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H2 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H3 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H4 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H5 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H6 { font-family: sans-serif; font-size: 20.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><H1>DRAFT - CUPS Software Security Report</H1></A><BR>
|
||||
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>DRAFT - CUPS Software Security Report</H1></A><BR>
|
||||
CUPS-SSR-1.0<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-1999, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
<HR>
|
||||
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
|
||||
<H1 ALIGN=CENTER><A NAME=CONTENTS>Table of Contents</A></H1>
|
||||
<BR>
|
||||
<BR><B><A HREF="#1">1 Scope</A></B>
|
||||
<BR><B><A HREF=#1>1 Scope</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">1.1 Identification</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
|
||||
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
|
||||
<LI><A HREF=#1_1>1.1 Identification</A></LI>
|
||||
<LI><A HREF=#1_2>1.2 System Overview</A></LI>
|
||||
<LI><A HREF=#1_3>1.3 Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">2 References</A></B>
|
||||
<B><A HREF=#2>2 References</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
|
||||
<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#3">3 Local Access Risks</A></B>
|
||||
<B><A HREF=#3>3 Local Access Risks</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1">3.1 Security Breaches</A></LI>
|
||||
<LI><A HREF=#3_1>3.1 Security Breaches</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#4">4 Remote Access Risks</A></B>
|
||||
<B><A HREF=#4>4 Remote Access Risks</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#4_1">4.1 Denial of Service Attacks</A></LI>
|
||||
<LI><A HREF="#4_2">4.2 Security Breaches</A></LI>
|
||||
<LI><A HREF=#4_1>4.1 Denial of Service Attacks</A></LI>
|
||||
<LI><A HREF=#4_2>4.2 Security Breaches</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#5">A Glossary</A></B>
|
||||
<B><A HREF=#5>A Glossary</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#5_1">A.1 Terms</A></LI>
|
||||
<LI><A HREF="#5_2">A.2 Acronyms</A></LI>
|
||||
<LI><A HREF=#5_1>A.1 Terms</A></LI>
|
||||
<LI><A HREF=#5_2>A.2 Acronyms</A></LI>
|
||||
</UL>
|
||||
<HR>
|
||||
GIF89a¯ÿòÌÌÌ™™™fff333ÿÿÿÿÿÿÿÿÿ!ù,¯ÿBþXºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª2€0p,Ïtmßx®ï
|
||||
|
||||
<!--=�•pH,��Ö«Çl:ŸÐ¨”ù ¯Ø¬ÖXN¿à°xL~¬Û´zmxËð¸|N§Ùø¼(Pïûÿ€�bwz…jn‚‰Š‹Œ�9„†‘!-->
|
||||
;±Ýíˆndý !¸ ž³wà…MƒƒY~¿{,gÚ\‚äé
|
||||
Œ×Ø(tÙî!Ï=Ñ.ûz¯�áÑŸ:ì;Ã9qöíÉë]/¿ºÉ¤Et/†'Îþt9ÀØ–ž_ÙÇ\|W•wArö¸Ý�2Ô×
|
||||
tN°0Tï}�¡û‰$!‚yMxî)ˆš‰Ô�ø@nB°U½ÊwE„§!ŠF H L8B
|
||||
c‰;ždŠ-æDVWdг€h±äÚ“P¶%#(4Fiå•Ï\hŠ:�Re!\ÒÄ—X^¦%€¥À-$E€Ö/úHŽšlââöÌQX
|
||||
|
||||
<!--äÇ"iL :a7‚]›0IZ¡YØø¡‡D}¤–Uj±á
|
||||
^â䙿`Ú@¦5b|šà�«Á±§3Ñ KwÔ\ªB¨±H)+�=¡Ó©"
|
||||
©¢ 8uƒ†¸öŠD§•lþ:„d�RX�ilÌ:Ë!´;¹t+„e<
|
||||
‡;øô+‚bbhaÚ0Ê6é.D™ð޹̹ñÖkoê({ï¾ü{f¿-->
|
||||
¸1Nô¯b"œŠüjåÁÂE0…È8ö5GkZ|ÒÁwt„C»ÔQSÇo6ÔÙ�[�W„$²*Ž+4Pb-8¹P1þ'8"‘ФÄ$ Cyê‘„)>ãŠtè`Ð3‡‹¾z"«rE'Âqfä°Ë
|
||||
‘qÂ\|€„Ž¡ôö»%É(.—bڽȀ�íÉ`{¬EÇ1w’ »[Hß`(B6ö�“
|
||||
†')ÊRŽÎa[�ÃrbC!Tå°Œ
|
||||
2Q·ÈHZê#–®üË/àô¯FÝê(Û²% ºXË9öÀbÁ4f.ù-oý�™XËB…�IÎÒ7¹*@ÃÓŽÍT€hà‘ÌWâ�™Ã$f:µyžn†ó†r„'té�Kv`
|
||||
Ç+dª– œ79s�ò|'=×¢Ìx¶òœÿ„¦œˆeÎ;*à$þ” IÝÆaÏ{–3ŽÅ�Á
|
||||
P“ÍS[ÙL¨3©òQ7éÆò#ãûô0F×ðsE°t§@‘ØQÜ´´ ©:3ÓRíd �¥*MITnŒ£¨H]ØQÁd
|
||||
@òþ—¬rMœŽaO
|
||||
<!--x‹ŒÖ3½4 °XT'ª®ƒ:T£uéWeºádËeú¸è¬Ù7
|
||||
|
||||
ëÒÏ;„sœåµ7m(ýПtl¤RV�)-->
|
||||
rë^yÀ·(¸îéêû$uDòrã/a,I.°ÙUÀœb hˆ`�¾B ë"
|
||||
Ü`HØxȸo1þ[á\8f^æ|\ý‚¢¢zø0(ˆ\ {ƒÄgäÞõ€çâ§Á˜0*\³n¼‹m¶/Äeª±ÿ†ì
|
||||
Ç,½DN2€œº+ùÉ|í0L¡Le*ð¸Ã>­2ëf,eIPOËÅàr—±”80SAŸcFªatç»ãy¤¸ršçÌ¡5ïoõËsžï|¿8˙Φ¬þ,ï¼èà)ÁÌ;øk¡—†dDpÑòø2¢q�fHã!Ë“~ÙŸ-í
|
||||
'g:,æ4y?ýäP‹Z›ž#ÏÕ´Î5AK‰k]ûš›ÒKõ¯‡më€õzØÈƫ؎Ý>B{PЪ.6hf]º?©ÌIŽuO„í�M‚ÌÇÜcµ3˜
|
||||
61‹NÒ[†W£ ¦m¿­{ÂPâvζKnUˆ[ ònĽ±÷n?l:Áž3ušë�¬sP[ÿnn¾çP�…WõÔFj[Â÷
|
||||
¹vÏ™à‰˜xú�'ˆ£ÀÀ†p¸4.êãKÇ¿ÂÁ±o§¢ü"Á|Nk`îʘ
|
||||
<!--•¤7 yþ D-->
|
||||
�
|
||||
jl©ÌuˆËi™0pmC´«+‰÷6¤2­éÏe`(ŽJ]¥iõð3ƒØí"p|ª!:qøFس 6£
|
||||
@­,þŠqüã��oÌÇ®ž�ÖüV�“¶QÇ›Evî¹²É8ÙªS"æÀç‡x± àþ‡�>—Iãg
|
||||
ïÝ>Y‰çN80æ§ ±¾GLLìÕµ…(1Þ¼!8}þ¬“*…ª‰Ùì:e»´œ
|
||||
ª¿ên_6ÂÃSÀ`eG;Ö„CƒCcˆ¿‡4¸yeî¯Í)oøByRm½0?íLîÅ`QÿjÓÙ/ºôÓN|Ý
|
||||
<!--â9ço‘SŽà•?œýáu¿þá¯~!ÒŸ¿ÍÏüýÏ�Iw1ßþZÈN¥Ex£&\(¤á[ɤ€v2€WW-->
|
||||
|
||||
þÙAÜŒÁ¸D5©D a�ævx ?жx°DM@•!h‰àÈ€Ž§®
|
||||
• �á×B`ð¤ªE?›“”Þdƒ"8$Ý`Ki0…OðƒnΓ±µvtžè€I([,¹Ndɨh\'6X
|
||||
�Pã—Š‰Éøt ¢‘¥�˜¬è €ˆ†Ky™FˆŒë`š”yƒ„¨š €š‰ƒM©‡øFQhY„
|
||||
9¶X¯×–í4š¤™Y\)"¹AN]‰xéz÷Gq07�)�©ñ™•Y€r°ŒŽi‹ �z ™ÇäFÍÉT�–ù›
|
||||
ËŽC œwI›üX]‹¹\ëY]þf lïYbj8ŸÈuœbŸÍÅtú©fÞןfBI—“*øé:ÛØUj Ò
|
||||
ˆõ¹ Õp $(~ ¡Ú ¡gù{îp�ZI?¡ƒîÀv:“a¦˜6¢§Ô]Ý‘(ªê)!ŸÚ¢:
|
||||
jwµ¡4ÚvíHÛǘ9ºXhó•üù£¥Á¢VÉ{Dº2š‰(°¤3š¤a÷ +У¥“p¢þò4Vº—
|
||||
E´¥è¤k°7ºhT*€¿èw`ÚžiÄ …S¦Æ¦mê Nêƒ#ú¢f€ xê†ý
|
||||
8z©7�uÚp{Ú=~]7`«h‡ÚsÚg:…zd˜ó§ÎA-vþAñr¦'–AÚ)9–š¢âSi;£…š 1�ªo"ª
|
||||
¦J;“º rº8Ui|é>¡Úœú
|
||||
<!--pv³2<ƒj£·«É¦kÉ 1Š:¬Èe ”«ÉÚlÑ•ªÍZn¯Š2Ì‹s«ÁÖÚàé¨Ûº=¤zŽŸú6áUä
|
||||
Øš¨¿újá
|
||||
¦0®éJ«
|
||||
¯NÕ井öÐVeζ¯õbm¶7ù´Ž-->
|
||||
“ë¥Dfný2»ƒ–0j«�®»ºK;zë¢Íö»—!µ—S»³r>K+6ˆ‹¨XÒ»; CÈ
|
||||
8Ê;¢»ÃÛ/Œ‹¥ž!¬s½VR½óõÏ‹Oâ[/çK¨þ˜Ñ:Í‹\Ý+ Sc:ïËž’º¶ë9Æ»
|
||||
<!--ëSç�½¤tj ½YUÀœãÀ©%
|
||||
Ìró)Á0¨§—³½Ç…Á¬Ì¤LÛ6øK!<Á:Àê*ª…ÃÁî…Á.‡²
|
||||
¥¼‘z Âä ¦ýËÀ~¸7<,´GóÃý‹ÂöêÀe:Ä¢‰°ë«£m£,žyAI¡…˜Q!8-->
|
||||
ô 8ly$
|
||||
8©ÙÅmX2Ùh>—?¯!šHüÁ^LsP,Ÿ«Y‹âá¿ÿtšì‚£Y
|
||||
r¦Éš¥9ÇjžÄ8-ÆÇŒ¶iêPÂbA˜ù‰Ã¸š»³7RœCWRoìŠå MŒŠ�”åt™ Œ›�réÉq
|
||||
<!--Zva&‹Z¤jzÊŠ¬‡7èV)“‹|›ká�!¦*€Á¶öÄ84’Wž¶L�Êñ½Fª6ÄOq̰Š}Ŭ—|žÎ|4!ÍAh+è•L¢
|
||||
%|‹Û¬Å$-->
|
||||
|
||||
å�>}�Lê}ÎǨ 5:àŒ|�"þÇwÐsøæ�Nΰ¹#R>~-N‰®èƒ ßcðÞÚÎÑ¥®åGÎâ툉Ýè*‚¸
|
||||
=‚ž ºëâ…­ëÀ>Û·žën^žmèÊëð¼ã>å×Λ«}êØ÷
|
||||
“�Œ¬ËI�Á·AÔNÍëv>]t.âÚLЫþíï¾ñnäÖÜæs¹¿±â°+†
|
||||
¬UØïî•.ç¬ÎìÍ.è´ÞŠG=ðù��‚§ž¯”ë^äÛ®êh-‹ê�ê!i!�ÕvMíiªîþ¾òîá/þÑ-OÖGð,oñº!å’gOâ P�OìOôBþÈàhâ+?ï>ßÊVHÀsaõ™€õ$óSîõ—»�ó8.žß¹
|
||||
~áßÈ©ö»]ò3ëÆt_÷[ïôb¯ç‚Ü÷Õ«@u™ð;zܘ‘Ü@óŽ2’?ùƒ¸ÙlùF ¶™¯ù›N ž0œú£¶¤ÿ0#9:�ß§½ž©Ÿ\#ÃÙæó2é+û‚ÀÓ¸�_äM/ÓtaÚý3”]Ù«¿¸iîaF>ª�}ŒØvÍïMÍ÷Ðëä©îrÜŒöqñ_ÀüªrâF®ò
|
||||
ýþ¸—hT_ã�4sx”ýÝî)ç.Qgû�àŸÏ%ì‹}i´ASû|þð@QÜ
|
||||
$J9€»-̱÷Üô�MØ‘hZ˜¦:°œ*ÏlßxÒ|ϼ¡ÅLÀ� ¬Áfù9BÑdìÁ|«VV„¢�“énKv
|
||||
<!--u贮̮iiçͦt›šV/.²ê}mywu#|Yc‚X|jŽ�x‹dE“)0U
|
||||
�’ T–<W€o zbQ`F�¥2›�³:�°Ctª·‰!™²*¨…º»¢~аz¬†Á¯Ä‡´Õ޶Ó(iÃm²F›ÍÚhÜޓơօäc|ØËUÒÙþ²ëøçõƒ³ÜØ<î™w‰Ö¿Eéhä›@ðÂ
|
||||
-->
|
||||
|
||||
kB�_ƒg 3ʳ8#Þ¬L=0;J¤äÈ@¤F|'i~±© žaÊŠÆg;d*3²”©bPÏ¢TäHô¦?�[†
|
||||
ÄäƒhN6ZM¢D:c*BR!$±ckƒ’V­-uÛ@[øp„Ÿ]¼8ö-1{TήWÏ2ñ� Šp=¸q«Ñ½es.‰„4+#Ëe¦¥W5µekxr䛓/XÍš5Iǃ=kÝúµì˰û�N–2q�Å[r¦yZ£QŽ›ÇÞ�txŠäcK—Ííɹ
|
||||
iþ¡9¼m1oñ¢©/²8îìSté4l’Wm¾9óéÖÛÐãã{{üzÞ¿çøêöÞzà}œàL¨ "˜
|
||||
ÄÐsà¶PGLUúå`MÞ ¡†9¬§Û{pX¸¡wÚw߇¡¨ ‰í "M�UXNx
|
||||
<!--É……¡×ƒ��à¨âŠêÄõ#ƒå“Ž:Å(ã4Ö¸Až˜�:@Ùw¸ YÝ‹tIã’Ö”˜$…a(å‹X¥F7×IÈbŠ["Y€M縹K~`¶Øä-->
|
||||
+l´á¦
|
||||
j²F:Á.êÆÛj¤³Búî ¼Ê«/£Ö’[н#í+ð¥ænJÞ¸«æ;ð©õ‹¨ _ËðÄŠÒ»*º?
|
||||
ƒÂwœ�Ãyzh±°Øzl2,#oZ2È›r|òË‚°¼$Ç)ë
|
||||
óÍÙÔ,éfs€1Î@/øîÏPõÌiÐH·�ðÃBkLtÒP¯bôS;NÝWÔXÏ
|
||||
ó’dlÍtÖ`�°tžOc óÅa§}AÄ›²1vËjÇmþu+`ÍÍÁ·qwü6˜‚ì½sÞXŸ�¨Ë$xM6àP³-iÉSÚ½AÙˆïë84–ø=xä8^!ä*L>Þ˜ƒk¹Œ({Iè�^!ḘN$ê
|
||||
«®ç!ºû‚ÿÝ ë¯ßoî—Oü¨¾ÿî9í]ñÞ{ñÙÊ®ãlhŽ(èÌÃê¼~ÔS¢|öÕŸzýw¬Ë§|øÝ—*½ŒÈ×­|úåwzþæ“)Nrû¾Ê?*ô¥
|
||||
¿*÷ô7ú½~Múúú÷ª÷Ɉ•S3x*ûí�P”ùH£�°°àó(è¾í-Jƒú™
|
||||
åAF�{#\”g…Áœ)�!),Ô #ÓÂǼ�jþ1œŒþh©²K„9$ƒYè)Ž ˆA È
|
||||
—‡)#1‰Óp"˜ð'Ã%n‰P´‡Ù¨-‹1³¢^\%ƈÔp„CLÖ5Ã
|
||||
<!--a‘�^œßâx¯
|
||||
€±peŒ-->
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
This software security report provides an analysis of possible
|
||||
security concerns for the Common UNIX Printing System ("CUPS") Version
|
||||
1.0.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<H2><A NAME=1_2>1.2 System Overview</A></H2>
|
||||
The Common UNIX Printing System provides a portable printing layer for
|
||||
UNIX® operating systems. It has been developed by Easy Software
|
||||
Products to promote a standard printing solution for all UNIX vendors
|
||||
@@ -164,7 +62,7 @@ applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 4.03) and an image file RIP that
|
||||
can be used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<H2><A NAME=1_3>1.3 Document Overview</A></H2>
|
||||
<P>This software security report is organized into the following
|
||||
sections:</P>
|
||||
<UL>
|
||||
@@ -174,8 +72,8 @@ sections:</P>
|
||||
<LI>4 - Remote Access Risks</LI>
|
||||
<LI>A - Glossary</LI>
|
||||
</UL>
|
||||
<H1><A NAME="2">2 References</A></H1>
|
||||
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
|
||||
<H1><A NAME=2>2 References</A></H1>
|
||||
<H2><A NAME=2_1>2.1 CUPS Documentation</A></H2>
|
||||
The following CUPS documentation is referenced by this document:
|
||||
<UL>
|
||||
<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan </LI>
|
||||
@@ -188,7 +86,7 @@ sections:</P>
|
||||
<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.0.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<H2><A NAME=2_2>2.2 Other Documents</A></H2>
|
||||
The following non-CUPS documents are referenced by this document:
|
||||
<UL>
|
||||
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
|
||||
@@ -198,12 +96,12 @@ sections:</P>
|
||||
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
|
||||
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Local Access Risks</A></H1>
|
||||
<H1><A NAME=3>3 Local Access Risks</A></H1>
|
||||
<P>Local access risks are those that can be exploited only with a local
|
||||
user account. This section does not address issues related to
|
||||
dissemination of the root password or other security issues associated
|
||||
with the UNIX operating system. </P>
|
||||
<H2><A NAME="3_1">3.1 Security Breaches</A></H2>
|
||||
<H2><A NAME=3_1>3.1 Security Breaches</A></H2>
|
||||
<P>There are two known security vulnerabilities with local access: </P>
|
||||
<OL>
|
||||
<LI>Since the default installation creates a world-readable request
|
||||
@@ -224,11 +122,11 @@ can be minimized. </P>
|
||||
exploit this vulnerability. </P>
|
||||
</LI>
|
||||
</OL>
|
||||
<H1><A NAME="4">4 Remote Access Risks</A></H1>
|
||||
<H1><A NAME=4>4 Remote Access Risks</A></H1>
|
||||
<P>Remote access risks are those that can be exploited without a local
|
||||
user account and/or from a remote system. This section does not address
|
||||
issues related to network or firewall security. </P>
|
||||
<H2><A NAME="4_1">4.1 Denial of Service Attacks</A></H2>
|
||||
<H2><A NAME=4_1>4.1 Denial of Service Attacks</A></H2>
|
||||
<P>Like all Internet services, the CUPS server is vulnerable to denial
|
||||
of service attacks, including: </P>
|
||||
<OL>
|
||||
@@ -270,7 +168,7 @@ large attribute values. </P>
|
||||
user-level access control as needed for expensive printers. </P>
|
||||
</LI>
|
||||
</OL>
|
||||
<H2><A NAME="4_2">4.2 Security Breaches</A></H2>
|
||||
<H2><A NAME=4_2>4.2 Security Breaches</A></H2>
|
||||
<P>The current CUPS server only supports Basic authentication with
|
||||
usernames and passwords. This essentially places the clear text of the
|
||||
username and password on the network. Since CUPS uses the UNIX username
|
||||
@@ -285,8 +183,8 @@ restricted accordingly. </P>
|
||||
the entire message body using separate MD5-based username and password
|
||||
files. This will protect password information and prevent unauthorized
|
||||
access due to compromised account passwords. </P>
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="5">A Glossary</A></H1>
|
||||
<H2><A NAME="5_1">A.1 Terms</A></H2>
|
||||
<H1 TYPE=A VALUE=1><A NAME=5>A Glossary</A></H1>
|
||||
<H2><A NAME=5_1>A.1 Terms</A></H2>
|
||||
<DL>
|
||||
<DT>C </DT>
|
||||
<DD>A computer language. </DD>
|
||||
@@ -299,7 +197,7 @@ access due to compromised account passwords. </P>
|
||||
<DT>socket </DT>
|
||||
<DD>A two-way network communications channel. </DD>
|
||||
</DL>
|
||||
<H2><A NAME="5_2">A.2 Acronyms</A></H2>
|
||||
<H2><A NAME=5_2>A.2 Acronyms</A></H2>
|
||||
<DL>
|
||||
<DT>ASCII </DT>
|
||||
<DD>American Standard Code for Information Interchange </DD>
|
||||
|
||||
+327
-315
@@ -1,7 +1,7 @@
|
||||
%PDF-1.2
|
||||
%âãÏÓ
|
||||
1 0 obj<</Producer(htmldoc 1.8.3 Copyright 1997-1999 Easy Software Products, All Rights Reserved.)/CreationDate(D:19991214182636Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
|
||||
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
|
||||
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990922200511Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
|
||||
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
|
||||
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
|
||||
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
|
||||
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
|
||||
@@ -9,49 +9,49 @@
|
||||
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
|
||||
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
|
||||
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
|
||||
10 0 obj<</Subtype/Link/Rect[72.0 670.8 80.2 683.8]/Border[0 0 0]/Dest[81 0 R/XYZ null 818 0]>>endobj
|
||||
11 0 obj<</Subtype/Link/Rect[80.2 670.8 107.8 683.8]/Border[0 0 0]/Dest[81 0 R/XYZ null 818 0]>>endobj
|
||||
12 0 obj<</Subtype/Link/Rect[108.0 657.6 124.5 670.6]/Border[0 0 0]/Dest[81 0 R/XYZ null 735 0]>>endobj
|
||||
13 0 obj<</Subtype/Link/Rect[124.5 657.6 183.8 670.6]/Border[0 0 0]/Dest[81 0 R/XYZ null 735 0]>>endobj
|
||||
14 0 obj<</Subtype/Link/Rect[108.0 644.4 124.5 657.4]/Border[0 0 0]/Dest[81 0 R/XYZ null 654 0]>>endobj
|
||||
15 0 obj<</Subtype/Link/Rect[124.5 644.4 159.6 657.4]/Border[0 0 0]/Dest[81 0 R/XYZ null 654 0]>>endobj
|
||||
16 0 obj<</Subtype/Link/Rect[159.6 644.4 203.0 657.4]/Border[0 0 0]/Dest[81 0 R/XYZ null 654 0]>>endobj
|
||||
17 0 obj<</Subtype/Link/Rect[108.0 631.2 124.5 644.2]/Border[0 0 0]/Dest[81 0 R/XYZ null 429 0]>>endobj
|
||||
18 0 obj<</Subtype/Link/Rect[124.5 631.2 173.1 644.2]/Border[0 0 0]/Dest[81 0 R/XYZ null 429 0]>>endobj
|
||||
19 0 obj<</Subtype/Link/Rect[173.1 631.2 216.4 644.2]/Border[0 0 0]/Dest[81 0 R/XYZ null 429 0]>>endobj
|
||||
20 0 obj<</Subtype/Link/Rect[72.0 604.8 80.2 617.8]/Border[0 0 0]/Dest[87 0 R/XYZ null 818 0]>>endobj
|
||||
21 0 obj<</Subtype/Link/Rect[80.2 604.8 131.6 617.8]/Border[0 0 0]/Dest[87 0 R/XYZ null 818 0]>>endobj
|
||||
22 0 obj<</Subtype/Link/Rect[108.0 591.6 124.5 604.6]/Border[0 0 0]/Dest[87 0 R/XYZ null 735 0]>>endobj
|
||||
23 0 obj<</Subtype/Link/Rect[124.5 591.6 154.8 604.6]/Border[0 0 0]/Dest[87 0 R/XYZ null 735 0]>>endobj
|
||||
24 0 obj<</Subtype/Link/Rect[154.8 591.6 222.6 604.6]/Border[0 0 0]/Dest[87 0 R/XYZ null 735 0]>>endobj
|
||||
25 0 obj<</Subtype/Link/Rect[108.0 578.4 124.5 591.4]/Border[0 0 0]/Dest[87 0 R/XYZ null 535 0]>>endobj
|
||||
26 0 obj<</Subtype/Link/Rect[124.5 578.4 152.3 591.4]/Border[0 0 0]/Dest[87 0 R/XYZ null 535 0]>>endobj
|
||||
27 0 obj<</Subtype/Link/Rect[152.3 578.4 202.4 591.4]/Border[0 0 0]/Dest[87 0 R/XYZ null 535 0]>>endobj
|
||||
28 0 obj<</Subtype/Link/Rect[72.0 552.0 80.2 565.0]/Border[0 0 0]/Dest[93 0 R/XYZ null 818 0]>>endobj
|
||||
29 0 obj<</Subtype/Link/Rect[80.2 552.0 109.3 565.0]/Border[0 0 0]/Dest[93 0 R/XYZ null 818 0]>>endobj
|
||||
30 0 obj<</Subtype/Link/Rect[109.3 552.0 143.2 565.0]/Border[0 0 0]/Dest[93 0 R/XYZ null 818 0]>>endobj
|
||||
31 0 obj<</Subtype/Link/Rect[143.2 552.0 168.9 565.0]/Border[0 0 0]/Dest[93 0 R/XYZ null 818 0]>>endobj
|
||||
32 0 obj<</Subtype/Link/Rect[108.0 538.8 124.5 551.8]/Border[0 0 0]/Dest[93 0 R/XYZ null 702 0]>>endobj
|
||||
33 0 obj<</Subtype/Link/Rect[124.5 538.8 163.9 551.8]/Border[0 0 0]/Dest[93 0 R/XYZ null 702 0]>>endobj
|
||||
34 0 obj<</Subtype/Link/Rect[163.9 538.8 204.2 551.8]/Border[0 0 0]/Dest[93 0 R/XYZ null 702 0]>>endobj
|
||||
35 0 obj<</Subtype/Link/Rect[72.0 512.4 80.2 525.4]/Border[0 0 0]/Dest[99 0 R/XYZ null 818 0]>>endobj
|
||||
36 0 obj<</Subtype/Link/Rect[80.2 512.4 119.0 525.4]/Border[0 0 0]/Dest[99 0 R/XYZ null 818 0]>>endobj
|
||||
37 0 obj<</Subtype/Link/Rect[119.0 512.4 152.9 525.4]/Border[0 0 0]/Dest[99 0 R/XYZ null 818 0]>>endobj
|
||||
38 0 obj<</Subtype/Link/Rect[152.9 512.4 178.6 525.4]/Border[0 0 0]/Dest[99 0 R/XYZ null 818 0]>>endobj
|
||||
39 0 obj<</Subtype/Link/Rect[108.0 499.2 124.5 512.2]/Border[0 0 0]/Dest[99 0 R/XYZ null 715 0]>>endobj
|
||||
40 0 obj<</Subtype/Link/Rect[124.5 499.2 156.6 512.2]/Border[0 0 0]/Dest[99 0 R/XYZ null 715 0]>>endobj
|
||||
41 0 obj<</Subtype/Link/Rect[156.6 499.2 168.5 512.2]/Border[0 0 0]/Dest[99 0 R/XYZ null 715 0]>>endobj
|
||||
42 0 obj<</Subtype/Link/Rect[168.5 499.2 204.2 512.2]/Border[0 0 0]/Dest[99 0 R/XYZ null 715 0]>>endobj
|
||||
43 0 obj<</Subtype/Link/Rect[204.2 499.2 237.8 512.2]/Border[0 0 0]/Dest[99 0 R/XYZ null 715 0]>>endobj
|
||||
44 0 obj<</Subtype/Link/Rect[108.0 486.0 124.5 499.0]/Border[0 0 0]/Dest[99 0 R/XYZ null 279 0]>>endobj
|
||||
45 0 obj<</Subtype/Link/Rect[124.5 486.0 163.9 499.0]/Border[0 0 0]/Dest[99 0 R/XYZ null 279 0]>>endobj
|
||||
46 0 obj<</Subtype/Link/Rect[163.9 486.0 204.2 499.0]/Border[0 0 0]/Dest[99 0 R/XYZ null 279 0]>>endobj
|
||||
47 0 obj<</Subtype/Link/Rect[72.0 459.6 82.7 472.6]/Border[0 0 0]/Dest[105 0 R/XYZ null 818 0]>>endobj
|
||||
48 0 obj<</Subtype/Link/Rect[82.7 459.6 124.2 472.6]/Border[0 0 0]/Dest[105 0 R/XYZ null 818 0]>>endobj
|
||||
49 0 obj<</Subtype/Link/Rect[108.0 446.4 126.9 459.4]/Border[0 0 0]/Dest[105 0 R/XYZ null 735 0]>>endobj
|
||||
50 0 obj<</Subtype/Link/Rect[126.9 446.4 155.0 459.4]/Border[0 0 0]/Dest[105 0 R/XYZ null 735 0]>>endobj
|
||||
51 0 obj<</Subtype/Link/Rect[108.0 433.2 126.9 446.2]/Border[0 0 0]/Dest[105 0 R/XYZ null 430 0]>>endobj
|
||||
52 0 obj<</Subtype/Link/Rect[126.9 433.2 172.8 446.2]/Border[0 0 0]/Dest[105 0 R/XYZ null 430 0]>>endobj
|
||||
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[79 0 R/XYZ null 818 0]>>endobj
|
||||
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[79 0 R/XYZ null 818 0]>>endobj
|
||||
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[79 0 R/XYZ null 737 0]>>endobj
|
||||
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[79 0 R/XYZ null 737 0]>>endobj
|
||||
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
|
||||
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
|
||||
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
|
||||
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
|
||||
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
|
||||
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
|
||||
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[85 0 R/XYZ null 818 0]>>endobj
|
||||
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[85 0 R/XYZ null 818 0]>>endobj
|
||||
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
|
||||
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
|
||||
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
|
||||
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
|
||||
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
|
||||
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
|
||||
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
|
||||
29 0 obj<</Subtype/Link/Rect[80.2 554.4 109.3 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
|
||||
30 0 obj<</Subtype/Link/Rect[109.3 554.4 143.2 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
|
||||
31 0 obj<</Subtype/Link/Rect[143.2 554.4 168.9 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
|
||||
32 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
|
||||
33 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
|
||||
34 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
|
||||
35 0 obj<</Subtype/Link/Rect[72.0 514.8 80.2 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
|
||||
36 0 obj<</Subtype/Link/Rect[80.2 514.8 119.0 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
|
||||
37 0 obj<</Subtype/Link/Rect[119.0 514.8 152.9 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
|
||||
38 0 obj<</Subtype/Link/Rect[152.9 514.8 178.6 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
|
||||
39 0 obj<</Subtype/Link/Rect[108.0 501.6 124.5 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
|
||||
40 0 obj<</Subtype/Link/Rect[124.5 501.6 156.6 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
|
||||
41 0 obj<</Subtype/Link/Rect[156.6 501.6 168.5 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
|
||||
42 0 obj<</Subtype/Link/Rect[168.5 501.6 204.2 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
|
||||
43 0 obj<</Subtype/Link/Rect[204.2 501.6 237.8 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
|
||||
44 0 obj<</Subtype/Link/Rect[108.0 488.4 124.5 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
|
||||
45 0 obj<</Subtype/Link/Rect[124.5 488.4 163.9 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
|
||||
46 0 obj<</Subtype/Link/Rect[163.9 488.4 204.2 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
|
||||
47 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[103 0 R/XYZ null 818 0]>>endobj
|
||||
48 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[103 0 R/XYZ null 818 0]>>endobj
|
||||
49 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[103 0 R/XYZ null 737 0]>>endobj
|
||||
50 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[103 0 R/XYZ null 737 0]>>endobj
|
||||
51 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[103 0 R/XYZ null 434 0]>>endobj
|
||||
52 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[103 0 R/XYZ null 434 0]>>endobj
|
||||
53 0 obj[10 0 R
|
||||
11 0 R
|
||||
12 0 R
|
||||
@@ -98,329 +98,341 @@
|
||||
]endobj
|
||||
54 0 obj<</Dests 55 0 R>>endobj
|
||||
55 0 obj<</Kids[56 0 R]>>endobj
|
||||
56 0 obj<</Limits[(1)(ssr.shtml)]/Names[(1)57 0 R(1_1)58 0 R(1_2)59 0 R(1_3)60 0 R(2)61 0 R(2_1)62 0 R(2_2)63 0 R(3)64 0 R(3_1)65 0 R(4)66 0 R(4_1)67 0 R(4_2)68 0 R(5)69 0 R(5_1)70 0 R(5_2)71 0 R(cups-large.gif)72 0 R(ssr.shtml)73 0 R]>>endobj
|
||||
57 0 obj<</D[81 0 R/XYZ null 818 null]>>endobj
|
||||
58 0 obj<</D[81 0 R/XYZ null 735 null]>>endobj
|
||||
59 0 obj<</D[81 0 R/XYZ null 654 null]>>endobj
|
||||
60 0 obj<</D[81 0 R/XYZ null 429 null]>>endobj
|
||||
61 0 obj<</D[87 0 R/XYZ null 818 null]>>endobj
|
||||
62 0 obj<</D[87 0 R/XYZ null 735 null]>>endobj
|
||||
63 0 obj<</D[87 0 R/XYZ null 535 null]>>endobj
|
||||
64 0 obj<</D[93 0 R/XYZ null 818 null]>>endobj
|
||||
65 0 obj<</D[93 0 R/XYZ null 702 null]>>endobj
|
||||
66 0 obj<</D[99 0 R/XYZ null 818 null]>>endobj
|
||||
67 0 obj<</D[99 0 R/XYZ null 715 null]>>endobj
|
||||
68 0 obj<</D[99 0 R/XYZ null 279 null]>>endobj
|
||||
69 0 obj<</D[105 0 R/XYZ null 818 null]>>endobj
|
||||
70 0 obj<</D[105 0 R/XYZ null 735 null]>>endobj
|
||||
71 0 obj<</D[105 0 R/XYZ null 430 null]>>endobj
|
||||
72 0 obj<</D[81 0 R/XYZ null 698 null]>>endobj
|
||||
73 0 obj<</D[81 0 R/XYZ null 698 null]>>endobj
|
||||
74 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[75 0 R
|
||||
78 0 R
|
||||
111 0 R
|
||||
114 0 R
|
||||
81 0 R
|
||||
84 0 R
|
||||
87 0 R
|
||||
90 0 R
|
||||
93 0 R
|
||||
96 0 R
|
||||
99 0 R
|
||||
102 0 R
|
||||
105 0 R
|
||||
108 0 R
|
||||
56 0 obj<</Limits[(1)(5_2)]/Names[(1)57 0 R(1_1)58 0 R(1_2)59 0 R(1_3)60 0 R(2)61 0 R(2_1)62 0 R(2_2)63 0 R(3)64 0 R(3_1)65 0 R(4)66 0 R(4_1)67 0 R(4_2)68 0 R(5)69 0 R(5_1)70 0 R(5_2)71 0 R]>>endobj
|
||||
57 0 obj<</D[79 0 R/XYZ null 818 null]>>endobj
|
||||
58 0 obj<</D[79 0 R/XYZ null 737 null]>>endobj
|
||||
59 0 obj<</D[79 0 R/XYZ null 658 null]>>endobj
|
||||
60 0 obj<</D[79 0 R/XYZ null 434 null]>>endobj
|
||||
61 0 obj<</D[85 0 R/XYZ null 818 null]>>endobj
|
||||
62 0 obj<</D[85 0 R/XYZ null 737 null]>>endobj
|
||||
63 0 obj<</D[85 0 R/XYZ null 540 null]>>endobj
|
||||
64 0 obj<</D[91 0 R/XYZ null 818 null]>>endobj
|
||||
65 0 obj<</D[91 0 R/XYZ null 690 null]>>endobj
|
||||
66 0 obj<</D[97 0 R/XYZ null 818 null]>>endobj
|
||||
67 0 obj<</D[97 0 R/XYZ null 704 null]>>endobj
|
||||
68 0 obj<</D[97 0 R/XYZ null 255 null]>>endobj
|
||||
69 0 obj<</D[103 0 R/XYZ null 818 null]>>endobj
|
||||
70 0 obj<</D[103 0 R/XYZ null 737 null]>>endobj
|
||||
71 0 obj<</D[103 0 R/XYZ null 434 null]>>endobj
|
||||
72 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[73 0 R
|
||||
76 0 R
|
||||
109 0 R
|
||||
112 0 R
|
||||
79 0 R
|
||||
82 0 R
|
||||
85 0 R
|
||||
88 0 R
|
||||
91 0 R
|
||||
94 0 R
|
||||
97 0 R
|
||||
100 0 R
|
||||
103 0 R
|
||||
106 0 R
|
||||
]>>endobj
|
||||
75 0 obj<</Type/Page/Parent 74 0 R/Contents 76 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
|
||||
76 0 obj<</Length 77 0 R/Filter/FlateDecode>>stream
|
||||
xÚMŽ;Â0D{ŸbJ�°É&&Á%ßbs | ||||