Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| f55da0db17 |
@@ -0,0 +1,98 @@
|
||||
CHANGES.txt - 11/04/1999
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS v1.0.2
|
||||
|
||||
- The HP-GL/2 filter didn't always scale the output
|
||||
correctly.
|
||||
- The HP-GL/2 filter now supports changing the page size
|
||||
automatically when the "fitplot" option is not used.
|
||||
- The cancel-job operation was expecting a resource name
|
||||
of the form "/job/#" instead of "/jobs/#"; this
|
||||
prevented the cancel and lprm commands from working.
|
||||
- The backends didn't log pages when files were printed
|
||||
using the "-oraw" option.
|
||||
- The authorization code did not work with the Slackware
|
||||
long shadow password package because its crypt() can
|
||||
return NULL.
|
||||
- The chunking code didn't work for reading the response
|
||||
of a POST request.
|
||||
- cupsGetPPD() now does authentication as needed.
|
||||
- The N-up code in the PostScript filter didn't work
|
||||
with some printers (grestoreall would restore the
|
||||
default blank page and device settings).
|
||||
- The N-up code in the PostScript filter didn't scale
|
||||
the pages to fit within the imageable area of the
|
||||
page.
|
||||
- Wasn't doing an fchown() on the request files. This
|
||||
caused problems when the default root account group
|
||||
and CUPS group were not the same.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.0.1
|
||||
|
||||
- Documentation updates.
|
||||
|
||||
- Fixed a bunch of possible buffer-overflow conditions.
|
||||
|
||||
- The scheduler now supports authentication using PAM.
|
||||
|
||||
- Updated the Italian message file.
|
||||
|
||||
- httpEncode64() didn't add an extra "=" if there was
|
||||
only one byte in the last three-byte group.
|
||||
|
||||
- Now drop any trailing character set from the locale
|
||||
string (e.g. "en_US.ISO_8859-1" becomes "en_US")
|
||||
|
||||
- Fixed "timezone" vs "tm_gmtoff" usage for BSD-based
|
||||
operating systems.
|
||||
|
||||
- Updated IPP security so that "get" operations can be
|
||||
done from any resource name; this allows the CGIs to
|
||||
work with printer authentication enabled so long as
|
||||
authentication isn't turned on for the whole "site".
|
||||
|
||||
- The IPP code didn't properly handle the "unsupported"
|
||||
group; this caused problems with the HP JetDirect since
|
||||
it doesn't seem to support the "copies" attribute.
|
||||
|
||||
- The HTTP chunking code was missing a CR LF pair at the
|
||||
end of a 0-length chunk.
|
||||
|
||||
- The httpSeparate() function didn't handle embedded
|
||||
usernames and passwords in the URI properly.
|
||||
|
||||
- Doing "lpadmin -p printer -E" didn't restart printing
|
||||
if there were pending jobs.
|
||||
|
||||
- The cancel-job operation now requires either a
|
||||
requesting-user-name attribute or an authenticated
|
||||
username.
|
||||
|
||||
- The add-printer code did not report errors if the
|
||||
interface script or PPD file could not be renamed.
|
||||
|
||||
- Request files are now created without world read
|
||||
permissions.
|
||||
|
||||
- Added a cupsLastError() function to the CUPS API to
|
||||
retrieve the IPP error code from the last request.
|
||||
|
||||
- Options are now case-insensitive.
|
||||
|
||||
- The lpq command now provides 10 characters for the
|
||||
username instead of the original (Berkeley standard)
|
||||
7.
|
||||
|
||||
- The cancel command needed a local CUPS server to work
|
||||
(or the appropriate ServerName in cupsd.conf)
|
||||
|
||||
- The cancel and lprm commands didn't report the IPP
|
||||
error if the job could not be cancelled.
|
||||
|
||||
- The lp and lpr commands didn't intercept SIGTERM to
|
||||
remove temporary files when printing from stdin.
|
||||
|
||||
- The lp and lpr commands didn't report the IPP error if
|
||||
the job could not be printed.
|
||||
+24
-8
@@ -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,18 +58,34 @@ 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)
|
||||
(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
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
|
||||
+21
-5
@@ -1,4 +1,4 @@
|
||||
README - CUPS v1.0.1 - 10/26/1999
|
||||
README - CUPS v1.0.3 - 12/15/1999
|
||||
---------------------------------
|
||||
|
||||
INTRODUCTION
|
||||
@@ -46,7 +46,7 @@ the binary distributions from Easy Software Products:
|
||||
- Digital UNIX (aka OSF1 aka Compaq Tru64 UNIX) 4.0 or higher
|
||||
- HP-UX 10.20 or higher
|
||||
- IRIX 5.3 or higher
|
||||
- Linux 2.0 with glibc2 or higher (tested with RedHat 5.2)
|
||||
- Linux 2.0 with glibc2 or higher
|
||||
- Solaris 2.5 or higher (SPARC or Intel)
|
||||
|
||||
|
||||
@@ -54,8 +54,9 @@ INSTALLING CUPS
|
||||
|
||||
We are currently distributing CUPS binary distributions in TAR format
|
||||
with installation and removal scripts generated by our ESP Package
|
||||
Manager (EPM) software, which is also included with the source
|
||||
distribution.
|
||||
Manager (EPM) software, which is available from:
|
||||
|
||||
http://www.easysw.com/epm
|
||||
|
||||
WARNING: Installing CUPS will overwrite your existing printing system.
|
||||
Backup files are made by the installation script and restored by the
|
||||
@@ -74,6 +75,20 @@ After asking you a few yes/no questions the CUPS software will be
|
||||
installed and the scheduler will be started automatically.
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
Once you have installed the software you can access the documentation
|
||||
(and a bunch of other stuff) on-line at:
|
||||
|
||||
http://localhost:631
|
||||
|
||||
If you're having trouble getting that far, the documentation is located
|
||||
in the "/usr/share/cups/doc" directory in the binary distributions, and
|
||||
under the "doc" directory in the source archives.
|
||||
|
||||
Please read the documentation before asking questions.
|
||||
|
||||
|
||||
SETTING UP PRINTER QUEUES
|
||||
|
||||
CUPS works best with PPD (PostScript Printer Description) files. In a
|
||||
@@ -150,7 +165,8 @@ REPORTING PROBLEMS
|
||||
|
||||
If you have problems, please send an email to cups-support@cups.org.
|
||||
Include your operating system and version, compiler and version, and
|
||||
any errors or problems you've run into.
|
||||
any errors or problems you've run into. If you are running a version
|
||||
of Linux, be sure to provide the Linux distribution you have, too.
|
||||
|
||||
|
||||
OTHER RESOURCES
|
||||
|
||||
+463
-228
@@ -68,16 +68,19 @@ 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)
|
||||
@@ -89,18 +92,55 @@ 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, print stdin...
|
||||
* Otherwise, copy stdin to a temporary file and print the temporary
|
||||
* file.
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
fp = stdin;
|
||||
else if ((fp = fopen(argv[6], "rb")) == NULL)
|
||||
{
|
||||
/*
|
||||
* 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)
|
||||
{
|
||||
perror("ERROR: Unable to open print file");
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
stat(argv[6], &fileinfo);
|
||||
stat(filename, &fileinfo);
|
||||
|
||||
/*
|
||||
* Extract the hostname and printer name from the URI...
|
||||
@@ -112,16 +152,24 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Try connecting to the remote server...
|
||||
*/
|
||||
|
||||
fprintf(stderr, "INFO: Connecting to %s...\n", hostname);
|
||||
|
||||
if ((http = httpConnect(hostname, port)) == NULL)
|
||||
do
|
||||
{
|
||||
perror("ERROR: Unable to connect to IPP host");
|
||||
fprintf(stderr, "INFO: Connecting to %s...\n", hostname);
|
||||
|
||||
if (fp != stdin)
|
||||
fclose(fp);
|
||||
return (1);
|
||||
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);
|
||||
}
|
||||
}
|
||||
while (http == NULL);
|
||||
|
||||
/*
|
||||
* Build a URI for the printer and fill the standard IPP attributes for
|
||||
@@ -129,262 +177,451 @@ 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;
|
||||
|
||||
snprintf(uri, sizeof(uri), "%s://%s:%d%s", method, hostname, port, resource);
|
||||
|
||||
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");
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, argv[2]);
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, argv[3]);
|
||||
|
||||
/*
|
||||
* Handle options on the command-line...
|
||||
* 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...
|
||||
*/
|
||||
|
||||
options = NULL;
|
||||
num_options = cupsParseOptions(argv[5], 0, &options);
|
||||
language = cupsLangDefault();
|
||||
copies_sup = NULL;
|
||||
|
||||
if (cupsGetOption("raw", num_options, options))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/vnd.cups-raw");
|
||||
else
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/octet-stream");
|
||||
|
||||
if (fp != stdin)
|
||||
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
|
||||
|
||||
for (i = 0; i < num_options; i ++)
|
||||
do
|
||||
{
|
||||
/*
|
||||
* Skip the "raw" option - handled above...
|
||||
* Build the IPP request...
|
||||
*/
|
||||
|
||||
if (strcasecmp(options[i].name, "raw") == 0)
|
||||
continue;
|
||||
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);
|
||||
|
||||
/*
|
||||
* 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.
|
||||
* Now fill in the HTTP request stuff...
|
||||
*/
|
||||
|
||||
option = options[i].name;
|
||||
val = options[i].value;
|
||||
|
||||
if (*val == '\0')
|
||||
val = NULL;
|
||||
|
||||
if (val != NULL)
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
if (username[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);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strncasecmp(option, "no", 2) == 0)
|
||||
{
|
||||
option += 2;
|
||||
n = 0;
|
||||
}
|
||||
else
|
||||
n = 1;
|
||||
|
||||
s = "";
|
||||
httpEncode64(password, username);
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, password);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
else
|
||||
/*
|
||||
* Boolean value...
|
||||
*/
|
||||
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
if (fp != stdin)
|
||||
{
|
||||
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
|
||||
sprintf(buffer, "%u", ippLength(request));
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
|
||||
}
|
||||
else
|
||||
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
* POST the request, retrying as needed...
|
||||
*/
|
||||
|
||||
if (httpPost(http, resource))
|
||||
{
|
||||
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
|
||||
sleep(10);
|
||||
httpReconnect(http);
|
||||
continue;
|
||||
}
|
||||
|
||||
fputs("INFO: POST successful, sending IPP request...\n", stderr);
|
||||
|
||||
/*
|
||||
* Send the IPP request...
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
request->state = IPP_IDLE;
|
||||
|
||||
if (ippWrite(http, request) == IPP_ERROR)
|
||||
for (;;)
|
||||
{
|
||||
fputs("ERROR: Unable to send IPP request!\n", stderr);
|
||||
status = HTTP_ERROR;
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
fputs("INFO: IPP request sent, sending print file...\n", stderr);
|
||||
|
||||
/*
|
||||
* Then send the file...
|
||||
*/
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
if (status != HTTP_OK)
|
||||
{
|
||||
tbytes += nbytes;
|
||||
fprintf(stderr, "INFO: Sending print file, %uk...\n", tbytes / 1024);
|
||||
if (fp != stdin)
|
||||
fclose(fp);
|
||||
|
||||
if (httpWrite(http, buffer, nbytes) < nbytes)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
status = HTTP_ERROR;
|
||||
break;
|
||||
}
|
||||
httpClose(http);
|
||||
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
while (ipp_status > IPP_OK_CONFLICT);
|
||||
|
||||
/*
|
||||
* See if the printer supports multiple copies...
|
||||
*/
|
||||
|
||||
if (copies_sup)
|
||||
copies = 1;
|
||||
else
|
||||
copies = atoi(argv[4]);
|
||||
|
||||
/*
|
||||
* Then issue the print-job request...
|
||||
*/
|
||||
|
||||
while (copies > 0)
|
||||
{
|
||||
/*
|
||||
* If we are chunking the output from stdin, make sure we end up with
|
||||
* a 0-length chunk at the end...
|
||||
* Build the IPP request...
|
||||
*/
|
||||
|
||||
if (fp == stdin)
|
||||
httpWrite(http, buffer, 0);
|
||||
request = ippNew();
|
||||
request->request.op.operation_id = IPP_PRINT_JOB;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
fputs("INFO: Print file sent; checking status...\n", stderr);
|
||||
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]);
|
||||
|
||||
/*
|
||||
* Finally, check the status from the HTTP server...
|
||||
* Handle options on the command-line...
|
||||
*/
|
||||
|
||||
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
|
||||
options = NULL;
|
||||
num_options = cupsParseOptions(argv[5], 0, &options);
|
||||
|
||||
if (status == HTTP_OK)
|
||||
{
|
||||
response = ippNew();
|
||||
ippRead(http, response);
|
||||
|
||||
if (response->request.status.status_code > IPP_OK_CONFLICT)
|
||||
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);
|
||||
}
|
||||
if (cupsGetOption("raw", num_options, options))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/vnd.cups-raw");
|
||||
else
|
||||
{
|
||||
response = NULL;
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
|
||||
NULL, "application/octet-stream");
|
||||
|
||||
if (status == HTTP_ERROR)
|
||||
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)
|
||||
{
|
||||
fprintf(stderr, "WARNING: Did not receive the IPP response (%d)\n",
|
||||
errno);
|
||||
status = HTTP_OK;
|
||||
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
|
||||
fprintf(stderr, "ERROR: Print request was not accepted (%d)!\n", status);
|
||||
{
|
||||
if (strncasecmp(option, "no", 2) == 0)
|
||||
{
|
||||
option += 2;
|
||||
n = 0;
|
||||
}
|
||||
else
|
||||
n = 1;
|
||||
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
else
|
||||
/*
|
||||
* Boolean value...
|
||||
*/
|
||||
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
|
||||
}
|
||||
|
||||
break;
|
||||
/*
|
||||
* 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) + (size_t)fileinfo.st_size);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
*/
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
* POST the request, retrying as needed...
|
||||
*/
|
||||
|
||||
httpReconnect(http);
|
||||
|
||||
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);
|
||||
|
||||
/*
|
||||
* 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);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (request != NULL)
|
||||
ippDelete(request);
|
||||
if (response != NULL)
|
||||
ippDelete(response);
|
||||
|
||||
if (ipp_status <= IPP_OK_CONFLICT)
|
||||
{
|
||||
fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
|
||||
copies --;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -392,17 +629,15 @@ 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 the print file as needed...
|
||||
* Close and remove the temporary file if necessary...
|
||||
*/
|
||||
|
||||
if (fp != stdin)
|
||||
fclose(fp);
|
||||
fclose(fp);
|
||||
|
||||
if (argc < 7)
|
||||
unlink(filename);
|
||||
|
||||
/*
|
||||
* Return the queue status...
|
||||
|
||||
+16
-5
@@ -140,8 +140,17 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Queue the job...
|
||||
*/
|
||||
|
||||
status = lpd_queue(hostname, resource + 1, filename,
|
||||
argv[2] /* user */, atoi(argv[4]) /* copies */);
|
||||
if (argc > 6)
|
||||
{
|
||||
status = lpd_queue(hostname, resource + 1, filename,
|
||||
argv[2] /* user */, atoi(argv[4]) /* copies */);
|
||||
|
||||
if (!status)
|
||||
fprintf(stderr, "PAGE: 1 %d\n", atoi(argv[4]));
|
||||
}
|
||||
else
|
||||
status = lpd_queue(hostname, resource + 1, filename,
|
||||
argv[2] /* user */, 1);
|
||||
|
||||
/*
|
||||
* Remove the temporary file if necessary...
|
||||
@@ -253,8 +262,9 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
{
|
||||
if ((fd = rresvport(&port)) < 0)
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
return (1);
|
||||
perror("ERROR: Unable to reserve port");
|
||||
sleep(30);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||
@@ -278,7 +288,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
else
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
return (1);
|
||||
sleep(30);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -316,6 +326,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
|
||||
while (copies > 0)
|
||||
{
|
||||
|
||||
snprintf(cptr, sizeof(control) - (cptr - control), "ldfA%03.3d%s\n",
|
||||
getpid() % 1000, localhost);
|
||||
cptr += strlen(cptr);
|
||||
|
||||
+30
-13
@@ -63,6 +63,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*options; /* Pointer to options */
|
||||
int port; /* Port number (not used) */
|
||||
FILE *fp; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
int fd; /* Parallel device */
|
||||
int error; /* Error code (if any) */
|
||||
size_t nbytes, /* Number of bytes written */
|
||||
@@ -83,7 +84,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
fp = stdin;
|
||||
{
|
||||
fp = stdin;
|
||||
copies = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -95,6 +99,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
perror("ERROR: unable to open print file");
|
||||
return (1);
|
||||
}
|
||||
|
||||
copies = atoi(argv[4]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -143,23 +149,34 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Finally, send the print file...
|
||||
*/
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
while (copies > 0)
|
||||
{
|
||||
/*
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
copies --;
|
||||
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
if (fp != stdin)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
fputs("PAGE: 1 1\n", stderr);
|
||||
rewind(fp);
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
{
|
||||
/*
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+30
-13
@@ -66,6 +66,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*ptr; /* Pointer into name or value */
|
||||
int port; /* Port number (not used) */
|
||||
FILE *fp; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
int fd; /* Parallel device */
|
||||
int error; /* Error code (if any) */
|
||||
size_t nbytes, /* Number of bytes written */
|
||||
@@ -86,7 +87,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
fp = stdin;
|
||||
{
|
||||
fp = stdin;
|
||||
copies = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -98,6 +102,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
perror("ERROR: unable to open print file");
|
||||
return (1);
|
||||
}
|
||||
|
||||
copies = atoi(argv[4]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -261,23 +267,34 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Finally, send the print file...
|
||||
*/
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
while (copies > 0)
|
||||
{
|
||||
/*
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
copies --;
|
||||
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
if (fp != stdin)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
fputs("PAGE: 1 1\n", stderr);
|
||||
rewind(fp);
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
{
|
||||
/*
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+87
-65
@@ -66,6 +66,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
username[255], /* Username info (not used) */
|
||||
resource[1024]; /* Resource info (not used) */
|
||||
FILE *fp; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
int port; /* Port number */
|
||||
int fd; /* AppSocket */
|
||||
int error; /* Error code (if any) */
|
||||
@@ -93,7 +94,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
fp = stdin;
|
||||
{
|
||||
fp = stdin;
|
||||
copies = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -105,6 +109,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
perror("ERROR: unable to open print file");
|
||||
return (1);
|
||||
}
|
||||
|
||||
copies = atoi(argv[4]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -135,91 +141,107 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
addr.sin_family = hostaddr->h_addrtype;
|
||||
addr.sin_port = htons(port);
|
||||
|
||||
for (;;)
|
||||
while (copies > 0)
|
||||
{
|
||||
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
||||
for (;;)
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||
{
|
||||
error = errno;
|
||||
close(fd);
|
||||
fd = -1;
|
||||
|
||||
if (error == ECONNREFUSED)
|
||||
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
||||
{
|
||||
fprintf(stderr, "INFO: Network host \'%s\' is busy; will retry in 30 seconds...\n",
|
||||
hostname);
|
||||
sleep(30);
|
||||
perror("ERROR: Unable to create socket");
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
|
||||
{
|
||||
error = errno;
|
||||
close(fd);
|
||||
fd = -1;
|
||||
|
||||
if (error == ECONNREFUSED)
|
||||
{
|
||||
fprintf(stderr, "INFO: Network host \'%s\' is busy; will retry in 30 seconds...\n",
|
||||
hostname);
|
||||
sleep(30);
|
||||
}
|
||||
else
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
sleep(30);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
perror("ERROR: Unable to connect to printer");
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Finally, send the print file...
|
||||
*/
|
||||
|
||||
fputs("INFO: Connected to host, sending print job...\n", stderr);
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
{
|
||||
/*
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
tbytes += nbytes;
|
||||
bufptr = buffer;
|
||||
|
||||
while (nbytes > 0)
|
||||
{
|
||||
if ((wbytes = send(fd, bufptr, nbytes, 0)) < 0)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
|
||||
nbytes -= wbytes;
|
||||
bufptr += wbytes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for possible data coming back from the printer...
|
||||
* Finally, send the print file...
|
||||
*/
|
||||
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 0;
|
||||
FD_ZERO(&input);
|
||||
FD_SET(fd, &input);
|
||||
if (select(fd + 1, &input, NULL, NULL, &timeout) > 0)
|
||||
copies --;
|
||||
|
||||
if (fp != stdin)
|
||||
{
|
||||
fputs("PAGE: 1 1\n", stderr);
|
||||
rewind(fp);
|
||||
}
|
||||
|
||||
fputs("INFO: Connected to host, sending print job...\n", stderr);
|
||||
|
||||
tbytes = 0;
|
||||
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
{
|
||||
/*
|
||||
* Grab the data coming back and spit it out to stderr...
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
if ((nbytes = recv(fd, buffer, sizeof(buffer), 0)) > 0)
|
||||
fprintf(stderr, "INFO: Received %u bytes of back-channel data!\n",
|
||||
nbytes);
|
||||
tbytes += nbytes;
|
||||
bufptr = buffer;
|
||||
|
||||
while (nbytes > 0)
|
||||
{
|
||||
if ((wbytes = send(fd, bufptr, nbytes, 0)) < 0)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
|
||||
nbytes -= wbytes;
|
||||
bufptr += wbytes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for possible data coming back from the printer...
|
||||
*/
|
||||
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 0;
|
||||
FD_ZERO(&input);
|
||||
FD_SET(fd, &input);
|
||||
if (select(fd + 1, &input, NULL, NULL, &timeout) > 0)
|
||||
{
|
||||
/*
|
||||
* Grab the data coming back and spit it out to stderr...
|
||||
*/
|
||||
|
||||
if ((nbytes = recv(fd, buffer, sizeof(buffer), 0)) > 0)
|
||||
fprintf(stderr, "INFO: Received %u bytes of back-channel data!\n",
|
||||
nbytes);
|
||||
}
|
||||
else if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
}
|
||||
else if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
|
||||
/*
|
||||
* Close the socket connection...
|
||||
*/
|
||||
|
||||
close(fd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Close the socket connection and input file and return...
|
||||
* Close the input file and return...
|
||||
*/
|
||||
|
||||
close(fd);
|
||||
if (fp != stdin)
|
||||
fclose(fp);
|
||||
|
||||
|
||||
+2
-2
@@ -109,8 +109,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"88,10,158,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"170,10,210,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"222,10,354,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
|
||||
#else
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
|
||||
|
||||
+2
-2
@@ -109,8 +109,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"88,10,158,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"170,10,210,30\" HREF=\"jobs\" ALT=\"Current Jobs Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"222,10,354,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
|
||||
#else
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
|
||||
|
||||
@@ -109,8 +109,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"88,10,158,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"170,10,210,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"222,10,354,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
|
||||
#else
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
|
||||
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
|
||||
|
||||
+5
-2
@@ -50,18 +50,21 @@ clean:
|
||||
install:
|
||||
-$(MKDIR) $(SERVERROOT)/conf
|
||||
for file in $(KEEP); do \
|
||||
if test -e $(SERVERROOT)/conf/$$file ; then \
|
||||
if test -r $(SERVERROOT)/conf/$$file ; then \
|
||||
$(CP) $$file $(SERVERROOT)/conf/$$file.N ; \
|
||||
else \
|
||||
$(CP) $$file $(SERVERROOT)/conf ; \
|
||||
fi ; \
|
||||
done
|
||||
for file in $(REPLACE); do \
|
||||
if test -e $(SERVERROOT)/conf/$$file ; then \
|
||||
if test -r $(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$".
|
||||
|
||||
+9
-1
@@ -28,7 +28,7 @@
|
||||
* Version of software...
|
||||
*/
|
||||
|
||||
#define CUPS_SVERSION "CUPS v1.0.1"
|
||||
#define CUPS_SVERSION "CUPS v1.0.3"
|
||||
|
||||
/*
|
||||
* Where are files stored?
|
||||
@@ -62,6 +62,14 @@
|
||||
#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>?
|
||||
*/
|
||||
|
||||
+25
-8
@@ -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,6 +88,8 @@ 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
|
||||
@@ -133,6 +135,10 @@ 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)
|
||||
@@ -149,6 +155,11 @@ 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=""
|
||||
@@ -159,10 +170,18 @@ 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")
|
||||
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)
|
||||
|
||||
dnl AC_CHECK_HEADER(png.h,
|
||||
AC_CHECK_LIB(png, png_read_info,
|
||||
@@ -174,10 +193,8 @@ AC_CHECK_LIB(tiff, TIFFReadScanline,
|
||||
AC_DEFINE(HAVE_LIBTIFF)
|
||||
LIBTIFF="-ltiff")
|
||||
|
||||
dnl AC_CHECK_HEADER(zlib.h,
|
||||
AC_CHECK_LIB(z, deflateInit,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz")
|
||||
dnl Restore original LIBS settings...
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
@@ -200,7 +217,7 @@ AC_CHECK_FUNCS(waitpid)
|
||||
AC_CHECK_FUNCS(wait3)
|
||||
|
||||
dnl Update compiler options...
|
||||
if test -n "$GXX"; then
|
||||
if test -n "$GXX" -o $uname = Linux; then
|
||||
if test -z "$OPTIM"; then
|
||||
OPTIM="-O2"
|
||||
fi
|
||||
|
||||
+319
@@ -0,0 +1,319 @@
|
||||
#
|
||||
# "$Id: cups.list 823 1999-12-15 21:16:02Z mike $"
|
||||
#
|
||||
# ESP Package Manager (EPM) file list for the Common UNIX Printing
|
||||
# System (CUPS).
|
||||
#
|
||||
# EPM can be found in the "epm" subdirectory of this distribution.
|
||||
# Please report problems and fixes to "epm@easysw.com".
|
||||
#
|
||||
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Easy Software Products and are protected by Federal
|
||||
# copyright law. Distribution and use rights are outlined in the file
|
||||
# "LICENSE.txt" which should have been included with this file. If this
|
||||
# file is missing or damaged please contact Easy Software Products
|
||||
# at:
|
||||
#
|
||||
# Attn: CUPS Licensing Information
|
||||
# Easy Software Products
|
||||
# 44141 Airport View Drive, Suite 204
|
||||
# Hollywood, Maryland 20636-3111 USA
|
||||
#
|
||||
# Voice: (301) 373-9603
|
||||
# EMail: cups-info@cups.org
|
||||
# WWW: http://www.cups.org
|
||||
#
|
||||
|
||||
%product Common UNIX Printing System
|
||||
%copyright 1993-1999 by Easy Software Products, All Rights Reserved.
|
||||
%vendor Easy Software Products
|
||||
%license LICENSE.cups
|
||||
%readme README.cups
|
||||
%version 1.0.3
|
||||
%incompat printpro
|
||||
|
||||
%system all
|
||||
# Server files
|
||||
f 0555 root sys /var/cups/backend/ipp backend/ipp
|
||||
l 0555 root sys /var/cups/backend/http ipp
|
||||
f 4550 root sys /var/cups/backend/lpd backend/lpd
|
||||
f 0555 root sys /var/cups/backend/parallel backend/parallel
|
||||
f 0555 root sys /var/cups/backend/serial backend/serial
|
||||
f 0555 root sys /var/cups/backend/socket backend/socket
|
||||
f 0500 root sys /usr/sbin/cupsd scheduler/cupsd
|
||||
f 0555 root sys /var/cups/cgi-bin/classes.cgi cgi-bin/classes.cgi
|
||||
f 0555 root sys /var/cups/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
|
||||
f 0555 root sys /var/cups/cgi-bin/printers.cgi cgi-bin/printers.cgi
|
||||
f 0555 root sys /var/cups/filter/pstoraster pstoraster/pstoraster
|
||||
l 0555 root sys /var/cups/filter/pdftops pstoraster
|
||||
f 0555 root sys /var/cups/filter/imagetops filter/imagetops
|
||||
f 0555 root sys /var/cups/filter/pstops filter/pstops
|
||||
f 0555 root sys /var/cups/filter/texttops filter/texttops
|
||||
f 0555 root sys /var/cups/filter/rastertohp filter/rastertohp
|
||||
f 0555 root sys /var/cups/filter/hpgltops filter/hpgltops
|
||||
f 0555 root sys /var/cups/filter/imagetoraster filter/imagetoraster
|
||||
|
||||
# Admin commands
|
||||
l 0555 root sys /usr/bin/disable /usr/sbin/accept
|
||||
l 0555 root sys /usr/bin/enable /usr/sbin/accept
|
||||
l 0555 root sys /usr/lib/accept /usr/sbin/accept
|
||||
l 0555 root sys /usr/lib/lpadmin /usr/sbin/lpadmin
|
||||
l 0555 root sys /usr/lib/reject accept
|
||||
f 0555 root sys /usr/sbin/accept systemv/accept
|
||||
f 0555 root sys /usr/sbin/esplicense license/esplicense
|
||||
f 0555 root sys /usr/sbin/lpadmin systemv/lpadmin
|
||||
f 0555 root sys /usr/sbin/lpc berkeley/lpc
|
||||
l 0555 root sys /usr/sbin/reject accept
|
||||
|
||||
# User commands
|
||||
f 0555 root sys /usr/bin/cancel systemv/cancel
|
||||
f 0555 root sys /usr/bin/lp systemv/lp
|
||||
f 0555 root sys /usr/bin/lpq berkeley/lpq
|
||||
f 0555 root sys /usr/bin/lpr berkeley/lpr
|
||||
f 0555 root sys /usr/bin/lprm berkeley/lprm
|
||||
f 0555 root sys /usr/bin/lpstat systemv/lpstat
|
||||
f 0555 root sys /usr/bin/lpwin gui/lpwin
|
||||
|
||||
# DSOs
|
||||
%system hpux
|
||||
f 0555 root sys /usr/lib/libcups.sl.1 cups/libcups.sl.1
|
||||
l 0555 root sys /usr/lib/libcups.sl libcups.sl.1
|
||||
f 0555 root sys /usr/lib/libcupsimage.sl.1 filter/libcupsimage.sl.1
|
||||
l 0555 root sys /usr/lib/libcupsimage.sl libcupsimage.sl.1
|
||||
%system irix-6.5
|
||||
f 0555 root sys /usr/lib32/libcups.so.1 cups/libcups.so.1
|
||||
l 0555 root sys /usr/lib32/libcups.so libcups.so.1
|
||||
f 0555 root sys /usr/lib32/libcupsimage.so.1 filter/libcupsimage.so.1
|
||||
l 0555 root sys /usr/lib32/libcupsimage.so libcupsimage.so.1
|
||||
%system !irix-6.5 !hpux
|
||||
f 0555 root sys /usr/lib/libcups.so.1 cups/libcups.so.1
|
||||
l 0555 root sys /usr/lib/libcups.so libcups.so.1
|
||||
f 0555 root sys /usr/lib/libcupsimage.so.1 filter/libcupsimage.so.1
|
||||
l 0555 root sys /usr/lib/libcupsimage.so libcupsimage.so.1
|
||||
%system all
|
||||
|
||||
# Directories
|
||||
d 0755 root sys /var/cups/interfaces
|
||||
d 0755 root sys /var/cups/logs
|
||||
d 0755 root sys /var/cups/ppd
|
||||
d 0755 root sys /var/cups/requests
|
||||
|
||||
# Data files
|
||||
f 0444 root sys /usr/lib/locale/C/cups_C locale/C/cups_C
|
||||
f 0444 root sys /usr/lib/locale/de/cups_de locale/de/cups_de
|
||||
f 0444 root sys /usr/lib/locale/en/cups_en locale/en/cups_en
|
||||
f 0444 root sys /usr/lib/locale/es/cups_es locale/es/cups_es
|
||||
f 0444 root sys /usr/lib/locale/fr/cups_fr locale/fr/cups_fr
|
||||
f 0444 root sys /usr/lib/locale/it/cups_it locale/it/cups_it
|
||||
f 0444 root sys /usr/share/cups/data/8859-1 data/8859-1
|
||||
f 0444 root sys /usr/share/cups/data/8859-14 data/8859-14
|
||||
f 0444 root sys /usr/share/cups/data/8859-15 data/8859-15
|
||||
f 0444 root sys /usr/share/cups/data/8859-2 data/8859-2
|
||||
f 0444 root sys /usr/share/cups/data/8859-3 data/8859-3
|
||||
f 0444 root sys /usr/share/cups/data/8859-4 data/8859-4
|
||||
f 0444 root sys /usr/share/cups/data/8859-5 data/8859-5
|
||||
f 0444 root sys /usr/share/cups/data/8859-6 data/8859-6
|
||||
f 0444 root sys /usr/share/cups/data/8859-7 data/8859-7
|
||||
f 0444 root sys /usr/share/cups/data/8859-8 data/8859-8
|
||||
f 0444 root sys /usr/share/cups/data/8859-9 data/8859-9
|
||||
f 0444 root sys /usr/share/cups/data/HPGLprolog data/HPGLprolog
|
||||
f 0444 root sys /usr/share/cups/data/psglyphs data/psglyphs
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Book fonts/AvantGarde-Book
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-Demi fonts/Bookman-Demi
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-Light fonts/Bookman-Light
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier fonts/Courier
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier-Bold fonts/Courier-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier-Oblique fonts/Courier-Oblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica fonts/Helvetica
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Bold fonts/Helvetica-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-Bold fonts/Palatino-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-Italic fonts/Palatino-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-Roman fonts/Palatino-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Symbol fonts/Symbol
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-Bold fonts/Times-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-BoldItalic fonts/Times-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-Italic fonts/Times-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-Roman fonts/Times-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-Bold fonts/Utopia-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-Italic fonts/Utopia-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-Regular fonts/Utopia-Regular
|
||||
f 0444 root sys /usr/share/cups/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/ZapfDingbats fonts/ZapfDingbats
|
||||
f 0444 root sys /usr/share/cups/pstoraster/Fontmap pstoraster/Fontmap
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_l2img.ps pstoraster/gs_l2img.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pfbtogs.ps pstoraster/pfbtogs.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf_e.ps pstoraster/gs_pdf_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf.ps pstoraster/gs_pdf.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_sec.ps pstoraster/pdf_sec.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_res.ps pstoraster/gs_res.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_base.ps pstoraster/pdf_base.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_2ps.ps pstoraster/pdf_2ps.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_init.ps pstoraster/gs_init.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_draw.ps pstoraster/pdf_draw.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_font.ps pstoraster/pdf_font.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pdfwr.ps pstoraster/gs_pdfwr.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_main.ps pstoraster/pdf_main.ps
|
||||
f 0444 root sys /usr/share/cups/model/deskjet.ppd ppd/deskjet.ppd
|
||||
f 0444 root sys /usr/share/cups/model/laserjet.ppd ppd/laserjet.ppd
|
||||
|
||||
# Config files
|
||||
c 0644 root sys /var/cups/conf/classes.conf conf/classes.conf
|
||||
c 0644 root sys /var/cups/conf/cupsd.conf conf/cupsd.conf
|
||||
f 0644 root sys /var/cups/conf/mime.convs conf/mime.convs
|
||||
f 0644 root sys /var/cups/conf/mime.types conf/mime.types
|
||||
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
|
||||
f 0444 root sys /usr/include/cups/http.h cups/http.h
|
||||
f 0444 root sys /usr/include/cups/ipp.h cups/ipp.h
|
||||
f 0444 root sys /usr/include/cups/language.h cups/language.h
|
||||
f 0444 root sys /usr/include/cups/mime.h cups/mime.h
|
||||
f 0444 root sys /usr/include/cups/ppd.h cups/ppd.h
|
||||
f 0444 root sys /usr/include/cups/raster.h cups/raster.h
|
||||
|
||||
%system irix-6.5
|
||||
f 0444 root sys /usr/lib32/libcups.a cups/libcups.a
|
||||
%system !irix-6.5
|
||||
f 0444 root sys /usr/lib/libcups.a cups/libcups.a
|
||||
%system all
|
||||
|
||||
# Documentation files
|
||||
f 0444 root sys /usr/share/cups/doc/cmp.html doc/cmp.html
|
||||
f 0444 root sys /usr/share/cups/doc/cmp.pdf doc/cmp.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/cupsdoc.css doc/cupsdoc.css
|
||||
f 0444 root sys /usr/share/cups/doc/cups.css doc/cups.css
|
||||
f 0444 root sys /usr/share/cups/doc/documentation.html doc/documentation.html
|
||||
f 0444 root sys /usr/share/cups/doc/idd.html doc/idd.html
|
||||
f 0444 root sys /usr/share/cups/doc/idd.pdf doc/idd.pdf
|
||||
f 0444 root sys /usr/share/cups/doc/images/classes.gif doc/images/classes.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/cups-bar.gif doc/images/cups-bar.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/cups-large.gif doc/images/cups-large.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/cups-medium.gif doc/images/cups-medium.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/cups-small.gif doc/images/cups-small.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/logo.gif doc/images/logo.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/navbar.gif doc/images/navbar.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/printer-idle.gif doc/images/printer-idle.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/printer-processing.gif doc/images/printer-processing.gif
|
||||
f 0444 root sys /usr/share/cups/doc/images/printer-stopped.gif doc/images/printer-stopped.gif
|
||||
f 0444 root sys /usr/share/cups/doc/index.html doc/index.html
|
||||
f 0444 root sys /usr/share/cups/doc/overview.html doc/overview.html
|
||||
f 0444 root sys /usr/share/cups/doc/overview.pdf doc/overview.pdf
|
||||
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/sum.html doc/sum.html
|
||||
f 0444 root sys /usr/share/cups/doc/sum.pdf doc/sum.pdf
|
||||
|
||||
# Man pages
|
||||
%system irix
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/accept.z man/accept.z
|
||||
l 0444 root sys /usr/share/catman/a_man/cat1/reject.z accept.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/backend.z man/backend.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/classes.conf.z man/classes.conf.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/cupsd.z man/cupsd.z
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/enable.z man/enable.z
|
||||
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
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lp.z man/lp.z
|
||||
l 0444 root sys /usr/share/catman/u_man/cat1/cancel.z lp.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/mime.convs.z man/mime.convs.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/mime.types.z man/mime.types.z
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/printers.conf.z man/printers.conf.z
|
||||
%system !irix
|
||||
f 0444 root sys /usr/man/man8/accept.8 man/accept.8
|
||||
l 0444 root sys /usr/man/man8/reject.8 accept.8
|
||||
f 0444 root sys /usr/man/man1/backend.1 man/backend.1
|
||||
f 0444 root sys /usr/man/man1/classes.conf.5 man/classes.conf.5
|
||||
f 0444 root sys /usr/man/man8/cupsd.8 man/cupsd.8
|
||||
f 0444 root sys /usr/man/man5/cupsd.conf.5 man/cupsd.conf.5
|
||||
f 0444 root sys /usr/man/man8/enable.8 man/enable.8
|
||||
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
|
||||
f 0444 root sys /usr/man/man1/lp.1 man/lp.1
|
||||
l 0444 root sys /usr/man/man1/cancel.1 lp.1
|
||||
f 0444 root sys /usr/man/man5/mime.convs.5 man/mime.convs.5
|
||||
f 0444 root sys /usr/man/man5/mime.types.5 man/mime.types.5
|
||||
f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
|
||||
|
||||
# Startup script
|
||||
%system all
|
||||
i 0555 root sys cups cups.sh
|
||||
|
||||
#
|
||||
# End of "$Id: cups.list 823 1999-12-15 21:16:02Z mike $".
|
||||
#
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups.spec 755 1999-10-26 20:40:13Z mike $"
|
||||
# "$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.1
|
||||
Version: 1.0.2
|
||||
Release: 0
|
||||
Copyright: GPL
|
||||
Group: System Environment/Daemons
|
||||
Source: ftp://ftp.easysw.com/pub/cups/1.0.1/cups-1.0.1-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 755 1999-10-26 20:40:13Z mike $".
|
||||
# End of "$Id: cups.spec 775 1999-11-04 13:35:01Z mike $".
|
||||
#
|
||||
|
||||
@@ -68,6 +68,7 @@ install: all
|
||||
-$(MKDIR) $(LIBDIR)
|
||||
$(CP) $(LIBCUPS) $(LIBDIR)
|
||||
if test $(LIBCUPS) != "libcups.a"; then \
|
||||
$(RM) `basename $(LIBCUPS) .1`; \
|
||||
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1`; \
|
||||
fi
|
||||
|
||||
|
||||
+17
-16
@@ -687,12 +687,15 @@ httpRead(http_t *http, /* I - HTTP data */
|
||||
return (0);
|
||||
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
|
||||
http->data_remaining <= 0 &&
|
||||
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
|
||||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
|
||||
http->data_remaining <= 0)
|
||||
{
|
||||
DEBUG_puts("httpRead: Getting chunk length...");
|
||||
|
||||
if (httpGets(len, sizeof(len), http) == NULL)
|
||||
{
|
||||
DEBUG_puts("httpRead: Could not get length!");
|
||||
return (0);
|
||||
}
|
||||
|
||||
http->data_remaining = strtol(len, NULL, 16);
|
||||
}
|
||||
@@ -706,9 +709,7 @@ httpRead(http_t *http, /* I - HTTP data */
|
||||
* data, go idle...
|
||||
*/
|
||||
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
|
||||
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
|
||||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED)
|
||||
httpGets(len, sizeof(len), http);
|
||||
|
||||
if (http->state == HTTP_POST_RECV)
|
||||
@@ -750,9 +751,7 @@ httpRead(http_t *http, /* I - HTTP data */
|
||||
|
||||
if (http->data_remaining == 0)
|
||||
{
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
|
||||
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
|
||||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED)
|
||||
httpGets(len, sizeof(len), http);
|
||||
|
||||
if (http->data_encoding != HTTP_ENCODE_CHUNKED)
|
||||
@@ -787,9 +786,7 @@ httpWrite(http_t *http, /* I - HTTP data */
|
||||
|
||||
http->activity = time(NULL);
|
||||
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
|
||||
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
|
||||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED)
|
||||
{
|
||||
if (httpPrintf(http, "%x\r\n", length) < 0)
|
||||
return (-1);
|
||||
@@ -834,9 +831,7 @@ httpWrite(http_t *http, /* I - HTTP data */
|
||||
http->data_remaining -= bytes;
|
||||
}
|
||||
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
|
||||
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
|
||||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
|
||||
if (http->data_encoding == HTTP_ENCODE_CHUNKED)
|
||||
if (httpPrintf(http, "\r\n") < 0)
|
||||
return (-1);
|
||||
|
||||
@@ -1358,14 +1353,18 @@ httpEncode64(char *out, /* I - String to write to */
|
||||
int /* O - Content length */
|
||||
httpGetLength(http_t *http) /* I - HTTP data */
|
||||
{
|
||||
DEBUG_printf(("httpGetLength(%08x)\n", http));
|
||||
|
||||
if (strcasecmp(http->fields[HTTP_FIELD_TRANSFER_ENCODING], "chunked") == 0)
|
||||
{
|
||||
DEBUG_puts("httpGetLength: chunked request!");
|
||||
|
||||
http->data_encoding = HTTP_ENCODE_CHUNKED;
|
||||
http->data_remaining = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
http->data_encoding = HTTP_ENCODE_LENGTH;
|
||||
http->data_encoding = HTTP_ENCODE_LENGTH;
|
||||
|
||||
/*
|
||||
* The following is a hack for HTTP servers that don't send a
|
||||
@@ -1379,6 +1378,8 @@ httpGetLength(http_t *http) /* I - HTTP data */
|
||||
http->data_remaining = 2147483647;
|
||||
else
|
||||
http->data_remaining = atoi(http->fields[HTTP_FIELD_CONTENT_LENGTH]);
|
||||
|
||||
DEBUG_printf(("httpGetLength: content_length = %d\n", http->data_remaining));
|
||||
}
|
||||
|
||||
return (http->data_remaining);
|
||||
|
||||
+44
-16
@@ -367,6 +367,7 @@ cupsGetClasses(char ***classes) /* O - Classes */
|
||||
*response; /* IPP Response */
|
||||
ipp_attribute_t *attr; /* Current attribute */
|
||||
cups_lang_t *language; /* Default language */
|
||||
char **temp; /* Temporary pointer */
|
||||
|
||||
|
||||
/*
|
||||
@@ -392,10 +393,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...
|
||||
@@ -404,26 +405,39 @@ cupsGetClasses(char ***classes) /* O - Classes */
|
||||
n = 0;
|
||||
*classes = NULL;
|
||||
|
||||
if ((response = cupsDoRequest(cups_server, request, "/classes/")) != NULL)
|
||||
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
|
||||
{
|
||||
last_error = response->request.status.status_code;
|
||||
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
if (strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
if (attr->name != NULL &&
|
||||
strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
attr->value_tag == IPP_TAG_NAME)
|
||||
{
|
||||
if (n == 0)
|
||||
*classes = malloc(sizeof(char *));
|
||||
temp = malloc(sizeof(char *));
|
||||
else
|
||||
*classes = realloc(*classes, sizeof(char *) * (n + 1));
|
||||
temp = realloc(*classes, sizeof(char *) * (n + 1));
|
||||
|
||||
if (*classes == NULL)
|
||||
if (temp == NULL)
|
||||
{
|
||||
/*
|
||||
* Ran out of memory!
|
||||
*/
|
||||
|
||||
while (n > 0)
|
||||
{
|
||||
n --;
|
||||
free((*classes)[n]);
|
||||
}
|
||||
|
||||
free(*classes);
|
||||
ippDelete(response);
|
||||
return (0);
|
||||
}
|
||||
|
||||
(*classes)[n] = strdup(attr->values[0].string.text);
|
||||
*classes = temp;
|
||||
temp[n] = strdup(attr->values[0].string.text);
|
||||
n ++;
|
||||
}
|
||||
|
||||
@@ -646,6 +660,7 @@ cupsGetPrinters(char ***printers) /* O - Printers */
|
||||
*response; /* IPP Response */
|
||||
ipp_attribute_t *attr; /* Current attribute */
|
||||
cups_lang_t *language; /* Default language */
|
||||
char **temp; /* Temporary pointer */
|
||||
|
||||
|
||||
/*
|
||||
@@ -671,10 +686,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...
|
||||
@@ -683,26 +698,39 @@ cupsGetPrinters(char ***printers) /* O - Printers */
|
||||
n = 0;
|
||||
*printers = NULL;
|
||||
|
||||
if ((response = cupsDoRequest(cups_server, request, "/printers/")) != NULL)
|
||||
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
|
||||
{
|
||||
last_error = response->request.status.status_code;
|
||||
|
||||
for (attr = response->attrs; attr != NULL; attr = attr->next)
|
||||
if (strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
if (attr->name != NULL &&
|
||||
strcasecmp(attr->name, "printer-name") == 0 &&
|
||||
attr->value_tag == IPP_TAG_NAME)
|
||||
{
|
||||
if (n == 0)
|
||||
*printers = malloc(sizeof(char *));
|
||||
temp = malloc(sizeof(char *));
|
||||
else
|
||||
*printers = realloc(*printers, sizeof(char *) * (n + 1));
|
||||
temp = realloc(*printers, sizeof(char *) * (n + 1));
|
||||
|
||||
if (*printers == NULL)
|
||||
if (temp == NULL)
|
||||
{
|
||||
/*
|
||||
* Ran out of memory!
|
||||
*/
|
||||
|
||||
while (n > 0)
|
||||
{
|
||||
n --;
|
||||
free((*printers)[n]);
|
||||
}
|
||||
|
||||
free(*printers);
|
||||
ippDelete(response);
|
||||
return (0);
|
||||
}
|
||||
|
||||
(*printers)[n] = strdup(attr->values[0].string.text);
|
||||
*printers = temp;
|
||||
temp[n] = strdup(attr->values[0].string.text);
|
||||
n ++;
|
||||
}
|
||||
|
||||
|
||||
+12
-3
@@ -41,8 +41,8 @@ include ../Makedefs
|
||||
# Document files...
|
||||
#
|
||||
|
||||
DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml ssr.shtml \
|
||||
stp.shtml sum.shtml
|
||||
DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml spm.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,7 +81,8 @@ install:
|
||||
$(CP) $(DOCIMAGES) $(DATADIR)/doc/images
|
||||
|
||||
#
|
||||
# The overview, admin guide, and user's guide get special attention...
|
||||
# The overview, admin manual, programmers manual, and users manual get
|
||||
# special attention...
|
||||
#
|
||||
|
||||
overview.pdf: overview.html
|
||||
@@ -96,6 +97,14 @@ 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 $@ $<
|
||||
|
||||
+218
-116
@@ -1,111 +1,213 @@
|
||||
<!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><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Configuration Management Plan</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><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>
|
||||
<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>
|
||||
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>
|
||||
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
|
||||
@@ -121,7 +223,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>
|
||||
@@ -133,8 +235,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>
|
||||
@@ -147,7 +249,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>
|
||||
@@ -157,22 +259,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:
|
||||
@@ -183,7 +285,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>
|
||||
@@ -199,7 +301,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
|
||||
@@ -207,16 +309,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>
|
||||
@@ -261,22 +363,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>
|
||||
@@ -289,7 +391,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>
|
||||
@@ -324,18 +426,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
|
||||
@@ -387,8 +489,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
|
||||
@@ -396,7 +498,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:
|
||||
@@ -416,11 +518,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:
|
||||
@@ -440,8 +542,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
|
||||
@@ -452,7 +554,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>
|
||||
@@ -461,12 +563,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>
|
||||
@@ -476,12 +578,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:
|
||||
@@ -497,11 +599,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:
|
||||
@@ -517,15 +619,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>
|
||||
@@ -536,8 +638,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>
|
||||
@@ -564,8 +666,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
|
||||
@@ -626,20 +728,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>________________________________________
|
||||
|
||||
+726
-745
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -35,6 +35,10 @@ 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> )
|
||||
|
||||
+213
-111
@@ -1,91 +1,193 @@
|
||||
<!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><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Interface Design Description</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><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>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
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>
|
||||
<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
|
||||
@@ -101,7 +203,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>
|
||||
@@ -112,8 +214,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>
|
||||
@@ -126,7 +228,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>
|
||||
@@ -136,8 +238,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
|
||||
@@ -145,7 +247,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",
|
||||
@@ -170,9 +272,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
|
||||
@@ -203,7 +305,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>
|
||||
@@ -212,12 +314,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>
|
||||
@@ -261,7 +363,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>
|
||||
@@ -273,15 +375,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>
|
||||
@@ -298,15 +400,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
|
||||
@@ -396,15 +498,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>
|
||||
@@ -423,11 +525,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
|
||||
@@ -443,8 +545,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
|
||||
@@ -467,13 +569,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
|
||||
@@ -491,8 +593,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>
|
||||
@@ -599,40 +701,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>
|
||||
@@ -645,19 +747,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>
|
||||
@@ -667,27 +769,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
|
||||
@@ -696,16 +798,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>
|
||||
@@ -746,8 +848,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>
|
||||
@@ -760,7 +862,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>
|
||||
|
||||
+1169
-1170
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Arquivo binário não exibido.
+265
-116
@@ -1,99 +1,207 @@
|
||||
<!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.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.3">
|
||||
<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><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.0.1<BR>
|
||||
<CENTER><A HREF="#CONTENTS"><H1>CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.0.3<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>
|
||||
<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>
|
||||
</UL>
|
||||
<HR>
|
||||
<H1 ALIGN=RIGHT><A NAME=1>Preface</A></H1>
|
||||
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>
|
||||
This software administrators manual provides printer administration
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.1.
|
||||
<H2><A NAME=1_1>System Overview</A></H2>
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.3.
|
||||
<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
|
||||
@@ -109,7 +217,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>
|
||||
@@ -118,11 +226,12 @@ 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
|
||||
@@ -144,7 +253,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
|
||||
@@ -164,17 +273,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
|
||||
@@ -190,13 +299,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
|
||||
@@ -212,13 +321,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
|
||||
@@ -229,24 +338,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>
|
||||
@@ -281,14 +390,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>
|
||||
@@ -296,7 +405,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>
|
||||
@@ -316,16 +425,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>
|
||||
@@ -366,6 +475,7 @@ 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>
|
||||
@@ -376,7 +486,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>
|
||||
@@ -394,7 +504,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>
|
||||
@@ -402,7 +512,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>
|
||||
@@ -420,7 +530,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>
|
||||
@@ -429,7 +539,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>
|
||||
@@ -442,7 +552,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>
|
||||
@@ -456,9 +566,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
|
||||
@@ -471,7 +581,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>
|
||||
@@ -492,19 +602,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
|
||||
@@ -518,7 +628,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>
|
||||
@@ -526,7 +636,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
|
||||
@@ -536,10 +646,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>
|
||||
@@ -570,7 +680,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>
|
||||
@@ -581,7 +691,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>
|
||||
@@ -603,7 +713,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>
|
||||
@@ -618,7 +728,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>
|
||||
@@ -640,7 +750,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>
|
||||
@@ -655,7 +765,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>
|
||||
@@ -666,7 +776,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>
|
||||
@@ -682,21 +792,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>
|
||||
@@ -738,7 +848,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>
|
||||
@@ -775,13 +885,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
|
||||
@@ -820,7 +930,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>
|
||||
@@ -843,7 +953,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>
|
||||
@@ -869,5 +979,44 @@ 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>
|
||||
|
||||
+1018
-932
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+52
-2
@@ -1,7 +1,7 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.3">
|
||||
<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.1.
|
||||
information for the Common UNIX Printing System ("CUPS") Version 1.0.3.
|
||||
|
||||
<H2>System Overview</H2>
|
||||
|
||||
@@ -42,6 +42,7 @@ 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>
|
||||
@@ -344,6 +345,7 @@ 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.
|
||||
|
||||
@@ -1034,5 +1036,53 @@ 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>
|
||||
|
||||
+227
-125
@@ -1,110 +1,212 @@
|
||||
<!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><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>CUPS Software Design Description</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><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>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
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>
|
||||
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
|
||||
@@ -120,7 +222,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>
|
||||
@@ -129,8 +231,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>
|
||||
@@ -143,7 +245,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>
|
||||
@@ -153,7 +255,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>
|
||||
@@ -165,7 +267,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>
|
||||
@@ -184,18 +286,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:
|
||||
@@ -203,7 +305,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:
|
||||
@@ -219,7 +321,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:
|
||||
@@ -228,11 +330,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:
|
||||
@@ -240,57 +342,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>
|
||||
@@ -307,37 +409,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
|
||||
@@ -345,13 +447,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
|
||||
@@ -359,63 +461,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>
|
||||
@@ -428,7 +530,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>
|
||||
|
||||
+749
-786
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
+135
-33
@@ -1,52 +1,154 @@
|
||||
<!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><IMG SRC="images/cups-large.gif" BORDER=0><BR>
|
||||
<H1>DRAFT - CUPS Software Security Report</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><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>
|
||||
<H1><A NAME=1>1 Scope</A></H1>
|
||||
<H2><A NAME=1_1>1.1 Identification</A></H2>
|
||||
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>
|
||||
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
|
||||
@@ -62,7 +164,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>
|
||||
@@ -72,8 +174,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>
|
||||
@@ -86,7 +188,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>
|
||||
@@ -96,12 +198,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
|
||||
@@ -122,11 +224,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>
|
||||
@@ -168,7 +270,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
|
||||
@@ -183,8 +285,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>
|
||||
@@ -197,7 +299,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>
|
||||
|
||||
+315
-327
@@ -1,7 +1,7 @@
|
||||
%PDF-1.2
|
||||
%âãÏÓ
|
||||
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
|
||||
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
|
||||
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 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
|
||||
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
|
||||
53 0 obj[10 0 R
|
||||
11 0 R
|
||||
12 0 R
|
||||
@@ -98,341 +98,329 @@
|
||||
]endobj
|
||||
54 0 obj<</Dests 55 0 R>>endobj
|
||||
55 0 obj<</Kids[56 0 R]>>endobj
|
||||
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
|
||||
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
|
||||
]>>endobj
|
||||
73 0 obj<</Type/Page/Parent 72 0 R/Contents 74 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
|
||||
74 0 obj<</Length 75 0 R/Filter/FlateDecode>>stream
|
||||
xÚí�ß�Ü8rÇ%µúÅOšÙíwN�H€ØîO{Ï@p�gF›ì[I¢�‡ ‡]_r‡öÎë½`ÿûô¯éÖRª*R57<à°¶Én~Äâ·ŠdQý·W7b½ýß�øîV¼ÿ ~üßW÷òU"_ýM¼_ÿîíwû|ÿáÃÛµøÝÇ··âööæíݾÖïòÿ|÷ûìßîÅæ_×ûò~_>ìËÇ}yØ—ï÷å÷ÿõîñõ˯Ÿßý‡¸{óîßÅæææÝ=<ˆ;ñÃã«âyxá2+òñv¹\^]ìÊö?–w�Sç’Ë‹ÈS•‹ËëÇirÉÛ+5R ny71.yÛÅôT.¯“©pᡎhwSàz¸òÈÅ_&ŽsÝG¯\næºåRÙ4Gpf¬ìŽ™e®á™—oǸò+ÏJñ¯�âºõ¬•`ã—žÍrí—±^Ø2K\òʳ^ü×£så‘×Gùfd®{¯§$crÝx½3—e´ncmËëQ¸däy.‚�“BX-ßÎ5&€Åƒ)`1ÀÀiÉà‹LËóVqõî·Ì4›k`¬-X2×Ú¼p}òF(³Þ¹2o”òmÏ\y4AÁ}…giLA
|
||||
ÚÑê£såÞ¨eÓW4.rŠÁ2Ç‹Á4<Yì‰\r|,Ïï�K8Àå…Ö¹2ω²±Ì%#7¸Ë\kÏ‘²°Ê•yΔÄ"—+Vˆrb®Øs¨l¬qå.auJLO4PQLP40QL*ÒÀk=–+u
|
||||
«cÀ`z�0˜ Æcœ3ŽKºˆÕ×Ã51Ã`z.5Ã`¸áº¸\._?îÊýîâC¿ƒ—ùº9Éw÷ z0è¸ü–¤ùpÕÏ€AßÃuÙ¹Tº7@[pûªò¨-‡õÐãpÒ�%77xÃæb‡´tq&ÙŒËÅ
|
||||
5èé¹9kÉ�0¹˜ÃÅJ§æYÈäbòÜlHÆ�ù<®´m·8d+W4”
|
||||
ž¼YdEêÁþ®†IÚ;'Ù`ÃàƒM-~æUHçÊGÀ"ƒùt.²Èûv®H
|
||||
cåhç ‹6£r¥#!Ç"—‹¶ qåV<$,2ra`oáõmaµdF†Ö"yËX¤ÛW
|
||||
Wj!œ1*kƒ/Kªá'ö¹=Hð\Ò<H3-9ßõ\0êä:”OlC++” è©®!‚
|
||||
™íerÑ&ÃË�å�y¢`¹f8+z,‚gˆ`n†ýY!EW8®µVHèIˆãr@iÒ᣸²‘=2CÁ6.¼†Eï'asWä†hP´>@peüÀl¼Kº¹bWDƒ2`«n®È�'õ'ìäÊÜ.ä€�\±cÃ…ôaIWäØp!Ÿô¢ƒ+wÆ%Óºvp¥Î
|
||||
.J:¸„c³-eI+—tp¸ps~ÕÊ•98\¸m¤°•©òþ X(+
|
||||
Z¹"‡"C¢r´qaU~`,ÔôØ´p!U>š« ÙpU~38Âg-\ì±
|
||||
1Ðse.Š<ZÐ-¸(òh´Òr GUgJs—tU5pS¦ãÊh¡aÕ“�ÿT3ö§¿‡ã3M+ªœaýüß1`Q×BË%+7nKh%ºÖDÃ%h±F+×LËuüš²Îa‡ÄOàL¯Çåé¹ ¤^9>ÜhKÎôZ!¹VZ®¼ô| | ||||