Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 546376b7fe Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.1.1@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
66 arquivos alterados com 14027 adições e 13583 exclusões
+46 -1
Ver Arquivo
@@ -1,6 +1,51 @@
CHANGES.txt - 07/10/2000
CHANGES.txt - 07/21/2000
------------------------
CHANGES IN CUPS v1.1.1
- The pstoraster Makefile still referenced one of the
old PDF filter files.
- The filter Makefile used INSTALL_DATA instead of
INSTALL_LIB to install the CUPS image library.
- The administration CGI didn't work properly with
network devices.
- The BrowseACL variable was not updated after the
cupsd.conf file was loaded.
- The lpd mini-daemon didn't support printer instances.
- Now use a default umask of 077 for child processes.
- Now put temp files in /var/spool/cups/tmp for child
processes and the root user, unless TMPDIR or TempDir
is defined otherwise.
- cupsGetPPD() no longer uses easy-to-guess filenames.
- The CUPS-Delete-Class and CUPS-Delete-Printer
operations now save classes.conf file as needed.
- The lppasswd command wouldn't add a user.
- The ppdOpen() function could cause a segfault if a
0-length PPD file was read.
- The image filters were not handling images with
different X and Y resolutions properly.
- The imagetoraster filter defaulted to RGB output
instead of black output like pstoraster.
- The pstops filter didn't handle binary data properly.
- The pstops filter didn't handle copies properly for
PS files lacking DSC comments.
- The pstops filter now appends %%EOF to the end of
documents if they don't have it.
- The cupsGetPPD() function didn't work with remote
printers lacking the @server in the name.
- The configure script didn't work right when only
--prefix was specified.
- The ppdEmit() code now wraps all printer commands so
that buggy PostScript printers will still print a file
after receiving an option that isn't available.
- Fixed the DeskJet margin bug, and disabled 600dpi
color mode until it can be fixed.
- The cupsAddDest() function didn't sort instances
correctly in all cases.
- The time-at-xyz attributes now expand to the date and
time in banner files.
CHANGES IN CUPS v1.1
- Documentation updates.
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
README - CUPS v1.1 - 07/10/2000
-------------------------------
README - CUPS v1.1.1 - 07/21/2000
---------------------------------
INTRODUCTION
+26 -22
Ver Arquivo
@@ -192,33 +192,37 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
break;
case IPP_TAG_URI :
httpSeparate(attr->values[i].string.text, method, username,
hostname, &port, resource);
if (strchr(attr->values[i].string.text, ':') != NULL)
{
httpSeparate(attr->values[i].string.text, method, username,
hostname, &port, resource);
if (strcmp(method, "ipp") == 0 ||
strcmp(method, "http") == 0)
{
/*
* Map localhost access to localhost...
*/
if (strcmp(method, "ipp") == 0 ||
strcmp(method, "http") == 0)
{
/*
* Map localhost access to localhost...
*/
if (strcasecmp(hostname, server) == 0 &&
strcmp(getenv("REMOTE_ADDR"), "127.0.0.1") == 0)
strcpy(hostname, "localhost");
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0))
strcpy(hostname, "localhost");
/*
* Rewrite URI with HTTP address...
*/
/*
* Rewrite URI with HTTP address...
*/
if (username[0])
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
hostname, port, resource);
else
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
if (username[0])
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
hostname, port, resource);
else
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
strcat(valptr, uri);
break;
strcat(valptr, uri);
break;
}
}
case IPP_TAG_STRING :
+1 -1
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.1"
#define CUPS_SVERSION "CUPS v1.1.1"
/*
* Where are files stored?
+18 -6
Ver Arquivo
@@ -328,8 +328,12 @@ if test "$prefix" = "NONE"; then
fi
dnl Fix "exec_prefix" variable if it hasn't been specified...
if test "$exec_prefix" = "NONE" -a "$prefix" = "/"; then
exec_prefix="/usr"
if test "$exec_prefix" = "NONE"; then
if test "$prefix" = "/"; then
exec_prefix="/usr"
else
exec_prefix="$prefix"
fi
fi
dnl Fix "sharedstatedir" variable if it hasn't been specified...
@@ -353,13 +357,21 @@ if test "$includedir" = "\${prefix}/include" -a "$prefix" = "/"; then
fi
dnl Fix "localstatedir" variable if it hasn't been specified...
if test "$localstatedir" = "\${prefix}/var" -a "$prefix" = "/"; then
localstatedir="/var"
if test "$localstatedir" = "\${prefix}/var"; then
if test "$prefix" = "/"; then
localstatedir="/var"
else
localstatedir="$prefix/var"
fi
fi
dnl Fix "sysconfdir" variable if it hasn't been specified...
if test "$sysconfdir" = "\${prefix}/etc" -a "$prefix" = "/"; then
sysconfdir="/etc"
if test "$sysconfdir" = "\${prefix}/etc"; then
if test "$prefix" = "/"; then
sysconfdir="/etc"
else
sysconfdir="$prefix/etc"
fi
fi
dnl Fix "libdir" variable for IRIX 6.x...
+5 -4
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.list 1202 2000-07-07 21:25:17Z mike $"
# "$Id: cups.list 1229 2000-07-20 16:51:42Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
@@ -28,7 +28,7 @@
%vendor Easy Software Products
%license LICENSE.txt
%readme README.txt
%version 1.1
%version 1.1.1
%incompat printpro
%system all
@@ -111,7 +111,8 @@ l 0555 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
# Directories
d 0755 root sys $LOGDIR -
d 0755 root sys $REQUESTS -
d 0710 root sys $REQUESTS -
d 1770 root sys $REQUESTS/tmp -
# Data files
f 0444 root sys $LOCALEDIR/C/cups_C locale/C/cups_C
@@ -502,5 +503,5 @@ f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
i 0555 root sys cups cups.sh
#
# End of "$Id: cups.list 1202 2000-07-07 21:25:17Z mike $".
# End of "$Id: cups.list 1229 2000-07-20 16:51:42Z mike $".
#
+2 -3
Ver Arquivo
@@ -87,9 +87,8 @@ cupsAddDest(const char *name, /* I - Name of destination */
for (i = num_dests; i > 0; i --, dest ++)
if (strcasecmp(name, dest->name) < 0)
break;
else if (instance == NULL && dest->instance != NULL)
break;
else if (instance != NULL && dest->instance != NULL &&
else if (strcasecmp(name, dest->name) == 0 &&
instance != NULL && dest->instance != NULL &&
strcasecmp(instance, dest->instance) < 0)
break;
+4
Ver Arquivo
@@ -86,6 +86,8 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
return (-1);
}
fputs("[{\n", fp);
if (strcasecmp(((ppd_option_t *)choices[i]->option)->keyword, "PageSize") == 0 &&
strcasecmp(choices[i]->choice, "Custom") == 0)
{
@@ -123,6 +125,8 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
putc('\n', fp);
}
fputs("} stopped cleartomark\n", fp);
if (fputs("%%EndFeature\n", fp) < 0)
{
free(choices);
+46 -2
Ver Arquivo
@@ -1573,7 +1573,7 @@ ppd_read(FILE *fp, /* I - File to read from */
*textptr, /* Text pointer */
*strptr, /* Pointer into string */
*lineptr, /* Current position in line buffer */
line[262144]; /* Line buffer (256k) */
line[65536]; /* Line buffer (64k) */
/*
@@ -1588,6 +1588,8 @@ ppd_read(FILE *fp, /* I - File to read from */
* Now loop until we have a valid line...
*/
*string = NULL;
do
{
/*
@@ -1621,10 +1623,12 @@ ppd_read(FILE *fp, /* I - File to read from */
ungetc(ch, fp);
}
*lineptr++ = '\n';
ch = '\n';
if (!endquote) /* Continue for multi-line text */
break;
*lineptr++ = '\n';
}
else
{
@@ -1639,6 +1643,46 @@ ppd_read(FILE *fp, /* I - File to read from */
}
}
if (endquote)
{
/*
* Didn't finish this quoted string...
*/
while ((ch = getc(fp)) != EOF)
if (ch == '\"')
break;
}
if (ch != '\n')
{
/*
* Didn't finish this line...
*/
while ((ch = getc(fp)) != EOF)
if (ch == '\r' || ch == '\n')
{
/*
* Line feed or carriage return...
*/
if (ch == '\r')
{
/*
* Check for a trailing line feed...
*/
if ((ch = getc(fp)) == EOF)
break;
if (ch != 0x0a)
ungetc(ch, fp);
}
break;
}
}
if (lineptr > line && lineptr[-1] == '\n')
lineptr --;
+105 -26
Ver Arquivo
@@ -29,8 +29,10 @@
* cupsGetDefault() - Get the default printer or class.
* cupsGetPPD() - Get the PPD file for a printer.
* cupsGetPrinters() - Get a list of printers.
* cupsLastError() - Return the last IPP error that occurred.
* cupsPrintFile() - Print a file to a printer or class.
* cupsPrintFiles() - Print one or more files to a printer or class.
* cupsTempFile() - Generate a temporary filename.
* cups_connect() - Connect to the specified host...
* cups_local_auth() - Get the local authorization certificate if
* available/applicable...
@@ -650,13 +652,19 @@ cupsGetDefault(void)
const char * /* O - Filename for PPD file */
cupsGetPPD(const char *name) /* I - Printer name */
{
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Local language */
FILE *fp; /* PPD file */
int bytes; /* Number of bytes read */
char buffer[8192]; /* Buffer for file */
char printer[HTTP_MAX_URI], /* Printer name */
method[HTTP_MAX_URI], /* Method/scheme name */
username[HTTP_MAX_URI], /* Username:password */
hostname[HTTP_MAX_URI], /* Hostname */
resource[HTTP_MAX_URI]; /* Resource name */
char *tempdir; /* Temporary file directory */
int port; /* Port number */
const char *password; /* Password string */
char realm[HTTP_MAX_VALUE], /* realm="xyz" string */
nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
@@ -676,20 +684,89 @@ cupsGetPPD(const char *name) /* I - Printer name */
return (NULL);
}
if (strchr(name, '@') == NULL)
{
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
snprintf(buffer, sizeof(buffer), "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, buffer);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
{
last_error = response->request.status.status_code;
if ((attr = ippFindAttribute(response, "printer-uri-supported",
IPP_TAG_URI)) != NULL)
{
/*
* Get the actual server and printer names...
*/
httpSeparate(attr->values[0].string.text, method, username, hostname,
&port, resource);
strcpy(printer, strrchr(resource, '/') + 1);
/*
* Remap local hostname to localhost...
*/
gethostname(buffer, sizeof(buffer));
if (strcasecmp(buffer, hostname) == 0)
strcpy(hostname, "localhost");
}
ippDelete(response);
}
cupsLangFree(language);
/*
* Reconnect to the correct server as needed...
*/
if (strcasecmp(cups_server->hostname, hostname) != 0)
{
httpClose(cups_server);
if ((cups_server = httpConnect(hostname, ippPort())) == NULL)
{
last_error = IPP_SERVICE_UNAVAILABLE;
return (NULL);
}
}
}
/*
* Then check for the cache file...
* Get a temp file...
*/
#if defined(WIN32) || defined(__EMX__)
tempdir = "C:/WINDOWS/TEMP";
snprintf(filename, sizeof(filename), "%s/%s.ppd", tempdir, printer);
#else
if ((tempdir = getenv("TMPDIR")) == NULL)
tempdir = "/tmp";
snprintf(filename, sizeof(filename), "%s/%d.%s.ppd", tempdir, getuid(), printer);
#endif /* WIN32 || __EMX__ */
cupsTempFile(filename, sizeof(filename));
/*
* And send a request to the HTTP server...
@@ -788,6 +865,7 @@ cupsGetPPD(const char *name) /* I - Printer name */
* Can't open file; close the server connection and return NULL...
*/
httpFlush(cups_server);
httpClose(cups_server);
cups_server = NULL;
return (NULL);
@@ -1272,26 +1350,27 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
tmpdir = "/var/tmp";
if ((int)(strlen(tmpdir) + 8) > len)
{
#ifdef WIN32
tmpdir = "C:/WINDOWS/TEMP";
#else
/*
* The specified directory exceeds the size of the buffer; default it...
* Put root temp files in restricted temp directory...
*/
strcpy(buf, "/var/tmp/XXXXXX");
return (mktemp(buf));
if (getuid() == 0)
tmpdir = CUPS_REQUESTS "/tmp";
else
tmpdir = "/var/tmp";
#endif /* WIN32 */
}
else
{
/*
* Make the temporary name using the specified directory...
*/
sprintf(filename, "%s/XXXXXX", tmpdir);
return (mktemp(filename));
}
/*
* Make the temporary name using the specified directory...
*/
snprintf(filename, len, "%s/XXXXXX", tmpdir);
return (mktemp(filename));
}
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
<LI>CUPS-SSR-1.1: CUPS Software Security Report
<LI>CUPS-STP-1.1: CUPS Software Test Plan
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description
<LI>CUPS-SVD-1.1: CUPS Software Version Description
</UL>
<H2>Other Documents</H2>
+3 -3
Ver Arquivo
@@ -4,7 +4,7 @@
<TITLE> CUPS Software Administrators Manual</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<STYLE>
BODY { font-family: serif; font-size: 11.0pt }
@@ -22,7 +22,7 @@ PRE { font-size: 9.0pt }
<BODY BGCOLOR="#ffffff">
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
<H1> CUPS Software Administrators Manual</H1></A><BR>
CUPS-SAM-1.1<BR>
CUPS-SAM-1.1.1<BR>
Easy Software Products<BR>
Copyright 1997-2000, All Rights Reserved<BR>
</CENTER>
@@ -245,7 +245,7 @@ Machine!</A></LI>
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
<P>This software administrators manual provides printer administration
information for the Common UNIX Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>
TM</SUP>&quot;), version 1.1. </P>
TM</SUP>&quot;), version 1.1.1. </P>
<H2><A NAME="1_1">System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
+466 -468
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000710174129Z)/Title( CUPS Software Administrators Manual)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000721160117Z)/Title( CUPS Software Administrators Manual)/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 128/Euro 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/Courier-Bold/Encoding 2 0 R>>endobj
@@ -1022,11 +1022,10 @@ h)
Wuáiè†X!dr¸Ñ˜ÄjøCýsȵèÝJ´§•¸rŽlH[âã‹:\…’K\[°'¢@Ø¢C­€]Ÿ«VrU×Ê=öEèà£ÃDïû¯´ùÖÕÌŸêsí¯#èùVž«áxåÛ-â;^WÈ\OÌɱonn0¾d=äª\ÝT”‚lˆ{ó€¼0ÚT¹WWojò$ ð\{–l lbÕ¹.¶*qeÝKž„‰×ñÒáÊY²Ñ˜×Ó{Šyq—KΈÚ{ÈhzªX¯üPy8Å:F—« »òúh9ÔNþnï5ùÒ*¹Ä€+“,¯ñª è¨Wo'ÍéŧñýGH©\SßËy°†ÇeŽæãvQ°2Ÿ,+çEQÁse¼(*t.a#‡s5–r*WÍçª>š^¸
vt6מÍ•4™¿peM/\œ¥ùp‰'óg®úÃÉ<–kÎ-‡Í‹ó·•Ü:\[æ»uîªßFwÒ²ßmµwpœOm›.Ò,²Î-ï\·u›þà,•\×FÍÕI¿\¹r¶ûRãkT§×ćk¥äjÔûËÛ}©4fÜkbÄኔ\¹zß¿h£¶W]nj¯‰;×NÁU
UPn9Ár­4áËNÅ•r¸RW6|ŒŽ¹Î«Ëë51áp%C®wшﲫÝÊ-§h®š+Vqõó¡¸g¯r~ô'/ÙÅlp\ëQ®Ó¿^òHjÁZv,¥Šk£tEr<Џ¨ëdÞ7ÛnlÌ\—᯻?"éx@·‰+×à¢Zr—Ûj{‡àꤥÈ]|Ëíé71âp
.7.y<€
£®[‘"K~­lâŽÃÕ¿(—óM
.7.y<€
£®[‘"K~­lâŽÃÕ¿(—óM
-áðì8—Ðpz®”ÃÕ¿¨7RNf™*Œj1\·Ùÿj®˜ÃÕ»¨ðTà¹b\Šã|f.ÅEußÁnßÊ#`ÂÃÄžk¨Šã|f.ÝÀT5_ŽÜp
.Òr?ŒjÕ£YU4ñ"Ú4®þE\-š+Uý6.5MìçCqõ/Òr¹ê^,ÕMìçCqõ/Òríùáa«68Íòþ ‰ýã|(®þEY/MõÊ•;ãŠK
×^­óŠã|®áE…ÒÁ&ŒJ[=Ì®9·r‡Çù\Ër¥#Bq­Q\µÚÕš8JqœÁ5¼HËU;â*”ñÆË- é5qxœÁ5¼(S:"×Ã%¢"ÎSÇù0\ƒ‹´\?Œê´áò;ô¼RqœÃ5¸¨[ývGסµœm”MçÃp
.Òr?ŒjÕ£YU4ñ"Ú4®þE\-š+Uý6.5MìçCqõ/Òr¹ê^,ÕMìçCqõ/Òríùáa«68Íòþ ‰ýã|(®þEY/MõÊ•;ãŠK
W'T•šØ;·ãê]ÄçJ\ñ®óÛ‹_¾,{lÔMìçÃqõ.Ê;Š-qen¸:ù‡Ýxã¼ì‘ª›Ø;·ãê]4ˆ£*,WÚâæ)­Š«ó~(EO¢Må’/Ú÷#¢âÂùåªÇ¸äã|H.ÅÀn÷X®µW£‹ç¯AeNä’/ªúC%;s Ï\BsŠCqœÉ%_T÷$[DX®W;Ê.é"Ñ Í« ¸—|Q&°üÂeÎ=Üyä’Žóa¹ä‹
E2þW=/WÁá’.ªn»Ê·EÞÙ¹j—t‘è¶²¾Æ6ÓJ\‚Ã%_”ßö¿ž#Wé“«{œÍ%_T
@@ -1039,14 +1038,13 @@ endobj
¶X¾ë“kz.óë–—ÉUüÓr•‹ä2/pÉe3aþäšžËjb¹h®õ"¹Ä?-WºH.ólõA¹’ere0ðµü>ŽO®¸ö0ðÅ}Ïn‘\ðA¹ª Z~¯Ù\Åô²×å÷ÐÍULMÞá¾70¸@ªrÃ\ e’ºÒò{9ç*Š+[\Àa
%°ß{ZÀ‘›ì ù=Å¡­´e&=@~¯thG„â‚¥Âèo‘ßoXÀQã¸÷}ô•±mç˜Á8lc®Á9æ½Qæ#/Á9°Üè–ã‚s`™±Åš3‡}€²×ÀXcV@éK`3ËÚ¬Þ€ò9°ÊÜX@=€ÀXa6.@l`3°½9êT˜ËÍ" mœ£ „m®gƒú¡€S˜ „A:ઢ©€ìÚ„>G˜ ‡bH}fv_ï\bAB/0Ò
-Vè׋‘Ã]‡+_Ž V˜È+ A,0
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
-V裥ÈaÜ媗#ˆ(Â
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­
Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
@@ -2833,464 +2831,464 @@ xref
0000015672 00000 n
0000015778 00000 n
0000015812 00000 n
0000015672 00000 n
0000015778 00000 n
0000015812 00000 n
0000015918 00000 n
0000015944 00000 n
0000016050 00000 n
0000016076 00000 n
0000016182 00000 n
0000016208 00000 n
0000016314 00000 n
0000016419 00000 n
0000016524 00000 n
0000016629 00000 n
0000016733 00000 n
0000016837 00000 n
0000016941 00000 n
0000017047 00000 n
0000017129 00000 n
0000017235 00000 n
0000017340 00000 n
0000017446 00000 n
0000017488 00000 n
0000017593 00000 n
0000017699 00000 n
0000017733 00000 n
0000017838 00000 n
0000017864 00000 n
0000017970 00000 n
0000017996 00000 n
0000018102 00000 n
0000018206 00000 n
0000018240 00000 n
0000018292 00000 n
0000018379 00000 n
0000018415 00000 n
0000018502 00000 n
0000018554 00000 n
0000018641 00000 n
0000018683 00000 n
0000018740 00000 n
0000018827 00000 n
0000018878 00000 n
0000018965 00000 n
0000018999 00000 n
0000019053 00000 n
0000019140 00000 n
0000019197 00000 n
0000019284 00000 n
0000019344 00000 n
0000019430 00000 n
0000019472 00000 n
0000019525 00000 n
0000019612 00000 n
0000019638 00000 n
0000019743 00000 n
0000019849 00000 n
0000019954 00000 n
0000020060 00000 n
0000020110 00000 n
0000020216 00000 n
0000020322 00000 n
0000020428 00000 n
0000020534 00000 n
0000020640 00000 n
0000020746 00000 n
0000020812 00000 n
0000020865 00000 n
0000020952 00000 n
0000021009 00000 n
0000021096 00000 n
0000021202 00000 n
0000021308 00000 n
0000021413 00000 n
0000021471 00000 n
0000021577 00000 n
0000021681 00000 n
0000021787 00000 n
0000021891 00000 n
0000021996 00000 n
0000022102 00000 n
0000022168 00000 n
0000022213 00000 n
0000022300 00000 n
0000022345 00000 n
0000022432 00000 n
0000022477 00000 n
0000022564 00000 n
0000022606 00000 n
0000022711 00000 n
0000022817 00000 n
0000022923 00000 n
0000023029 00000 n
0000023135 00000 n
0000023241 00000 n
0000023346 00000 n
0000023452 00000 n
0000023558 00000 n
0000023664 00000 n
0000023770 00000 n
0000023876 00000 n
0000023982 00000 n
0000024088 00000 n
0000024194 00000 n
0000024299 00000 n
0000024405 00000 n
0000024511 00000 n
0000024617 00000 n
0000024723 00000 n
0000024829 00000 n
0000024935 00000 n
0000025041 00000 n
0000025147 00000 n
0000025253 00000 n
0000025358 00000 n
0000025464 00000 n
0000025570 00000 n
0000025676 00000 n
0000025782 00000 n
0000025888 00000 n
0000025994 00000 n
0000026100 00000 n
0000026206 00000 n
0000026312 00000 n
0000026418 00000 n
0000026524 00000 n
0000026629 00000 n
0000026735 00000 n
0000026841 00000 n
0000026946 00000 n
0000027050 00000 n
0000027404 00000 n
0000027509 00000 n
0000027614 00000 n
0000027720 00000 n
0000027826 00000 n
0000027932 00000 n
0000028038 00000 n
0000028143 00000 n
0000028248 00000 n
0000028353 00000 n
0000028458 00000 n
0000028563 00000 n
0000028669 00000 n
0000028775 00000 n
0000028881 00000 n
0000028987 00000 n
0000029093 00000 n
0000029199 00000 n
0000029305 00000 n
0000029411 00000 n
0000029517 00000 n
0000029623 00000 n
0000029729 00000 n
0000029835 00000 n
0000029941 00000 n
0000030047 00000 n
0000030153 00000 n
0000030259 00000 n
0000030365 00000 n
0000030471 00000 n
0000030577 00000 n
0000030683 00000 n
0000030789 00000 n
0000030895 00000 n
0000031001 00000 n
0000031107 00000 n
0000031213 00000 n
0000031319 00000 n
0000031425 00000 n
0000031531 00000 n
0000031637 00000 n
0000031743 00000 n
0000031849 00000 n
0000031955 00000 n
0000032060 00000 n
0000032164 00000 n
0000032268 00000 n
0000032654 00000 n
0000032760 00000 n
0000032866 00000 n
0000032972 00000 n
0000033078 00000 n
0000033184 00000 n
0000033290 00000 n
0000033396 00000 n
0000033502 00000 n
0000033608 00000 n
0000033714 00000 n
0000033820 00000 n
0000033926 00000 n
0000034032 00000 n
0000034138 00000 n
0000034244 00000 n
0000034350 00000 n
0000034456 00000 n
0000034562 00000 n
0000034668 00000 n
0000034774 00000 n
0000034880 00000 n
0000034986 00000 n
0000035092 00000 n
0000035198 00000 n
0000035304 00000 n
0000035410 00000 n
0000035516 00000 n
0000035622 00000 n
0000035728 00000 n
0000035833 00000 n
0000035939 00000 n
0000036045 00000 n
0000036151 00000 n
0000036257 00000 n
0000036363 00000 n
0000036469 00000 n
0000036575 00000 n
0000036681 00000 n
0000036787 00000 n
0000036893 00000 n
0000036998 00000 n
0000037104 00000 n
0000037209 00000 n
0000037313 00000 n
0000037417 00000 n
0000037795 00000 n
0000037901 00000 n
0000038006 00000 n
0000038111 00000 n
0000038216 00000 n
0000038321 00000 n
0000038427 00000 n
0000038533 00000 n
0000038639 00000 n
0000038744 00000 n
0000038849 00000 n
0000038954 00000 n
0000039059 00000 n
0000039164 00000 n
0000039269 00000 n
0000039374 00000 n
0000039479 00000 n
0000039584 00000 n
0000039689 00000 n
0000039794 00000 n
0000039899 00000 n
0000040004 00000 n
0000040109 00000 n
0000040214 00000 n
0000040319 00000 n
0000040424 00000 n
0000040529 00000 n
0000040634 00000 n
0000040739 00000 n
0000040981 00000 n
0000041015 00000 n
0000041049 00000 n
0000043757 00000 n
0000043806 00000 n
0000043855 00000 n
0000043904 00000 n
0000043953 00000 n
0000044002 00000 n
0000044051 00000 n
0000044100 00000 n
0000044149 00000 n
0000044198 00000 n
0000044247 00000 n
0000044296 00000 n
0000044345 00000 n
0000044394 00000 n
0000044443 00000 n
0000044492 00000 n
0000044541 00000 n
0000044590 00000 n
0000044639 00000 n
0000044688 00000 n
0000044737 00000 n
0000044786 00000 n
0000044835 00000 n
0000044884 00000 n
0000044933 00000 n
0000044982 00000 n
0000045031 00000 n
0000045080 00000 n
0000045129 00000 n
0000045178 00000 n
0000045227 00000 n
0000045276 00000 n
0000045325 00000 n
0000045374 00000 n
0000045423 00000 n
0000045472 00000 n
0000045521 00000 n
0000045570 00000 n
0000045619 00000 n
0000045668 00000 n
0000045717 00000 n
0000045766 00000 n
0000045815 00000 n
0000045864 00000 n
0000045913 00000 n
0000045962 00000 n
0000046011 00000 n
0000046060 00000 n
0000046109 00000 n
0000046158 00000 n
0000046207 00000 n
0000046256 00000 n
0000046305 00000 n
0000046354 00000 n
0000046403 00000 n
0000046452 00000 n
0000046501 00000 n
0000046550 00000 n
0000046599 00000 n
0000046648 00000 n
0000046697 00000 n
0000046746 00000 n
0000046795 00000 n
0000046844 00000 n
0000046893 00000 n
0000046942 00000 n
0000046991 00000 n
0000047040 00000 n
0000047089 00000 n
0000047138 00000 n
0000047187 00000 n
0000047236 00000 n
0000047285 00000 n
0000047334 00000 n
0000047383 00000 n
0000047432 00000 n
0000047481 00000 n
0000047530 00000 n
0000047579 00000 n
0000047628 00000 n
0000047677 00000 n
0000047726 00000 n
0000047775 00000 n
0000047824 00000 n
0000047873 00000 n
0000047922 00000 n
0000047971 00000 n
0000048020 00000 n
0000048069 00000 n
0000048118 00000 n
0000048167 00000 n
0000048216 00000 n
0000048265 00000 n
0000048314 00000 n
0000048363 00000 n
0000048412 00000 n
0000048461 00000 n
0000048510 00000 n
0000048559 00000 n
0000048608 00000 n
0000048657 00000 n
0000048706 00000 n
0000048755 00000 n
0000048804 00000 n
0000048853 00000 n
0000048902 00000 n
0000048951 00000 n
0000049000 00000 n
0000049049 00000 n
0000049098 00000 n
0000049147 00000 n
0000049196 00000 n
0000049245 00000 n
0000049294 00000 n
0000049343 00000 n
0000049392 00000 n
0000049441 00000 n
0000049490 00000 n
0000049539 00000 n
0000049588 00000 n
0000049637 00000 n
0000049686 00000 n
0000049735 00000 n
0000049784 00000 n
0000049833 00000 n
0000049882 00000 n
0000049931 00000 n
0000049980 00000 n
0000050029 00000 n
0000050078 00000 n
0000050127 00000 n
0000050176 00000 n
0000050225 00000 n
0000050274 00000 n
0000050323 00000 n
0000050372 00000 n
0000050421 00000 n
0000050470 00000 n
0000050519 00000 n
0000050568 00000 n
0000050617 00000 n
0000050666 00000 n
0000050715 00000 n
0000050764 00000 n
0000050813 00000 n
0000050862 00000 n
0000050911 00000 n
0000050960 00000 n
0000051009 00000 n
0000051058 00000 n
0000051107 00000 n
0000051156 00000 n
0000051205 00000 n
0000051254 00000 n
0000051303 00000 n
0000051352 00000 n
0000051401 00000 n
0000051450 00000 n
0000051499 00000 n
0000051548 00000 n
0000051597 00000 n
0000051646 00000 n
0000051695 00000 n
0000052548 00000 n
0000052702 00000 n
0000059057 00000 n
0000059079 00000 n
0000059174 00000 n
0000059276 00000 n
0000059296 00000 n
0000059443 00000 n
0000060354 00000 n
0000060375 00000 n
0000060569 00000 n
0000062068 00000 n
0000062090 00000 n
0000062232 00000 n
0000062661 00000 n
0000062682 00000 n
0000062796 00000 n
0000062992 00000 n
0000063013 00000 n
0000063155 00000 n
0000064062 00000 n
0000064083 00000 n
0000064225 00000 n
0000065749 00000 n
0000065771 00000 n
0000065913 00000 n
0000066908 00000 n
0000066929 00000 n
0000067043 00000 n
0000067241 00000 n
0000067262 00000 n
0000067418 00000 n
0000068375 00000 n
0000068396 00000 n
0000068571 00000 n
0000069487 00000 n
0000069508 00000 n
0000069668 00000 n
0000015918 00000 n
0000015944 00000 n
0000016050 00000 n
0000016076 00000 n
0000016182 00000 n
0000016208 00000 n
0000016314 00000 n
0000016419 00000 n
0000016524 00000 n
0000016629 00000 n
0000016733 00000 n
0000016837 00000 n
0000016941 00000 n
0000017047 00000 n
0000017129 00000 n
0000017235 00000 n
0000017340 00000 n
0000017446 00000 n
0000017488 00000 n
0000017593 00000 n
0000017699 00000 n
0000017733 00000 n
0000017838 00000 n
0000017864 00000 n
0000017970 00000 n
0000017996 00000 n
0000018102 00000 n
0000018206 00000 n
0000018240 00000 n
0000018292 00000 n
0000018379 00000 n
0000018415 00000 n
0000018502 00000 n
0000018554 00000 n
0000018641 00000 n
0000018683 00000 n
0000018740 00000 n
0000018827 00000 n
0000018878 00000 n
0000018965 00000 n
0000018999 00000 n
0000019053 00000 n
0000019140 00000 n
0000019197 00000 n
0000019284 00000 n
0000019344 00000 n
0000019430 00000 n
0000019472 00000 n
0000019525 00000 n
0000019612 00000 n
0000019638 00000 n
0000019743 00000 n
0000019849 00000 n
0000019954 00000 n
0000020060 00000 n
0000020110 00000 n
0000020216 00000 n
0000020322 00000 n
0000020428 00000 n
0000020534 00000 n
0000020640 00000 n
0000020746 00000 n
0000020812 00000 n
0000020865 00000 n
0000020952 00000 n
0000021009 00000 n
0000021096 00000 n
0000021202 00000 n
0000021308 00000 n
0000021413 00000 n
0000021471 00000 n
0000021577 00000 n
0000021681 00000 n
0000021787 00000 n
0000021891 00000 n
0000021996 00000 n
0000022102 00000 n
0000022168 00000 n
0000022213 00000 n
0000022300 00000 n
0000022345 00000 n
0000022432 00000 n
0000022477 00000 n
0000022564 00000 n
0000022606 00000 n
0000022711 00000 n
0000022817 00000 n
0000022923 00000 n
0000023029 00000 n
0000023135 00000 n
0000023241 00000 n
0000023346 00000 n
0000023452 00000 n
0000023558 00000 n
0000023664 00000 n
0000023770 00000 n
0000023876 00000 n
0000023982 00000 n
0000024088 00000 n
0000024194 00000 n
0000024299 00000 n
0000024405 00000 n
0000024511 00000 n
0000024617 00000 n
0000024723 00000 n
0000024829 00000 n
0000024935 00000 n
0000025041 00000 n
0000025147 00000 n
0000025253 00000 n
0000025358 00000 n
0000025464 00000 n
0000025570 00000 n
0000025676 00000 n
0000025782 00000 n
0000025888 00000 n
0000025994 00000 n
0000026100 00000 n
0000026206 00000 n
0000026312 00000 n
0000026418 00000 n
0000026524 00000 n
0000026629 00000 n
0000026735 00000 n
0000026841 00000 n
0000026946 00000 n
0000027050 00000 n
0000027404 00000 n
0000027509 00000 n
0000027614 00000 n
0000027720 00000 n
0000027826 00000 n
0000027932 00000 n
0000028038 00000 n
0000028143 00000 n
0000028248 00000 n
0000028353 00000 n
0000028458 00000 n
0000028563 00000 n
0000028669 00000 n
0000028775 00000 n
0000028881 00000 n
0000028987 00000 n
0000029093 00000 n
0000029199 00000 n
0000029305 00000 n
0000029411 00000 n
0000029517 00000 n
0000029623 00000 n
0000029729 00000 n
0000029835 00000 n
0000029941 00000 n
0000030047 00000 n
0000030153 00000 n
0000030259 00000 n
0000030365 00000 n
0000030471 00000 n
0000030577 00000 n
0000030683 00000 n
0000030789 00000 n
0000030895 00000 n
0000031001 00000 n
0000031107 00000 n
0000031213 00000 n
0000031319 00000 n
0000031425 00000 n
0000031531 00000 n
0000031637 00000 n
0000031743 00000 n
0000031849 00000 n
0000031955 00000 n
0000032060 00000 n
0000032164 00000 n
0000032268 00000 n
0000032654 00000 n
0000032760 00000 n
0000032866 00000 n
0000032972 00000 n
0000033078 00000 n
0000033184 00000 n
0000033290 00000 n
0000033396 00000 n
0000033502 00000 n
0000033608 00000 n
0000033714 00000 n
0000033820 00000 n
0000033926 00000 n
0000034032 00000 n
0000034138 00000 n
0000034244 00000 n
0000034350 00000 n
0000034456 00000 n
0000034562 00000 n
0000034668 00000 n
0000034774 00000 n
0000034880 00000 n
0000034986 00000 n
0000035092 00000 n
0000035198 00000 n
0000035304 00000 n
0000035410 00000 n
0000035516 00000 n
0000035622 00000 n
0000035728 00000 n
0000035833 00000 n
0000035939 00000 n
0000036045 00000 n
0000036151 00000 n
0000036257 00000 n
0000036363 00000 n
0000036469 00000 n
0000036575 00000 n
0000036681 00000 n
0000036787 00000 n
0000036893 00000 n
0000036998 00000 n
0000037104 00000 n
0000037209 00000 n
0000037313 00000 n
0000037417 00000 n
0000037795 00000 n
0000037901 00000 n
0000038006 00000 n
0000038111 00000 n
0000038216 00000 n
0000038321 00000 n
0000038427 00000 n
0000038533 00000 n
0000038639 00000 n
0000038744 00000 n
0000038849 00000 n
0000038954 00000 n
0000039059 00000 n
0000039164 00000 n
0000039269 00000 n
0000039374 00000 n
0000039479 00000 n
0000039584 00000 n
0000039689 00000 n
0000039794 00000 n
0000039899 00000 n
0000040004 00000 n
0000040109 00000 n
0000040214 00000 n
0000040319 00000 n
0000040424 00000 n
0000040529 00000 n
0000040634 00000 n
0000040739 00000 n
0000040981 00000 n
0000041015 00000 n
0000041049 00000 n
0000043757 00000 n
0000043806 00000 n
0000043855 00000 n
0000043904 00000 n
0000043953 00000 n
0000044002 00000 n
0000044051 00000 n
0000044100 00000 n
0000044149 00000 n
0000044198 00000 n
0000044247 00000 n
0000044296 00000 n
0000044345 00000 n
0000044394 00000 n
0000044443 00000 n
0000044492 00000 n
0000044541 00000 n
0000044590 00000 n
0000044639 00000 n
0000044688 00000 n
0000044737 00000 n
0000044786 00000 n
0000044835 00000 n
0000044884 00000 n
0000044933 00000 n
0000044982 00000 n
0000045031 00000 n
0000045080 00000 n
0000045129 00000 n
0000045178 00000 n
0000045227 00000 n
0000045276 00000 n
0000045325 00000 n
0000045374 00000 n
0000045423 00000 n
0000045472 00000 n
0000045521 00000 n
0000045570 00000 n
0000045619 00000 n
0000045668 00000 n
0000045717 00000 n
0000045766 00000 n
0000045815 00000 n
0000045864 00000 n
0000045913 00000 n
0000045962 00000 n
0000046011 00000 n
0000046060 00000 n
0000046109 00000 n
0000046158 00000 n
0000046207 00000 n
0000046256 00000 n
0000046305 00000 n
0000046354 00000 n
0000046403 00000 n
0000046452 00000 n
0000046501 00000 n
0000046550 00000 n
0000046599 00000 n
0000046648 00000 n
0000046697 00000 n
0000046746 00000 n
0000046795 00000 n
0000046844 00000 n
0000046893 00000 n
0000046942 00000 n
0000046991 00000 n
0000047040 00000 n
0000047089 00000 n
0000047138 00000 n
0000047187 00000 n
0000047236 00000 n
0000047285 00000 n
0000047334 00000 n
0000047383 00000 n
0000047432 00000 n
0000047481 00000 n
0000047530 00000 n
0000047579 00000 n
0000047628 00000 n
0000047677 00000 n
0000047726 00000 n
0000047775 00000 n
0000047824 00000 n
0000047873 00000 n
0000047922 00000 n
0000047971 00000 n
0000048020 00000 n
0000048069 00000 n
0000048118 00000 n
0000048167 00000 n
0000048216 00000 n
0000048265 00000 n
0000048314 00000 n
0000048363 00000 n
0000048412 00000 n
0000048461 00000 n
0000048510 00000 n
0000048559 00000 n
0000048608 00000 n
0000048657 00000 n
0000048706 00000 n
0000048755 00000 n
0000048804 00000 n
0000048853 00000 n
0000048902 00000 n
0000048951 00000 n
0000049000 00000 n
0000049049 00000 n
0000049098 00000 n
0000049147 00000 n
0000049196 00000 n
0000049245 00000 n
0000049294 00000 n
0000049343 00000 n
0000049392 00000 n
0000049441 00000 n
0000049490 00000 n
0000049539 00000 n
0000049588 00000 n
0000049637 00000 n
0000049686 00000 n
0000049735 00000 n
0000049784 00000 n
0000049833 00000 n
0000049882 00000 n
0000049931 00000 n
0000049980 00000 n
0000050029 00000 n
0000050078 00000 n
0000050127 00000 n
0000050176 00000 n
0000050225 00000 n
0000050274 00000 n
0000050323 00000 n
0000050372 00000 n
0000050421 00000 n
0000050470 00000 n
0000050519 00000 n
0000050568 00000 n
0000050617 00000 n
0000050666 00000 n
0000050715 00000 n
0000050764 00000 n
0000050813 00000 n
0000050862 00000 n
0000050911 00000 n
0000050960 00000 n
0000051009 00000 n
0000051058 00000 n
0000051107 00000 n
0000051156 00000 n
0000051205 00000 n
0000051254 00000 n
0000051303 00000 n
0000051352 00000 n
0000051401 00000 n
0000051450 00000 n
0000051499 00000 n
0000051548 00000 n
0000051597 00000 n
0000051646 00000 n
0000051695 00000 n
0000052548 00000 n
0000052702 00000 n
0000059059 00000 n
0000059081 00000 n
0000059176 00000 n
0000059278 00000 n
0000059298 00000 n
0000059445 00000 n
0000060355 00000 n
0000060376 00000 n
0000060570 00000 n
0000062069 00000 n
0000062091 00000 n
0000062233 00000 n
0000062662 00000 n
0000062683 00000 n
0000062797 00000 n
0000062993 00000 n
0000063014 00000 n
0000063156 00000 n
0000064063 00000 n
0000064084 00000 n
0000064226 00000 n
0000065750 00000 n
0000065772 00000 n
0000065914 00000 n
0000066909 00000 n
0000066930 00000 n
0000067044 00000 n
0000067242 00000 n
0000067263 00000 n
0000067419 00000 n
0000068376 00000 n
0000068397 00000 n
0000068572 00000 n
0000069488 00000 n
0000069509 00000 n
0000069669 00000 n
0000070628 00000 n
0000070649 00000 n
0000070800 00000 n
0000071289 00000 n
0000070648 00000 n
0000071310 00000 n
0000071452 00000 n
0000071288 00000 n
0000072101 00000 n
0000072122 00000 n
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Administrators Manual</TITLE>
</HEAD>
@@ -11,7 +11,7 @@
<P>This software administrators manual provides printer administration
information for the Common UNIX Printing System<SUP>TM</SUP>
("CUPS<SUP>TM</SUP>"), version 1.1.
("CUPS<SUP>TM</SUP>"), version 1.1.1.
<EMBED SRC="system-overview.shtml">
+361 -358
Ver Arquivo
@@ -29,238 +29,239 @@ Copyright 1997-2000, All Rights Reserved<BR>
<HR>
<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_6">3.1.6 usb</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>
<LI><A HREF="#3_1_6">3.1.6 usb</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 lpq</A></LI>
<LI><A HREF="#3_2_3">3.2.3 lpr</A></LI>
<LI><A HREF="#3_2_4">3.2.4 lprm</A></LI>
<LI><A HREF="#3_2_1">3.2.1 lpc</A></LI>
<LI><A HREF="#3_2_2">3.2.2 lpq</A></LI>
<LI><A HREF="#3_2_3">3.2.3 lpr</A></LI>
<LI><A HREF="#3_2_4">3.2.4 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 admin.cgi</A></LI>
<LI><A HREF="#3_3_2">3.3.2 classes.cgi</A></LI>
<LI><A HREF="#3_3_3">3.3.3 jobs.cgi</A></LI>
<LI><A HREF="#3_3_4">3.3.4 printers.cgi</A></LI>
<LI><A HREF="#3_3_1">3.3.1 admin.cgi</A></LI>
<LI><A HREF="#3_3_2">3.3.2 classes.cgi</A></LI>
<LI><A HREF="#3_3_3">3.3.3 jobs.cgi</A></LI>
<LI><A HREF="#3_3_4">3.3.4 printers.cgi</A></LI>
</UL>
<LI><A HREF="#3_4">3.4 CUPS Application Programmers Interface</A></LI>
<LI><A HREF="#3_4">3.4 CUPS Application Programmers Interface</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 PPD 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 PPD Functions</A></LI>
</UL>
<LI><A HREF="#3_5">3.5 CUPS Imaging Library</A></LI>
<LI><A HREF="#3_5">3.5 CUPS Imaging Library</A></LI>
<UL>
<LI><A HREF="#3_5_1">3.5.1 Colorspace Conversion Functions</A></LI>
<LI><A HREF="#3_5_2">3.5.2 Color Management Functions</A></LI>
<LI><A HREF="#3_5_3">3.5.3 Image Management Functions</A></LI>
<LI><A HREF="#3_5_4">3.5.4 Scaling Functions</A></LI>
<LI><A HREF="#3_5_5">3.5.5 Image File Functions</A></LI>
<LI><A HREF="#3_5_6">3.5.6 Raster Functions</A></LI>
<LI><A HREF="#3_5_1">3.5.1 Colorspace Conversion Functions</A></LI>
<LI><A HREF="#3_5_2">3.5.2 Color Management Functions</A></LI>
<LI><A HREF="#3_5_3">3.5.3 Image Management Functions</A></LI>
<LI><A HREF="#3_5_4">3.5.4 Scaling Functions</A></LI>
<LI><A HREF="#3_5_5">3.5.5 Image File Functions</A></LI>
<LI><A HREF="#3_5_6">3.5.6 Raster Functions</A></LI>
</UL>
<LI><A HREF="#3_6">3.6 Daemons</A></LI>
<LI><A HREF="#3_6">3.6 Daemons</A></LI>
<UL>
<LI><A HREF="#3_6_1">3.6.1 Line Printer Daemon</A></LI>
<LI><A HREF="#3_6_2">3.6.2 Polling Daemon</A></LI>
<LI><A HREF="#3_6_1">3.6.1 Line Printer Daemon</A></LI>
<LI><A HREF="#3_6_2">3.6.2 Polling Daemon</A></LI>
</UL>
<LI><A HREF="#3_7">3.7 Filters</A></LI>
<LI><A HREF="#3_7">3.7 Filters</A></LI>
<UL>
<LI><A HREF="#3_7_1">3.7.1 hpgltops</A></LI>
<LI><A HREF="#3_7_2">3.7.2 imagetops</A></LI>
<LI><A HREF="#3_7_3">3.7.3 imagetoraster</A></LI>
<LI><A HREF="#3_7_4">3.7.4 pdftops</A></LI>
<LI><A HREF="#3_7_5">3.7.5 pstops</A></LI>
<LI><A HREF="#3_7_6">3.7.6 pstoraster</A></LI>
<LI><A HREF="#3_7_7">3.7.7 rastertoepson</A></LI>
<LI><A HREF="#3_7_8">3.7.8 rastertohp</A></LI>
<LI><A HREF="#3_7_9">3.7.9 texttops</A></LI>
<LI><A HREF="#3_7_1">3.7.1 hpgltops</A></LI>
<LI><A HREF="#3_7_2">3.7.2 imagetops</A></LI>
<LI><A HREF="#3_7_3">3.7.3 imagetoraster</A></LI>
<LI><A HREF="#3_7_4">3.7.4 pdftops</A></LI>
<LI><A HREF="#3_7_5">3.7.5 pstops</A></LI>
<LI><A HREF="#3_7_6">3.7.6 pstoraster</A></LI>
<LI><A HREF="#3_7_7">3.7.7 rastertoepson</A></LI>
<LI><A HREF="#3_7_8">3.7.8 rastertohp</A></LI>
<LI><A HREF="#3_7_9">3.7.9 texttops</A></LI>
</UL>
<LI><A HREF="#3_8">3.8 Scheduler</A></LI>
<LI><A HREF="#3_8">3.8 Scheduler</A></LI>
<UL>
<LI><A HREF="#3_8_1">3.8.1 Authorization</A></LI>
<LI><A HREF="#3_8_2">3.8.2 Classes</A></LI>
<LI><A HREF="#3_8_3">3.8.3 Client</A></LI>
<LI><A HREF="#3_8_4">3.8.4 Configuration</A></LI>
<LI><A HREF="#3_8_5">3.8.5 Devices</A></LI>
<LI><A HREF="#3_8_6">3.8.6 Directory Services</A></LI>
<LI><A HREF="#3_8_7">3.8.7 IPP</A></LI>
<LI><A HREF="#3_8_8">3.8.8 Jobs</A></LI>
<LI><A HREF="#3_8_9">3.8.9 Logging</A></LI>
<LI><A HREF="#3_8_10">3.8.10 Main</A></LI>
<LI><A HREF="#3_8_11">3.8.11 MIME</A></LI>
<LI><A HREF="#3_8_12">3.8.12 PPDs</A></LI>
<LI><A HREF="#3_8_13">3.8.13 Printers</A></LI>
<LI><A HREF="#3_8_1">3.8.1 Authorization</A></LI>
<LI><A HREF="#3_8_2">3.8.2 Classes</A></LI>
<LI><A HREF="#3_8_3">3.8.3 Client</A></LI>
<LI><A HREF="#3_8_4">3.8.4 Configuration</A></LI>
<LI><A HREF="#3_8_5">3.8.5 Devices</A></LI>
<LI><A HREF="#3_8_6">3.8.6 Directory Services</A></LI>
<LI><A HREF="#3_8_7">3.8.7 IPP</A></LI>
<LI><A HREF="#3_8_8">3.8.8 Jobs</A></LI>
<LI><A HREF="#3_8_9">3.8.9 Logging</A></LI>
<LI><A HREF="#3_8_10">3.8.10 Main</A></LI>
<LI><A HREF="#3_8_11">3.8.11 MIME</A></LI>
<LI><A HREF="#3_8_12">3.8.12 PPDs</A></LI>
<LI><A HREF="#3_8_13">3.8.13 Printers</A></LI>
</UL>
<LI><A HREF="#3_9">3.9 System V Commands</A></LI>
<LI><A HREF="#3_9">3.9 System V Commands</A></LI>
<UL>
<LI><A HREF="#3_9_1">3.9.1 accept</A></LI>
<LI><A HREF="#3_9_2">3.9.2 cancel</A></LI>
<LI><A HREF="#3_9_3">3.9.3 disable</A></LI>
<LI><A HREF="#3_9_4">3.9.4 enable</A></LI>
<LI><A HREF="#3_9_5">3.9.5 lp</A></LI>
<LI><A HREF="#3_9_6">3.9.6 lpadmin</A></LI>
<LI><A HREF="#3_9_7">3.9.7 lpinfo</A></LI>
<LI><A HREF="#3_9_8">3.9.8 lpmove</A></LI>
<LI><A HREF="#3_9_9">3.9.9 lpoptions</A></LI>
<LI><A HREF="#3_9_10">3.9.10 lpstat</A></LI>
<LI><A HREF="#3_9_11">3.9.11 reject</A></LI>
<LI><A HREF="#3_9_1">3.9.1 accept</A></LI>
<LI><A HREF="#3_9_2">3.9.2 cancel</A></LI>
<LI><A HREF="#3_9_3">3.9.3 disable</A></LI>
<LI><A HREF="#3_9_4">3.9.4 enable</A></LI>
<LI><A HREF="#3_9_5">3.9.5 lp</A></LI>
<LI><A HREF="#3_9_6">3.9.6 lpadmin</A></LI>
<LI><A HREF="#3_9_7">3.9.7 lpinfo</A></LI>
<LI><A HREF="#3_9_8">3.9.8 lpmove</A></LI>
<LI><A HREF="#3_9_9">3.9.9 lpoptions</A></LI>
<LI><A HREF="#3_9_10">3.9.10 lpstat</A></LI>
<LI><A HREF="#3_9_11">3.9.11 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>
<H1><A NAME="1">1 Scope</A></H1>
<H2><A NAME="1_1">1.1 Identification</A></H2>
This software design description document provides general information
on the architecture and coding of the Common UNIX Printing System
(&quot;CUPS&quot;) Version 1.1.
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P> CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
Software Products</A> to promote a standard printing solution for all
UNIX vendors and users. CUPS provides the System V and Berkeley
command-line interfaces. </P>
<P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
<P> CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
options to support real-world printing under UNIX. </P>
<P>CUPS also includes a customized version of GNU Ghostscript
<P> CUPS also includes a customized version of GNU Ghostscript
(currently based off GNU Ghostscript 5.50) and an image file RIP that
are used to support non-PostScript printers. Sample drivers for HP and
EPSON printers are included that use these filters. </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>
<LI>1 - Scope </LI>
<LI>2 - References </LI>
<LI>3 - Design Overview </LI>
<LI>A - Glossary </LI>
<LI> 1 - Scope </LI>
<LI> 2 - References </LI>
<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>
<P>The following CUPS documentation is referenced by this document: </P>
<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.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
<LI> CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI> CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI> CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI> CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI> CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI> CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI> CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI> CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI> CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI> CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
</UL>
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
<P>The following non-CUPS documents are referenced by this document: </P>
<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><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
Adobe PostScript Printer Description File Format Specification,
Adobe PostScript Printer Description File Format Specification,
Version 4.3.</A></LI>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI>IPP: Job and Printer Set Operations </LI>
<LI>IPP/1.1: Encoding and Transport </LI>
<LI>IPP/1.1: Implementers Guide </LI>
<LI>IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI> IPP: Job and Printer Set Operations </LI>
<LI> IPP/1.1: Encoding and Transport </LI>
<LI> IPP/1.1: Implementers Guide </LI>
<LI> IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt"> RFC 1179, Line
Printer Daemon Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
<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
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt"> RFC 2568, Rationale
for the Structure of the Model and Protocol</A> for the Internet
Printing Protocol</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>
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt"> RFC 2616, Hypertext
Transfer Protocol -- HTTP/1.1</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt"> RFC 2617, HTTP
Authentication: Basic and Digest Access</A> Authentication </LI>
</UL>
<H1><A NAME="3">3 Design Overview</A></H1>
<H1><A NAME="3">3 Design Overview</A></H1>
CUPS is composed of 9 software sub-systems that operate together to
perform common printing tasks:
<UL>
<LI>Backends </LI>
<LI>Berkeley Commands </LI>
<LI>CGI </LI>
<LI>CUPS Application Programmers Interface </LI>
<LI>CUPS Imaging Library </LI>
<LI>Daemons </LI>
<LI>Filters </LI>
<LI>Scheduler </LI>
<LI>System V Commands </LI>
<LI> Backends </LI>
<LI> Berkeley Commands </LI>
<LI> CGI </LI>
<LI> CUPS Application Programmers Interface </LI>
<LI> CUPS Imaging Library </LI>
<LI> Daemons </LI>
<LI> Filters </LI>
<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>
<LI>Device URI - the Uniform Resource Identifier for the output device
<LI> Device URI - the Uniform Resource Identifier for the output device
(e.g. <CODE>parallel:/dev/plp</CODE>, <CODE> ipp://hostname/resource</CODE>
). </LI>
<LI>Job Identifier - the job identifier for this job (integer). </LI>
<LI>User Name - the user associated with this job (name string). </LI>
<LI>Title - the title/job-name associated with this job (name string). </LI>
<LI>Copies - the number of copies required (integer). </LI>
<LI>Options - the options associated with this job (space separated
<LI> Job Identifier - the job identifier for this job (integer). </LI>
<LI> User Name - the user associated with this job (name string). </LI>
<LI> Title - the title/job-name associated with this job (name string). </LI>
<LI> Copies - the number of copies required (integer). </LI>
<LI> Options - the options associated with this job (space separated
option strings). </LI>
<LI>Filename (optional) - the file to print; if this option is not
<LI> Filename (optional) - the file to print; if this option is not
specified, the backend must read the print file from the standard
input. </LI>
</UL>
<P>Backends are named using the scheme of the URI, so a URI of
<P> Backends are named using the scheme of the URI, so a URI of
&quot;ipp://hostname/resource&quot; would be processed by the &quot;ipp&quot; backend. </P>
<H3><A NAME="3_1_1">3.1.1 ipp</A></H3>
<P>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. </P>
<H3><A NAME="3_1_2">3.1.2 lpd</A></H3>
<P>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: </P>
<H3><A NAME="3_1_1">3.1.1 ipp</A></H3>
<P> 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. </P>
<H3><A NAME="3_1_2">3.1.2 lpd</A></H3>
<P> 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: </P>
<UL>
<PRE>lpd://hostname/queue
</PRE>
</UL>
<H3><A NAME="3_1_3">3.1.3 parallel</A></H3>
<P>The parallel backend sends the specified job to a local printer
<H3><A NAME="3_1_3">3.1.3 parallel</A></H3>
<P> The parallel backend sends the specified job to a local printer
connected via the specified parallel port device. The URI is of the
form: </P>
<UL>
<PRE>parallel:/dev/file
</PRE>
</UL>
<H3><A NAME="3_1_4">3.1.4 serial</A></H3>
<P>The serial backend sends the specified job to a local printer
<H3><A NAME="3_1_4">3.1.4 serial</A></H3>
<P> The serial backend sends the specified job to a local printer
connected via the specified serial port device. The URI is of the
form: </P>
<UL>
@@ -269,14 +270,14 @@ form: </P>
</UL>
The options can be any combination of the following:
<UL>
<LI><CODE>baud=<I>rate</I></CODE> - Sets the baud rate for the device. </LI>
<LI><CODE>bits=<I>7 or 8</I></CODE> - Sets the number of data bits. </LI>
<LI><CODE>parity=<I>even</I></CODE> - Sets even parity checking. </LI>
<LI><CODE>parity=<I>odd</I></CODE> - Sets odd parity checking. </LI>
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
<LI><CODE> baud=<I>rate</I></CODE> - Sets the baud rate for the device. </LI>
<LI><CODE> bits=<I>7 or 8</I></CODE> - Sets the number of data bits. </LI>
<LI><CODE> parity=<I>even</I></CODE> - Sets even parity checking. </LI>
<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>
<P>The socket backend sends the specified job to a network host using
<H3><A NAME="3_1_5">3.1.5 socket</A></H3>
<P> 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: </P>
<UL>
@@ -284,304 +285,306 @@ printers. The URI is of the form: </P>
</PRE>
</UL>
The default port number is 9100.
<H3><A NAME="3_1_6">3.1.6 usb</A></H3>
<P>The usb backend sends the specified job to a local printer connected
via the specified usb port device. The URI is of the form: </P>
<H3><A NAME="3_1_6">3.1.6 usb</A></H3>
<P> The usb backend sends the specified job to a local printer
connected via the specified usb port device. The URI is of the form: </P>
<UL>
<PRE>usb:/dev/file
</PRE>
</UL>
<H2><A NAME="3_2">3.2 Berkeley Commands</A></H2>
<P>The Berkeley commands provide a simple command-line interface to
<H2><A NAME="3_2">3.2 Berkeley Commands</A></H2>
<P> 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 hardcoded to use the Berkeley commands. </P>
<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:
<UL>
<LI>quit - Quits the lpc command. </LI>
<LI>status - Shows the status of printers and jobs in the queue. </LI>
<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 lpq</A></H3>
<P>The lpq command shows the current queue status. </P>
<H3><A NAME="3_2_3">3.2.3 lpr</A></H3>
<P>The lpr command submits a job for printing. The CUPS version of lpr
silently ignores the &quot;i&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; options. </P>
<H3><A NAME="3_2_4">3.2.4 lprm</A></H3>
<P>The lprm removes one or more print jobs. </P>
<H2><A NAME="3_3">3.3 CGI</A></H2>
<P>The Common Gateway Interface (CGI) programs provide a web-based
<H3><A NAME="3_2_2">3.2.2 lpq</A></H3>
<P> The lpq command shows the current queue status. </P>
<H3><A NAME="3_2_3">3.2.3 lpr</A></H3>
<P> The lpr command submits a job for printing. The CUPS version of
lpr silently ignores the &quot;i&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; options. </P>
<H3><A NAME="3_2_4">3.2.4 lprm</A></H3>
<P> The lprm removes one or more print jobs. </P>
<H2><A NAME="3_3">3.3 CGI</A></H2>
<P> The Common Gateway Interface (CGI) programs provide a web-based
status interface to monitor the status of printers, classes, and jobs.
Each of the CGIs utilize HTML template files that can be customized to
provide alternate appearances. </P>
<H3><A NAME="3_3_1">3.3.1 admin.cgi</A></H3>
<P>The admin CGI provides administration interfaces for printers and
<H3><A NAME="3_3_1">3.3.1 admin.cgi</A></H3>
<P> The admin CGI provides administration interfaces for printers and
classes. The user can add, modify, delete, start, stop, and configure
printers and classes using &quot;wizard&quot; interfaces. </P>
<H3><A NAME="3_3_2">3.3.2 classes.cgi</A></H3>
<P>The classes CGI lists the available printer classes and any pending
<H3><A NAME="3_3_2">3.3.2 classes.cgi</A></H3>
<P> 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. </P>
<H3><A NAME="3_3_3">3.3.3 jobs.cgi</A></H3>
<P>The jobs CGI lists the queued print jobs in order of priority. The
<H3><A NAME="3_3_3">3.3.3 jobs.cgi</A></H3>
<P> The jobs CGI lists the queued print jobs in order of priority. The
list can be limited by printer or job. </P>
<H3><A NAME="3_3_4">3.3.4 printers.cgi</A></H3>
<P>The printers CGI lists the available printer queues and any pending
<H3><A NAME="3_3_4">3.3.4 printers.cgi</A></H3>
<P> 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. </P>
<H2><A NAME="3_4">3.4 CUPS Application Programmers Interface</A></H2>
<P>The CUPS Application Programmers Interface (&quot;API&quot;) provides common
<H2><A NAME="3_4">3.4 CUPS Application Programmers Interface</A></H2>
<P> The CUPS Application Programmers Interface (&quot;API&quot;) provides common
convenience, HTTP, IPP, language, and PPD functions used by the CUPS
software. </P>
<H3><A NAME="3_4_1">3.4.1 Convenience Functions</A></H3>
<P>Convenience functions are provided to submit an IPP request, send a
<H3><A NAME="3_4_1">3.4.1 Convenience Functions</A></H3>
<P> 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. </P>
<H3><A NAME="3_4_2">3.4.2 HTTP Functions</A></H3>
<P>The HTTP functions provide functions to connect to HTTP servers,
<H3><A NAME="3_4_2">3.4.2 HTTP Functions</A></H3>
<P> The HTTP functions provide functions to connect to HTTP servers,
issue requests, read data from a server, and write data to a server. </P>
<H3><A NAME="3_4_3">3.4.3 IPP Functions</A></H3>
<P>The IPP function provide functions to manage IPP request data and
<H3><A NAME="3_4_3">3.4.3 IPP Functions</A></H3>
<P> 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. </P>
<H3><A NAME="3_4_4">3.4.4 Language Functions</A></H3>
<P>The language functions provide a standard interface for retrieving
<H3><A NAME="3_4_4">3.4.4 Language Functions</A></H3>
<P> 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, UTF-8, ISO-8859-1, etc.) </P>
<H3><A NAME="3_4_5">3.4.5 PPD Functions</A></H3>
<P>The PostScript Printer Description functions manage PPD files,
<H3><A NAME="3_4_5">3.4.5 PPD Functions</A></H3>
<P> The PostScript Printer Description functions manage PPD files,
select options, check for option conflicts, and emit selected options
in the correct order. </P>
<H2><A NAME="3_5">3.5 CUPS Imaging Library</A></H2>
<P>The CUPS imaging library provides colorspace conversion, color
<H2><A NAME="3_5">3.5 CUPS Imaging Library</A></H2>
<P> The CUPS imaging library provides colorspace conversion, color
management, image management, scaling, image file, and raster functions
used by the CUPS raster filters. </P>
<H3><A NAME="3_5_1">3.5.1 Colorspace Conversion Functions</A></H3>
<P>The colorspace conversion functions handle conversion of grayscale
<H3><A NAME="3_5_1">3.5.1 Colorspace Conversion Functions</A></H3>
<P> The colorspace conversion functions handle conversion of grayscale
and RGB colors to grayscale, RGB, K, CMY, CMYK, and CMYKcm colorspaces. </P>
<H3><A NAME="3_5_2">3.5.2 Color Management Functions</A></H3>
<P>The color management functions handle gamut mapping and density
<H3><A NAME="3_5_2">3.5.2 Color Management Functions</A></H3>
<P> The color management functions handle gamut mapping and density
correction. These are integrated with the colorspace conversion
functions so that colorspace conversion and color management are
processed in a single step. </P>
<H3><A NAME="3_5_3">3.5.3 Image Management Functions</A></H3>
<P>The image management functions manage a tiled image database that is
swapped to/from disk as needed. </P>
<H3><A NAME="3_5_4">3.5.4 Scaling Functions</A></H3>
<P>The scaling functions provide image scaling services using
<H3><A NAME="3_5_3">3.5.3 Image Management Functions</A></H3>
<P> The image management functions manage a tiled image database that
is swapped to/from disk as needed. </P>
<H3><A NAME="3_5_4">3.5.4 Scaling Functions</A></H3>
<P> The scaling functions provide image scaling services using
nearest-neighbor sampling and bilinear interpolation as appropriate. </P>
<H3><A NAME="3_5_5">3.5.5 Image File Functions</A></H3>
<P>The image file functions handle loading of all image file formats. </P>
<H3><A NAME="3_5_6">3.5.6 Raster Functions</A></H3>
<P>The raster functions manage streams of CUPS raster data (described
<H3><A NAME="3_5_5">3.5.5 Image File Functions</A></H3>
<P> The image file functions handle loading of all image file formats. </P>
<H3><A NAME="3_5_6">3.5.6 Raster Functions</A></H3>
<P> The raster functions manage streams of CUPS raster data (described
in the Interface Design Document) used by non-PostScript printer
drivers and raster filters. </P>
<H2><A NAME="3_6">3.6 Daemons</A></H2>
<P>The daemons provide additional network functions for the scheduler.
<H2><A NAME="3_6">3.6 Daemons</A></H2>
<P> The daemons provide additional network functions for the scheduler.
Currently only two daemons are provided with CUPS. </P>
<H3><A NAME="3_6_1">3.6.1 Line Printer Daemon</A></H3>
<P>The line printer daemon provides remote LPD client support and is
<H3><A NAME="3_6_1">3.6.1 Line Printer Daemon</A></H3>
<P> The line printer daemon provides remote LPD client support and is
run by the <CODE>inetd(8)</CODE> daemon as needed. </P>
<H3><A NAME="3_6_2">3.6.2 Polling Daemon</A></H3>
<P>The polling daemon is used to poll a remote server for a list of
<H3><A NAME="3_6_2">3.6.2 Polling Daemon</A></H3>
<P> The polling daemon is used to poll a remote server for a list of
available printers and provide it to the scheduler for addition. A
separate polling daemon is run by the scheduler for every remote system
listed for polling in the scheduler configuration file. </P>
<H2><A NAME="3_7">3.7 Filters</A></H2>
<P>The filters implement file conversion services for CUPS. All filters
are called with a common set of arguments: </P>
<H2><A NAME="3_7">3.7 Filters</A></H2>
<P> The filters implement file conversion services for CUPS. All
filters are called with a common set of arguments: </P>
<UL>
<LI>Printer name - the name of the destination printer (name string). </LI>
<LI>Job Identifier - the job identifier for this job (integer). </LI>
<LI>User Name - the user associated with this job (name string). </LI>
<LI>Title - the title/job-name associated with this job (name string). </LI>
<LI>Copies - the number of copies required (integer). </LI>
<LI>Options - the options associated with this job (space separated
<LI> Printer name - the name of the destination printer (name string). </LI>
<LI> Job Identifier - the job identifier for this job (integer). </LI>
<LI> User Name - the user associated with this job (name string). </LI>
<LI> Title - the title/job-name associated with this job (name string). </LI>
<LI> Copies - the number of copies required (integer). </LI>
<LI> Options - the options associated with this job (space separated
option strings). </LI>
<LI>Filename (optional) - the file to print; if this option is not
<LI> Filename (optional) - the file to print; if this option is not
specified, the filter must read the input file from the standard
input. </LI>
</UL>
<P>Filters are added to the MIME conversion data file and implement all
necessary conversions from one file type to another. </P>
<H3><A NAME="3_7_1">3.7.1 hpgltops</A></H3>
<P>The hpgltops filter converts HP-GL/2 files into PostScript. </P>
<H3><A NAME="3_7_2">3.7.2 imagetops</A></H3>
<P>The imagetops filter converts image files into PostScript. </P>
<H3><A NAME="3_7_3">3.7.3 imagetoraster</A></H3>
<P>The imagetoraster filter converts image files into CUPS raster data. </P>
<H3><A NAME="3_7_4">3.7.4 pdftops</A></H3>
<P>The pdftops filter converts PDF files into PostScript. </P>
<H3><A NAME="3_7_5">3.7.5 pstops</A></H3>
<P>The pstops filter inserts printer-specific commands from PPD files
<P> Filters are added to the MIME conversion data file and implement
all necessary conversions from one file type to another. </P>
<H3><A NAME="3_7_1">3.7.1 hpgltops</A></H3>
<P> The hpgltops filter converts HP-GL/2 files into PostScript. </P>
<H3><A NAME="3_7_2">3.7.2 imagetops</A></H3>
<P> The imagetops filter converts image files into PostScript. </P>
<H3><A NAME="3_7_3">3.7.3 imagetoraster</A></H3>
<P> The imagetoraster filter converts image files into CUPS raster
data. </P>
<H3><A NAME="3_7_4">3.7.4 pdftops</A></H3>
<P> The pdftops filter converts PDF files into PostScript. </P>
<H3><A NAME="3_7_5">3.7.5 pstops</A></H3>
<P> The pstops filter inserts printer-specific commands from PPD files
and performs page filtering as requested by the user. </P>
<H3><A NAME="3_7_6">3.7.6 pstoraster</A></H3>
<P>The pstoraster filter converts PostScript program data into CUPS
<H3><A NAME="3_7_6">3.7.6 pstoraster</A></H3>
<P> The pstoraster filter converts PostScript program data into CUPS
raster data. </P>
<H3><A NAME="3_7_7">3.7.7 rastertoepson</A></H3>
<P>The rastertoepson filter handles converting CUPS raster data to
<H3><A NAME="3_7_7">3.7.7 rastertoepson</A></H3>
<P> The rastertoepson filter handles converting CUPS raster data to
ESC/P and supports both color and black-and-white printers. </P>
<H3><A NAME="3_7_8">3.7.8 rastertohp</A></H3>
<P>The rastertohp filter handles converting CUPS raster data to HP-PCL
<H3><A NAME="3_7_8">3.7.8 rastertohp</A></H3>
<P> The rastertohp filter handles converting CUPS raster data to HP-PCL
and supports both color and black-and-white printers. </P>
<H3><A NAME="3_7_9">3.7.9 texttops</A></H3>
<P>The texttops filter converts text files into PostScript. </P>
<H2><A NAME="3_8">3.8 Scheduler</A></H2>
<P>The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 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. </P>
<H3><A NAME="3_8_1">3.8.1 Authorization</A></H3>
<P>The authorization module is responsible for performing access
<H3><A NAME="3_7_9">3.7.9 texttops</A></H3>
<P> The texttops filter converts text files into PostScript. </P>
<H2><A NAME="3_8">3.8 Scheduler</A></H2>
<P> The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 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. </P>
<H3><A NAME="3_8_1">3.8.1 Authorization</A></H3>
<P> The authorization module is responsible for performing access
control and authentication for all HTTP and IPP requests entering the
system. </P>
<H3><A NAME="3_8_2">3.8.2 Classes</A></H3>
<P>The classes module is responsible for managing printer classes in
<H3><A NAME="3_8_2">3.8.2 Classes</A></H3>
<P> 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. </P>
<H3><A NAME="3_8_3">3.8.3 Client</A></H3>
<P>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
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 and
administration. </P>
<P>Once authorized, all IPP requests are sent to the IPP module. </P>
<H3><A NAME="3_8_4">3.8.4 Configuration</A></H3>
<P>The configuration module is responsible for reading the CUPS
<H3><A NAME="3_8_3">3.8.3 Client</A></H3>
<P> 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 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
and administration. </P>
<P> Once authorized, all IPP requests are sent to the IPP module. </P>
<H3><A NAME="3_8_4">3.8.4 Configuration</A></H3>
<P> 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. </P>
<H3><A NAME="3_8_5">3.8.5 Devices</A></H3>
<P>The devices module is responsible for managing the list of available
devices for the CUPS-Get-Devices operation. </P>
<H3><A NAME="3_8_6">3.8.6 Directory Services</A></H3>
<P>The directory services module sends and recieves printer state
<H3><A NAME="3_8_5">3.8.5 Devices</A></H3>
<P> The devices module is responsible for managing the list of
available devices for the CUPS-Get-Devices operation. </P>
<H3><A NAME="3_8_6">3.8.6 Directory Services</A></H3>
<P> 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
lists as needed. </P>
<P>The directory services module can only recieve printer state
<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_8_7">3.8.7 IPP</A></H3>
<P>The IPP module handles IPP requests and acts accordingly. URI
<H3><A NAME="3_8_7">3.8.7 IPP</A></H3>
<P> 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. </P>
<H3><A NAME="3_8_8">3.8.8 Jobs</A></H3>
<P>The jobs module manages print jobs, starts filter and backend
<H3><A NAME="3_8_8">3.8.8 Jobs</A></H3>
<P> 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. </P>
<H3><A NAME="3_8_9">3.8.9 Logging</A></H3>
<P>The logging module manages the access, error, and page log files
<H3><A NAME="3_8_9">3.8.9 Logging</A></H3>
<P> The logging module manages the access, error, and page log files
that are generated by the scheduler. </P>
<H3><A NAME="3_8_10">3.8.10 Main</A></H3>
<P>The main module is responsible for timing out and dispatching input
<H3><A NAME="3_8_10">3.8.10 Main</A></H3>
<P> 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. </P>
<H3><A NAME="3_8_11">3.8.11 MIME</A></H3>
<P>The Multimedia Internet Mail Exchange module manages 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. </P>
<H3><A NAME="3_8_12">3.8.12 PPDs</A></H3>
<P>The PPDs module is responsible for managing the list of available
<H3><A NAME="3_8_11">3.8.11 MIME</A></H3>
<P> The Multimedia Internet Mail Exchange module manages 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. </P>
<H3><A NAME="3_8_12">3.8.12 PPDs</A></H3>
<P> The PPDs module is responsible for managing the list of available
PPD files for the CUPS-Get-PPDs operation. </P>
<H3><A NAME="3_8_13">3.8.13 Printers</A></H3>
<P>The printers module is responsible for managing printers and PPD
<H3><A NAME="3_8_13">3.8.13 Printers</A></H3>
<P> 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. </P>
<H2><A NAME="3_9">3.9 System V Commands</A></H2>
<P>The System V commands provide a robust command-line interface to
<H2><A NAME="3_9">3.9 System V Commands</A></H2>
<P> The System V commands provide a robust command-line interface to
CUPS to submit and control printers and jobs. </P>
<H3><A NAME="3_9_1">3.9.1 accept</A></H3>
<P>The accept command tells the scheduler to accept new jobs for
<H3><A NAME="3_9_1">3.9.1 accept</A></H3>
<P> The accept command tells the scheduler to accept new jobs for
specific printers. </P>
<H3><A NAME="3_9_2">3.9.2 cancel</A></H3>
<P>The cancel command tells the scheduler to cancel one or more jobs
<H3><A NAME="3_9_2">3.9.2 cancel</A></H3>
<P> The cancel command tells the scheduler to cancel one or more jobs
that are queued for printing. </P>
<H3><A NAME="3_9_3">3.9.3 disable</A></H3>
<P>The disable command tells the scheduler to stop printing jobs on the
specified printers. </P>
<H3><A NAME="3_9_4">3.9.4 enable</A></H3>
<P>The enable command tells the scheduler to start printing jobs on the
specified printers. </P>
<H3><A NAME="3_9_5">3.9.5 lp</A></H3>
<P>The lp command submits submits files for printing. Unlike the
<H3><A NAME="3_9_3">3.9.3 disable</A></H3>
<P> The disable command tells the scheduler to stop printing jobs on
the specified printers. </P>
<H3><A NAME="3_9_4">3.9.4 enable</A></H3>
<P> The enable command tells the scheduler to start printing jobs on
the specified printers. </P>
<H3><A NAME="3_9_5">3.9.5 lp</A></H3>
<P> 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 &quot;f&quot;,
&quot;H&quot;, &quot;P&quot;, &quot;S&quot;, and &quot;y&quot; options are silently ignored. </P>
<H3><A NAME="3_9_6">3.9.6 lpadmin</A></H3>
<P>The lpadmin command manages printer queues and classes. The Solaris
&quot;A&quot;, &quot;F&quot;, &quot;I&quot;, &quot;M&quot;, &quot;P&quot;, &quot;Q&quot;, &quot;S&quot;, &quot;T&quot;, &quot;U&quot;, &quot;W&quot;, &quot;f&quot;, &quot;l&quot;, &quot;m&quot;, &quot;o&quot;,
&quot;s&quot;, &quot;t&quot;, and &quot;u&quot; options are not supported, and new options &quot;P&quot; (PPD
file) and &quot;E&quot; (enable and accept) are provided to configure
<H3><A NAME="3_9_6">3.9.6 lpadmin</A></H3>
<P> The lpadmin command manages printer queues and classes. The
Solaris &quot;A&quot;, &quot;F&quot;, &quot;I&quot;, &quot;M&quot;, &quot;P&quot;, &quot;Q&quot;, &quot;S&quot;, &quot;T&quot;, &quot;U&quot;, &quot;W&quot;, &quot;f&quot;, &quot;l&quot;,
&quot;m&quot;, &quot;o&quot;, &quot;s&quot;, &quot;t&quot;, and &quot;u&quot; options are not supported, and new options
&quot;P&quot; (PPD file) and &quot;E&quot; (enable and accept) are provided to configure
CUPS-specific features. </P>
<H3><A NAME="3_9_7">3.9.7 lpinfo</A></H3>
<P>The lpinfo command lists the available PPD files or devices as
<H3><A NAME="3_9_7">3.9.7 lpinfo</A></H3>
<P> The lpinfo command lists the available PPD files or devices as
selected by the user. </P>
<H3><A NAME="3_9_8">3.9.8 lpmove</A></H3>
<P>The lpmove command moves a print job to a new destination. </P>
<H3><A NAME="3_9_9">3.9.9 lpoptions</A></H3>
<P>The lpoptions command manages user-defined printers and options. </P>
<H3><A NAME="3_9_10">3.9.10 lpstat</A></H3>
<P>The lpstat command lists printers, classes, and jobs as requested by
the user. </P>
<H3><A NAME="3_9_11">3.9.11 reject</A></H3>
<P>The reject command tells the scheduler not to accept new jobs for
<H3><A NAME="3_9_8">3.9.8 lpmove</A></H3>
<P> The lpmove command moves a print job to a new destination. </P>
<H3><A NAME="3_9_9">3.9.9 lpoptions</A></H3>
<P> The lpoptions command manages user-defined printers and options. </P>
<H3><A NAME="3_9_10">3.9.10 lpstat</A></H3>
<P> The lpstat command lists printers, classes, and jobs as requested
by the user. </P>
<H3><A NAME="3_9_11">3.9.11 reject</A></H3>
<P> The reject command tells the scheduler not to accept new jobs for
specific printers. </P>
<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>
<DT>parallel </DT>
<DD>Sending or receiving data more than 1 bit at a time. </DD>
<DT>pipe </DT>
<DD>A one-way communications channel between two programs. </DD>
<DT>serial </DT>
<DD>Sending or receiving data 1 bit at a time. </DD>
<DT>socket </DT>
<DD>A two-way network communications channel. </DD>
<DT> C </DT>
<DD> A computer language. </DD>
<DT> parallel </DT>
<DD> Sending or receiving data more than 1 bit at a time. </DD>
<DT> pipe </DT>
<DD> A one-way communications channel between two programs. </DD>
<DT> serial </DT>
<DD> Sending or receiving data 1 bit at a time. </DD>
<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>
<DT>CUPS </DT>
<DD>Common UNIX Printing System </DD>
<DT>ESC/P </DT>
<DD>EPSON Standard Code for Printers </DD>
<DT>FTP </DT>
<DD>File Transfer Protocol </DD>
<DT>HP-GL </DT>
<DD>Hewlett-Packard Graphics Language </DD>
<DT>HP-PCL </DT>
<DD>Hewlett-Packard Page Control Language </DD>
<DT>HP-PJL </DT>
<DD>Hewlett-Packard Printer Job Language </DD>
<DT>IETF </DT>
<DD>Internet Engineering Task Force </DD>
<DT>IPP </DT>
<DD>Internet Printing Protocol </DD>
<DT>ISO </DT>
<DD>International Standards Organization </DD>
<DT>LPD </DT>
<DD>Line Printer Daemon </DD>
<DT>MIME </DT>
<DD>Multimedia Internet Mail Exchange </DD>
<DT>PPD </DT>
<DD>PostScript Printer Description </DD>
<DT>SMB </DT>
<DD>Server Message Block </DD>
<DT>TFTP </DT>
<DD>Trivial File Transfer Protocol </DD>
<DT> ASCII </DT>
<DD> American Standard Code for Information Interchange </DD>
<DT> CUPS </DT>
<DD> Common UNIX Printing System </DD>
<DT> ESC/P </DT>
<DD> EPSON Standard Code for Printers </DD>
<DT> FTP </DT>
<DD> File Transfer Protocol </DD>
<DT> HP-GL </DT>
<DD> Hewlett-Packard Graphics Language </DD>
<DT> HP-PCL </DT>
<DD> Hewlett-Packard Page Control Language </DD>
<DT> HP-PJL </DT>
<DD> Hewlett-Packard Printer Job Language </DD>
<DT> IETF </DT>
<DD> Internet Engineering Task Force </DD>
<DT> IPP </DT>
<DD> Internet Printing Protocol </DD>
<DT> ISO </DT>
<DD> International Standards Organization </DD>
<DT> LPD </DT>
<DD> Line Printer Daemon </DD>
<DT> MIME </DT>
<DD> Multimedia Internet Mail Exchange </DD>
<DT> PPD </DT>
<DD> PostScript Printer Description </DD>
<DT> SMB </DT>
<DD> Server Message Block </DD>
<DT> TFTP </DT>
<DD> Trivial File Transfer Protocol </DD>
</DL>
</BODY>
</HTML>
+808 -781
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+3169 -3173
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+8039 -8007
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SPM-1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SPM-1.1.1">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Programmers Manual</TITLE>
</HEAD>
@@ -10,7 +10,7 @@
<H1 ALIGN="RIGHT">Preface</H1>
<P>This software programmers manual provides software programming
information for the Common UNIX Printing System ("CUPS") Version 1.1.
information for the Common UNIX Printing System ("CUPS") Version 1.1.1.
<EMBED SRC="system-overview.shtml">
+128 -128
Ver Arquivo
@@ -29,174 +29,174 @@ Copyright 1997-2000, All Rights Reserved<BR>
<HR>
<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>
<P>This software security report provides an analysis of possible
<H1><A NAME="1">1 Scope</A></H1>
<H2><A NAME="1_1">1.1 Identification</A></H2>
<P> This software security report provides an analysis of possible
security concerns for the Common UNIX Printing System (&quot;CUPS&quot;) Version
1.1.</P>
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P> CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
Software Products</A> to promote a standard printing solution for all
UNIX vendors and users. CUPS provides the System V and Berkeley
command-line interfaces. </P>
<P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
<P> CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
options to support real-world printing under UNIX. </P>
<P>CUPS also includes a customized version of GNU Ghostscript
<P> CUPS also includes a customized version of GNU Ghostscript
(currently based off GNU Ghostscript 5.50) and an image file RIP that
are used to support non-PostScript printers. Sample drivers for HP and
EPSON printers are included that use these filters. </P>
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
<P>This software security report is organized into the following
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
<P> This software security report is organized into the following
sections:</P>
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Local Access Risks</LI>
<LI>4 - Remote Access Risks</LI>
<LI>A - Glossary</LI>
<LI> 1 - Scope</LI>
<LI> 2 - References</LI>
<LI> 3 - Local Access Risks</LI>
<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>
<P>The following CUPS documentation is referenced by this document: </P>
<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.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
<LI> CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI> CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI> CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI> CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI> CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI> CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI> CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI> CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI> CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI> CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
</UL>
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
<P>The following non-CUPS documents are referenced by this document: </P>
<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><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
Adobe PostScript Printer Description File Format Specification,
Adobe PostScript Printer Description File Format Specification,
Version 4.3.</A></LI>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI>IPP: Job and Printer Set Operations </LI>
<LI>IPP/1.1: Encoding and Transport </LI>
<LI>IPP/1.1: Implementers Guide </LI>
<LI>IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI> IPP: Job and Printer Set Operations </LI>
<LI> IPP/1.1: Encoding and Transport </LI>
<LI> IPP/1.1: Implementers Guide </LI>
<LI> IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt"> RFC 1179, Line
Printer Daemon Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
<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
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt"> RFC 2568, Rationale
for the Structure of the Model and Protocol</A> for the Internet
Printing Protocol</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>
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt"> RFC 2616, Hypertext
Transfer Protocol -- HTTP/1.1</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt"> RFC 2617, HTTP
Authentication: Basic and Digest Access</A> Authentication </LI>
</UL>
<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
<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>
<P>There is one known security vulnerability with local access: </P>
<H2><A NAME="3_1">3.1 Security Breaches</A></H2>
<P> There is one known security vulnerability with local access: </P>
<OL>
<LI>Device URIs are passed to backend filters in argv[0] and in an
<LI> Device URIs are passed to backend filters in argv[0] and in an
environment variable. Since device URIs can contain usernames and
passwords it may be possible for a local user to gain access to a
remote resource. </LI>
<P>We recommend that any password-protected accounts used for remote
<P> We recommend that any password-protected accounts used for remote
printing have limited access priviledges so that the possible damages
can be minimized. </P>
<P>The device URI is &quot;sanitized&quot; (the username and password are
<P> The device URI is &quot;sanitized&quot; (the username and password are
removed) when sent to an IPP client so that a remote user cannot
exploit this vulnerability. </P>
</OL>
<H1><A NAME="4">4 Remote Access Risks</A></H1>
<P>Remote access risks are those that can be exploited without a local
<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>
<P>Like all Internet services, the CUPS server is vulnerable to denial
<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>
<LI>Establishing multiple connections to the server until the server
<LI> Establishing multiple connections to the server until the server
will accept no more. </LI>
<P>This cannot be protected against by the current software. It is
<P> This cannot be protected against by the current software. It is
possible that future versions of the CUPS software could be configured
to limit the number of connections allowed from a single host, however
that still would not prevent a distributed attack. </P>
<LI>Repeatedly opening and closing connections to the server as fast
<LI> Repeatedly opening and closing connections to the server as fast
as possible. </LI>
<P>There is no easy way of protecting against this in the CUPS
<P> There is no easy way of protecting against this in the CUPS
software. If the attack is coming from outside the local network it
might be possible to filter such an attack, however once the
connection request has been received by the server it must at least
accept the connection to find out who is connecting. </P>
<LI>Flooding the network with broadcast packets on port 631. </LI>
<P>It might be possible to disable browsing if this condition is
<LI> Flooding the network with broadcast packets on port 631. </LI>
<P> It might be possible to disable browsing if this condition is
detected by the CUPS software, however if there are large numbers of
printers available on the network such an algorithm might think that
an attack was occurring when instead a valid update was being
received. </P>
<LI>Sending partial IPP requests; specifically, sending part of an
<LI> Sending partial IPP requests; specifically, sending part of an
attribute value and then stopping transmission. </LI>
<P>The current code is structured to read and write the IPP request
<P> The current code is structured to read and write the IPP request
data on-the-fly, so there is no easy way to protect against this for
large attribute values. </P>
<LI>Sending large/long print jobs to printers, preventing other users
<LI> Sending large/long print jobs to printers, preventing other users
from printing. </LI>
<P>There are limited facilities for protecting against large print
<P> There are limited facilities for protecting against large print
jobs (the <CODE>MaxRequestSize</CODE> attribute), however this will
not protect printers from malicious users and print files that
generate hundreds or thousands of pages. In general, we recommend
restricting printer access to known hosts or networks, and adding
user-level access control as needed for expensive printers. </P>
</OL>
<H2><A NAME="4_2">4.2 Security Breaches</A></H2>
<P>The current CUPS server supports Basic, Digest, and local
<H2><A NAME="4_2">4.2 Security Breaches</A></H2>
<P> The current CUPS server supports Basic, Digest, and local
certificate authentication: </P>
<OL>
<LI>Basic authentication essentially places the clear text of the
<LI> Basic authentication essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX
username and password account information, the authentication
information could be used to gain access to accounts (possibly
priviledged accounts) on the server. </LI>
<LI>Digest authentication uses an MD5 checksum of the username,
<LI> Digest authentication uses an MD5 checksum of the username,
password, and domain (&quot;CUPS&quot;), so the original username and password
is not sent over the network. However, the current implementation does
not authenticate the entire message and uses the client's IP address
@@ -204,7 +204,7 @@ for the nonce value, making it possible to launch &quot;man in the middle&quot;
and replay attacks from the same client. The next minor release of
CUPS will support Digest authentication of the entire message body,
effectively stopping these methods of attack. </LI>
<LI>Local certificate authentication passes 128-bit &quot;certificates&quot;
<LI> Local certificate authentication passes 128-bit &quot;certificates&quot;
that identify an authenticated user. Certificates are created
on-the-fly from random data and stored in files under <CODE>
/etc/cups/certs</CODE>. They have restricted read permissions: root +
@@ -213,58 +213,58 @@ Because certificates are only available on the local system, the CUPS
server does not accept local authentication unless the client is
connected to the localhost address (127.0.0.1.) </LI>
</OL>
<P>The default CUPS configuration disables remote administration. We do
not recommend that remote administration be enabled for all hosts.
<P> The default CUPS configuration disables remote administration. We
do not recommend that remote administration be enabled for all hosts.
However, if you have a trusted network or subnet, access can be
restricted accordingly. Also, we highly recommend using Digest
authentication when possible. Unfortunately, most web browsers do not
support Digest authentication at this time. </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>
<DT>parallel </DT>
<DD>Sending or receiving data more than 1 bit at a time. </DD>
<DT>pipe </DT>
<DD>A one-way communications channel between two programs. </DD>
<DT>serial </DT>
<DD>Sending or receiving data 1 bit at a time. </DD>
<DT>socket </DT>
<DD>A two-way network communications channel. </DD>
<DT> C </DT>
<DD> A computer language. </DD>
<DT> parallel </DT>
<DD> Sending or receiving data more than 1 bit at a time. </DD>
<DT> pipe </DT>
<DD> A one-way communications channel between two programs. </DD>
<DT> serial </DT>
<DD> Sending or receiving data 1 bit at a time. </DD>
<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>
<DT>CUPS </DT>
<DD>Common UNIX Printing System </DD>
<DT>ESC/P </DT>
<DD>EPSON Standard Code for Printers </DD>
<DT>FTP </DT>
<DD>File Transfer Protocol </DD>
<DT>HP-GL </DT>
<DD>Hewlett-Packard Graphics Language </DD>
<DT>HP-PCL </DT>
<DD>Hewlett-Packard Page Control Language </DD>
<DT>HP-PJL </DT>
<DD>Hewlett-Packard Printer Job Language </DD>
<DT>IETF </DT>
<DD>Internet Engineering Task Force </DD>
<DT>IPP </DT>
<DD>Internet Printing Protocol </DD>
<DT>ISO </DT>
<DD>International Standards Organization </DD>
<DT>LPD </DT>
<DD>Line Printer Daemon </DD>
<DT>MIME </DT>
<DD>Multimedia Internet Mail Exchange </DD>
<DT>PPD </DT>
<DD>PostScript Printer Description </DD>
<DT>SMB </DT>
<DD>Server Message Block </DD>
<DT>TFTP </DT>
<DD>Trivial File Transfer Protocol </DD>
<DT> ASCII </DT>
<DD> American Standard Code for Information Interchange </DD>
<DT> CUPS </DT>
<DD> Common UNIX Printing System </DD>
<DT> ESC/P </DT>
<DD> EPSON Standard Code for Printers </DD>
<DT> FTP </DT>
<DD> File Transfer Protocol </DD>
<DT> HP-GL </DT>
<DD> Hewlett-Packard Graphics Language </DD>
<DT> HP-PCL </DT>
<DD> Hewlett-Packard Page Control Language </DD>
<DT> HP-PJL </DT>
<DD> Hewlett-Packard Printer Job Language </DD>
<DT> IETF </DT>
<DD> Internet Engineering Task Force </DD>
<DT> IPP </DT>
<DD> Internet Printing Protocol </DD>
<DT> ISO </DT>
<DD> International Standards Organization </DD>
<DT> LPD </DT>
<DD> Line Printer Daemon </DD>
<DT> MIME </DT>
<DD> Multimedia Internet Mail Exchange </DD>
<DT> PPD </DT>
<DD> PostScript Printer Description </DD>
<DT> SMB </DT>
<DD> Server Message Block </DD>
<DT> TFTP </DT>
<DD> Trivial File Transfer Protocol </DD>
</DL>
</BODY>
</HTML>
+98 -98
Ver Arquivo
@@ -29,146 +29,146 @@ Copyright 1997-2000, All Rights Reserved<BR>
<HR>
<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 Tests</A></B>
<B><A HREF="#3">3 Local Tests</A></B>
<BR>
<BR><B><A HREF="#4">4 Remote Tests</A></B>
<BR><B><A HREF="#4">4 Remote Tests</A></B>
<BR>
<BR><B><A HREF="#5">A Glossary</A></B>
<BR><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>
<P>This software test plan provides detailed tests that are used to
<H1><A NAME="1">1 Scope</A></H1>
<H2><A NAME="1_1">1.1 Identification</A></H2>
<P> This software test plan provides detailed tests that are used to
evaluate the stability of the Common UNIX Printing System (&quot;CUPS&quot;)
Version 1.1. </P>
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P> CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
Software Products</A> to promote a standard printing solution for all
UNIX vendors and users. CUPS provides the System V and Berkeley
command-line interfaces. </P>
<P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
<P> CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
options to support real-world printing under UNIX. </P>
<P>CUPS also includes a customized version of GNU Ghostscript
<P> CUPS also includes a customized version of GNU Ghostscript
(currently based off GNU Ghostscript 5.50) and an image file RIP that
are used to support non-PostScript printers. Sample drivers for HP and
EPSON printers are included that use these filters. </P>
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
<P>This software test plan is organized into the following sections: </P>
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
<P> This software test plan is organized into the following sections: </P>
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Local Tests</LI>
<LI>4 - Remote Tests</LI>
<LI>A - Glossary</LI>
<LI> 1 - Scope</LI>
<LI> 2 - References</LI>
<LI> 3 - Local Tests</LI>
<LI> 4 - Remote Tests</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>
<P>The following CUPS documentation is referenced by this document: </P>
<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.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
<LI> CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI> CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI> CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI> CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI> CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI> CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI> CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI> CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI> CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI> CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
</UL>
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
<P>The following non-CUPS documents are referenced by this document: </P>
<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><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
Adobe PostScript Printer Description File Format Specification,
Adobe PostScript Printer Description File Format Specification,
Version 4.3.</A></LI>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI>IPP: Job and Printer Set Operations </LI>
<LI>IPP/1.1: Encoding and Transport </LI>
<LI>IPP/1.1: Implementers Guide </LI>
<LI>IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI> IPP: Job and Printer Set Operations </LI>
<LI> IPP/1.1: Encoding and Transport </LI>
<LI> IPP/1.1: Implementers Guide </LI>
<LI> IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt"> RFC 1179, Line
Printer Daemon Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
<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
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt"> RFC 2568, Rationale
for the Structure of the Model and Protocol</A> for the Internet
Printing Protocol</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>
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt"> RFC 2616, Hypertext
Transfer Protocol -- HTTP/1.1</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt"> RFC 2617, HTTP
Authentication: Basic and Digest Access</A> Authentication </LI>
</UL>
<H1><A NAME="3">3 Local Tests</A></H1>
<H1><A NAME="4">4 Remote Tests</A></H1>
<H1 TYPE="A" VALUE="1"><A NAME="5">A Glossary</A></H1>
<H2><A NAME="5_1">A.1 Terms</A></H2>
<H1><A NAME="3">3 Local Tests</A></H1>
<H1><A NAME="4">4 Remote Tests</A></H1>
<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>
<DT>parallel </DT>
<DD>Sending or receiving data more than 1 bit at a time. </DD>
<DT>pipe </DT>
<DD>A one-way communications channel between two programs. </DD>
<DT>serial </DT>
<DD>Sending or receiving data 1 bit at a time. </DD>
<DT>socket </DT>
<DD>A two-way network communications channel. </DD>
<DT> C </DT>
<DD> A computer language. </DD>
<DT> parallel </DT>
<DD> Sending or receiving data more than 1 bit at a time. </DD>
<DT> pipe </DT>
<DD> A one-way communications channel between two programs. </DD>
<DT> serial </DT>
<DD> Sending or receiving data 1 bit at a time. </DD>
<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>
<DT>CUPS </DT>
<DD>Common UNIX Printing System </DD>
<DT>ESC/P </DT>
<DD>EPSON Standard Code for Printers </DD>
<DT>FTP </DT>
<DD>File Transfer Protocol </DD>
<DT>HP-GL </DT>
<DD>Hewlett-Packard Graphics Language </DD>
<DT>HP-PCL </DT>
<DD>Hewlett-Packard Page Control Language </DD>
<DT>HP-PJL </DT>
<DD>Hewlett-Packard Printer Job Language </DD>
<DT>IETF </DT>
<DD>Internet Engineering Task Force </DD>
<DT>IPP </DT>
<DD>Internet Printing Protocol </DD>
<DT>ISO </DT>
<DD>International Standards Organization </DD>
<DT>LPD </DT>
<DD>Line Printer Daemon </DD>
<DT>MIME </DT>
<DD>Multimedia Internet Mail Exchange </DD>
<DT>PPD </DT>
<DD>PostScript Printer Description </DD>
<DT>SMB </DT>
<DD>Server Message Block </DD>
<DT>TFTP </DT>
<DD>Trivial File Transfer Protocol </DD>
<DT> ASCII </DT>
<DD> American Standard Code for Information Interchange </DD>
<DT> CUPS </DT>
<DD> Common UNIX Printing System </DD>
<DT> ESC/P </DT>
<DD> EPSON Standard Code for Printers </DD>
<DT> FTP </DT>
<DD> File Transfer Protocol </DD>
<DT> HP-GL </DT>
<DD> Hewlett-Packard Graphics Language </DD>
<DT> HP-PCL </DT>
<DD> Hewlett-Packard Page Control Language </DD>
<DT> HP-PJL </DT>
<DD> Hewlett-Packard Printer Job Language </DD>
<DT> IETF </DT>
<DD> Internet Engineering Task Force </DD>
<DT> IPP </DT>
<DD> Internet Printing Protocol </DD>
<DT> ISO </DT>
<DD> International Standards Organization </DD>
<DT> LPD </DT>
<DD> Line Printer Daemon </DD>
<DT> MIME </DT>
<DD> Multimedia Internet Mail Exchange </DD>
<DT> PPD </DT>
<DD> PostScript Printer Description </DD>
<DT> SMB </DT>
<DD> Server Message Block </DD>
<DT> TFTP </DT>
<DD> Trivial File Transfer Protocol </DD>
</DL>
</BODY>
</HTML>
+3 -3
Ver Arquivo
@@ -4,7 +4,7 @@
<TITLE> CUPS Software Users Manual</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.1">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<STYLE>
BODY { font-family: serif; font-size: 11.0pt }
@@ -22,7 +22,7 @@ PRE { font-size: 9.0pt }
<BODY BGCOLOR="#ffffff">
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
<H1> CUPS Software Users Manual</H1></A><BR>
CUPS-SUM-1.1<BR>
CUPS-SUM-1.1.1<BR>
Easy Software Products<BR>
Copyright 1997-2000, All Rights Reserved<BR>
</CENTER>
@@ -125,7 +125,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
<HR>
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
<P>This software users manual describes how to use the Common UNIX
Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>TM</SUP>&quot;) Version 1.1. </P>
Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>TM</SUP>&quot;) Version 1.1.1. </P>
<H2><A NAME="1_1">System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
+201 -204
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000710174143Z)/Title( CUPS Software Users Manual)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000721160144Z)/Title( CUPS Software Users Manual)/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 128/Euro 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/Courier-Bold/Encoding 2 0 R>>endobj
@@ -343,10 +343,10 @@ h)
Wuáiè†X!dr¸Ñ˜ÄjøCýsȵèÝJ´§•¸rŽlH[âã‹:\…’K\[°'¢@Ø¢C­€]Ÿ«VrU×Ê=öEèà£ÃDïû¯´ùÖÕÌŸêsí¯#èùVž«áxåÛ-â;^WÈ\OÌɱonn0¾d=äª\ÝT”‚lˆ{ó€¼0ÚT¹WWojò$ ð\{–l lbÕ¹.¶*qeÝKž„‰×ñÒáÊY²Ñ˜×Ó{Šyq—KΈÚ{ÈhzªX¯üPy8Å:F—« »òúh9ÔNþnï5ùÒ*¹Ä€+“,¯ñª è¨Wo'ÍéŧñýGH©\SßËy°†ÇeŽæãvQ°2Ÿ,+çEQÁse¼(*t.a#‡s5–r*WÍçª>š^¸
vt6מÍ•4™¿peM/\œ¥ùp‰'óg®úÃÉ<–kÎ-‡Í‹ó·•Ü:\[æ»uîªßFwÒ²ßmµwpœOm›.Ò,²Î-ï\·u›þà,•\×FÍÕI¿\¹r¶ûRãkT§×ćk¥äjÔûËÛ}©4fÜkbÄኔ\¹zß¿h£¶W]nj¯‰;×NÁU
UPn9Ár­4áËNÅ•r¸RW6|ŒŽ¹Î«Ëë51áp%C®wшﲫÝÊ-§h®š+Vqõó¡¸g¯r~ô'/ÙÅlp\ëQ®Ó¿^òHjÁZv,¥Šk£tEr<Џ¨ëdÞ7ÛnlÌ\—᯻?"éx@·‰+×à¢Zr—Ûj{‡àꤥÈ]|Ëíé71âp
.7.y<€
.7.y<€
£®[‘"K~­lâŽÃÕ¿(—óM
-áðì8—Ðpz®”ÃÕ¿¨7RNf™*Œj1\·Ùÿj®˜ÃÕ»¨ðTà¹b\Šã|f.ÅEußÁnßÊ#`ÂÃÄžk¨Šã|f.ÝÀT5_ŽÜp
×^­óŠã|®áE…ÒÁ&ŒJ[=Ì®9·r‡Çù\Ër¥#Bq­Q\µÚÕš8JqœÁ5¼HËU;â*”ñÆË- é5qxœÁ5¼(S:"×Ã%¢"ÎSÇù0\ƒ‹´\?Œê´áò;ô¼RqœÃ5¸¨[ývGסµœm”MçÃp
×^­óŠã|®áE…ÒÁ&ŒJ[=Ì®9·r‡Çù\Ër¥#Bq­Q\µÚÕš8JqœÁ5¼HËU;â*”ñÆË- é5qxœÁ5¼(S:"×Ã%¢"ÎSÇù0\ƒ‹´\?Œê´áò;ô¼RqœÃ5¸¨[ývGסµœm”MçÃp
.Òr?ŒjÕ£YU4ñ"Ú4®þE\-š+Uý6.5MìçCqõ/Òr¹ê^,ÕMìçCqõ/Òríùáa«68Íòþ ‰ýã|(®þEY/MõÊ•;ãŠK
W'T•šØ;·ãê]ÄçJ\ñ®óÛ‹_¾,{lÔMìçÃqõ.Ê;Š-qen¸:ù‡Ýxã¼ì‘ª›Ø;·ãê]4ˆ£*,WÚâæ)­Š«ó~(EO¢Må’/Ú÷#¢âÂùåªÇ¸äã|H.ÅÀn÷X®µW£‹ç¯AeNä’/ªúC%;s Ï\BsŠCqœÉ%_T÷$[DX®W;Ê.é"Ñ Í« ¸—|Q&°üÂeÎ=Üyä’Žóa¹ä‹
E2þW=/WÁá’.ªn»Ê·EÞÙ¹j—t‘è¶²¾Æ6ÓJ\‚Ã%_”ßö¿ž#Wé“«{œÍ%_T
@@ -360,11 +360,8 @@ endobj
%°ß{ZÀ‘›ì ù=Å¡­´e&=@~¯thG„â‚¥Âèo‘ßoXÀQã¸÷}ô•±mç˜Á8lc®Á9æ½Qæ#/Á9°Üè–ã‚s`™±Åš3‡}€²×ÀXcV@éK`3ËÚ¬Þ€ò9°ÊÜX@=€ÀXa6.@l`3°½9êT˜ËÍ" mœ£ „m®gƒú¡€S˜ „A:ઢ©€ìÚ„>G˜ ‡bH}fv_ï\bAB/0Ò
-Vè׋‘Ã]‡+_Ž V˜È+ A,0
-V裥ÈaÜ媗#ˆ(Â
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
@@ -1101,202 +1098,202 @@ xref
0000001786 00000 n
0000001860 00000 n
0000001939 00000 n
0000002259 00000 n
0000002342 00000 n
0000002419 00000 n
0000002501 00000 n
0000002586 00000 n
0000002645 00000 n
0000002697 00000 n
0000002782 00000 n
0000002834 00000 n
0000002918 00000 n
0000002949 00000 n
0000003053 00000 n
0000003157 00000 n
0000003261 00000 n
0000003365 00000 n
0000003469 00000 n
0000003521 00000 n
0000003626 00000 n
0000003730 00000 n
0000003761 00000 n
0000003812 00000 n
0000003897 00000 n
0000003921 00000 n
0000004026 00000 n
0000004130 00000 n
0000004161 00000 n
0000004217 00000 n
0000004302 00000 n
0000004352 00000 n
0000004437 00000 n
0000004468 00000 n
0000004521 00000 n
0000004606 00000 n
0000004662 00000 n
0000004747 00000 n
0000004806 00000 n
0000004890 00000 n
0000004928 00000 n
0000004980 00000 n
0000005065 00000 n
0000005089 00000 n
0000005193 00000 n
0000005298 00000 n
0000005403 00000 n
0000005508 00000 n
0000005613 00000 n
0000005718 00000 n
0000005822 00000 n
0000005927 00000 n
0000006032 00000 n
0000006137 00000 n
0000006242 00000 n
0000006347 00000 n
0000006452 00000 n
0000006557 00000 n
0000006662 00000 n
0000006766 00000 n
0000006871 00000 n
0000006976 00000 n
0000007081 00000 n
0000007186 00000 n
0000007291 00000 n
0000007396 00000 n
0000007501 00000 n
0000007605 00000 n
0000007710 00000 n
0000007815 00000 n
0000007920 00000 n
0000008025 00000 n
0000008130 00000 n
0000008235 00000 n
0000008340 00000 n
0000008445 00000 n
0000008550 00000 n
0000008655 00000 n
0000008760 00000 n
0000008865 00000 n
0000008970 00000 n
0000009075 00000 n
0000009180 00000 n
0000009285 00000 n
0000009390 00000 n
0000009494 00000 n
0000009597 00000 n
0000009700 00000 n
0000010025 00000 n
0000010130 00000 n
0000010235 00000 n
0000010340 00000 n
0000010444 00000 n
0000010549 00000 n
0000010654 00000 n
0000010760 00000 n
0000010865 00000 n
0000010970 00000 n
0000011075 00000 n
0000011180 00000 n
0000011285 00000 n
0000011390 00000 n
0000011495 00000 n
0000011600 00000 n
0000011705 00000 n
0000011810 00000 n
0000011916 00000 n
0000012022 00000 n
0000012128 00000 n
0000012234 00000 n
0000012339 00000 n
0000012444 00000 n
0000012640 00000 n
0000012674 00000 n
0000012708 00000 n
0000013674 00000 n
0000013723 00000 n
0000013772 00000 n
0000013821 00000 n
0000013870 00000 n
0000013919 00000 n
0000013968 00000 n
0000014017 00000 n
0000014066 00000 n
0000014115 00000 n
0000014164 00000 n
0000014213 00000 n
0000014262 00000 n
0000014311 00000 n
0000014360 00000 n
0000014409 00000 n
0000014458 00000 n
0000014507 00000 n
0000014556 00000 n
0000014605 00000 n
0000014654 00000 n
0000014703 00000 n
0000014752 00000 n
0000014801 00000 n
0000014850 00000 n
0000014899 00000 n
0000014948 00000 n
0000014997 00000 n
0000015046 00000 n
0000015095 00000 n
0000015144 00000 n
0000015193 00000 n
0000015242 00000 n
0000015291 00000 n
0000015340 00000 n
0000015389 00000 n
0000015438 00000 n
0000015487 00000 n
0000015536 00000 n
0000015585 00000 n
0000015634 00000 n
0000015683 00000 n
0000015732 00000 n
0000015781 00000 n
0000015830 00000 n
0000015879 00000 n
0000015928 00000 n
0000015977 00000 n
0000016026 00000 n
0000016075 00000 n
0000016124 00000 n
0000016173 00000 n
0000016222 00000 n
0000016271 00000 n
0000016320 00000 n
0000016369 00000 n
0000016418 00000 n
0000016467 00000 n
0000016516 00000 n
0000016565 00000 n
0000016614 00000 n
0000016663 00000 n
0000016712 00000 n
0000016761 00000 n
0000016810 00000 n
0000016859 00000 n
0000016908 00000 n
0000016957 00000 n
0000017006 00000 n
0000017411 00000 n
0000017565 00000 n
0000023912 00000 n
0000023934 00000 n
0000024029 00000 n
0000024131 00000 n
0000024151 00000 n
0000024298 00000 n
0000025202 00000 n
0000025223 00000 n
0000025417 00000 n
0000026540 00000 n
0000026562 00000 n
0000002025 00000 n
0000002103 00000 n
0000002180 00000 n
0000002259 00000 n
0000002342 00000 n
0000002419 00000 n
0000002501 00000 n
0000002586 00000 n
0000002645 00000 n
0000002697 00000 n
0000002782 00000 n
0000002834 00000 n
0000002918 00000 n
0000002949 00000 n
0000003053 00000 n
0000003157 00000 n
0000003261 00000 n
0000003365 00000 n
0000003469 00000 n
0000003521 00000 n
0000003626 00000 n
0000003730 00000 n
0000003761 00000 n
0000003812 00000 n
0000003897 00000 n
0000003921 00000 n
0000004026 00000 n
0000004130 00000 n
0000004161 00000 n
0000004217 00000 n
0000004302 00000 n
0000004352 00000 n
0000004437 00000 n
0000004468 00000 n
0000004521 00000 n
0000004606 00000 n
0000004662 00000 n
0000004747 00000 n
0000004806 00000 n
0000004890 00000 n
0000004928 00000 n
0000004980 00000 n
0000005065 00000 n
0000005089 00000 n
0000005193 00000 n
0000005298 00000 n
0000005403 00000 n
0000005508 00000 n
0000005613 00000 n
0000005718 00000 n
0000005822 00000 n
0000005927 00000 n
0000006032 00000 n
0000006137 00000 n
0000006242 00000 n
0000006347 00000 n
0000006452 00000 n
0000006557 00000 n
0000006662 00000 n
0000006766 00000 n
0000006871 00000 n
0000006976 00000 n
0000007081 00000 n
0000007186 00000 n
0000007291 00000 n
0000007396 00000 n
0000007501 00000 n
0000007605 00000 n
0000007710 00000 n
0000007815 00000 n
0000007920 00000 n
0000008025 00000 n
0000008130 00000 n
0000008235 00000 n
0000008340 00000 n
0000008445 00000 n
0000008550 00000 n
0000008655 00000 n
0000008760 00000 n
0000008865 00000 n
0000008970 00000 n
0000009075 00000 n
0000009180 00000 n
0000009285 00000 n
0000009390 00000 n
0000009494 00000 n
0000009597 00000 n
0000009700 00000 n
0000010025 00000 n
0000010130 00000 n
0000010235 00000 n
0000010340 00000 n
0000010444 00000 n
0000010549 00000 n
0000010654 00000 n
0000010760 00000 n
0000010865 00000 n
0000010970 00000 n
0000011075 00000 n
0000011180 00000 n
0000011285 00000 n
0000011390 00000 n
0000011495 00000 n
0000011600 00000 n
0000011705 00000 n
0000011810 00000 n
0000011916 00000 n
0000012022 00000 n
0000012128 00000 n
0000012234 00000 n
0000012339 00000 n
0000012444 00000 n
0000012640 00000 n
0000012674 00000 n
0000012708 00000 n
0000013674 00000 n
0000013723 00000 n
0000013772 00000 n
0000013821 00000 n
0000013870 00000 n
0000013919 00000 n
0000013968 00000 n
0000014017 00000 n
0000014066 00000 n
0000014115 00000 n
0000014164 00000 n
0000014213 00000 n
0000014262 00000 n
0000014311 00000 n
0000014360 00000 n
0000014409 00000 n
0000014458 00000 n
0000014507 00000 n
0000014556 00000 n
0000014605 00000 n
0000014654 00000 n
0000014703 00000 n
0000014752 00000 n
0000014801 00000 n
0000014850 00000 n
0000014899 00000 n
0000014948 00000 n
0000014997 00000 n
0000015046 00000 n
0000015095 00000 n
0000015144 00000 n
0000015193 00000 n
0000015242 00000 n
0000015291 00000 n
0000015340 00000 n
0000015389 00000 n
0000015438 00000 n
0000015487 00000 n
0000015536 00000 n
0000015585 00000 n
0000015634 00000 n
0000015683 00000 n
0000015732 00000 n
0000015781 00000 n
0000015830 00000 n
0000015879 00000 n
0000015928 00000 n
0000015977 00000 n
0000016026 00000 n
0000016075 00000 n
0000016124 00000 n
0000016173 00000 n
0000016222 00000 n
0000016271 00000 n
0000016320 00000 n
0000016369 00000 n
0000016418 00000 n
0000016467 00000 n
0000016516 00000 n
0000016565 00000 n
0000016614 00000 n
0000016663 00000 n
0000016712 00000 n
0000016761 00000 n
0000016810 00000 n
0000016859 00000 n
0000016908 00000 n
0000016957 00000 n
0000017006 00000 n
0000017411 00000 n
0000017565 00000 n
0000023915 00000 n
0000023937 00000 n
0000024032 00000 n
0000024134 00000 n
0000024154 00000 n
0000024301 00000 n
0000025205 00000 n
0000025226 00000 n
0000025420 00000 n
0000027130 00000 n
0000026543 00000 n
0000026565 00000 n
0000027265 00000 n
0000026707 00000 n
0000027133 00000 n
+2 -2
Ver Arquivo
@@ -2,7 +2,7 @@
<HEAD>
<META NAME="Description" CONTENT="Common UNIX Printing System Software Users Manual">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.1">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Users Manual</TITLE>
</HEAD>
@@ -11,7 +11,7 @@
<H1 ALIGN="RIGHT">Preface</H1>
<P>This software users manual describes how to use the Common UNIX Printing
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.1.
<EMBED SRC="system-overview.shtml">
+1 -1
Ver Arquivo
@@ -117,7 +117,7 @@ following sections:</P>
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
</UL>
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
<P>The following non-CUPS documents are referenced by this document: </P>
+7 -5
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000710174146Z)/Title( CUPS Software Version Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000721160150Z)/Title( CUPS Software Version Description)/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 128/Euro 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/Courier-Bold/Encoding 2 0 R>>endobj
@@ -229,9 +229,11 @@ endobj
110 0 obj<</Length 111 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
á
äHendstream
endobj
111 0 obj
31
endobj
112 0 obj<</Type/Page/Parent 105 0 R/Contents 113 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>/Annots 20 0 R>>endobj
113 0 obj<</Length 114 0 R/Filter/FlateDecode>>stream
@@ -538,7 +540,7 @@ xref
0000018547 00000 n
0000018734 00000 n
0000018755 00000 n
0000020446 00000 n
0000018910 00000 n
0000020311 00000 n
0000020333 00000 n
0000020446 00000 n
+1 -1
Ver Arquivo
@@ -69,7 +69,7 @@ install:
$(INSTALL_DATA) raster.h $(INCLUDEDIR)/cups
-$(MKDIR) $(LIBDIR)
$(CHMOD) ugo+rx $(LIBDIR)
$(INSTALL_DATA) $(LIBCUPSIMAGE) $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR)
-if test $(LIBCUPSIMAGE) != "libcupsimage.a" -a $(LIBCUPSIMAGE) != "libcupsimage.la"; then \
$(RM) `basename $(LIBCUPSIMAGE) .2`; \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .2`; \
+16 -6
Ver Arquivo
@@ -54,6 +54,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
TIFF *tif; /* TIFF file */
uint32 width, height; /* Size of image */
uint16 photometric, /* Colorspace */
compression, /* Type of compression */
orientation, /* Orientation */
resunit, /* Units for resolution */
samples, /* Number of samples/pixel */
@@ -101,6 +102,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
if (!TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width) ||
!TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height) ||
!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric) ||
!TIFFGetField(tif, TIFFTAG_COMPRESSION, &compression) ||
!TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &samples) ||
!TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bits))
{
@@ -139,6 +141,11 @@ ImageReadTIFF(image_t *img, /* IO - Image */
img->xppi = 128;
img->yppi = 128;
}
fprintf(stderr, "DEBUG: TIFF resolution = %fx%f, units=%d\n",
xres, yres, resunit);
fprintf(stderr, "DEBUG: Stored resolution = %dx%d PPI\n",
img->xppi, img->yppi);
}
/*
@@ -241,20 +248,23 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* each which must be handled separately...
*/
fprintf(stderr, "DEBUG: photometric = %d\n", photometric);
fprintf(stderr, "DEBUG: compression = %d\n", compression);
switch (photometric)
{
case PHOTOMETRIC_MINISWHITE :
case PHOTOMETRIC_MINISBLACK :
if (photometric == PHOTOMETRIC_MINISBLACK)
{
zero = 0;
one = 255;
}
else
if (photometric == PHOTOMETRIC_MINISWHITE)
{
zero = 255;
one = 0;
}
else
{
zero = 0;
one = 255;
}
if (orientation < ORIENTATION_LEFTTOP)
{
+91 -49
Ver Arquivo
@@ -73,6 +73,7 @@ main(int argc, /* I - Number of command-line arguments */
ysize,
xsize2,
ysize2;
float aspect; /* Aspect ratio */
int xpages, /* # x pages */
ypages, /* # y pages */
xpage, /* Current x page */
@@ -93,7 +94,7 @@ main(int argc, /* I - Number of command-line arguments */
float g; /* Gamma correction value */
float b; /* Brightness factor */
float zoom; /* Zoom facter */
int ppi; /* Pixels-per-inch */
int xppi, yppi; /* Pixels-per-inch */
int hue, sat; /* Hue and saturation adjustment */
int realcopies; /* Real copies being printed */
float left, top; /* Left and top of image */
@@ -110,7 +111,8 @@ main(int argc, /* I - Number of command-line arguments */
*/
zoom = 0.0;
ppi = 0;
xppi = 0;
yppi = 0;
hue = 0;
sat = 100;
g = 1.0;
@@ -151,7 +153,8 @@ main(int argc, /* I - Number of command-line arguments */
zoom = atoi(val) * 0.01;
if ((val = cupsGetOption("ppi", num_options, options)) != NULL)
ppi = atoi(val);
if (sscanf(val, "%dx%d", &xppi, &yppi) < 2)
yppi = xppi;
if ((val = cupsGetOption("position", num_options, options)) != NULL)
{
@@ -227,46 +230,56 @@ main(int argc, /* I - Number of command-line arguments */
* Scale as necessary...
*/
if (zoom == 0.0 && ppi == 0)
ppi = img->xppi;
xprint = (PageRight - PageLeft) / 72.0;
yprint = (PageTop - PageBottom) / 72.0;
if (ppi > 0)
if (zoom == 0.0 && xppi == 0)
{
xppi = img->xppi;
yppi = img->yppi;
}
if (yppi == 0)
yppi = xppi;
if (xppi > 0)
{
/*
* Scale the image as neccesary to match the desired pixels-per-inch.
*/
xinches = (float)img->xsize / (float)ppi;
yinches = (float)img->ysize / (float)ppi;
xinches = (float)img->xsize / (float)xppi;
yinches = (float)img->ysize / (float)yppi;
/*
* Rotate the image if it will fit landscape but not portrait...
*/
if ((xinches > xprint || yinches > yprint) &&
xinches <= yprint && yinches <= xprint)
if (cupsGetOption("orientation", num_options, options) == NULL &&
cupsGetOption("landscape", num_options, options) == NULL)
{
/*
* Rotate the image as needed...
* Rotate the image if it will fit landscape but not portrait...
*/
Orientation = (Orientation + 1) & 3;
xsize = yprint;
yprint = xprint;
xprint = xsize;
if ((xinches > xprint || yinches > yprint) &&
xinches <= yprint && yinches <= xprint)
{
/*
* Rotate the image as needed...
*/
xsize = PageLeft;
PageLeft = PageBottom;
PageBottom = PageWidth - PageRight;
PageRight = PageTop;
PageTop = PageLength - xsize;
Orientation = (Orientation + 1) & 3;
xsize = yprint;
yprint = xprint;
xprint = xsize;
xsize = PageWidth;
PageWidth = PageLength;
PageLength = xsize;
xsize = PageLeft;
PageLeft = PageBottom;
PageBottom = PageWidth - PageRight;
PageRight = PageTop;
PageTop = PageLength - xsize;
xsize = PageWidth;
PageWidth = PageLength;
PageLength = xsize;
}
}
}
else
@@ -275,36 +288,75 @@ main(int argc, /* I - Number of command-line arguments */
* Scale percentage of page size...
*/
aspect = (float)img->yppi / (float)img->xppi;
fprintf(stderr, "DEBUG: img->xppi = %d, img->yppi = %d, aspect = %f\n",
img->xppi, img->yppi, aspect);
xsize = xprint * zoom;
ysize = xsize * img->ysize / img->xsize;
ysize = xsize * img->ysize / img->xsize / aspect;
if (ysize > (yprint * zoom))
{
ysize = yprint * zoom;
xsize = ysize * img->xsize / img->ysize;
xsize = ysize * img->xsize * aspect / img->ysize;
}
xsize2 = yprint * zoom;
ysize2 = xsize2 * img->ysize / img->xsize;
ysize2 = xsize2 * img->ysize / img->xsize / aspect;
if (ysize2 > (xprint * zoom))
{
ysize2 = xprint * zoom;
xsize2 = ysize2 * img->xsize / img->ysize;
xsize2 = ysize2 * img->xsize * aspect / img->ysize;
}
/*
* Choose the rotation with the largest area, but prefer
* portrait if they are equal...
*/
fprintf(stderr, "DEBUG: xsize = %.0f, ysize = %.0f\n", xsize, ysize);
fprintf(stderr, "DEBUG: xsize2 = %.0f, ysize2 = %.0f\n", xsize2, ysize2);
if ((xsize * ysize) < (xsize2 * xsize2))
if (cupsGetOption("orientation", num_options, options) == NULL &&
cupsGetOption("landscape", num_options, options) == NULL)
{
/*
* Do landscape orientation...
* Choose the rotation with the largest area, but prefer
* portrait if they are equal...
*/
Orientation = 1;
if ((xsize * ysize) < (xsize2 * xsize2))
{
/*
* Do landscape orientation...
*/
Orientation = 1;
xinches = xsize2;
yinches = ysize2;
xprint = (PageTop - PageBottom) / 72.0;
yprint = (PageRight - PageLeft) / 72.0;
xsize = PageLeft;
PageLeft = PageBottom;
PageBottom = PageWidth - PageRight;
PageRight = PageTop;
PageTop = PageLength - xsize;
xsize = PageWidth;
PageWidth = PageLength;
PageLength = xsize;
}
else
{
/*
* Do portrait orientation...
*/
Orientation = 0;
xinches = xsize;
yinches = ysize;
}
}
else if (Orientation & 1)
{
xinches = xsize2;
yinches = ysize2;
xprint = (PageTop - PageBottom) / 72.0;
@@ -320,16 +372,6 @@ main(int argc, /* I - Number of command-line arguments */
PageWidth = PageLength;
PageLength = xsize;
}
else
{
/*
* Do portrait orientation...
*/
Orientation = 0;
xinches = xsize;
yinches = ysize;
}
}
xpages = ceil(xinches / xprint);
+83 -40
Ver Arquivo
@@ -155,6 +155,7 @@ main(int argc, /* I - Number of command-line arguments */
ysize,
xsize2,
ysize2;
float aspect; /* Aspect ratio */
int xpages, /* # x pages */
ypages, /* # y pages */
xpage, /* Current x page */
@@ -180,7 +181,7 @@ main(int argc, /* I - Number of command-line arguments */
float g; /* Gamma correction value */
float b; /* Brightness factor */
float zoom; /* Zoom facter */
int ppi; /* Pixels-per-inch */
int xppi, yppi; /* Pixels-per-inch */
int hue, sat; /* Hue and saturation adjustment */
izoom_t *z; /* ImageZoom buffer */
int primary, /* Primary image colorspace */
@@ -213,7 +214,8 @@ main(int argc, /* I - Number of command-line arguments */
*/
zoom = 0.0;
ppi = 0;
xppi = 0;
yppi = 0;
hue = 0;
sat = 100;
g = 1.0;
@@ -254,7 +256,8 @@ main(int argc, /* I - Number of command-line arguments */
zoom = atoi(val) * 0.01;
if ((val = cupsGetOption("ppi", num_options, options)) != NULL)
ppi = atoi(val);
if (sscanf(val, "%dx%d", &xppi, &yppi) < 2)
yppi = xppi;
if ((val = cupsGetOption("position", num_options, options)) != NULL)
{
@@ -320,7 +323,7 @@ main(int argc, /* I - Number of command-line arguments */
header.HWResolution[1] = 100;
header.cupsBitsPerColor = 1;
header.cupsColorOrder = CUPS_ORDER_CHUNKED;
header.cupsColorSpace = CUPS_CSPACE_RGB;
header.cupsColorSpace = CUPS_CSPACE_K;
if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
exec_choice(&header, choice);
@@ -525,10 +528,16 @@ main(int argc, /* I - Number of command-line arguments */
* Scale as necessary...
*/
if (zoom == 0.0 && ppi == 0)
ppi = img->xppi;
if (zoom == 0.0 && xppi == 0)
{
xppi = img->xppi;
yppi = img->yppi;
}
if (ppi > 0)
if (yppi == 0)
yppi = xppi;
if (xppi > 0)
{
/*
* Scale the image as neccesary to match the desired pixels-per-inch.
@@ -545,24 +554,28 @@ main(int argc, /* I - Number of command-line arguments */
yprint = (PageTop - PageBottom) / 72.0;
}
xinches = (float)img->xsize / (float)ppi;
yinches = (float)img->ysize / (float)ppi;
xinches = (float)img->xsize / (float)xppi;
yinches = (float)img->ysize / (float)yppi;
/*
* Rotate the image if it will fit landscape but not portrait...
*/
if ((xinches > xprint || yinches > yprint) &&
xinches <= yprint && yinches <= xprint)
if (cupsGetOption("orientation", num_options, options) == NULL &&
cupsGetOption("landscape", num_options, options) == NULL)
{
/*
* Rotate the image as needed...
* Rotate the image if it will fit landscape but not portrait...
*/
Orientation = (Orientation + 1) & 3;
xsize = yprint;
yprint = xprint;
xprint = xsize;
if ((xinches > xprint || yinches > yprint) &&
xinches <= yprint && yinches <= xprint)
{
/*
* Rotate the image as needed...
*/
Orientation = (Orientation + 1) & 3;
xsize = yprint;
yprint = xprint;
xprint = xsize;
}
}
}
else
@@ -573,57 +586,87 @@ main(int argc, /* I - Number of command-line arguments */
xprint = (PageRight - PageLeft) / 72.0;
yprint = (PageTop - PageBottom) / 72.0;
aspect = (float)img->yppi / (float)img->xppi;
fprintf(stderr, "DEBUG: img->xppi = %d, img->yppi = %d, aspect = %f\n",
img->xppi, img->yppi, aspect);
xsize = xprint * zoom;
ysize = xsize * img->ysize / img->xsize;
ysize = xsize * img->ysize / img->xsize / aspect;
if (ysize > (yprint * zoom))
{
ysize = yprint * zoom;
xsize = ysize * img->xsize / img->ysize;
xsize = ysize * img->xsize * aspect / img->ysize;
}
xsize2 = yprint * zoom;
ysize2 = xsize2 * img->ysize / img->xsize;
ysize2 = xsize2 * img->ysize / img->xsize / aspect;
if (ysize2 > (xprint * zoom))
{
ysize2 = xprint * zoom;
xsize2 = ysize2 * img->xsize / img->ysize;
xsize2 = ysize2 * img->xsize * aspect / img->ysize;
}
/*
* Choose the rotation with the largest area, but prefer
* portrait if they are equal...
*/
fprintf(stderr, "DEBUG: xsize = %.0f, ysize = %.0f\n", xsize, ysize);
fprintf(stderr, "DEBUG: xsize2 = %.0f, ysize2 = %.0f\n", xsize2, ysize2);
if ((xsize * ysize) < (xsize2 * xsize2))
if (cupsGetOption("orientation", num_options, options) == NULL &&
cupsGetOption("landscape", num_options, options) == NULL)
{
/*
* Do landscape orientation...
* Choose the rotation with the largest area, but prefer
* portrait if they are equal...
*/
Orientation = 1;
if ((xsize * ysize) < (xsize2 * xsize2))
{
/*
* Do landscape orientation...
*/
Orientation = 1;
xinches = xsize2;
yinches = ysize2;
xprint = (PageTop - PageBottom) / 72.0;
yprint = (PageRight - PageLeft) / 72.0;
}
else
{
/*
* Do portrait orientation...
*/
Orientation = 0;
xinches = xsize;
yinches = ysize;
}
}
else if (Orientation & 1)
{
xinches = xsize2;
yinches = ysize2;
xprint = (PageTop - PageBottom) / 72.0;
yprint = (PageRight - PageLeft) / 72.0;
}
else
{
/*
* Do portrait orientation...
*/
Orientation = 0;
xinches = xsize;
yinches = ysize;
xsize = PageLeft;
PageLeft = PageBottom;
PageBottom = PageWidth - PageRight;
PageRight = PageTop;
PageTop = PageLength - xsize;
xsize = PageWidth;
PageWidth = PageLength;
PageLength = xsize;
}
}
xpages = ceil(xinches / xprint);
ypages = ceil(yinches / yprint);
fprintf(stderr, "DEBUG: xpages = %d, ypages = %d\n", xpages, ypages);
/*
* Compute the bitmap size...
*/
+29 -2
Ver Arquivo
@@ -101,6 +101,7 @@ main(int argc, /* I - Number of command-line arguments */
int page_count; /* Page count for NUp */
int subpage; /* Sub-page number */
int copy; /* Current copy */
int saweof; /* Did we see a %%EOF tag? */
/*
@@ -260,6 +261,8 @@ main(int argc, /* I - Number of command-line arguments */
puts(line);
saweof = 0;
if (ppd != NULL && ppd->patches != NULL)
puts(ppd->patches);
@@ -307,7 +310,11 @@ main(int argc, /* I - Number of command-line arguments */
tbytes = atoi(strchr(line, ':') + 1);
while (tbytes > 0)
{
nbytes = fread(line, 1, sizeof(line), fp);
if (tbytes > sizeof(line))
nbytes = fread(line, 1, sizeof(line), fp);
else
nbytes = fread(line, 1, tbytes, fp);
fwrite(line, 1, nbytes, stdout);
tbytes -= nbytes;
}
@@ -326,6 +333,8 @@ main(int argc, /* I - Number of command-line arguments */
level ++;
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strcmp(line, "%%EOF") == 0 && level == 0)
saweof = 1;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
{
if (sscanf(line, "%*s%*s%d", &number) == 1)
@@ -379,7 +388,10 @@ main(int argc, /* I - Number of command-line arguments */
tbytes = atoi(strchr(line, ':') + 1);
while (tbytes > 0)
{
nbytes = fread(line, 1, sizeof(line), fp);
if (tbytes > sizeof(line))
nbytes = fread(line, 1, sizeof(line), fp);
else
nbytes = fread(line, 1, tbytes, fp);
if (!sloworder)
fwrite(line, 1, nbytes, stdout);
@@ -391,7 +403,14 @@ main(int argc, /* I - Number of command-line arguments */
}
}
else if (strcmp(line, "%%Trailer") == 0 && level == 0)
{
/*
* Assume that a file with a %%Trailer will likely also have %%EOF...
*/
saweof = 1;
break;
}
else
{
if (!sloworder)
@@ -539,10 +558,18 @@ main(int argc, /* I - Number of command-line arguments */
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
rewind(temp);
copy_bytes(temp, 0);
Copies --;
}
}
}
/*
* Send %%EOF if needed...
*/
if (!saweof)
puts("%%EOF");
/*
* End the job with the appropriate JCL command or CTRL-D otherwise.
*/
+6 -5
Ver Arquivo
@@ -148,7 +148,7 @@ StartPage(cups_page_header_t *header) /* I - Page header */
}
printf("\033&l%dP", header->PageSize[1] / 12);/* Set page length */
printf("\033&l3E"); /* Set top margin to 1/2 inch */
printf("\033&l0E"); /* Set top margin to 0 */
printf("\033&l%dX", header->NumCopies); /* Set number copies */
@@ -169,6 +169,10 @@ StartPage(cups_page_header_t *header) /* I - Page header */
* Set graphics mode...
*/
printf("\033*t%dR", header->HWResolution[0]); /* Set resolution */
printf("\033*r%dS", header->cupsWidth); /* Set width */
printf("\033*r%dT", header->cupsHeight); /* Set height */
if (header->cupsColorSpace == CUPS_CSPACE_KCMY)
{
NumPlanes = 4;
@@ -182,10 +186,7 @@ StartPage(cups_page_header_t *header) /* I - Page header */
else
NumPlanes = 1; /* Black&white graphics */
printf("\033*t%dR", header->HWResolution[0]); /* Set resolution */
printf("\033*r%dS", header->cupsWidth); /* Set width */
printf("\033*r%dT", header->cupsHeight); /* Set height */
printf("\033&a0H\033&a0V"); /* Set top-of-page */
printf("\033&a0H\033&a330V"); /* Set top-of-page */
printf("\033*r1A"); /* Start graphics */
if (header->cupsCompression)
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: accept.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: accept.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" accept/reject man page for the Common UNIX Printing System (CUPS).
.\"
@@ -49,9 +49,10 @@ from the System V versions which require the root user to execute these
commands.
.SH SEE ALSO
cancel(1), disable(8), enable(8), lp(1), lpadmin(8), lpstat(1),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: accept.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: accept.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: backend.man 1180 2000-06-28 16:50:04Z mike $"
.\" "$Id: backend.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" backend man page for the Common UNIX Printing System (CUPS).
.\"
@@ -100,9 +100,10 @@ The user executing the backend (typically lp).
cupsd(8), filter(1)
CUPS Interface Design Description,
CUPS Software Administrators Manual,
CUPS Software Programmers Manual
CUPS Software Programmers Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: backend.man 1180 2000-06-28 16:50:04Z mike $".
.\" End of "$Id: backend.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: classes.conf.man 1151 2000-06-22 18:21:40Z mike $"
.\" "$Id: classes.conf.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" classes.conf man page for the Common UNIX Printing System (CUPS).
.\"
@@ -63,9 +63,10 @@ StateMessage
Specifies the message associated with the state.
.SH SEE ALSO
cupsd(8), cupsd.conf(5), mime.convs(5), mime.types(5), printers.conf(5),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: classes.conf.man 1151 2000-06-22 18:21:40Z mike $".
.\" End of "$Id: classes.conf.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: cups-lpd.man 1061 2000-05-10 21:07:04Z mike $"
.\" "$Id: cups-lpd.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" cups-lpd man page for the Common UNIX Printing System (CUPS).
.\"
@@ -49,9 +49,10 @@ LPD and IPP Protocols. Since many LPD implementations stray from this
definition, remote status reporting to LPD clients may be unreliable.
.SH SEE ALSO
inetd(8),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: cups-lpd.man 1061 2000-05-10 21:07:04Z mike $".
.\" End of "$Id: cups-lpd.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: cups-polld.man 1061 2000-05-10 21:07:04Z mike $"
.\" "$Id: cups-polld.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" cups-polld man page for the Common UNIX Printing System (CUPS).
.\"
@@ -37,9 +37,10 @@ This program is started automatically by \fBcupsd\fR for each
BrowsePoll directive found in the \fBcupsd.conf\fR file.
.SH SEE ALSO
cupsd.conf(5),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: cups-polld.man 1061 2000-05-10 21:07:04Z mike $".
.\" End of "$Id: cups-polld.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: cupsd.conf.man 1170 2000-06-27 21:11:16Z mike $"
.\" "$Id: cupsd.conf.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" cupsd.conf man page for the Common UNIX Printing System (CUPS).
.\"
@@ -237,9 +237,10 @@ User
Specifies the user name or ID that is used when running external programs.
.SH SEE ALSO
classes.conf(5), cupsd(8), mime.convs(5), mime.types(5), printers.conf(5),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: cupsd.conf.man 1170 2000-06-27 21:11:16Z mike $".
.\" End of "$Id: cupsd.conf.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: cupsd.man 1151 2000-06-22 18:21:40Z mike $"
.\" "$Id: cupsd.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" cupsd man page for the Common UNIX Printing System (CUPS).
.\"
@@ -42,9 +42,10 @@ backend(1), classes.conf(5), cupsd.conf(5), filter(1), mime.convs(5),
mime.types(5), printers.conf(5),
CUPS Implementation of IPP,
CUPS Interface Design Description,
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: cupsd.man 1151 2000-06-22 18:21:40Z mike $".
.\" End of "$Id: cupsd.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: enable.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: enable.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" enable/disable man page for the Common UNIX Printing System (CUPS).
.\"
@@ -55,10 +55,11 @@ from the System V versions which require the root user to execute these
commands.
.SH SEE ALSO
accept(8), cancel(1), lp(1), lpadmin(8), lpstat(1), reject(8),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: enable.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: enable.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: filter.man 1180 2000-06-28 16:50:04Z mike $"
.\" "$Id: filter.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" filter man page for the Common UNIX Printing System (CUPS).
.\"
@@ -107,9 +107,10 @@ only filter. Typically the interface script will be provided via the
backend(1), cupsd(8),
CUPS Interface Design Description,
CUPS Software Administrators Manual,
CUPS Software Programmers Manual
CUPS Software Programmers Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: filter.man 1180 2000-06-28 16:50:04Z mike $".
.\" End of "$Id: filter.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lp.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: lp.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lp/cancel man page for the Common UNIX Printing System (CUPS).
.\"
@@ -103,9 +103,10 @@ any printable character except SPACE and TAB. Also, printer and class names are
The "m" option is not functional in CUPS 1.0.
.SH SEE ALSO
lpstat(1),
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lp.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: lp.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpadmin.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: lpadmin.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpadmin man page for the Common UNIX Printing System (CUPS).
.\"
@@ -116,9 +116,10 @@ The CUPS version of \fIlpadmin\fR does not support all of the System V or
Solaris printing system configuration options.
.SH SEE ALSO
accept(8), cancel(1), disable(8), enable(8), lp(1), lpstat(1), reject(8),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpadmin.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: lpadmin.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpc.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: lpc.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpc man page for the Common UNIX Printing System (CUPS).
.\"
@@ -71,9 +71,10 @@ commands.
.SH SEE ALSO
accept(8), cancel(1), disable(8), enable(8), lp(1), lpr(1), lprm(1),
lpstat(1), reject(8),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpc.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: lpc.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpinfo.man 1062 2000-05-11 12:58:53Z mike $"
.\" "$Id: lpinfo.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpinfo man page for the Common UNIX Printing System (CUPS).
.\"
@@ -47,9 +47,10 @@ Shows the available printer devices on the system.
The \fBlpinfo\fR command is unique to CUPS.
.SH SEE ALSO
lpadmin(8),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpinfo.man 1062 2000-05-11 12:58:53Z mike $".
.\" End of "$Id: lpinfo.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpmove.man 1062 2000-05-11 12:58:53Z mike $"
.\" "$Id: lpmove.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpmove man page for the Common UNIX Printing System (CUPS).
.\"
@@ -41,9 +41,10 @@ The System V version of this command also allows moving of all jobs from one
queue to another. This functionality is currently not supported by CUPS.
.SH SEE ALSO
cancel(1), lp(1),
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpmove.man 1062 2000-05-11 12:58:53Z mike $".
.\" End of "$Id: lpmove.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpoptions.man 1062 2000-05-11 12:58:53Z mike $"
.\" "$Id: lpoptions.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpoptions man page for the Common UNIX Printing System (CUPS).
.\"
@@ -90,9 +90,10 @@ and \fBlpr(1)\fR commands when submitting jobs.
The \fBlpoptions\fR command is unique to CUPS.
.SH SEE ALSO
cancel(1), lp(1),
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpoptions.man 1062 2000-05-11 12:58:53Z mike $".
.\" End of "$Id: lpoptions.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpq.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: lpq.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpq man page for the Common UNIX Printing System (CUPS).
.\"
@@ -44,9 +44,10 @@ The \fI-l\fR option requests a more verbose reporting format.
.SH SEE ALSO
cancel(1), lp(1), lpr(1), lprm(1), lpstat(1)
.br
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpq.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: lpq.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpr.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: lpr.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpr man page for the Common UNIX Printing System (CUPS).
.\"
@@ -88,9 +88,10 @@ The "c", "d", "f", "g", "i", "m", "n", "t", "v", and "w" options are not
supported by CUPS and will produce a warning message if used.
.SH SEE ALSO
cancel(1), lp(1), lpstat(1),
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpr.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: lpr.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lprm.man 911 2000-02-23 03:17:06Z mike $"
.\" "$Id: lprm.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lprm man page for the Common UNIX Printing System (CUPS).
.\"
@@ -43,9 +43,10 @@ The CUPS version of \fIlprm\fR is compatible with the standard Berkeley
\fIlprm\fR command.
.SH SEE ALSO
cancel(1), lp(1), lpstat(1), lpr(1),
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lprm.man 911 2000-02-23 03:17:06Z mike $".
.\" End of "$Id: lprm.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpstat.man 1044 2000-05-01 21:02:06Z mike $"
.\" "$Id: lpstat.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lpstat man page for the Common UNIX Printing System (CUPS).
.\"
@@ -117,9 +117,10 @@ The "-h" option is not a standard System V option.
The Solaris "-f", "-P", and "-S" options are silently ignored.
.SH SEE ALSO
cancel(1), lp(1),
CUPS Software Users Manual
CUPS Software Users Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpstat.man 1044 2000-05-01 21:02:06Z mike $".
.\" End of "$Id: lpstat.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: mime.convs.man 1151 2000-06-22 18:21:40Z mike $"
.\" "$Id: mime.convs.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" mime.convs man page for the Common UNIX Printing System (CUPS).
.\"
@@ -45,9 +45,10 @@ application/postscript application/vnd.cups-raster 50 pstoraster
.fi
.SH SEE ALSO
classes.conf(5), cupsd(8), cupsd.conf(5), mime.types(5), printers.conf(5),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: mime.convs.man 1151 2000-06-22 18:21:40Z mike $".
.\" End of "$Id: mime.convs.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: mime.types.man 1151 2000-06-22 18:21:40Z mike $"
.\" "$Id: mime.types.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" mime.types man page for the Common UNIX Printing System (CUPS).
.\"
@@ -89,9 +89,10 @@ containing whitespace and angle brackets (<>) for hexadecimal
strings.
.SH SEE ALSO
classes.conf(5), cupsd(8), cupsd.conf(5), mime.convs(5), printers.conf(5),
CUPS Software Administrators Manual
CUPS Software Administrators Manual,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: mime.types.man 1151 2000-06-22 18:21:40Z mike $".
.\" End of "$Id: mime.types.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+4 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: printers.conf.man 1151 2000-06-22 18:21:40Z mike $"
.\" "$Id: printers.conf.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" printers.conf man page for the Common UNIX Printing System (CUPS).
.\"
@@ -64,9 +64,10 @@ Specifies the message associated with the state.
.SH SEE ALSO
classes.conf(5), cupsd(8), cupsd.conf(5), mime.convs(5), mime.types(5),
CUPS Software Administrators Manual,
CUPS Interface Design Description
CUPS Interface Design Description,
http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: printers.conf.man 1151 2000-06-22 18:21:40Z mike $".
.\" End of "$Id: printers.conf.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+2 -1
Ver Arquivo
@@ -54,6 +54,7 @@
*UIConstraints: *PageSize A4 *InputSlot Envelope
*UIConstraints: *PageSize A5 *InputSlot Envelope
*UIConstraints: *PageSize B5 *InputSlot Envelope
*UIConstraints: *Resolution 600dpi *ColorModel CMYK
*OpenUI *PageSize/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageSize
@@ -144,7 +145,7 @@
*DefaultResolution: 300dpi
*Resolution 150dpi/150 DPI: "<</HWResolution[150 150]>>setpagedevice"
*Resolution 300dpi/300 DPI: "<</HWResolution[300 300]>>setpagedevice"
*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]>>setpagedevice"
*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]/cupsColorSpace 3>>setpagedevice"
*CloseUI: *Resolution
*OpenUI *ColorModel/Output Mode: PickOne
+5 -6
Ver Arquivo
@@ -342,12 +342,11 @@ DFILES = Fontmap \
gs_cmap.ps gs_cmdl.ps gs_dbt_e.ps gs_diskf.ps \
gs_dpnxt.ps gs_dps1.ps gs_dps2.ps gs_dps.ps gs_epsf.ps \
gs_fform.ps gs_fonts.ps gs_init.ps gs_iso_e.ps \
gs_kanji.ps gs_ksb_e.ps gs_lev2.ps \
gs_ll3.ps gs_mex_e.ps gs_mro_e.ps \
gs_pdf_e.ps gs_pfile.ps gs_res.ps gs_setpd.ps \
gs_statd.ps gs_std_e.ps gs_sym_e.ps gs_ttf.ps \
gs_typ32.ps gs_typ42.ps gs_type1.ps gs_wan_e.ps \
gs_wl1_e.ps gs_wl2_e.ps gs_wl5_e.ps
gs_kanji.ps gs_ksb_e.ps gs_lev2.ps gs_ll3.ps \
gs_mex_e.ps gs_mro_e.ps gs_pfile.ps gs_res.ps \
gs_setpd.ps gs_statd.ps gs_std_e.ps gs_sym_e.ps \
gs_ttf.ps gs_typ32.ps gs_typ42.ps gs_type1.ps \
gs_wan_e.ps gs_wl1_e.ps gs_wl2_e.ps gs_wl5_e.ps
#
+26 -3
Ver Arquivo
@@ -35,6 +35,7 @@
* to access the location.
* FindBest() - Find the location entry that best matches the
* resource.
* FindLocation() - Find the named location.
* IsAuthorized() - Check to see if the user is authorized...
* add_allow() - Add an allow mask to the location.
* add_deny() - Add a deny mask to the location.
@@ -78,10 +79,10 @@ static int pam_func(int, const struct pam_message **,
* 'AddLocation()' - Add a location for authorization.
*/
location_t * /* O - Pointer to new location record */
AddLocation(char *location) /* I - Location path */
location_t * /* O - Pointer to new location record */
AddLocation(const char *location) /* I - Location path */
{
location_t *temp; /* New location */
location_t *temp; /* New location */
/*
@@ -346,6 +347,28 @@ FindBest(client_t *con) /* I - Connection */
}
/*
* 'FindLocation()' - Find the named location.
*/
location_t * /* O - Location that matches */
FindLocation(const char *location) /* I - Connection */
{
int i; /* Looping var */
/*
* Loop through the list of locations to find a match...
*/
for (i = 0; i < NumLocations; i ++)
if (strcasecmp(Locations[i].location, location) == 0)
return (Locations + i);
return (NULL);
}
/*
* 'IsAuthorized()' - Check to see if the user is authorized...
*/
+2 -1
Ver Arquivo
@@ -97,7 +97,7 @@ VAR location_t *Locations VALUE(NULL);
* Prototypes...
*/
extern location_t *AddLocation(char *location);
extern location_t *AddLocation(const char *location);
extern void AllowHost(location_t *loc, char *name);
extern void AllowIP(location_t *loc, unsigned address,
unsigned netmask);
@@ -108,6 +108,7 @@ extern void DenyHost(location_t *loc, char *name);
extern void DenyIP(location_t *loc, unsigned address,
unsigned netmask);
extern location_t *FindBest(client_t *con);
extern location_t *FindLocation(const char *location);
extern http_status_t IsAuthorized(client_t *con);
+15 -4
Ver Arquivo
@@ -1549,6 +1549,7 @@ pipe_command(client_t *con, /* I - Client connection */
{
int pid; /* Process ID */
char *commptr; /* Command string pointer */
int fd; /* Looping var */
int fds[2]; /* Pipe FDs */
int argc; /* Number of arguments */
int envc; /* Number of environment variables */
@@ -1560,10 +1561,10 @@ pipe_command(client_t *con, /* I - Client connection */
content_length[1024], /* CONTENT_LENGTH env variable */
content_type[1024], /* CONTENT_TYPE env variable */
ipp_port[1024], /* Default listen port */
server_port[1024], /* Default listen port */
server_port[1024], /* Default server port */
server_name[1024], /* Default listen hostname */
remote_host[1024], /* REMOTE_HOST env variable */
remote_user[1024], /* REMOTE_HOST env variable */
remote_user[1024], /* REMOTE_USER env variable */
tmpdir[1024], /* TMPDIR environment variable */
ldpath[1024], /* LD_LIBRARY_PATH environment variable */
datadir[1024], /* CUPS_DATADIR environment variable */
@@ -1726,8 +1727,18 @@ pipe_command(client_t *con, /* I - Client connection */
close(1);
dup(fds[1]);
close(fds[0]);
close(fds[1]);
/*
* Close extra file descriptors...
*/
for (fd = 3; fd < 1024; fd ++)
close(fd);
/*
* Change umask to restrict permissions on created files...
*/
umask(077);
/*
* Execute the pipe program; if an error occurs, exit with status 1...
+20 -18
Ver Arquivo
@@ -212,7 +212,7 @@ ReadConfiguration(void)
strcpy(DefaultCharset, DEFAULT_CHARSET);
strcpy(RIPCache, "8m");
if (getenv("TMPDIR") == NULL)
strcpy(TempDir, "/var/tmp");
strcpy(TempDir, CUPS_REQUESTS "/tmp");
else
{
strncpy(TempDir, getenv("TMPDIR"), sizeof(TempDir) - 1);
@@ -303,7 +303,6 @@ ReadConfiguration(void)
BrowsePort = ippPort();
BrowseInterval = DEFAULT_INTERVAL;
BrowseTimeout = DEFAULT_TIMEOUT;
BrowseACL = NULL;
NumBrowsers = 0;
NumRelays = 0;
NumPolled = 0;
@@ -327,6 +326,8 @@ ReadConfiguration(void)
fclose(fp);
BrowseACL = FindLocation("CUPS_INTERNAL_BROWSE_ACL");
if (!status)
return (0);
@@ -464,6 +465,7 @@ read_configuration(FILE *fp) /* I - File to read from */
dirsvc_relay_t *relay; /* Relay data */
dirsvc_poll_t *poll; /* Polling data */
struct sockaddr_in polladdr; /* Polling address */
location_t *location; /* Browse location */
static unsigned netmasks[4] = /* Standard netmasks... */
{
0xff000000,
@@ -597,15 +599,15 @@ read_configuration(FILE *fp) /* I - File to read from */
* "BrowseOrder Deny,Allow" or "BrowseOrder Allow,Deny"...
*/
if (BrowseACL == NULL)
BrowseACL = AddLocation("CUPS_INTERNAL_BROWSE_ACL");
if ((location = FindLocation("CUPS_INTERNAL_BROWSE_ACL")) == NULL)
location = AddLocation("CUPS_INTERNAL_BROWSE_ACL");
if (BrowseACL == NULL)
if (location == NULL)
LogMessage(L_ERROR, "Unable to initialize browse access control list!");
else if (strncasecmp(value, "deny", 4) == 0)
BrowseACL->order_type = AUTH_ALLOW;
location->order_type = AUTH_ALLOW;
else if (strncasecmp(value, "allow", 5) == 0)
BrowseACL->order_type = AUTH_DENY;
location->order_type = AUTH_DENY;
else
LogMessage(L_ERROR, "Unknown BrowseOrder value %s on line %d.",
value, linenum);
@@ -618,10 +620,10 @@ read_configuration(FILE *fp) /* I - File to read from */
* BrowseDeny [From] host/ip...
*/
if (BrowseACL == NULL)
BrowseACL = AddLocation("CUPS_INTERNAL_BROWSE_ACL");
if ((location = FindLocation("CUPS_INTERNAL_BROWSE_ACL")) == NULL)
location = AddLocation("CUPS_INTERNAL_BROWSE_ACL");
if (BrowseACL == NULL)
if (location == NULL)
LogMessage(L_ERROR, "Unable to initialize browse access control list!");
else
{
@@ -660,9 +662,9 @@ read_configuration(FILE *fp) /* I - File to read from */
*/
if (strcmp(name, "BrowseAllow") == 0)
AllowIP(BrowseACL, 0, 0);
AllowIP(location, 0, 0);
else
DenyIP(BrowseACL, 0, 0);
DenyIP(location, 0, 0);
}
else if (strcasecmp(value, "none") == 0)
{
@@ -671,9 +673,9 @@ read_configuration(FILE *fp) /* I - File to read from */
*/
if (strcmp(name, "BrowseAllow") == 0)
AllowIP(BrowseACL, ~0, 0);
AllowIP(location, ~0, 0);
else
DenyIP(BrowseACL, ~0, 0);
DenyIP(location, ~0, 0);
}
else if (value[0] == '*' || value[0] == '.' || !isdigit(value[0]))
{
@@ -685,9 +687,9 @@ read_configuration(FILE *fp) /* I - File to read from */
value ++;
if (strcmp(name, "BrowseAllow") == 0)
AllowHost(BrowseACL, value);
AllowHost(location, value);
else
DenyHost(BrowseACL, value);
DenyHost(location, value);
}
else
{
@@ -724,9 +726,9 @@ read_configuration(FILE *fp) /* I - File to read from */
netmask = netmasks[ipcount - 1];
if (strcmp(name, "BrowseAllow") == 0)
AllowIP(BrowseACL, address, netmask);
AllowIP(location, address, netmask);
else
DenyIP(BrowseACL, address, netmask);
DenyIP(location, address, netmask);
}
}
}
+2 -1
Ver Arquivo
@@ -69,7 +69,7 @@ VAR char ConfigurationFile[256] VALUE(CUPS_SERVERROOT "/cupsd.conf"),
/* Default charset */
RIPCache[32] VALUE("8m"),
/* Amount of memory for RIPs */
TempDir[1024] VALUE("/var/tmp"),
TempDir[1024] VALUE(CUPS_REQUESTS "/tmp"),
/* Temporary directory */
Printcap[1024] VALUE("");
/* Printcap file */
@@ -109,6 +109,7 @@ VAR mime_t *MimeDatabase VALUE(NULL);
* Prototypes...
*/
extern char *GetDateTime(time_t t);
extern int ReadConfiguration(void);
extern int LogRequest(client_t *con, http_status_t code);
extern int LogMessage(int level, const char *message, ...);
+13 -5
Ver Arquivo
@@ -417,7 +417,9 @@ recv_print_job(const char *dest) /* I - Destination */
const char *tmpdir; /* Temporary directory */
char user[1024], /* User name */
title[1024], /* Job title */
docname[1024]; /* Document name */
docname[1024], /* Document name */
queue[256], /* Printer/class queue */
*instance; /* Printer/class instance */
int num_dests; /* Number of destinations */
cups_dest_t *dests, /* Destinations */
*destptr; /* Current destination */
@@ -427,11 +429,17 @@ recv_print_job(const char *dest) /* I - Destination */
status = 0;
num_data = 0;
if ((tmpdir = getenv("TMP")) == NULL)
tmpdir = "/var/tmp";
if ((tmpdir = getenv("TMPDIR")) == NULL)
tmpdir = CUPS_REQUESTS "/tmp";
strncpy(queue, dest, sizeof(queue) - 1);
queue[sizeof(queue) - 1] = '\0';
if ((instance = strrchr(queue, '/')) != NULL)
*instance++ = '\0';
num_dests = cupsGetDests(&dests);
if ((destptr = cupsGetDest(dest, NULL, num_dests, dests)) == NULL)
if ((destptr = cupsGetDest(queue, instance, num_dests, dests)) == NULL)
{
cupsFreeDests(num_dests, dests);
return (1);
@@ -647,7 +655,7 @@ recv_print_job(const char *dest) /* I - Destination */
snprintf(filename, sizeof(filename), "%s/%06d-%d", tmpdir,
getpid(), i + 1);
if (print_file(dest, filename, title, docname, user, num_options,
if (print_file(queue, filename, title, docname, user, num_options,
options) == 0)
status = 1;
else
+12 -3
Ver Arquivo
@@ -1959,7 +1959,10 @@ copy_banner(client_t *con, /* I - Client connection */
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
fprintf(out, "%d", attr->values[i].integer);
if (strncmp(attrname, "time-at-", 8) == 0)
fputs(GetDateTime(attr->values[i].integer), out);
else
fprintf(out, "%d", attr->values[i].integer);
break;
case IPP_TAG_BOOLEAN :
@@ -2168,14 +2171,20 @@ delete_printer(client_t *con, /* I - Client connection */
sprintf(filename, "%s/ppd/%s.ppd", ServerRoot, dest);
unlink(filename);
SaveAllPrinters();
if (dtype == CUPS_PRINTER_CLASS)
{
SaveAllClasses();
LogMessage(L_INFO, "Class \'%s\' deleted by \'%s\'.", dest,
con->username);
}
else
{
SaveAllPrinters();
LogMessage(L_INFO, "Printer \'%s\' deleted by \'%s\'.", dest,
con->username);
}
/*
* Return with no errors...
+6
Ver Arquivo
@@ -2534,6 +2534,12 @@ start_process(const char *command, /* I - Full path to command */
setuid(User);
}
/*
* Change umask to restrict permissions on created files...
*/
umask(077);
/*
* Execute the command; if for some reason this doesn't work,
* return the error code...
+57 -64
Ver Arquivo
@@ -23,10 +23,10 @@
*
* Contents:
*
* LogMessage() - Log a message to the error log file.
* LogPage() - Log a page to the page log file.
* LogRequest() - Log an HTTP request in Common Log Format.
* get_datetime() - Returns a pointer to a date/time string.
* GetDateTime() - Returns a pointer to a date/time string.
* LogMessage() - Log a message to the error log file.
* LogPage() - Log a page to the page log file.
* LogRequest() - Log an HTTP request in Common Log Format.
*/
/*
@@ -42,10 +42,58 @@
/*
* Local functions...
* 'GetDateTime()' - Returns a pointer to a date/time string.
*/
static char *get_datetime(time_t t);
char * /* O - Date/time string */
GetDateTime(time_t t) /* I - Time value */
{
struct tm *date; /* Date/time value */
static char s[1024]; /* Date/time string */
static const char *months[12] =/* Months */
{
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
};
/*
* Get the date and time from the UNIX time value, and then format it
* into a string. Note that we *can't* use the strftime() function since
* it is localized and will seriously confuse automatic programs if the
* month names are in the wrong language!
*
* Also, we use the "timezone" variable that contains the current timezone
* offset from GMT in seconds so that we are reporting local time in the
* log files. If you want GMT, set the TZ environment variable accordingly
* before starting the scheduler.
*
* (*BSD stores the timezone offset in the tm structure)
*/
date = localtime(&t);
sprintf(s, "[%02d/%s/%04d:%02d:%02d:%02d %+03ld%02ld]",
date->tm_mday, months[date->tm_mon], 1900 + date->tm_year,
date->tm_hour, date->tm_min, date->tm_sec,
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
-date->tm_gmtoff / 3600, (date->tm_gmtoff / 60) % 60);
#else
-timezone / 3600, (timezone / 60) % 60);
#endif /* __*BSD__ */
return (s);
}
/*
@@ -165,7 +213,7 @@ LogMessage(int level, /* I - Log level */
* Print the log level and date/time...
*/
fprintf(ErrorFile, "%c %s ", levels[level], get_datetime(time(NULL)));
fprintf(ErrorFile, "%c %s ", levels[level], GetDateTime(time(NULL)));
/*
* Then the log message...
@@ -284,7 +332,7 @@ LogPage(job_t *job, /* I - Job being printed */
*/
fprintf(PageFile, "%s %s %d %s %s %s\n", job->printer->name, job->username,
job->id, get_datetime(time(NULL)), page,
job->id, GetDateTime(time(NULL)), page,
billing ? billing->values[0].string.text : "");
fflush(PageFile);
@@ -402,7 +450,7 @@ LogRequest(client_t *con, /* I - Request to log */
fprintf(AccessFile, "%s - %s %s \"%s %s HTTP/%d.%d\" %d %d\n",
con->http.hostname, con->username[0] != '\0' ? con->username : "-",
get_datetime(con->start), states[con->operation], con->uri,
GetDateTime(con->start), states[con->operation], con->uri,
con->http.version / 100, con->http.version % 100,
code, con->bytes);
fflush(AccessFile);
@@ -411,61 +459,6 @@ LogRequest(client_t *con, /* I - Request to log */
}
/*
* 'get_datetime()' - Returns a pointer to a date/time string.
*/
static char * /* O - Date/time string */
get_datetime(time_t t) /* I - Time value */
{
struct tm *date; /* Date/time value */
static char s[1024]; /* Date/time string */
static const char *months[12] =/* Months */
{
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
};
/*
* Get the date and time from the UNIX time value, and then format it
* into a string. Note that we *can't* use the strftime() function since
* it is localized and will seriously confuse automatic programs if the
* month names are in the wrong language!
*
* Also, we use the "timezone" variable that contains the current timezone
* offset from GMT in seconds so that we are reporting local time in the
* log files. If you want GMT, set the TZ environment variable accordingly
* before starting the scheduler.
*
* (*BSD stores the timezone offset in the tm structure)
*/
date = localtime(&t);
sprintf(s, "[%02d/%s/%04d:%02d:%02d:%02d %+03ld%02ld]",
date->tm_mday, months[date->tm_mon], 1900 + date->tm_year,
date->tm_hour, date->tm_min, date->tm_sec,
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
-date->tm_gmtoff / 3600, (date->tm_gmtoff / 60) % 60);
#else
-timezone / 3600, (timezone / 60) % 60);
#endif /* __*BSD__ */
return (s);
}
/*
* End of "$Id$".
*/
+7 -5
Ver Arquivo
@@ -33,6 +33,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <grp.h>
#include <sys/types.h>
@@ -98,7 +99,7 @@ main(int argc, /* I - Number of command-line arguments */
else
{
strcpy(passwdmd5, CUPS_SERVERROOT "/passwd.md5");
strcpy(passwdold, CUPS_SERVERROOT "/passwd.md5");
strcpy(passwdold, CUPS_SERVERROOT "/passwd.old");
}
/*
@@ -195,10 +196,11 @@ main(int argc, /* I - Number of command-line arguments */
}
if (rename(passwdmd5, passwdold))
{
perror("lppasswd: Unable to rename password file");
return (1);
}
if (errno != ENOENT && op != ADD)
{
perror("lppasswd: Unable to rename password file");
return (1);
}
/*
* Open the existing password file and create a new one...