Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet ed7523132b Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0b3@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
130 arquivos alterados com 2899 adições e 7300 exclusões
+6 -18
Ver Arquivo
@@ -16,7 +16,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -31,18 +31,14 @@
AR = @AR@
AWK = @AWK@
CC = @CC@
CHMOD = @CHMOD@
CP = @CP@
HTMLDOC = @HTMLDOC@
LN = /bin/ln -sf
MKDIR = @MKDIR@ -p
NROFF = @NROFF@
PACK = @PACK@
NROFF = @GROFF@ -T ascii
RANLIB = @RANLIB@
RM = @RM@ -f
SED = @SED@
SHELL = /bin/sh
SMBCLIENT = @SMBCLIENT@
#
# Program options...
@@ -60,12 +56,6 @@ LIBS = @LIBS@ -L../cups -lcups
OPTIM = @OPTIM@
OPTIONS =
#
# Formatted man page extension...
#
CAT = @CAT@
#
# Directories...
#
@@ -108,15 +98,13 @@ SERVERROOT = @CUPS_SERVERROOT@
# Rules...
#
.SUFFIXES: .a .c .gz .h .o .z .1 .5 .8
.SUFFIXES: .a .c .h .1 .2 .3 .4 .5 .6 .7 .8 .o .z
.c.o:
echo Compiling $<...
$(CC) $(CFLAGS) -c $<
.1.z .5.z .8.z .1.gz .5.gz .8.gz:
echo Formatting $<...
.1.z .2.z .3.z .4.z .5.z .6.z .7.z .8.z:
$(NROFF) -man $< >t
$(PACK) t
-mv t.$(CAT) $@
pack -f t
mv t.z $@
#
# End of "$Id$"
+1 -9
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -37,7 +37,6 @@ DIRS = cups backend berkeley cgi-bin filter man pstoraster \
all:
for dir in $(DIRS); do\
echo Making all in $$dir... ;\
(cd $$dir; make);\
done
@@ -47,7 +46,6 @@ all:
clean:
for dir in $(DIRS); do\
echo Cleaning in $$dir... ;\
(cd $$dir; make clean);\
done
@@ -57,18 +55,12 @@ clean:
install:
for dir in $(DIRS); do\
echo Installing in $$dir... ;\
(cd $$dir; make install);\
done
echo Installing in conf...
(cd conf; make install)
echo Installing in data...
(cd data; make install)
echo Installing in doc...
(cd doc; make install)
echo Installing in fonts...
(cd fonts; make install)
echo Installing in ppd...
(cd ppd; make install)
#
+4 -2
Ver Arquivo
@@ -4,7 +4,7 @@
</HEAD>
<BODY>
<H1>README - CUPS v1.0b4</H1>
<H1>README - CUPS v1.0b3</H1>
<H2>Contents</H2>
@@ -64,7 +64,7 @@ If you'd like to build CUPS from the source, please read the Software
Administrator's Manual.
<P>Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
Software User's Manual are excellent places to start setting things up.
<H2><A NAME="known">Known Problems</A></H2>
@@ -78,6 +78,8 @@ the fourth beta release of CUPS:
<LI>The lpc command currently only supports the help and status
commands.
<LI>The class and job CGIs are currently not provided.
</UL>
CUPS has been built and tested on the following operating systems:
+10 -17
Ver Arquivo
@@ -1,7 +1,6 @@
README - CUPS v1.0b4
--------------------
README - CUPS v1.0b3
CONTENTS
Contents
* Introduction
* Requirements
@@ -11,8 +10,7 @@ CONTENTS
* Other Resources
* Legal Stuff
INTRODUCTION
Introduction
The Common UNIX Printing System provides a portable printing layer for UNIX®
operating systems. It has been developed by Easy Software Products to
@@ -32,8 +30,7 @@ CUPS also includes a customized version of GNU GhostScript (currently based
off GNU GhostScript 4.03) and an image file RIP that can be used to support
non-PostScript printers.
REQUIREMENTS
Requirements
You'll need an ANSI C compiler to build CUPS on your system. As its name
implies, CUPS is designed to run on the UNIX operating system, however the
@@ -49,8 +46,7 @@ nroff-like package.
The documentation is formatted using the HTMLDOC software (again, not needed
unless you make changes.)
USING CUPS
Using CUPS
Pre-compiled binary distributions are available for CUPS from our web site
at http://www.cups.org/software.html. If you'd like to build CUPS from the
@@ -59,14 +55,14 @@ source, please read the Software Administrator's Manual.
Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
KNOWN PROBLEMS
Known Problems
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
* Documentation is not completed.
* The lpc command currently only supports the help and status commands.
* The class and job CGIs are currently not provided.
CUPS has been built and tested on the following operating systems:
@@ -79,15 +75,13 @@ CUPS has been built and tested on the following operating systems:
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
REPORTING PROBLEMS
Reporting Problems
If you have problems, please send an email to cups-support@cups.org. Include
your operating system and version, compiler and version, and any errors or
problems you've run into.
OTHER RESOURCES
Other Resources
See the CUPS web site at "http://www.cups.org" for other site links.
@@ -96,8 +90,7 @@ You can subscribe to the CUPS mailing list by sending a message containing
problems, questions, and improvements to the CUPS software. New releases of
CUPS are announced to this list as well.
LEGAL STUFF
Legal Stuff
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy
+7 -28
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -24,8 +24,8 @@
include ../Makedefs
TARGETS = ipp lpd parallel serial smb socket
OBJS = ipp.o lpd.o parallel.o serial.o socket.o
TARGETS = lpd parallel serial smb socket
OBJS = lpd.o parallel.o serial.o smb.o socket.o
#
# Make all targets...
@@ -47,26 +47,12 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/backend
$(CP) $(TARGETS) $(SERVERROOT)/backend
$(LN) ipp $(SERVERROOT)/backend/http
$(CHMOD) u+s $(SERVERROOT)/backend/lpd
#
# ipp
#
ipp: ipp.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS)
$(LN) ipp http
ipp.o: ../cups/cups.h ../Makedefs
#
# lpd
#
lpd: lpd.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpd lpd.o $(LIBS)
lpd.o: ../cups/cups.h ../Makedefs
@@ -76,7 +62,6 @@ lpd.o: ../cups/cups.h ../Makedefs
#
parallel: parallel.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o parallel parallel.o $(LIBS)
parallel.o: ../cups/cups.h ../Makedefs
@@ -86,7 +71,6 @@ parallel.o: ../cups/cups.h ../Makedefs
#
serial: serial.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o serial serial.o $(LIBS)
serial.o: ../cups/cups.h ../Makedefs
@@ -94,22 +78,17 @@ serial.o: ../cups/cups.h ../Makedefs
#
# smb
#
# Note: reading through these commands is a good way to get a headache... :)
#
smb: smb.sh ../Makedefs
echo Generating $@...
$(RM) smb
sedcmd="1,\$$s/^SMBCLIENT=.\*/SMBCLIENT=`echo $(SMBCLIENT) | sed -e '1,$$s/\\//\\\\\\//g'`/" ;\
$(SED) -e "$$sedcmd" <smb.sh >smb
$(CHMOD) +x smb
smb: smb.o ../cups/libcups.a
$(CC) $(LDFLAGS) -o smb smb.o $(LIBS)
smb.o: ../cups/cups.h ../Makedefs
#
# socket
#
socket: socket.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o socket socket.o $(LIBS)
socket.o: ../cups/cups.h ../Makedefs
-391
Ver Arquivo
@@ -1,391 +0,0 @@
/*
* "$Id$"
*
* IPP backend for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
*/
/*
* Include necessary headers.
*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/string.h>
/*
* 'main()' - Send a file to the printer or server.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
int n, n2; /* Attribute values */
char *option, /* Name of option */
*val, /* Pointer to option value */
*s; /* Pointer into option value */
int num_options; /* Number of printer options */
cups_option_t *options; /* Printer options */
char method[255], /* Method in URI */
hostname[1024], /* Hostname */
username[255], /* Username info */
resource[1024], /* Resource info (printer name) */
filename[1024]; /* File to print */
int port; /* Port number (not used) */
char password[255], /* Password info */
uri[HTTP_MAX_URI];/* Updated URI without user/pass */
http_status_t status; /* Status of HTTP job */
FILE *fp; /* File to print */
http_t *http; /* HTTP connection */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *job_id; /* job-id attribute */
cups_lang_t *language; /* Default language */
struct stat fileinfo; /* File statistics */
size_t nbytes, /* Number of bytes written */
tbytes; /* Total bytes written */
char buffer[8192]; /* Output buffer */
if (argc < 6 || argc > 7)
{
fprintf(stderr, "Usage: %s job-id user title copies options [file]\n",
argv[0]);
return (1);
}
/*
* If we have 7 arguments, print the file named on the command-line.
* Otherwise, print stdin...
*/
if (argc == 6)
fp = stdin;
else if ((fp = fopen(argv[6], "rb")) == NULL)
{
perror("ERROR: Unable to open print file");
return (1);
}
else
stat(argv[6], &fileinfo);
/*
* Extract the hostname and printer name from the URI...
*/
httpSeparate(argv[0], method, username, hostname, &port, resource);
/*
* Try connecting to the remote server...
*/
fprintf(stderr, "INFO: Connecting to %s...\n", hostname);
if ((http = httpConnect(hostname, port)) == NULL)
{
perror("ERROR: Unable to connect to IPP host");
if (fp != stdin)
fclose(fp);
return (1);
}
/*
* Build a URI for the printer and fill the standard IPP attributes for
* an IPP_PRINT_FILE request...
*/
request = ippNew();
request->request.op.operation_id = IPP_PRINT_JOB;
request->request.op.request_id = 1;
sprintf(uri, "%s://%s:%d/%s", method, hostname, port, resource);
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language != NULL ? language->language : "C");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, argv[2]);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, argv[3]);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
/*
* Handle options on the command-line...
*/
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
for (i = 0; i < num_options; i ++)
{
/*
* Skip the "raw" option - handled above...
*/
if (strcmp(options[i].name, "raw") == 0)
continue;
/*
* See what the option value is; for compatibility with older interface
* scripts, we have to support single-argument options as well as
* option=value, option=low-high, and option=MxN.
*/
option = options[i].name;
val = options[i].value;
if (*val == '\0')
val = NULL;
if (val != NULL)
{
if (strcasecmp(val, "true") == 0 ||
strcasecmp(val, "on") == 0 ||
strcasecmp(val, "yes") == 0)
{
/*
* Boolean value - true...
*/
n = 1;
val = "";
}
else if (strcasecmp(val, "false") == 0 ||
strcasecmp(val, "off") == 0 ||
strcasecmp(val, "no") == 0)
{
/*
* Boolean value - false...
*/
n = 0;
val = "";
}
n = strtol(val, &s, 0);
}
else
{
if (strncmp(option, "no", 2) == 0)
{
option += 2;
n = 0;
}
else
n = 1;
s = "";
}
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
/*
* String value(s)...
*/
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
else if (val != NULL)
{
/*
* Numeric value, range, or resolution...
*/
if (*s == '-')
{
n2 = strtol(s + 1, NULL, 0);
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
}
else if (*s == 'x')
{
n2 = strtol(s + 1, &s, 0);
if (strcmp(s, "dpc") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_CM, n, n2);
else if (strcmp(s, "dpi") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_INCH, n, n2);
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
}
else
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
}
else
/*
* Boolean value...
*/
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
}
/*
* Now fill in the HTTP request stuff...
*/
httpClearFields(http);
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
httpEncode64(password, username);
httpSetField(http, HTTP_FIELD_AUTHORIZATION, password);
if (fp != stdin)
{
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
}
/*
* Do the request...
*/
for (;;)
{
/*
* POST the request, retrying as needed...
*/
if (httpPost(http, resource))
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
continue;
}
/*
* Send the IPP request...
*/
request->state = IPP_IDLE;
if (ippWrite(http, request) != IPP_OK)
{
fputs("ERROR: Unable to send IPP request; retrying...\n", stderr);
status = HTTP_ERROR;
break;
}
/*
* Then send the file...
*/
tbytes = 0;
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
{
tbytes += nbytes;
fprintf(stderr, "INFO: Sending print file, %uk...\n", tbytes / 1024);
if (httpWrite(http, buffer, nbytes) < nbytes)
{
perror("ERROR: Unable to send print file to printer");
status = HTTP_ERROR;
break;
}
}
httpWrite(http, buffer, 0);
/*
* Finally, check the status from the HTTP server...
*/
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
if (status == HTTP_OK)
{
response = ippNew();
ippRead(http, response);
if (response->request.status.status_code > IPP_OK_CONFLICT)
fprintf(stderr, "ERROR: Print file was not accepted (%04x)!\n",
response->request.status.status_code);
else if ((job_id = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
fputs("INFO: Print file accepted - job ID unknown.\n", stderr);
else
fprintf(stderr, "INFO: Print file accepted - job ID %d.\n",
job_id->values[0].integer);
}
else
{
response = NULL;
httpFlush(http);
fprintf(stderr, "ERROR: Print request was not accepted (%d)!\n", status);
}
break;
}
/*
* Free memory...
*/
httpClose(http);
if (request != NULL)
ippDelete(request);
if (response != NULL)
ippDelete(response);
/*
* Close the print file as needed...
*/
if (fp != stdin)
fclose(fp);
/*
* Return the queue status...
*/
return (status != HTTP_OK);
}
/*
* End of "$Id$".
*/
+14 -13
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -109,14 +109,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if ((fp = fopen(tmpnam(filename), "w")) == NULL)
{
perror("ERROR: unable to create temporary file");
perror("lpd: unable to create temporary file");
return (1);
}
while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0)
if (fwrite(buffer, 1, bytes, fp) < bytes)
{
perror("ERROR: unable to write to temporary file");
perror("lpd: unable to write to temporary file");
fclose(fp);
unlink(filename);
return (1);
@@ -178,7 +178,7 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
bytes = vsprintf(buf, format, ap);
va_end(ap);
fprintf(stderr, "DEBUG: lpd_command %02.2x %s", buf[0], buf + 1);
fprintf(stderr, "lpd: lpd_command %02.2x %s", buf[0], buf + 1);
/*
* Send the command...
@@ -194,7 +194,7 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
if (recv(fd, &status, 1, 0) < 1)
return (-1);
fprintf(stderr, "DEBUG: lpd_command returning %d\n", status);
fprintf(stderr, "lpd: lpd_command returning %d\n", status);
return (status);
}
@@ -288,13 +288,13 @@ lpd_queue(char *hostname, /* I - Host to connect to */
if (stat(filename, &filestats))
{
perror("ERROR: unable to stat print file");
perror("lpd: unable to stat print file");
return (1);
}
if ((fp = fopen(filename, "rb")) == NULL)
{
perror("ERROR: unable to open print file for reading");
perror("lpd: unable to open print file for reading");
return (1);
}
@@ -306,7 +306,8 @@ lpd_queue(char *hostname, /* I - Host to connect to */
lpd_command(fd, "\002%s\n", printer); /* Receive print job(s) */
gethostname(localhost, sizeof(localhost));
localhost[31] = '\0'; /* RFC 1179, Section 7.2 - host name < 32 chars */
if (strchr(localhost, '.') != NULL)
*strchr(localhost, '.') = '\0';
sprintf(control, "H%s\nP%s\n", localhost, user);
cptr = control + strlen(control);
@@ -322,12 +323,12 @@ lpd_queue(char *hostname, /* I - Host to connect to */
getpid() % 1000, localhost,
getpid() % 1000, localhost);
fprintf(stderr, "DEBUG: Control file is:\n%s", control);
fprintf(stderr, "lpd: Control file is:\n%s", control);
lpd_command(fd, "\002%d cfA%03.3d%s\n", strlen(control), getpid() % 1000,
localhost);
fprintf(stderr, "INFO: Sending control file (%d bytes)\n", strlen(control));
fprintf(stderr, "lpd: Sending control file (%d bytes)\n", strlen(control));
if (send(fd, control, strlen(control) + 1, 0) < (strlen(control) + 1))
{
@@ -343,12 +344,12 @@ lpd_queue(char *hostname, /* I - Host to connect to */
* Send the print file...
*/
fputs("INFO: Control file sent successfully\n", stderr);
fputs("lpd: Control file sent successfully\n", stderr);
lpd_command(fd, "\003%d dfA%03.3d%s\n", filestats.st_size,
getpid() % 1000, localhost);
fprintf(stderr, "INFO: Sending data file (%u bytes)\n",
fprintf(stderr, "lpd: Sending data file (%u bytes)\n",
(unsigned)filestats.st_size);
tbytes = 0;
@@ -374,7 +375,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
fprintf(stderr, "ERROR: Remote host did not accept data file (%d)\n",
status);
else
fputs("INFO: Data file sent successfully\n", stderr);
fputs("lpd: Data file sent successfully\n", stderr);
}
/*
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+66
Ver Arquivo
@@ -0,0 +1,66 @@
/*
* "$Id$"
*
* Server Message Block backend for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
*/
/*
* Include necessary headers.
*/
#include <cups/cups.h>
#include <stdio.h>
#include <stdlib.h>
#include <cups/string.h>
/*
* 'main()' - Send a file to the printer or server.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
if (argc < 6 || argc > 7)
{
fprintf(stderr, "Usage: %s job-id user title copies options [file]\n",
argv[0]);
return (1);
}
fputs("ERROR: Backend not implemented yet!\n", stderr);
return (1);
}
/*
* End of "$Id$".
*/
-88
Ver Arquivo
@@ -1,88 +0,0 @@
#!/bin/sh
#
# "$Id$"
#
# SMB printing script for the Common UNIX Printing System (CUPS).
#
# Copyright 1993-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
SMBCLIENT=/usr/local/samba/bin/smbclient
#
# Usage:
#
# printer job user title copies options [filename]
#
if [ $# -lt 5 -o $# -gt 6 ]; then
# Too few or too many arguments
echo 'Usage: smb job-id user title copies options [file]' >&2
exit 1
fi
#
# If "filename" is not on the command-line, then we read the print
# data from stdin and write it to a temporary file.
#
if [ $# = 5 ]; then
# Collect all print data and put it in a temporary file...
if [ "$TMPDIR" = "" ]; then
TMPDIR=/var/tmp
fi
filename="$TMPDIR/$$.smb"
cat >$filename
else
# Use the file on the command-line...
filename="$6"
fi
#
# Take apart the URI in $0...
#
uri="$0"
host=`echo $uri | awk -F/ '{print substr($3, index($3, "@") + 1)}'`
user=`echo $uri | awk -F/ '{print substr($3, 0, index($3, "@") - 1)}'`
if [ "$user" != "" ]; then
user="-U $user"
fi
printer=`echo $uri | awk -F/ '{print $4}'`
#
# Send the file to the remote system...
#
$SMBCLIENT //$host/$printer $user -P -N <<EOF
print $filename
EOF
#
# Lastly, remove the temporary file as needed...
#
if [ $# = 5 ]; then
rm -f $filename
fi
#
# End of "$Id$".
#
+1 -5
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -55,7 +55,6 @@ install:
#
lpc: lpc.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpc lpc.o $(LIBS)
lpc.o: ../cups/cups.h ../Makedefs
@@ -65,7 +64,6 @@ lpc.o: ../cups/cups.h ../Makedefs
#
lpq: lpq.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
lpq.o: ../cups/cups.h ../Makedefs
@@ -75,7 +73,6 @@ lpq.o: ../cups/cups.h ../Makedefs
#
lpr: lpr.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpr lpr.o $(LIBS)
lpr.o: ../cups/cups.h ../Makedefs
@@ -85,7 +82,6 @@ lpr.o: ../cups/cups.h ../Makedefs
#
lprm: lprm.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lprm lprm.o $(LIBS)
lprm.o: ../cups/cups.h ../Makedefs
+2 -8
Ver Arquivo
@@ -70,7 +70,7 @@ main(int argc, /* I - Number of command-line arguments */
* Connect to the scheduler...
*/
http = httpConnect(cupsServer(), ippPort());
http = httpConnect("localhost", ippPort());
if (argc > 1)
{
@@ -87,14 +87,8 @@ main(int argc, /* I - Number of command-line arguments */
*/
printf("lpc> ");
while (fgets(line, sizeof(line), stdin) != NULL)
while (gets(line) != NULL)
{
/*
* Strip the trailing newline...
*/
line[strlen(line) - 1] = '\0';
/*
* Find any options in the string...
*/
+1 -1
Ver Arquivo
@@ -68,7 +68,7 @@ main(int argc, /* I - Number of command-line arguments */
* Connect to the scheduler...
*/
http = httpConnect(cupsServer(), ippPort());
http = httpConnect("localhost", ippPort());
/*
* Check for command-line options...
+2 -2
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -70,7 +70,7 @@ main(int argc, /* I - Number of command-line arguments */
* Open a connection to the server...
*/
if ((http = httpConnect(cupsServer(), ippPort())) == NULL)
if ((http = httpConnect("localhost", ippPort())) == NULL)
{
fputs("lprm: Unable to contact server!\n", stderr);
return (1);
+3 -23
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -24,7 +24,8 @@
include ../Makedefs
TARGETS = classes.cgi jobs.cgi printers.cgi
#TARGETS = classes.cgi jobs.cgi printers.cgi
TARGETS = printers.cgi
OBJS = classes.o jobs.o printers.o
#
@@ -48,32 +49,11 @@ install:
-$(MKDIR) $(SERVERROOT)/cgi-bin
$(CP) $(TARGETS) $(SERVERROOT)/cgi-bin
#
# classes.cgi
#
classes.cgi: classes.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ classes.o $(LIBS)
$(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
#
# jobs.cgi
#
jobs.cgi: jobs.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ jobs.o $(LIBS)
$(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
#
# printers.cgi
#
printers.cgi: printers.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ printers.o $(LIBS)
$(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
-471
Ver Arquivo
@@ -1,471 +0,0 @@
/*
* "$Id$"
*
* Class status CGI for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE.txt" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
* main() - Main entry for CGI.
* show_class_list() - Show a list of classes...
* show_class_info() - Show class information.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
/*
* Local functions...
*/
static void show_class_list(http_t *http, cups_lang_t *language);
static void show_class_info(http_t *http, cups_lang_t *language,
char *name);
/*
* 'main()' - Main entry for CGI.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
cups_lang_t *language; /* Language information */
char *name; /* Class name */
http_t *http; /* Connection to the server */
/*
* Get the request language...
*/
language = cupsLangDefault();
/*
* Connect to the HTTP server...
*/
http = httpConnect("localhost", ippPort());
/*
* Tell the client to expect HTML...
*/
printf("Content-Type: text/html;charset=%s\n\n", cupsLangEncoding(language));
/*
* See if we need to show a list of classes or the status of a
* single class...
*/
name = argv[0];
if (strcmp(name, "/") == 0 || strcmp(name, "classes.cgi") == 0)
name = NULL;
/*
* Print the standard header...
*/
puts("<HTML>");
puts("<HEAD>");
if (name)
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
name == NULL ? "Classes" : name, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
puts("<P ALIGN=CENTER>");
puts("<A HREF=\"http://www.easysw.com\" ALT=\"Easy Software Products Home Page\">");
puts("<IMG SRC=\"/images/logo.gif\" WIDTH=\"71\" HEIGHT=\"40\" BORDER=0 ALT=\"Easy Software Products Home Page\"></A>");
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
printf("<H1>%s on %s</H1>\n", name == NULL ? "Classes" : name,
getenv("SERVER_NAME"));
fflush(stdout);
puts("<CENTER>");
puts("<TABLE WIDTH=\"90%\" BORDER=\"1\">");
puts("<TR>");
puts("<TH>Name</TH>");
puts("<TH WIDTH=\"50%\">Status</TH>");
puts("<TH WIDTH=\"25%\">Jobs</TH>");
puts("</TR>");
/*
* Show the information...
*/
if (name == NULL)
show_class_list(http, language);
else
show_class_info(http, language, name);
/*
* Write a standard trailer...
*/
puts("</TABLE>");
puts("</CENTER>");
puts("<HR>");
puts("<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the");
puts("trademark property of <A HREF=\"http://www.easysw.com\">Easy Software");
puts("Products</A>. CUPS is copyright 1997-1999 by Easy Software Products,");
puts("All Rights Reserved.");
puts("</BODY>");
puts("</HTML>");
/*
* Close the HTTP server connection...
*/
httpClose(http);
cupsLangFree(language);
/*
* Return with no errors...
*/
return (0);
}
/*
* 'show_class_list()' - Show a list of classes...
*/
static void
show_class_list(http_t *http, /* I - HTTP connection */
cups_lang_t *language)/* I - Client's language */
{
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
/*
* Build a CUPS_GET_CLASSES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_CLASSES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, "/classes/")) != NULL)
{
/*
* Loop through the classes returned in the list and display
* their devices...
*/
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
attr = attr->next;
if (attr == NULL)
break;
/*
* Show the class status for each class...
*/
while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
{
if (strcmp(attr->name, "printer-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
show_class_info(http, language, attr->values[0].string.text);
attr = attr->next;
}
if (attr == NULL)
break;
}
ippDelete(response);
}
}
/*
* 'show_class_info()' - Show class information.
*/
static void
show_class_info(http_t *http,
cups_lang_t *language,
char *name)
{
ipp_t *request, /* IPP request */
*response, /* IPP response */
*jobs; /* IPP Get Jobs response */
int jobcount; /* Number of jobs */
ipp_attribute_t *attr; /* IPP attribute */
char *message; /* Printer state message */
int accepting; /* Accepting requests? */
ipp_pstate_t pstate; /* Printer state */
char uri[HTTP_MAX_URI];/* Printer URI */
/*
* Build a IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* class-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
sprintf(uri, "ipp://localhost/classes/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "class-uri", NULL, uri);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, uri + 15)) == NULL)
{
puts("<P>Unable to communicate with CUPS server!");
return;
}
if (response->request.status.status_code == IPP_NOT_FOUND)
{
puts("<P>Class does not exist.");
ippDelete(response);
return;
}
/*
* Grab the needed class attributes...
*/
if ((attr = ippFindAttribute(response, "class-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
if ((attr = ippFindAttribute(response, "class-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
if ((attr = ippFindAttribute(response, "class-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
/*
* Display the class entry...
*/
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"/classes/%s\">%s</A></TD>\n", name, name);
puts("<TD VALIGN=TOP><IMG SRC=\"/images/classes.gif\" ALIGN=\"LEFT\">");
printf("%s: %s, %s<BR>\n",
cupsLangString(language, CUPS_MSG_PRINTER_STATE),
cupsLangString(language, pstate == IPP_PRINTER_IDLE ? CUPS_MSG_IDLE :
pstate == IPP_PRINTER_PROCESSING ?
CUPS_MSG_PROCESSING : CUPS_MSG_STOPPED),
cupsLangString(language, accepting ? CUPS_MSG_ACCEPTING_JOBS :
CUPS_MSG_NOT_ACCEPTING_JOBS));
if (message)
printf("<BR CLEAR=ALL><I>\"%s\"</I>\n", message);
else if (!accepting || pstate == IPP_PRINTER_STOPPED)
puts("<BR CLEAR=ALL><I>\"Reason Unknown\"</I>");
puts("</TD>");
/*
* Show a list of jobs as needed...
*/
if (pstate != IPP_PRINTER_IDLE)
{
/*
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* class-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"class-uri", NULL, uri);
jobs = cupsDoRequest(http, request, uri + 15);
}
else
jobs = NULL;
puts("<TD VALIGN=\"TOP\">");
jobcount = 0;
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (attr == NULL)
break;
/*
* Pull the needed attributes from this job...
*/
jobid = 0;
size = 0;
username = NULL;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
size = attr->values[0].integer;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
attr = attr->next;
}
/*
* Display the job if it matches the current class...
*/
if (username != NULL)
{
jobcount ++;
printf("<A HREF=\"/jobs/%d\">%s-%d %s %dk</A><BR>\n", jobid, name,
jobid, username, size);
}
if (attr == NULL)
break;
}
ippDelete(jobs);
}
if (jobcount == 0)
puts("None");
puts("</TD>");
puts("</TR>");
ippDelete(response);
}
/*
* End of "$Id$".
*/
-577
Ver Arquivo
@@ -1,577 +0,0 @@
/*
* "$Id$"
*
* Job status CGI for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE.txt" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
* main() - Main entry for CGI.
* show_job_list() - Show a list of jobs...
* show_job_info() - Show job information.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
/*
* Local functions...
*/
static void show_job_list(http_t *http, cups_lang_t *language);
static void show_job_info(http_t *http, cups_lang_t *language,
char *name);
/*
* 'main()' - Main entry for CGI.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
cups_lang_t *language; /* Language information */
char *job; /* Job name */
http_t *http; /* Connection to the server */
setbuf(stdout, NULL);
/*
* Get the request language...
*/
language = cupsLangDefault();
/*
* Connect to the HTTP server...
*/
http = httpConnect("localhost", ippPort());
/*
* Tell the client to expect HTML...
*/
printf("Content-Type: text/html;charset=%s\n\n", cupsLangEncoding(language));
/*
* See if we need to show a list of jobs or the status of a
* single job...
*/
job = argv[0];
if (strcmp(job, "/") == 0 || strcmp(job, "jobs.cgi") == 0)
job = NULL;
/*
* Print the standard header...
*/
puts("<HTML>");
puts("<HEAD>");
if (job)
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
job == NULL ? "Jobs" : job, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
puts("<P ALIGN=CENTER>");
puts("<A HREF=\"http://www.easysw.com\" ALT=\"Easy Software Products Home Page\">");
puts("<IMG SRC=\"/images/logo.gif\" WIDTH=\"71\" HEIGHT=\"40\" BORDER=0 ALT=\"Easy Software Products Home Page\"></A>");
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
fflush(stdout);
/*
* Show the information...
*/
if (job == NULL)
show_job_list(http, language);
else
show_job_info(http, language, job);
/*
* Write a standard trailer...
*/
puts("<HR>");
puts("<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the");
puts("trademark property of <A HREF=\"http://www.easysw.com\">Easy Software");
puts("Products</A>. CUPS is copyright 1997-1999 by Easy Software Products,");
puts("All Rights Reserved.");
puts("</BODY>");
puts("</HTML>");
/*
* Close the HTTP server connection...
*/
httpClose(http);
cupsLangFree(language);
/*
* Return with no errors...
*/
return (0);
}
/*
* 'show_job_list()' - Show a list of jobs...
*/
static void
show_job_list(http_t *http, /* I - HTTP connection */
cups_lang_t *language) /* I - Client's language */
{
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
char *job_uri, /* job-uri */
*printer_uri, /* job-printer-uri */
*job_name, /* job-name */
*job_user; /* job-originating-user-name */
int job_id, /* job-id */
job_priority, /* job-priority */
job_k_octets, /* job-k-octets */
copies; /* copies */
ipp_jstate_t job_state; /* job-state */
printf("<H1>Jobs on %s</H1>\n", getenv("SERVER_NAME"));
/*
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, "ipp://localhost/jobs/");
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, "/jobs/")) != NULL)
{
/*
* Do a table for the jobs...
*/
puts("<CENTER>");
puts("<TABLE WIDTH=\"90%\" BORDER=\"1\">");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_PRINT_JOBS));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_STATE));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_NAME));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_USER_NAME));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_PRIORITY));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_COPIES));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_FILE_SIZE));
puts("</TR>");
/*
* Loop through the jobs returned in the list and display
* their devices...
*/
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (attr == NULL)
break;
/*
* Show the job status for each job...
*/
job_uri = NULL;
printer_uri = NULL;
job_name = "unknown";
job_user = "unknown";
job_id = 0;
job_priority = 50;
job_k_octets = 0;
copies = 1;
job_state = IPP_JOB_PENDING;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-uri") == 0 &&
attr->value_tag == IPP_TAG_URI)
job_uri = attr->values[0].string.text;
if (strcmp(attr->name, "job-printer-uri") == 0 &&
attr->value_tag == IPP_TAG_URI)
printer_uri = attr->values[0].string.text;
if (strcmp(attr->name, "job-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
job_name = attr->values[0].string.text;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
job_user = attr->values[0].string.text;
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
job_id = attr->values[0].integer;
if (strcmp(attr->name, "job-priority") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
job_priority = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
job_k_octets = attr->values[0].integer;
if (strcmp(attr->name, "copies") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
copies = attr->values[0].integer;
if (strcmp(attr->name, "job-state") == 0 &&
attr->value_tag == IPP_TAG_ENUM)
job_state = (ipp_jstate_t)attr->values[0].integer;
attr = attr->next;
}
/*
* See if we have everything needed...
*/
if (job_id && job_uri != NULL && printer_uri != NULL)
{
puts("<TR>");
printf("<TD><A HREF=\"http://%s:%s/jobs/%d\">%s-%d</A></TD>\n",
getenv("SERVER_NAME"), getenv("SERVER_PORT"), job_id,
strrchr(printer_uri, '/') + 1, job_id);
printf("<TD>%s</TD>\n", job_state == IPP_JOB_PROCESSING ?
cupsLangString(language, CUPS_MSG_PROCESSING) :
cupsLangString(language, CUPS_MSG_PENDING));
printf("<TD>%s</TD>\n", job_name);
printf("<TD>%s</TD>\n", job_user);
printf("<TD>%d</TD>\n", job_priority);
printf("<TD>%d</TD>\n", copies);
printf("<TD>%dk</TD>\n", job_k_octets);
puts("</TR>");
}
if (attr == NULL)
break;
}
ippDelete(response);
puts("</TABLE>");
puts("</CENTER>");
}
else
puts("<P>No jobs found.");
}
/*
* 'show_job_info()' - Show job information.
*/
static void
show_job_info(http_t *http, /* I - Server connection */
cups_lang_t *language, /* I - Language */
char *name) /* I - Job "name" */
{
int i; /* Looping var */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
char uri[HTTP_MAX_URI];/* Real URI */
char *job_uri, /* job-uri */
*printer_uri, /* job-printer-uri */
*job_name, /* job-name */
*job_user; /* job-originating-user-name */
int job_id, /* job-id */
job_priority, /* job-priority */
job_k_octets; /* job-k-octets */
ipp_jstate_t job_state; /* job-state */
/*
* Build an IPP_GET_JOB_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_JOB_ATTRIBUTES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
sprintf(uri, "ipp://localhost/jobs/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL, uri);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, uri + 15)) == NULL)
{
puts("<P>Unable to communicate with CUPS server!");
return;
}
if (response->request.status.status_code == IPP_NOT_FOUND)
{
puts("<P>Job does not exist or has completed.");
ippDelete(response);
return;
}
/*
* Get the job status for this job...
*/
if ((attr = ippFindAttribute(response, "job-uri", IPP_TAG_URI)) != NULL)
job_uri = attr->values[0].string.text;
else
{
puts("<P>Missing job-uri attribute!");
ippDelete(request);
return;
}
if ((attr = ippFindAttribute(response, "job-printer-uri", IPP_TAG_URI)) != NULL)
printer_uri = attr->values[0].string.text;
else
{
puts("<P>Missing job-printer-uri attribute!");
ippDelete(request);
return;
}
if ((attr = ippFindAttribute(response, "job-name", IPP_TAG_NAME)) != NULL)
job_name = attr->values[0].string.text;
else
job_name = "unknown";
if ((attr = ippFindAttribute(response, "job-originating-user-name",
IPP_TAG_NAME)) != NULL)
job_user = attr->values[0].string.text;
else
job_user = "unknown";
if ((attr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) != NULL)
job_id = attr->values[0].integer;
else
{
puts("<P>Missing job-id attribute!");
ippDelete(request);
return;
}
if ((attr = ippFindAttribute(response, "job-priority", IPP_TAG_INTEGER)) != NULL)
job_priority = attr->values[0].integer;
else
job_priority = 50;
if ((attr = ippFindAttribute(response, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
job_k_octets = attr->values[0].integer;
else
job_k_octets = 0;
if ((attr = ippFindAttribute(response, "job-state", IPP_TAG_ENUM)) != NULL)
job_state = (ipp_jstate_t)attr->values[0].integer;
else
job_state = IPP_JOB_PENDING;
/*
* Do a table for the job...
*/
printf("<H1><A HREF=\"http://%s:%s/printers/%s\">%s-%d</A></H1>\n",
getenv("SERVER_NAME"), getenv("SERVER_PORT"),
strrchr(printer_uri, '/') + 1, strrchr(printer_uri, '/') + 1, job_id);
puts("<CENTER>");
puts("<TABLE WIDTH=\"90%\" BORDER=\"1\">");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_STATE));
printf("<TD>%s</TD>\n", job_state == IPP_JOB_PROCESSING ?
cupsLangString(language, CUPS_MSG_PROCESSING) :
cupsLangString(language, CUPS_MSG_PENDING));
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_NAME));
printf("<TD>%s</TD>\n", job_name);
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_USER_NAME));
printf("<TD>%s</TD>\n", job_user);
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_PRIORITY));
printf("<TD>%d</TD>\n", job_priority);
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_FILE_SIZE));
printf("<TD>%dk</TD>\n", job_k_octets);
puts("</TR>");
puts("<TR VALIGN=\"TOP\">");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_OPTIONS));
puts("<TD>");
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
if (attr->group_tag != IPP_TAG_JOB &&
attr->group_tag != IPP_TAG_EXTENSION)
continue;
if (strcmp(attr->name, "job-uri") == 0 ||
strcmp(attr->name, "job-printer-uri") == 0 ||
strcmp(attr->name, "job-name") == 0 ||
strcmp(attr->name, "job-originating-user-name") == 0 ||
strcmp(attr->name, "job-id") == 0 ||
strcmp(attr->name, "job-priority") == 0 ||
strcmp(attr->name, "job-k-octets") == 0 ||
strcmp(attr->name, "job-state") == 0)
continue;
if (attr->value_tag != IPP_TAG_BOOLEAN)
printf("%s=", attr->name);
for (i = 0; i < attr->num_values; i ++)
{
if (i)
putchar(',');
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
printf("%d", attr->values[i].integer);
break;
case IPP_TAG_BOOLEAN :
if (!attr->values[i].boolean)
printf("no");
case IPP_TAG_NOVALUE :
fputs(attr->name, stdout);
break;
case IPP_TAG_RANGE :
printf("%d-%d", attr->values[i].range.lower,
attr->values[i].range.upper);
break;
case IPP_TAG_RESOLUTION :
printf("%dx%d%s", attr->values[i].resolution.xres,
attr->values[i].resolution.yres,
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
"dpi" : "dpc");
break;
case IPP_TAG_STRING :
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
case IPP_TAG_KEYWORD :
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
case IPP_TAG_URI :
printf("\"%s\"", attr->values[i].string.text);
break;
}
}
puts("<BR>");
}
puts("</TD>");
puts("</TR>");
puts("</TABLE></CENTER>");
ippDelete(response);
}
/*
* End of "$Id$".
*/
+143 -155
Ver Arquivo
@@ -62,6 +62,7 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
setbuf(stdout, NULL);
/*
* Get the request language...
*/
@@ -103,11 +104,11 @@ main(int argc, /* I - Number of command-line arguments */
printer == NULL ? "Printers" : printer, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,100,35\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"115,10,205,35\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"220,10,280,35\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"295,10,470,35\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"485,10,590,35\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
@@ -196,11 +197,11 @@ show_printer_list(http_t *http, /* I - HTTP connection */
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
attr = 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);
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
/*
* Do the request and get back a response...
@@ -264,7 +265,7 @@ show_printer_info(http_t *http,
char *message; /* Printer state message */
int accepting; /* Accepting requests? */
ipp_pstate_t pstate; /* Printer state */
char uri[HTTP_MAX_URI];/* Printer URI */
char uri[1024]; /* Printer URI */
/*
@@ -295,176 +296,163 @@ show_printer_info(http_t *http,
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, uri + 15)) == NULL)
{
puts("<P>Unable to communicate with CUPS server!");
return;
}
if (response->request.status.status_code == IPP_NOT_FOUND)
{
puts("<P>Printer does not exist.");
ippDelete(response);
return;
}
/*
* Grab the needed printer attributes...
*/
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
/*
* Display the printer entry...
*/
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"/printers/%s\">%s</A></TD>\n", name, name);
printf("<TD VALIGN=TOP><IMG SRC=\"/images/printer-%s.gif\" ALIGN=\"LEFT\">\n",
pstate == IPP_PRINTER_IDLE ? "idle" :
pstate == IPP_PRINTER_PROCESSING ? "processing" : "stopped");
printf("%s: %s, %s<BR>\n",
cupsLangString(language, CUPS_MSG_PRINTER_STATE),
cupsLangString(language, pstate == IPP_PRINTER_IDLE ? CUPS_MSG_IDLE :
pstate == IPP_PRINTER_PROCESSING ?
CUPS_MSG_PROCESSING : CUPS_MSG_STOPPED),
cupsLangString(language, accepting ? CUPS_MSG_ACCEPTING_JOBS :
CUPS_MSG_NOT_ACCEPTING_JOBS));
if (message)
printf("<BR CLEAR=ALL><I>\"%s\"</I>\n", message);
else if (!accepting || pstate == IPP_PRINTER_STOPPED)
puts("<BR CLEAR=ALL><I>\"Reason Unknown\"</I>");
puts("</TD>");
/*
* Show a list of jobs as needed...
*/
if (pstate != IPP_PRINTER_IDLE)
if ((response = cupsDoRequest(http, request, uri + 15)) != NULL)
{
/*
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
* Grab the needed printer attributes...
*/
request = ippNew();
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
/*
* Display the printer entry...
*/
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
puts("<TR>");
jobs = cupsDoRequest(http, request, uri + 15);
}
else
jobs = NULL;
printf("<TD VALIGN=TOP><A HREF=\"/printers/%s\">%s</A></TD>\n", name, name);
puts("<TD VALIGN=\"TOP\">");
jobcount = 0;
printf("<TD VALIGN=TOP><IMG SRC=\"/images/printer-%s.gif\" ALIGN=\"LEFT\">\n",
pstate == IPP_PRINTER_IDLE ? "idle" :
pstate == IPP_PRINTER_PROCESSING ? "processing" : "stopped");
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
printf("%s: %s, %s<BR>\n",
cupsLangString(language, CUPS_MSG_PRINTER_STATE),
cupsLangString(language, pstate == IPP_PRINTER_IDLE ? CUPS_MSG_IDLE :
pstate == IPP_PRINTER_PROCESSING ?
CUPS_MSG_PROCESSING : CUPS_MSG_STOPPED),
cupsLangString(language, accepting ? CUPS_MSG_ACCEPTING_JOBS :
CUPS_MSG_NOT_ACCEPTING_JOBS));
if (message)
printf("<BR CLEAR=ALL><I>\"%s\"</I>\n", message);
else if (!accepting || pstate == IPP_PRINTER_STOPPED)
puts("<BR CLEAR=ALL><I>\"Reason Unknown\"</I>");
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
puts("</TD>");
/*
* Show a list of jobs as needed...
*/
if (pstate != IPP_PRINTER_IDLE)
{
/*
* Skip leading attributes until we hit a job...
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
request = ippNew();
if (attr == NULL)
break;
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
/*
* Pull the needed attributes from this job...
*/
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
jobid = 0;
size = 0;
username = NULL;
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
size = attr->values[0].integer;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
attr = attr->next;
}
/*
* Display the job if it matches the current printer...
*/
if (username != NULL)
{
jobcount ++;
printf("<A HREF=\"/jobs/%d\">%s-%d %s %dk</A><BR>\n", jobid, name,
jobid, username, size);
}
if (attr == NULL)
break;
jobs = cupsDoRequest(http, request, uri + 15);
}
else
jobs = NULL;
ippDelete(jobs);
puts("<TD VALIGN=\"TOP\">");
jobcount = 0;
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (attr == NULL)
break;
/*
* Pull the needed attributes from this job...
*/
jobid = 0;
size = 0;
username = NULL;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
size = attr->values[0].integer;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
attr = attr->next;
}
/*
* Display the job if it matches the current printer...
*/
if (username != NULL)
{
jobcount ++;
printf("<A HREF=\"/jobs/%d\">%s-%d %s %dk</A><BR>\n", jobid, name,
jobid, username, size);
}
if (attr == NULL)
break;
}
ippDelete(jobs);
}
if (jobcount == 0)
puts("None");
puts("</TD>");
puts("</TR>");
ippDelete(response);
}
if (jobcount == 0)
puts("None");
puts("</TD>");
puts("</TR>");
ippDelete(response);
}
+2 -10
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $"
# "$Id: cupsd.conf 349 1999-05-21 20:53:02Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -269,14 +269,6 @@ LogLevel info
#RIPCache: 32m
#
# TempDir: the directory to put temporary files in. This directory must be
# writable by the user defined above! Defaults to "/var/tmp" or the value
# of the TMPDIR environment variable.
#
#TempDir /var/tmp
#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
@@ -336,5 +328,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $".
# End of "$Id: cupsd.conf 349 1999-05-21 20:53:02Z mike $".
#
-250
Ver Arquivo
@@ -1,250 +0,0 @@
#
# "$Id: cupsd.conf-personal 407 1999-06-17 20:02:43Z mike $"
#
# Scheduler configuration file for ESP Print Personal.
#
########################################################################
# #
# This is the CUPS configuration file. If you are familiar with #
# Apache or any of the other popular web servers, we've followed the #
# same format. Any configuration variable used here has the same #
# semantics as the corresponding variable in Apache. If we need #
# different functionality then a different name is used to avoid #
# confusion... #
# #
########################################################################
#
# Ports/addresses that we listen to. The default port 631 is reserved
# for the Internet Printing Protocol (IPP) and is what we use here.
#
# You can have multiple Listen lines to listen to more than one
# port:
#
# Listen 127.0.0.1:80
# Listen 127.0.0.1:631
#
# For ESP Print Personal, we can only listen on the local host...
#
#Listen 127.0.0.1:80
Listen 127.0.0.1:631
#
# User/Group: the user and group the server runs under. Normally this
# must be lp and sys, however you can configure things for another user
# or group as needed.
#
# Note: the server must be run initially as root to support the
# default IPP port of 631. It changes users whenever an external
# program is run...
#
User lp
Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
#
SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
#ServerName myhost.domain.com
#
# ServerAdmin: the email address to send all complaints/problems to.
# By default CUPS will use "root@hostname".
#
#ServerAdmin root@your.domain.com
#
# ServerRoot: the root directory for the scheduler.
# By default the compiled-in value.
#
#ServerRoot /var/cups
#
# AccessLog: the access log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/access_log"
#
#AccessLog logs/access_log
#
# ErrorLog: the error log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/error_log"
#
#ErrorLog logs/error_log
#
# PageLog: the page log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/page_log"
#
#PageLog logs/page_log
#
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
#
# debug Log everything.
# info Log all requests and state changes.
# warn Log errors and warnings.
# error Log only errors.
# none Log nothing.
#
LogLevel info
#
# MaxLogSize: controls the maximum size of each log file before they are
# rotated. Defaults to 1048576 (1MB). Set to 0 to disable log rotating.
#
#MaxLogSize 0
#
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
# disable this feature (defaults to 0.)
#
#MaxRequestSize 0
#
# HostNameLookups: whether or not to do lookups on IP addresses to get a
# fully-qualified hostname. This defaults to Off for performance reasons...
#
#HostNameLookups On
#
# Timeout: the timeout before requests time out. Default is 300 seconds.
#
#Timeout 300
#
# KeepAlive: whether or not to support the Keep-Alive connection
# option. Default is on.
#
#KeepAlive On
#
# KeepAliveTimeout: the timeout before Keep-Alive connections are
# automatically closed. Default is 60 seconds.
#
#KeepAliveTimeout 60
#
# Browsing: not available in ESP Print Personal.
#
Browsing Off
#
# DocumentRoot: the root directory for HTTP documents that are served.
# By default the compiled in directory.
#
#DocumentRoot /usr/share/cups/doc
#
# DefaultLanguage: the default language if not specified by the browser.
# If not specified, the current locale is used.
#
#DefaultLanguage en
#
# DefaultCharset: the default character set to use. If not specified,
# defaults to iso-8859-1. Note that this can also be overridden in
# HTML documents...
#
#DefaultCharset iso-8859-1
#
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
#
#RIPCache: 32m
#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
#
# AuthType: the authorization to use; currently only "Basic" authorization is
# supported.
#
# AuthClass: the authorization class; currently only "Anonymous", "User",
# "System" (valid user belonging to group SystemGroup), and "Group"
# (valid user belonging to the specified group) are supported.
#
# AuthGroupName: the group name for "Group" authorization.
#
# Order: the order of Allow/Deny processing.
#
# Allow: allows access from the specified hostname, domain, IP address, or
# network.
#
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
<Location />
</Location>
<Location /printers>
#
# You may wish to limit access to printers and classes, either with Allow
# and Deny lines, or by requiring a username and password.
#
## Require a username and password
#AuthType Basic
#AuthClass User
## Restrict access to local domain
#Order Deny,Allow
#Deny From All
#Allow From .mydomain.com
</Location>
<Location /admin>
#
# You definitely will want to limit access to the administration tools.
# The default configuration requires a local connection from a user who
# is a member of group "sys" to do any admin tasks. You can change the
# group name using the SystemGroup directive.
#
AuthType Basic
AuthClass System
## Restrict access to local domain
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf-personal 407 1999-06-17 20:02:43Z mike $".
#
-313
Ver Arquivo
@@ -1,313 +0,0 @@
#
# "$Id: cupsd.conf-professional 407 1999-06-17 20:02:43Z mike $"
#
# Scheduler configuration file for ESP Print Professional.
#
########################################################################
# #
# This is the CUPS configuration file. If you are familiar with #
# Apache or any of the other popular web servers, we've followed the #
# same format. Any configuration variable used here has the same #
# semantics as the corresponding variable in Apache. If we need #
# different functionality then a different name is used to avoid #
# confusion... #
# #
########################################################################
#
# Ports/addresses that we listen to. The default port 631 is reserved
# for the Internet Printing Protocol (IPP) and is what we use here.
#
# You can have multiple Port/Listen lines to listen to more than one
# port or address, or to restrict access:
#
# Port 80
# Port 631
# Listen hostname
# Listen hostname:80
# Listen hostname:631
# Listen 1.2.3.4
# Listen 1.2.3.4:631
#
#Port 80
Port 631
#
# User/Group: the user and group the server runs under. Normally this
# must be lp and sys, however you can configure things for another user
# or group as needed.
#
# Note: the server must be run initially as root to support the
# default IPP port of 631. It changes users whenever an external
# program is run...
#
User lp
Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
#
SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
#ServerName myhost.domain.com
#
# ServerAdmin: the email address to send all complaints/problems to.
# By default CUPS will use "root@hostname".
#
#ServerAdmin root@your.domain.com
#
# ServerRoot: the root directory for the scheduler.
# By default the compiled-in value.
#
#ServerRoot /var/cups
#
# AccessLog: the access log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/access_log"
#
#AccessLog logs/access_log
#
# ErrorLog: the error log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/error_log"
#
#ErrorLog logs/error_log
#
# PageLog: the page log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/page_log"
#
#PageLog logs/page_log
#
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
#
# debug Log everything.
# info Log all requests and state changes.
# warn Log errors and warnings.
# error Log only errors.
# none Log nothing.
#
LogLevel info
#
# MaxLogSize: controls the maximum size of each log file before they are
# rotated. Defaults to 1048576 (1MB). Set to 0 to disable log rotating.
#
#MaxLogSize 0
#
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
# disable this feature (defaults to 0.)
#
#MaxRequestSize 0
#
# HostNameLookups: whether or not to do lookups on IP addresses to get a
# fully-qualified hostname. This defaults to Off for performance reasons...
#
#HostNameLookups On
#
# Timeout: the timeout before requests time out. Default is 300 seconds.
#
#Timeout 300
#
# KeepAlive: whether or not to support the Keep-Alive connection
# option. Default is on.
#
#KeepAlive On
#
# KeepAliveTimeout: the timeout before Keep-Alive connections are
# automatically closed. Default is 60 seconds.
#
#KeepAliveTimeout 60
#
# ImplicitClasses: whether or not to use implicit classes.
#
# Printer classes can be specified explicitly in the classes.conf
# file, implicitly based upon the printers available on the LAN, or
# both.
#
# When ImplicitClasses is On, printers on the LAN with the same name
# (e.g. Acme-LaserPrint-1000) will be put into a class with the same
# name. This allows you to setup multiple redundant queues on a LAN
# without a lot of administrative difficulties. If a user sends a
# job to Acme-LaserPrint-1000, the job will go to the first available
# queue.
#
# Enabled by default.
#
#ImplicitClasses On
#
# Browsing: whether or not to broadcast printer information to
# other CUPS servers. Enabled by default.
#
#Browsing On
#
# BrowseInterval: the time between browsing updates in seconds. Default
# is 30 seconds.
#
# Note that browsing information is sent whenever a printer's state changes
# as well, so this represents the maximum time between updates.
#
#BrowseInterval 30
#
# BrowseTimeout: the timeout for network printers - if we don't
# get an update within this time the printer will be removed
# from the printer list. This number definitely should not be
# less the BrowseInterval value for obvious reasons. Defaults
# to 300 seconds.
#
#BrowseTimeout 300
#
# BrowsePort: the port used for UDP broadcasts. By default this is
# the IPP port; if you change this you need to do it on all servers.
# Only one BrowsePort is recognized.
#
#BrowsePort 631
#
# BrowseAddress: specifies a broadcast address to be used. By
# default browsing information is broadcast to all active interfaces.
#
# Note: HP-UX 10.20 and earlier do not properly handle broadcast unless
# you have a Class A, B, C, or D netmask (i.e. no CIDR support).
#
#BrowseAddress x.y.z.255
#BrowseAddress x.y.255.255
#BrowseAddress x.255.255.255
#
# DocumentRoot: the root directory for HTTP documents that are served.
# By default the compiled in directory.
#
#DocumentRoot /usr/share/cups/doc
#
# DefaultLanguage: the default language if not specified by the browser.
# If not specified, the current locale is used.
#
#DefaultLanguage en
#
# DefaultCharset: the default character set to use. If not specified,
# defaults to iso-8859-1. Note that this can also be overridden in
# HTML documents...
#
#DefaultCharset iso-8859-1
#
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
#
#RIPCache: 32m
#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
#
# AuthType: the authorization to use; currently only "Basic" authorization is
# supported.
#
# AuthClass: the authorization class; currently only "Anonymous", "User",
# "System" (valid user belonging to group SystemGroup), and "Group"
# (valid user belonging to the specified group) are supported.
#
# AuthGroupName: the group name for "Group" authorization.
#
# Order: the order of Allow/Deny processing.
#
# Allow: allows access from the specified hostname, domain, IP address, or
# network.
#
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
<Location />
</Location>
<Location /printers>
#
# You may wish to limit access to printers and classes, either with Allow
# and Deny lines, or by requiring a username and password.
#
## Require a username and password
#AuthType Basic
#AuthClass User
## Restrict access to local domain
#Order Deny,Allow
#Deny From All
#Allow From .mydomain.com
</Location>
<Location /admin>
#
# You definitely will want to limit access to the administration tools.
# The default configuration requires a local connection from a user who
# is a member of group "sys" to do any admin tasks. You can change the
# group name using the SystemGroup directive.
#
AuthType Basic
AuthClass System
## Restrict access to local domain
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf-professional 407 1999-06-17 20:02:43Z mike $".
#
+1 -1
Ver Arquivo
@@ -16,7 +16,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+3 -34
Ver Arquivo
@@ -14,7 +14,7 @@ dnl at:
dnl
dnl Attn: CUPS Licensing Information
dnl Easy Software Products
dnl 44141 Airport View Drive, Suite 204
dnl 44145 Airport View Drive, Suite 204
dnl Hollywood, Maryland 20636-3111 USA
dnl
dnl Voice: (301) 373-9603
@@ -58,42 +58,11 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(NROFF,nroff)
if test "$NROFF" = ""; then
AC_PATH_PROG(NROFF,groff)
if test "$NROFF" = ""; then
NROFF="echo"
else
NROFF="$NROFF -T ascii"
fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)
AC_PATH_PROG(MKDIR,mkdir)
AC_PATH_PROG(PACK,pack)
if test "$PACK" = ""; then
AC_PATH_PROG(PACK,gzip)
if test "$PACK" = ""; then
PACK="echo"
CAT="dummy"
else
PACK="$PACK -fv9"
CAT="gz"
fi
else
PACK="$PACK -f"
CAT="z"
fi
AC_SUBST(CAT)
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(SED,sed)
AC_PATH_PROG(SMBCLIENT,smbclient)
if test "$SMBCLIENT" = ""; then
echo "Looking for smbclient in standard locations..."
AC_PATH_PROG(SMBCLIENT,smbclient,samba_not_detected,
/usr/samba/bin:/usr/local/samba/bin:/usr/freeware/samba/bin:/opt/samba/bin)
fi
AC_PATH_PROG(GROFF,groff)
AC_PATH_PROG(HTMLDOC,htmldoc)
dnl Architecture checks...
AC_C_BIGENDIAN
-309
Ver Arquivo
@@ -1,309 +0,0 @@
#
# "$Id: cups.list 432 1999-06-21 20:14:24Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
#
# EPM can be found in the "epm" subdirectory of this distribution.
# Please report problems and fixes to Michael Sweet (mike@easysw.com).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
%product Common UNIX Printing System
%copyright 1993-1999 by Easy Software Products, All Rights Reserved.
%vendor Easy Software Products
%license LICENSE.cups
%readme README.cups
%version 1.0b4
%system all
# Server files
f 0555 root sys /var/cups/backend/ipp backend/ipp
f 4555 root sys /var/cups/backend/lpd backend/lpd
f 0555 root sys /var/cups/backend/parallel backend/parallel
f 0555 root sys /var/cups/backend/serial backend/serial
f 0555 root sys /var/cups/backend/smb backend/smb
f 0555 root sys /var/cups/backend/socket backend/socket
f 0500 root sys /usr/sbin/cupsd scheduler/cupsd
f 0555 root sys /var/cups/cgi-bin/classes.cgi cgi-bin/classes.cgi
f 0555 root sys /var/cups/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
f 0555 root sys /var/cups/cgi-bin/printers.cgi cgi-bin/printers.cgi
f 0555 root sys /var/cups/filter/pstoraster pstoraster/pstoraster
f 0555 root sys /var/cups/filter/imagetops filter/imagetops
f 0555 root sys /var/cups/filter/pstops filter/pstops
f 0555 root sys /var/cups/filter/texttops filter/texttops
f 0555 root sys /var/cups/filter/rastertohp filter/rastertohp
f 0555 root sys /var/cups/filter/hpgltops filter/hpgltops
f 0555 root sys /var/cups/filter/imagetoraster filter/imagetoraster
# User commands
f 0555 root sys /usr/bin/lp systemv/lp
f 0555 root sys /usr/bin/lpstat systemv/lpstat
f 0555 root sys /usr/lib/lpadmin systemv/lpadmin
f 0555 root sys /usr/lib/cancel systemv/cancel
f 0555 root sys /usr/lib/accept systemv/accept
l 0555 root sys /usr/lib/reject accept
l 0555 root sys /usr/bin/disable /usr/lib/accept
l 0555 root sys /usr/bin/enable /usr/lib/accept
f 0555 root sys /usr/sbin/lpc berkeley/lpc
f 0555 root sys /usr/bin/lpq berkeley/lpq
f 0555 root sys /usr/bin/lpr berkeley/lpr
f 0555 root sys /usr/bin/lprm berkeley/lprm
# Directories
d 0755 root sys /var/cups/interfaces
d 0755 root sys /var/cups/logs
d 0755 root sys /var/cups/ppd
d 0755 root sys /var/cups/requests
# Data files
f 0444 root sys /usr/lib/locale/C/cups_C locale/C/cups_C
f 0444 root sys /usr/lib/locale/de/cups_de locale/de/cups_de
f 0444 root sys /usr/lib/locale/en/cups_en locale/en/cups_en
f 0444 root sys /usr/lib/locale/es/cups_es locale/es/cups_es
f 0444 root sys /usr/lib/locale/fr/cups_fr locale/fr/cups_fr
f 0444 root sys /usr/lib/locale/it/cups_it locale/it/cups_it
f 0444 root sys /usr/share/cups/data/8859-1 data/8859-1
f 0444 root sys /usr/share/cups/data/8859-14 data/8859-14
f 0444 root sys /usr/share/cups/data/8859-15 data/8859-15
f 0444 root sys /usr/share/cups/data/8859-2 data/8859-2
f 0444 root sys /usr/share/cups/data/8859-3 data/8859-3
f 0444 root sys /usr/share/cups/data/8859-4 data/8859-4
f 0444 root sys /usr/share/cups/data/8859-5 data/8859-5
f 0444 root sys /usr/share/cups/data/8859-6 data/8859-6
f 0444 root sys /usr/share/cups/data/8859-7 data/8859-7
f 0444 root sys /usr/share/cups/data/8859-8 data/8859-8
f 0444 root sys /usr/share/cups/data/8859-9 data/8859-9
f 0444 root sys /usr/share/cups/data/HPGLprolog data/HPGLprolog
f 0444 root sys /usr/share/cups/data/psglyphs data/psglyphs
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Book fonts/AvantGarde-Book
f 0444 root sys /usr/share/cups/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
f 0444 root sys /usr/share/cups/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
f 0444 root sys /usr/share/cups/fonts/Bookman-Demi fonts/Bookman-Demi
f 0444 root sys /usr/share/cups/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
f 0444 root sys /usr/share/cups/fonts/Bookman-Light fonts/Bookman-Light
f 0444 root sys /usr/share/cups/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
f 0444 root sys /usr/share/cups/fonts/Courier fonts/Courier
f 0444 root sys /usr/share/cups/fonts/Courier-Bold fonts/Courier-Bold
f 0444 root sys /usr/share/cups/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Courier-Oblique fonts/Courier-Oblique
f 0444 root sys /usr/share/cups/fonts/Helvetica fonts/Helvetica
f 0444 root sys /usr/share/cups/fonts/Helvetica-Bold fonts/Helvetica-Bold
f 0444 root sys /usr/share/cups/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
f 0444 root sys /usr/share/cups/fonts/Palatino-Bold fonts/Palatino-Bold
f 0444 root sys /usr/share/cups/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Palatino-Italic fonts/Palatino-Italic
f 0444 root sys /usr/share/cups/fonts/Palatino-Roman fonts/Palatino-Roman
f 0444 root sys /usr/share/cups/fonts/Symbol fonts/Symbol
f 0444 root sys /usr/share/cups/fonts/Times-Bold fonts/Times-Bold
f 0444 root sys /usr/share/cups/fonts/Times-BoldItalic fonts/Times-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Times-Italic fonts/Times-Italic
f 0444 root sys /usr/share/cups/fonts/Times-Roman fonts/Times-Roman
f 0444 root sys /usr/share/cups/fonts/Utopia-Bold fonts/Utopia-Bold
f 0444 root sys /usr/share/cups/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Utopia-Italic fonts/Utopia-Italic
f 0444 root sys /usr/share/cups/fonts/Utopia-Regular fonts/Utopia-Regular
f 0444 root sys /usr/share/cups/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
f 0444 root sys /usr/share/cups/fonts/ZapfDingbats fonts/ZapfDingbats
f 0444 root sys /usr/share/cups/pstoraster/Fontmap pstoraster/Fontmap
f 0444 root sys /usr/share/cups/pstoraster/gs_l2img.ps pstoraster/gs_l2img.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
f 0444 root sys /usr/share/cups/pstoraster/pfbtogs.ps pstoraster/pfbtogs.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf_e.ps pstoraster/gs_pdf_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf.ps pstoraster/gs_pdf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_sec.ps pstoraster/pdf_sec.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_res.ps pstoraster/gs_res.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_base.ps pstoraster/pdf_base.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_2ps.ps pstoraster/pdf_2ps.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_init.ps pstoraster/gs_init.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_draw.ps pstoraster/pdf_draw.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_font.ps pstoraster/pdf_font.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdfwr.ps pstoraster/gs_pdfwr.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_main.ps pstoraster/pdf_main.ps
f 0444 root sys /usr/share/cups/model/deskjet.ppd ppd/deskjet.ppd
f 0444 root sys /usr/share/cups/model/laserjet.ppd ppd/laserjet.ppd
# Config files
c 0600 root sys /var/cups/conf/classes.conf conf/classes.conf
c 0600 root sys /var/cups/conf/cupsd.conf conf/cupsd.conf
c 0600 root sys /var/cups/conf/mime.convs conf/mime.convs
c 0600 root sys /var/cups/conf/mime.types conf/mime.types
c 0600 root sys /var/cups/conf/printers.conf conf/printers.conf
# Documentation files
f 0444 root sys /usr/share/cups/doc/cmp.html doc/cmp.html
f 0444 root sys /usr/share/cups/doc/cmp.pdf doc/cmp.pdf
f 0444 root sys /usr/share/cups/doc/cupsdoc.css doc/cupsdoc.css
f 0444 root sys /usr/share/cups/doc/cups.css doc/cups.css
f 0444 root sys /usr/share/cups/doc/documentation.html doc/documentation.html
f 0444 root sys /usr/share/cups/doc/idd.html doc/idd.html
f 0444 root sys /usr/share/cups/doc/idd.pdf doc/idd.pdf
f 0444 root sys /usr/share/cups/doc/images/classes.gif doc/images/classes.gif
f 0444 root sys /usr/share/cups/doc/images/cups-bar.gif doc/images/cups-bar.gif
f 0444 root sys /usr/share/cups/doc/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
f 0444 root sys /usr/share/cups/doc/images/cups-large.gif doc/images/cups-large.gif
f 0444 root sys /usr/share/cups/doc/images/cups-medium.gif doc/images/cups-medium.gif
f 0444 root sys /usr/share/cups/doc/images/cups-small.gif doc/images/cups-small.gif
f 0444 root sys /usr/share/cups/doc/images/logo.gif doc/images/logo.gif
f 0444 root sys /usr/share/cups/doc/images/navbar.gif doc/images/navbar.gif
f 0444 root sys /usr/share/cups/doc/images/printer-idle.gif doc/images/printer-idle.gif
f 0444 root sys /usr/share/cups/doc/images/printer-processing.gif doc/images/printer-processing.gif
f 0444 root sys /usr/share/cups/doc/images/printer-stopped.gif doc/images/printer-stopped.gif
f 0444 root sys /usr/share/cups/doc/index.html doc/index.html
f 0444 root sys /usr/share/cups/doc/overview.html doc/overview.html
f 0444 root sys /usr/share/cups/doc/overview.pdf doc/overview.pdf
f 0444 root sys /usr/share/cups/doc/sam.html doc/sam.html
f 0444 root sys /usr/share/cups/doc/sam.pdf doc/sam.pdf
f 0444 root sys /usr/share/cups/doc/sdd.html doc/sdd.html
f 0444 root sys /usr/share/cups/doc/sdd.pdf doc/sdd.pdf
f 0444 root sys /usr/share/cups/doc/ssr.html doc/ssr.html
f 0444 root sys /usr/share/cups/doc/ssr.pdf doc/ssr.pdf
f 0444 root sys /usr/share/cups/doc/stp.html doc/stp.html
f 0444 root sys /usr/share/cups/doc/stp.pdf doc/stp.pdf
f 0444 root sys /usr/share/cups/doc/sum.html doc/sum.html
f 0444 root sys /usr/share/cups/doc/sum.pdf doc/sum.pdf
f 0444 root sys /usr/share/cups/doc/svd.html doc/svd.html
f 0444 root sys /usr/share/cups/doc/svd.pdf doc/svd.pdf
# Man pages
%system irix irix64
f 0444 root sys /usr/share/catman/a_man/cat1/accept.z man/accept.z
l 0444 root sys /usr/share/catman/a_man/cat1/reject.z accept.z
f 0444 root sys /usr/share/catman/u_man/cat1/backend.z man/backend.z
f 0444 root sys /usr/share/catman/u_man/cat5/classes.conf.z man/classes.conf.z
f 0444 root sys /usr/share/catman/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
f 0444 root sys /usr/share/catman/a_man/cat1/cupsd.z man/cupsd.z
f 0444 root sys /usr/share/catman/a_man/cat1/enable.z man/enable.z
l 0444 root sys /usr/share/catman/a_man/cat1/disable.z enable.z
f 0444 root sys /usr/share/catman/u_man/cat1/filter.z man/filter.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpadmin.z man/lpadmin.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpc.z man/lpc.z
f 0444 root sys /usr/share/catman/u_man/cat1/lprm.z man/lprm.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpr.z man/lpr.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpstat.z man/lpstat.z
f 0444 root sys /usr/share/catman/u_man/cat1/lp.z man/lp.z
l 0444 root sys /usr/share/catman/u_man/cat1/cancel.z lp.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.convs.z man/mime.convs.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.types.z man/mime.types.z
f 0444 root sys /usr/share/catman/u_man/cat5/printers.conf.z man/printers.conf.z
%system hpux linux dunix solaris sunos
f 0444 root sys /usr/man/man8/accept.8 man/accept.8
l 0444 root sys /usr/man/man8/reject.8 accept.8
f 0444 root sys /usr/man/man1/backend.1 man/backend.1
f 0444 root sys /usr/man/man1/classes.conf.5 man/classes.conf.5
f 0444 root sys /usr/man/man8/cupsd.8 man/cupsd.8
f 0444 root sys /usr/man/man5/cupsd.conf.5 man/cupsd.conf.5
f 0444 root sys /usr/man/man8/enable.8 man/enable.8
l 0444 root sys /usr/man/man8/disable.8 enable.8
f 0444 root sys /usr/man/man1/filter.1 man/filter.1
f 0444 root sys /usr/man/man8/lpadmin.8 man/lpadmin.8
f 0444 root sys /usr/man/man8/lpc.8 man/lpc.8
f 0444 root sys /usr/man/man1/lprm.1 man/lprm.1
f 0444 root sys /usr/man/man1/lpr.1 man/lpr.1
f 0444 root sys /usr/man/man1/lpstat.1 man/lpstat.1
f 0444 root sys /usr/man/man1/lp.1 man/lp.1
l 0444 root sys /usr/man/man1/cancel.1 lp.1
f 0444 root sys /usr/man/man5/mime.convs.5 man/mime.convs.5
f 0444 root sys /usr/man/man5/mime.types.5 man/mime.types.5
f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
# Startup scripts
%system hpux
%install /sbin/init.d/lp start
%remove /sbin/init.d/lp stop
%patch /sbin/init.d/lp stop
f 0555 root sys /sbin/init.d/lp cups.sh
l 0555 root sys /sbin/rc1.d/K280lp ../init.d/lp
l 0555 root sys /sbin/rc2.d/S720lp ../init.d/lp
%system irix irix64
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K25lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S60lp ../init.d/lp
%system linux
%install /etc/rc.d/init.d/lpd start
%remove /etc/rc.d/init.d/lpd stop
%patch /etc/rc.d/init.d/lpd stop
f 0555 root sys /etc/rc.d/init.d/lpd cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc3.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc4.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc5.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc0.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc1.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc6.d/K60lpd ../init.d/lpd
%system dunix
%install /sbin/init.d/lpd start
%remove /sbin/init.d/lpd stop
%patch /sbin/init.d/lpd stop
f 0555 root sys /sbin/init.d/lpd cups.sh
l 0555 root sys /sbin/rc0.d/K05lpd ../init.d/lpd
l 0555 root sys /sbin/rc2.d/K00lpd ../init.d/lpd
l 0555 root sys /sbin/rc3.d/S65lpd ../init.d/lpd
%system solaris sunos
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K20lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S80lp ../init.d/lp
#
# End of "$Id: cups.list 432 1999-06-21 20:14:24Z mike $".
#
-64
Ver Arquivo
@@ -1,64 +0,0 @@
#!/bin/sh
#
# "$Id$"
#
# Startup/shutdown script for the Common UNIX Printing System (CUPS).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
# See if the CUPS daemon is running, and if so stop it...
case "`uname`" in
IRIX* | HP-UX | SunOS)
pid=`ps -e | awk '{print $1,$4}' | grep cupsd | awk '{print $1}'`
;;
OSF1)
pid=`ps -e | awk '{print $1,$5}' | grep cupsd | awk '{print $1}'`
;;
Linux)
pid=`ps ax | awk '{print $1,$5}' | grep cupsd | awk '{print $1}'`
;;
*)
pid=""
;;
esac
case $1 in
start | restart)
if test "$pid" != ""; then
echo "Restarting CUPS scheduler..."
kill -HUP $pid
else
echo "Starting CUPS scheduler..."
/usr/sbin/cupsd 2>&1 >/dev/null &
fi
;;
stop)
if test "$pid" != ""; then
echo "Stopping CUPS scheduler..."
kill $pid
sleep 1
fi
;;
esac
#
# End of "$Id$".
#
+3 -10
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -29,8 +29,7 @@ include ../Makedefs
#
OBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
options.o page.o ppd.o raster.o string.o type.o usersys.o \
util.o
options.o page.o ppd.o raster.o string.o type.o util.o
#
# Header files to install...
@@ -72,7 +71,6 @@ install: all
#
libcups.a: $(OBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(OBJS)
$(RANLIB) $@
@@ -82,7 +80,6 @@ libcups.a: $(OBJS)
#
cups_C.h: ../locale/C/cups_C
echo Generating $@...
$(RM) cups_C.h
$(AWK) '{print "\"" $$0 "\","}' < ../locale/C/cups_C > cups_C.h
@@ -95,11 +92,10 @@ mark.o: ppd.h ../config.h ../Makedefs
mime.o: mime.h ../config.h ../Makedefs
options.o: cups.h ../config.h ../Makedefs
page.o: ppd.h ../config.h ../Makedefs
ppd.o: language.h ppd.h ../config.h ../Makedefs
ppd.o: ppd.h ../config.h ../Makedefs
raster.o: raster.h ../config.h ../Makedefs
string.o: string.h ../config.h ../Makedefs
type.o: mime.h ../config.h ../Makedefs
usersys.o: cups.h ../config.h ../Makedefs
util.o: cups.h http.h ipp.h ../config.h ../Makedefs
#
@@ -107,7 +103,6 @@ util.o: cups.h http.h ipp.h ../config.h ../Makedefs
#
testhttp: testhttp.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhttp.o $(LIBS)
testhttp.o: http.h ../Makedefs
@@ -117,7 +112,6 @@ testhttp.o: http.h ../Makedefs
#
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o $(LIBS)
testmime.o: mime.h ../Makedefs
@@ -127,7 +121,6 @@ testmime.o: mime.h ../Makedefs
#
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o $(LIBS)
testppd.o: ppd.h ../Makedefs
+1 -7
Ver Arquivo
@@ -74,9 +74,7 @@ enum /* Not a typedef'd enum so we can OR */
CUPS_PRINTER_SMALL = 0x1000, /* Can do Letter/Legal/A4 */
CUPS_PRINTER_MEDIUM = 0x2000, /* Can do Tabloid/B/C/A3/A2 */
CUPS_PRINTER_LARGE = 0x4000, /* Can do D/E/A1/A0 */
CUPS_PRINTER_VARIABLE = 0x8000, /* Can do variable sizes */
CUPS_PRINTER_IMPLICIT = 0x10000, /* Implicit class */
CUPS_PRINTER_OPTIONS = 0xfffc /* ~(CLASS | REMOTE | IMPLICIT) */
CUPS_PRINTER_VARIABLE = 0x8000 /* Can do variable sizes */
};
@@ -127,10 +125,6 @@ extern int cupsParseOptions(char *arg, int num_options,
extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
cups_option_t *options);
extern char *cupsGetPassword(const char *prompt);
extern char *cupsServer();
extern char *cupsUser();
# ifdef __cplusplus
}
# endif /* __cplusplus */
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -8
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -1051,15 +1051,8 @@ httpUpdate(http_t *http) /* I - HTTP data */
/*
* Blank line means the start of the data section (if any). Return
* the result code, too...
*
* If we get status 100 (HTTP_CONTINUE), then we *don't* change states.
* Instead, we just return HTTP_CONTINUE to the caller and keep on
* tryin'...
*/
if (http->status == HTTP_CONTINUE)
return (http->status);
httpGetLength(http);
switch (http->state)
+2 -3
Ver Arquivo
@@ -15,7 +15,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -131,8 +131,7 @@ typedef enum
typedef enum
{
HTTP_ERROR = -1, /* An error response from httpXxxx() */
HTTP_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_CONTINUE, /* Everything OK, keep going... */
HTTP_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_CREATED, /* PUT command was successful */
-2
Ver Arquivo
@@ -512,8 +512,6 @@ ippDateToTime(ipp_uchar_t *date)/* I - RFC 1903 date info */
else
t -= date[9] * 3600 + date[10] * 60;
t -= timezone;
return (t);
}
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+21 -26
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -48,11 +48,13 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_CLOSE,
CUPS_MSG_YES,
CUPS_MSG_NO,
CUPS_MSG_AUTO,
CUPS_MSG_ON,
CUPS_MSG_OFF,
CUPS_MSG_SAVE,
CUPS_MSG_DISCARD,
CUPS_MSG_DEFAULT,
CUPS_MSG_USER_DEFINED,
CUPS_MSG_OPTIONS,
CUPS_MSG_MORE_INFO,
CUPS_MSG_BLACK,
@@ -61,14 +63,18 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_MAGENTA,
CUPS_MSG_YELLOW,
CUPS_MSG_COPYRIGHT,
CUPS_MSG_ALL_RIGHTS_RESERVED,
CUPS_MSG_GENERAL,
CUPS_MSG_PRINTER,
CUPS_MSG_POSTSCRIPT,
CUPS_MSG_IMAGE,
CUPS_MSG_HPGL2,
CUPS_MSG_EXTRA,
CUPS_MSG_DOCUMENT,
CUPS_MSG_OTHER,
CUPS_MSG_TEXT,
CUPS_MSG_HPGL,
CUPS_MSG_ADVANCED,
CUPS_MSG_PRINT_BANNER_PAGE,
CUPS_MSG_VERBOSE_LOGGING,
CUPS_MSG_PRINT_PAGES,
CUPS_MSG_DOCUMENT,
CUPS_MSG_ENTIRE_DOCUMENT,
CUPS_MSG_PAGE_RANGE,
CUPS_MSG_REVERSE_ORDER,
@@ -81,16 +87,22 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_ZOOM_BY_PERCENT,
CUPS_MSG_ZOOM_BY_PPI,
CUPS_MSG_MIRROR_IMAGE,
CUPS_MSG_ROTATE_IMAGE,
CUPS_MSG_BEST_FIT,
CUPS_MSG_COLOR_SATURATION,
CUPS_MSG_COLOR_HUE,
CUPS_MSG_NUMBER_OF_COLUMNS,
CUPS_MSG_MARGINS,
CUPS_MSG_WRAP_TEXT,
CUPS_MSG_FIT_TO_PAGE,
CUPS_MSG_SHADING,
CUPS_MSG_DEFAULT_PEN_WIDTH,
CUPS_MSG_GAMMA_CORRECTION,
CUPS_MSG_BRIGHTNESS,
CUPS_MSG_ADD,
CUPS_MSG_DELETE,
CUPS_MSG_MODIFY,
CUPS_MSG_COLOR_PROFILE,
CUPS_MSG_ADD_PRINTER,
CUPS_MSG_DELETE_PRINTER,
CUPS_MSG_MODIFY_PRINTER,
CUPS_MSG_PRINTER_URI,
CUPS_MSG_PRINTER_NAME,
CUPS_MSG_PRINTER_LOCATION,
@@ -122,23 +134,6 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_IDLE,
CUPS_MSG_PROCESSING,
CUPS_MSG_STOPPED,
CUPS_MSG_ALL,
CUPS_MSG_ODD,
CUPS_MSG_EVEN_PAGES,
CUPS_MSG_DARKER_LIGHTER,
CUPS_MSG_MEDIA_SIZE,
CUPS_MSG_MEDIA_TYPE,
CUPS_MSG_MEDIA_SOURCE,
CUPS_MSG_ORIENTATION,
CUPS_MSG_PORTRAIT,
CUPS_MSG_LANDSCAPE,
CUPS_MSG_JOB_STATE,
CUPS_MSG_JOB_NAME,
CUPS_MSG_USER_NAME,
CUPS_MSG_PRIORITY,
CUPS_MSG_COPIES,
CUPS_MSG_FILE_SIZE,
CUPS_MSG_PENDING,
CUPS_MSG_HTTP_BASE = 200,
CUPS_MSG_HTTP_END = 505,
CUPS_MSG_MAX
@@ -175,7 +170,7 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
* Prototypes...
*/
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, 0))
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
+1 -4
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -33,9 +33,6 @@
* Revision History:
*
* $Log: mime.c,v $
* Revision 1.13 1999/06/18 18:36:10 mike
* Fixed address to 44141 Airport View Drive...
*
* Revision 1.12 1999/04/21 21:19:33 mike
* Changes for HP-UX.
*
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+16 -84
Ver Arquivo
@@ -50,12 +50,11 @@
* Include necessary headers.
*/
/*#define DEBUG*/
#include "ppd.h"
#include <stdlib.h>
#include <ctype.h>
#include "string.h"
#include "language.h"
#include "debug.h"
/*
@@ -87,7 +86,6 @@ static int compare_choices(ppd_choice_t *c0, ppd_choice_t *c1);
static int ppd_read(FILE *fp, char *keyword, char *option,
char *text, char **string);
static void ppd_decode(char *string);
static void ppd_fix(char *string);
static void ppd_free_group(ppd_group_t *group);
static void ppd_free_option(ppd_option_t *option);
static ppd_group_t *ppd_get_group(ppd_file_t *ppd, char *name);
@@ -419,15 +417,8 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd_section_t section; /* Order dependency section */
ppd_profile_t *profile; /* Pointer to color profile */
char **filter; /* Pointer to filter */
cups_lang_t *language; /* Default language */
/*
* Get the default language for the user...
*/
language = cupsLangDefault();
/*
* Range check input...
*/
@@ -641,9 +632,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Add a "Custom" page size option...
*/
if ((group = ppd_get_group(ppd,
cupsLangString(language,
CUPS_MSG_GENERAL))) == NULL)
if ((group = ppd_get_group(ppd, "General")) == NULL)
{
ppdClose(ppd);
free(string);
@@ -664,7 +653,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
return (NULL);
}
strcpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE));
strcpy(choice->text, "Custom Size");
group = NULL;
option = NULL;
}
@@ -691,7 +680,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
{
if ((option = ppdFindOption(ppd, "PageSize")) == NULL)
{
ppdClose(ppd);
ppdClose(ppd);
free(string);
return (NULL);
}
@@ -806,9 +795,9 @@ ppdOpen(FILE *fp) /* I - File to read from */
strcmp(name, "OutputOrder") != 0 &&
strcmp(name, "PageSize") != 0 &&
strcmp(name, "PageRegion") != 0)
group = ppd_get_group(ppd, cupsLangString(language, CUPS_MSG_EXTRA));
group = ppd_get_group(ppd, "Extra");
else
group = ppd_get_group(ppd, cupsLangString(language, CUPS_MSG_GENERAL));
group = ppd_get_group(ppd, "General");
if (group == NULL)
{
@@ -842,18 +831,15 @@ ppdOpen(FILE *fp) /* I - File to read from */
option->ui = PPD_UI_PICKONE;
if (text[0])
{
strcpy(option->text, text);
ppd_fix(option->text);
}
else
{
if (strcmp(name, "PageSize") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE));
strcpy(option->text, "Media Size");
else if (strcmp(name, "MediaType") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
strcpy(option->text, "Media Type");
else if (strcmp(name, "InputSlot") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
strcpy(option->text, "Media Source");
else
strcpy(option->text, name);
}
@@ -866,6 +852,13 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Find the JCL group, and add if needed...
*/
if (group != NULL)
{
ppdClose(ppd);
free(string);
return (NULL);
}
group = ppd_get_group(ppd, "JCL");
if (group == NULL)
@@ -927,7 +920,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
strcpy(string, strchr(string, '/') + 1);
ppd_decode(string);
ppd_fix(string);
group = ppd_get_group(ppd, string);
}
else if (strcmp(keyword, "CloseGroup") == 0)
@@ -963,8 +955,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
group->num_subgroups ++;
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strcpy(subgroup->text, string);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
@@ -1024,9 +1014,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
}
else if (strncmp(keyword, "Default", 7) == 0)
{
if (string == NULL)
continue;
if (strchr(string, '/') != NULL)
*strchr(string, '/') = '\0';
@@ -1155,10 +1142,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
choice = ppd_add_choice(option, name);
if (mask & PPD_TEXT)
{
strcpy(choice->text, text);
ppd_fix(choice->text);
}
else if (strcmp(name, "True") == 0)
strcpy(choice->text, "Yes");
else if (strcmp(name, "False") == 0)
@@ -1697,58 +1681,6 @@ ppd_decode(char *string) /* I - String to decode */
}
/*
* 'ppd_fix()' - Fix WinANSI characters in the range 0x80 to 0x9f to be
* valid ISO-8859-1 characters...
*/
static void
ppd_fix(char *string) /* IO - String to fix */
{
unsigned char *p; /* Pointer into string */
static unsigned char lut[32] =/* Lookup table for characters */
{
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
'l',
'`',
'\'',
'^',
'~',
0x20, /* bar */
0x20, /* circumflex */
0x20, /* dot */
0x20, /* double dot */
0x20,
0x20, /* circle */
0x20, /* ??? */
0x20,
'\"', /* should be right quotes */
0x20, /* ??? */
0x20 /* accent */
};
for (p = (unsigned char *)string; *p; p ++)
if (*p >= 0x80 && *p < 0xa0)
*p = lut[*p - 0x80];
}
/*
* End of "$Id$".
*/
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
-175
Ver Arquivo
@@ -1,175 +0,0 @@
/*
* "$Id$"
*
* User, system, and password routines for the Common UNIX Printing
* System (CUPS).
*
* Copyright 1997-1999 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE.txt" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
*/
/*
* Include necessary headers...
*/
#include "cups.h"
#include <config.h>
#include <stdlib.h>
#include <ctype.h>
#if defined(WIN32) || defined(__EMX__)
/*
* WIN32 and OS/2 username and password stuff...
*/
/*
* 'cupsUser()' - Return the current user's name.
*/
char * /* O - User name */
cupsUser(void)
{
return ("WindowsUser");
}
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (NULL);
}
#else
/*
* UNIX username and password stuff...
*/
# include <pwd.h>
/*
* 'cupsUser()' - Return the current user's name.
*/
char * /* O - User name */
cupsUser(void)
{
struct passwd *pwd; /* User/password entry */
/*
* Rewind the password file...
*/
setpwent();
/*
* Lookup the password entry for the current user.
*/
if ((pwd = getpwuid(getuid())) == NULL)
return ("unknown"); /* Unknown user! */
/*
* Rewind the password file again and return the username...
*/
setpwent();
return (pwd->pw_name);
}
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (getpass(prompt));
}
#endif /* WIN32 || __EMX__ */
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* cupsd.conf file */
char *server; /* Pointer to server name */
static char line[1024]; /* Line from file */
/*
* First see if the CUPS_SERVER environment variable is set...
*/
if ((server = getenv("CUPS_SERVER")) != NULL)
return (server);
/*
* Next check to see if we have a cupsd.conf file...
*/
if ((fp = fopen(CUPS_SERVERROOT "/conf/cupsd.conf", "r")) == NULL)
return ("localhost");
/*
* Read the cupsd.conf file and look for a ServerName line...
*/
while (fgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "ServerName ", 11) == 0)
{
/*
* Got it! Drop any trailing newline and find the name...
*/
server = line + strlen(line) - 1;
if (*server == '\n')
*server = '\0';
for (server = line + 11; isspace(*server); server ++);
if (*server)
return (server);
}
/*
* Didn't see a ServerName line, so return "localhost"...
*/
fclose(fp);
return ("localhost");
}
/*
* End of "$Id$".
*/
+9 -5
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -149,10 +149,12 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
struct stat fileinfo; /* File information */
int bytes; /* Number of bytes read/written */
char buffer[8192]; /* Output buffer */
#if !defined(WIN32) && !defined(__EMX__)
char *password, /* Password string */
plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char junk[8192]; /* Junk buffer for error data */
#endif /* !WIN32 && !__EMX__ */
static char authstring[255] = "";
/* Authorization string */
@@ -202,7 +204,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
*/
if (filename != NULL)
sprintf(length, "%u", ippLength(request) + (size_t)fileinfo.st_size);
sprintf(length, "%u", ippLength(request) + fileinfo.st_size);
else
sprintf(length, "%u", ippLength(request));
@@ -252,6 +254,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
#if !defined(WIN32) && !defined(__EMX__)
if (status == HTTP_UNAUTHORIZED)
{
DEBUG_puts("cupsDoFileRequest: unauthorized...");
@@ -262,7 +265,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
httpFlush(http);
if ((password = cupsGetPassword("Password:")) != NULL)
if ((password = getpass("Password:")) != NULL)
{
/*
* Got a password; send it to the server...
@@ -270,7 +273,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
if (!password[0])
break;
sprintf(plain, "%s:%s", cupsUser(), password);
sprintf(plain, "%s:%s", cuserid(NULL), password);
httpEncode64(encode, plain);
sprintf(authstring, "Basic %s", encode);
@@ -279,6 +282,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
else
break;
}
#endif /* !WIN32 && !__EMX__ */
if (status != HTTP_OK)
{
@@ -913,7 +917,7 @@ cups_connect(char *name, /* I - Destination (printer[@host]) */
return (NULL);
if (sscanf(name, "%[^@]@%s", printerbuf, hostbuf) == 1)
strcpy(hostbuf, cupsServer());
strcpy(hostbuf, "localhost");
if (hostname != NULL)
strcpy(hostname, hostbuf);
+1 -8
Ver Arquivo
@@ -30,10 +30,8 @@ include ../Makedefs
.SUFFIXES: .html .pdf .shtml
.shtml.html:
echo Formatting $@...
htmldoc --title images/cups-large.gif --numbered -f $@ $<
.shtml.pdf:
echo Formatting $@...
htmldoc --title images/cups-large.gif --duplex --compression=9 \
--numbered --jpeg -f $@ $<
@@ -46,7 +44,7 @@ DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml ssr.shtml \
DOCIMAGES = images/cups-block-diagram.gif images/cups-large.gif \
images/cups-medium.gif images/cups-small.gif
WEBPAGES = cups.css cupsdoc.css index.html documentation.html
WEBIMAGES = images/classes.gif images/logo.gif images/navbar.gif \
WEBIMAGES = images/logo.gif images/navbar.gif \
images/printer-idle.gif images/printer-processing.gif \
images/printer-stopped.gif
@@ -85,22 +83,17 @@ install:
#
overview.pdf: overview.html
echo Formatting $@...
htmldoc --duplex --compression=9 --jpeg --webpage -f $@ $<
sam.html: sam.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif -f $@ $<
sam.pdf: sam.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
sum.html: sum.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif -f $@ $<
sum.pdf: sum.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
+1 -3
Ver Arquivo
@@ -337,7 +337,6 @@ understood:
<TR><TD>ServerName</TD><TD></TR>
<TR><TD>ServerRoot</TD><TD></TR>
<TR><TD>SystemGroup</TD><TD></TR>
<TR><TD>TempDir</TD><TD></TR>
<TR><TD>Timeout</TD><TD></TR>
<TR><TD>User</TD><TD></TR>
</TABLE>
@@ -389,8 +388,7 @@ capability/type bits:
<TR><TD>0</TD><TD>0 = printer
<BR> 1 = class</TD></TR>
<TR><TD>1</TD><TD>0 = local
<BR> 1 = remote
<BR> (always 1)</TD></TR>
<BR> 1 = remote</TD></TR>
<TR><TD>2</TD><TD>1 = can print B</TD></TR>
<TR><TD>3</TD><TD>1 = can print color</TD></TR>
<TR><TD>4</TD><TD>1 = can duplex</TD></TR>
+103 -113
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990624171515Z)/Title(DRAFT - CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990611133720Z)/Title(DRAFT - CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -325,8 +325,8 @@
237 0 obj<</Subtype/Link/Rect[168.8 435.6 221.6 448.6]/Border[0 0 0]/Dest[436 0 R/XYZ null 547 0]>>endobj
238 0 obj<</Subtype/Link/Rect[144.0 422.4 168.8 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
239 0 obj<</Subtype/Link/Rect[168.8 422.4 216.7 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 702 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 702 0]>>endobj
242 0 obj<</Subtype/Link/Rect[72.0 382.8 80.2 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
243 0 obj<</Subtype/Link/Rect[80.2 382.8 123.9 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
244 0 obj<</Subtype/Link/Rect[123.9 382.8 171.0 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
@@ -640,7 +640,7 @@
379 0 obj<</D[436 0 R/XYZ null 800 null]>>endobj
380 0 obj<</D[436 0 R/XYZ null 547 null]>>endobj
381 0 obj<</D[436 0 R/XYZ null 215 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 682 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 702 null]>>endobj
383 0 obj<</D[445 0 R/XYZ null 818 null]>>endobj
384 0 obj<</D[445 0 R/XYZ null 737 null]>>endobj
385 0 obj<</D[463 0 R/XYZ null 458 null]>>endobj
@@ -830,30 +830,20 @@ endobj
endobj
442 0 obj<</Type/Page/Parent 408 0 R/Contents 443 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
443 0 obj<</Length 444 0 R/Filter/FlateDecode>>stream
xÚ­T]0}ﯸb/ðPãÄÎG'„Ä
L•6‰ÑðÆ‹Iê-±»Ä-ãßï:eTý”¦DQdŸ{Ïñõ¹÷÷ ŠO,vo^¾dƒó[AY aqÊH
YqšÉz~­š³ìçà&PB1põ¹ÿ
!'â$AtÄøRB#aºpºB³}@£Ç3w¼ª–fa÷ðF ¢æíÐ[x9#Üñ>´rßaYBøá¤zéùí Xp
Qx~F"Â`Þ(meÓ’ÜèÒÉy¿
C6êk4“‘PªJþµªµ-˜¯Ø4P$­”–ÝÒÕt<™€•,±©k©m¿ÙZÑXxQvÖ¥6 ]Àãéɧ“Ç3'©½ââ4Ÿ‰FäHLú0öúoD>môð©úW—ØçmßkQK§D8©¥z^4Â*£¡PÌ­ZJ(MU™YÀÓ+( ]Šj! ¸û-¥Ÿ×­‚[x\”ŽU±ÆŸ}ý¢¾~1Åâ õr¯ß¢(Ä\ Ø­Ë6oÔÜÉÚí…GXУ7ºáŸæã,õê.®e)•½ó—ÜîríÜçýîå¡Á¼PæÌ¾[h‡öBßѾW8|‰–*—÷“ݼl4Âï¡òèÍ=ÊRîgÒD—fi1<z iÌ}³}3¹Øo¥GØÁ£·sîMð»÷€wž9˜¸Co!Æ|ÞYÿÃvŒF«ëßo;Þl»pDýõO­°r7kØYåÐjxôÆ®Lû® ƒ$ô£áþê6ƒ!Œî¦0q%(E.'†zÖ°68†.pØGÔ-qã„§oÃ>„|1o‹Õ¤ÇCýüendstream
xÚ­T]0}çW\u/ôÔ‰&T©kË„´I„·¾¸‰Þ‚Í¿ë8¥+Jù&PdÙçúœ{}îýÝóàÏÙ¶ê}I{Wc¾iA QB½Ò¼ŸÊ•Ðs™þìݧ=â Ü}¦_!`íû®âP ˜u€}FvhÐwhT`y#êE–w^‹êi#ôdÒÝAz5‚OqGñ?õBº’ʈªö2­
+ç­Htè°éR¼GB!K¸ªemjЖZW°ÒHZJ%š­›ÙídFü1ÜêÕJ(ÓÖ†Wž¥Y‚±WëÊá±ñéâñÒŠ@j§8ïgK^ñ ‰½ö ˆ<fîy¶¥Õà©äêWs±»·~»Xñ•°J¸•ZÈŦâFj¹¬DfäV@¡ËR?‹ž^@bè–—áIµØS´ ®cº(«b´Î?»ú…mý"‚ÅPâäÞ½FYP€wÅX`»/ꬒk+ë°XœaA‡îtÃ?MÀÂÄ=ðèN|Sš÷ÈMá®÷ò]µ§×G„¢kX+”R\Ú Ð7´ë„ŽúNle&æÓÉfˆø“KÔ »»”‘ÐòNT¡SÒá¿§R:t7%M˜HßtÆÛÆÉvpèˆ#æLð»÷„ŒÏœLÜ ? fÌõÆèØŽ6f9ÕvÝm;jû#ïÏ ' ÏyýÝÙ“IÛ“>¥n0LoÆ) àvþ0ƒ‰-@Á38/äBÁÞØØÀAé»ÅH„ó¼Žú²ÍºÎws“úÑû ‚`¶2endstream
endobj
444 0 obj
630
612
endobj
445 0 obj<</Type/Page/Parent 408 0 R/Contents 446 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
446 0 obj<</Length 447 0 R/Filter/FlateDecode>>stream
Ár£8†ï~Š>:I` [µ‡q&³åª­-ïÄsËE€¼f#VˆÄ~ûmIàØTª\ýêþôwKâ¿V üÒãl½›=~‹Æ°ÛãH¸
`—Íx>i¡J^À¦Ä‡=OEý°û×i—^äÔ‹eä9½GáKU½Èô§Ð°URËTnB”¶r?öB#ßÄ•¼jå×ÀKˆI®!->ïž¶›-ÔN˜Ê²©Îeé ‘‰=o
F!Ô[ž
¨¤Ò&NL ñz€‘ fðôcûk%ßë¼ügtÿ ÖEÂk‘A¢$ÏR^ëŽÌƒõù¬8£C–•P\‹d‰+1é1)õ“Þ¬+ô©×Ž³Ð­ã™§‡«d·Fe¢NUž`LеÆð ÷Èh° Œ¦rSU
}æµ±=kÝÿòò´Ù€'$×ʬ'6h 4X;¼älÀE™á{®˜£ïE^
xᯮVm0L²—êȵF“¸y)
tó7ç:ØÄݛ޼äèRRó¢Ï•€—m»&|hTýy[´…™~]67¶Ãs;ùvÊÜZp§ÃØ÷ª7^4¸âT*%êJâ4Ƙ¼Ùn¡[D+n]^ ¥»•_¹ÚMÄü‹º©LíEöKŽ& úß=+6¶õ.ŵîAœx&Òüˆû½lŽ ¶F[/%*\¨(µyIyÅ“¼ÈõùÑÖ÷iW¹e–.ÍŽ!dk3ºZy>.ÿñÕöeev°xÞ͈Gð@ºü|ÿ»,ôø$ÀŒá##èŠÂb÷‰Ãè"¦+ÿFmO¶n¹4ˆÅÄùk»˜1ÇDà÷n?Ü57Å»=FXÙŠš_Ãêûò)«5²ZÂehN*L}OXÈ”=|J¥k®«×9/Þù¹úú0ÆÎ.>ã{8ÂÎ>|þPwì´u—]³[ñX±ÃzŒ†˜sybÕ¸§ê††Æ6½?Ì‚ç¶T#<4
ºÊŽó8ñO»Ê}DYSâ4úb*ŒÁíÙ¸ìƒÁã
iÆ`CL…±â!Ö^Éa¯3öæbKe•‹±H™?ýÐpâ!(»f^}UÜœŒc\ÄŸÞÖN<Àņ#êíê¦ÄOƒ,FmŠüéMmµ0(°-÷á¤òMŒm¯Moh« "×Δô‘$¹»j? Øôf¶ÚÖ~SÚ»±ð=ާ7°Õö^zÑå“‚|ú1¬4•|#Ùß³ÿåþcendstream
M“Ú8†ïüŠ>Nx$â­ÚC˜ÌnQ•J±rËE–EpÖX^Yžaþý¶$›±±‹*ÊF¯ºŸþ’øoAà‡BâC?.Ö»Åã_)Ðv{\‰“vùCÏ'-TÅJØTø°g\4v?6òVN½ŒVžÓ{>Öõ‹äÿ
[%µä²tB ´“©ùî .äu'‡¢VÁj™x)ðy÷´}Ül¡qB.«Jp]ÈÊc"{Ö–ŒB¨×‚ ¨¥ÒÆNJ ñ€‘ öáéÛöÖJ¾5Eõcôð ß>ÖeÆ‘C¦$Ë9ktOæÁúý ¬¸£G–µPL‹d…‘÷蔈N¯âŠêuë~ìâxfüpá¬f6Q¹h¸*2´©ºÑhä v‰ÖTaª
RažYcÒžwÙÿøò´Ù€'$×ÊD‰Û´/{7à¢Êð­ÐôQ‰·²¨| '¾pµêŒ¡“½TG¦5&‰™—²Älþá²N 5v÷¦7Ï>z—Ô¼è÷ZÀ˶‹ ZUÀ—Ï×E[ší—esËq·ü`7_oy°)¸Ñ¡í[Õ++[Œ˜K¥DSK܃‰1IÞl·Ðщ»,/ÇÜ]Ë/²ÚoDÿ˦­MíEþ›ÍZÌÿmO DlÒ6Šk݃8±\ðâˆó^µÇ [£«—5**m^8«YV”…~´uÀ9í+ufid&†8u¡Íjx†‡?|²}Y› 6 Ï»ñH篯c—Å€„hÃ÷ñÑ'˜…ÅÇ«³˜&Á•Úžl}¸4LÁO‰Ë¯íbßwLþìçᦹ)®Øñ˜`õj¾ k È]V'v¬¿ÔÈj £ØœTèú–°”œ•|J¥k®{€A‚³0ЊÇýÀ•Ö¿´‰Â³Ã¦ÖS44™_Z'(­¥!]&q<ž¥š ¢ivf]övâÉÛº§)2ÅŠÇPbßõR4ƒgÒLÁØvœ cÅc0¡ïNãx03öæöâ².ÄÔ´Ñ î›yÛÌÉ}¨²dæø›â¢ñü¶vâ1.â»¶^ ¶u[á•åd¦Òx~W[íÏʤC0\¾Š©éJâùÄã Óîl$C$Yá.Ô; Q4¿›­v$¤®—)œ,¼­§.·h~[íàÕ¶:ÿq wÿ²‡Iˆ±_ÄHöÏâ2÷šendstream
endobj
447 0 obj
935
917
endobj
448 0 obj<</Type/Page/Parent 408 0 R/Contents 449 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 47 0 R>>endobj
449 0 obj<</Length 450 0 R/Filter/FlateDecode>>stream
@@ -1004,7 +994,7 @@ endobj
504 0 obj<</Parent 496 0 R/Count -3/First 505 0 R/Last 507 0 R/Title(3.5 Scheduler Configuration Files)/Dest[436 0 R/XYZ null 736 null]/Prev 502 0 R>>endobj
505 0 obj<</Parent 504 0 R/Title(3.5.1 classes.conf)/Dest[436 0 R/XYZ null 511 null]/Next 506 0 R>>endobj
506 0 obj<</Parent 504 0 R/Title(3.5.2 cupsd.conf)/Dest[436 0 R/XYZ null 178 null]/Prev 505 0 R/Next 507 0 R>>endobj
507 0 obj<</Parent 504 0 R/Title(3.5.3 printers.conf)/Dest[442 0 R/XYZ null 645 null]/Prev 506 0 R>>endobj
507 0 obj<</Parent 504 0 R/Title(3.5.3 printers.conf)/Dest[442 0 R/XYZ null 665 null]/Prev 506 0 R>>endobj
508 0 obj<</Parent 487 0 R/Count -10/First 509 0 R/Last 528 0 R/Title(4 External Interfaces)/Dest[445 0 R/XYZ null 743 null]/Prev 496 0 R/Next 529 0 R>>endobj
509 0 obj<</Parent 508 0 R/Title(4.1 AppSocket Protocol)/Dest[445 0 R/XYZ null 693 null]/Next 510 0 R>>endobj
510 0 obj<</Parent 508 0 R/Title(4.2 CUPS Browsing Protocol)/Dest[445 0 R/XYZ null 613 null]/Prev 509 0 R/Next 511 0 R>>endobj
@@ -1477,98 +1467,98 @@ xref
0000053170 00000 n
0000053191 00000 n
0000053331 00000 n
0000054032 00000 n
0000054053 00000 n
0000054211 00000 n
0000055217 00000 n
0000055238 00000 n
0000055401 00000 n
0000056879 00000 n
0000056901 00000 n
0000057023 00000 n
0000058442 00000 n
0000058464 00000 n
0000058604 00000 n
0000059812 00000 n
0000059834 00000 n
0000059998 00000 n
0000061525 00000 n
0000061547 00000 n
0000061687 00000 n
0000062529 00000 n
0000062550 00000 n
0000062705 00000 n
0000063640 00000 n
0000063661 00000 n
0000063774 00000 n
0000063999 00000 n
0000064020 00000 n
0000064169 00000 n
0000064674 00000 n
0000064695 00000 n
0000064835 00000 n
0000065221 00000 n
0000065242 00000 n
0000065382 00000 n
0000065878 00000 n
0000065899 00000 n
0000066030 00000 n
0000066477 00000 n
0000066498 00000 n
0000066653 00000 n
0000069834 00000 n
0000069856 00000 n
0000070002 00000 n
0000070346 00000 n
0000070367 00000 n
0000070422 00000 n
0000070527 00000 n
0000070671 00000 n
0000070777 00000 n
0000070897 00000 n
0000071006 00000 n
0000071155 00000 n
0000071265 00000 n
0000071372 00000 n
0000071530 00000 n
0000071641 00000 n
0000071760 00000 n
0000071911 00000 n
0000072015 00000 n
0000072119 00000 n
0000072296 00000 n
0000072405 00000 n
0000072562 00000 n
0000072668 00000 n
0000072785 00000 n
0000072892 00000 n
0000073051 00000 n
0000073161 00000 n
0000073288 00000 n
0000073413 00000 n
0000073534 00000 n
0000073653 00000 n
0000073780 00000 n
0000073948 00000 n
0000074095 00000 n
0000074245 00000 n
0000074393 00000 n
0000074547 00000 n
0000074695 00000 n
0000074839 00000 n
0000074989 00000 n
0000075137 00000 n
0000075285 00000 n
0000075433 00000 n
0000075566 00000 n
0000075700 00000 n
0000075823 00000 n
0000075941 00000 n
0000076075 00000 n
0000076172 00000 n
0000076272 00000 n
0000054014 00000 n
0000054035 00000 n
0000054193 00000 n
0000055181 00000 n
0000055202 00000 n
0000055365 00000 n
0000056843 00000 n
0000056865 00000 n
0000056987 00000 n
0000058406 00000 n
0000058428 00000 n
0000058568 00000 n
0000059776 00000 n
0000059798 00000 n
0000059962 00000 n
0000061489 00000 n
0000061511 00000 n
0000061651 00000 n
0000062493 00000 n
0000062514 00000 n
0000062669 00000 n
0000063604 00000 n
0000063625 00000 n
0000063738 00000 n
0000063963 00000 n
0000063984 00000 n
0000064133 00000 n
0000064638 00000 n
0000064659 00000 n
0000064799 00000 n
0000065185 00000 n
0000065206 00000 n
0000065346 00000 n
0000065842 00000 n
0000065863 00000 n
0000065994 00000 n
0000066441 00000 n
0000066462 00000 n
0000066617 00000 n
0000069798 00000 n
0000069820 00000 n
0000069966 00000 n
0000070310 00000 n
0000070331 00000 n
0000070386 00000 n
0000070491 00000 n
0000070635 00000 n
0000070741 00000 n
0000070861 00000 n
0000070970 00000 n
0000071119 00000 n
0000071229 00000 n
0000071336 00000 n
0000071494 00000 n
0000071605 00000 n
0000071724 00000 n
0000071875 00000 n
0000071979 00000 n
0000072083 00000 n
0000072260 00000 n
0000072369 00000 n
0000072526 00000 n
0000072632 00000 n
0000072749 00000 n
0000072856 00000 n
0000073015 00000 n
0000073125 00000 n
0000073252 00000 n
0000073377 00000 n
0000073498 00000 n
0000073617 00000 n
0000073744 00000 n
0000073912 00000 n
0000074059 00000 n
0000074209 00000 n
0000074357 00000 n
0000074511 00000 n
0000074659 00000 n
0000074803 00000 n
0000074953 00000 n
0000075101 00000 n
0000075249 00000 n
0000075397 00000 n
0000075530 00000 n
0000075664 00000 n
0000075787 00000 n
0000075905 00000 n
0000076039 00000 n
0000076136 00000 n
0000076236 00000 n
trailer
<</Size 534/Root 533 0 R/Info 1 0 R>>
startxref
76458
76422
%%EOF
+1 -6
Ver Arquivo
@@ -433,10 +433,6 @@ followed by its value. The following directives are understood:
<TD>SystemGroup</TD>
<TD></TD>
</TR>
<TR>
<TD>TempDir</TD>
<TD></TD>
</TR>
<TR>
<TD>Timeout</TD>
<TD></TD>
@@ -531,8 +527,7 @@ capability/type bits:
<TR>
<TD>1</TD>
<TD>0 = local<BR>
1 = remote<BR>
(always 1)</TD>
1 = remote</TD>
</TR>
<TR>
<TD>2</TD>
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 591 B

+41 -136
Ver Arquivo
@@ -24,11 +24,8 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<LI><A HREF=#2_1>The Printing Problem</A></LI>
<LI><A HREF=#2_2>The Technology</A></LI>
<LI><A HREF=#2_3>Jobs</A></LI>
<LI><A HREF=#2_4>Classes</A></LI>
<LI><A HREF=#2_5>Filters</A></LI>
<LI><A HREF=#2_6>Printer Drivers</A></LI>
<LI><A HREF=#2_7>Networking</A></LI>
<LI><A HREF=#2_3>Filters</A></LI>
<LI><A HREF=#2_4>Printer Drivers</A></LI>
</UL>
<B><A HREF=#3>2 - Building and Installing CUPS</A></B>
<UL>
@@ -51,35 +48,31 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#4_3>Removing Printers</A></LI>
<LI><A HREF=#4_4>Printer Classes</A></LI>
<LI><A HREF=#4_5>Setting the Default Printer</A></LI>
<LI><A HREF=#4_6>Starting and Stopping Printers</A></LI>
<LI><A HREF=#4_7>Accepting and Rejecting Print Jobs</A></LI>
</UL>
<B><A HREF=#5>4 - Printing System Management</A></B>
<UL>
<LI><A HREF=#5_1>Changing the Configuration Files</A></LI>
<LI><A HREF=#5_2>Temporary Files</A></LI>
<LI><A HREF=#5_3>Network Configuration</A></LI>
<LI><A HREF=#5_1>Network Configuration</A></LI>
<UL>
<LI><A HREF=#5_3_1>Port</A></LI>
<LI><A HREF=#5_3_2>Listen</A></LI>
<LI><A HREF=#5_3_3>BrowsePort</A></LI>
<LI><A HREF=#5_3_4>BrowseAddress</A></LI>
<LI><A HREF=#5_1_1>Port</A></LI>
<LI><A HREF=#5_1_2>Listen</A></LI>
<LI><A HREF=#5_1_3>BrowsePort</A></LI>
<LI><A HREF=#5_1_4>BrowseAddress</A></LI>
</UL>
<LI><A HREF=#5_4>Printer Security</A></LI>
<LI><A HREF=#5_2>Printer Security</A></LI>
<UL>
<LI><A HREF=#5_4_1>Location</A></LI>
<LI><A HREF=#5_4_2>Order</A></LI>
<LI><A HREF=#5_4_3>Allow</A></LI>
<LI><A HREF=#5_4_4>Deny</A></LI>
<LI><A HREF=#5_4_5>AuthType</A></LI>
<LI><A HREF=#5_4_6>AuthClass</A></LI>
<LI><A HREF=#5_4_7>AuthGroupName</A></LI>
<LI><A HREF=#5_4_8>SystemGroup</A></LI>
<LI><A HREF=#5_2_1>Location</A></LI>
<LI><A HREF=#5_2_2>Order</A></LI>
<LI><A HREF=#5_2_3>Allow</A></LI>
<LI><A HREF=#5_2_4>Deny</A></LI>
<LI><A HREF=#5_2_5>AuthType</A></LI>
<LI><A HREF=#5_2_6>AuthClass</A></LI>
<LI><A HREF=#5_2_7>AuthGroupName</A></LI>
<LI><A HREF=#5_2_8>SystemGroup</A></LI>
</UL>
<LI><A HREF=#5_5>File Formats</A></LI>
<LI><A HREF=#5_3>File Formats</A></LI>
<UL>
<LI><A HREF=#5_5_1>mime.types</A></LI>
<LI><A HREF=#5_5_2>mime.convs</A></LI>
<LI><A HREF=#5_3_1>mime.types</A></LI>
<LI><A HREF=#5_3_2>mime.convs</A></LI>
</UL>
</UL>
<B><A HREF=#6>5 - Printer Accounting</A></B>
@@ -164,17 +157,7 @@ using their web browser. </P>
Basic authentication and domain or IP-based access control. Digest
authentication and TLS encryption will be available in future versions
of CUPS. </P>
<H2><A NAME=2_3>Jobs</A></H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority. </P>
<H2><A NAME=2_4>Classes</A></H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs
sent to a class are forwarded to the first available printer in the
class. </P>
<H2><A NAME=2_5>Filters</A></H2>
<H2><A NAME=2_3>Filters</A></H2>
<P>Filters allow a user or application to print many types of files
without extra effort. Print jobs sent to a CUPS server are filtered
before sending them to a printer. Some filters convert job files to
@@ -190,28 +173,12 @@ printer. </P>
<P>CUPS provides backends for printing over parallel and serial ports,
and over the network via the JetDirect (AppSocket), Server Message
Block, and Line Printer Daemon protocols. </P>
<H2><A NAME=2_6>Printer Drivers</A></H2>
<H2><A NAME=2_4>Printer Drivers</A></H2>
<P>Printer drivers in CUPS consist of one of more filters specific to a
printer. CUPS includes a sample printer driver for Hewlett-Packard
LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS. </P>
<H2><A NAME=2_7>Networking</A></H2>
<P>Printers and classes on the local system are automatically shared
with other systems on the network. This allows you to setup one system
to print to a printer and use this system as a printer server or spool
host for all of the others. If there is only one occurrence of a
printer on a network, then that printer can be accessed using its name
alone. If more than one printer exists with the same name, users must
select the printer by specifying which server to use (e.g.
&quot;printer@host1&quot; or &quot;printer@host2&quot;.) </P>
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup
multiple servers pointing to the same physical network printer, for
example, so that you aren't relying on a single system for printing.
Because this also works with printer classes, you can setup multiple
servers and printers and never worry about a &quot;single point of failure&quot;
unless all of the printers and servers goes down! </P>
<H1 ALIGN=RIGHT><A NAME=3>2 - Building and Installing CUPS</A></H1>
<P>This chapter shows how to build and install the Common UNIX Printing
System. If you are installing a binary distribution from the CUPS web
@@ -330,7 +297,7 @@ administration tasks from the command-line. Since <CODE>lpadmin</CODE>
command with the &quot;-p&quot; option: </P>
<UL>
<PRE>
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -P<I>ppd</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -P<I>ppd</I> ENTER
</PRE>
</UL>
<P>Spaces between the option letter and value are optional. </P>
@@ -345,7 +312,6 @@ installation of CUPS: </P>
<DT>file:/dev/filename </DT>
<DT>/dev/filename </DT>
<DD>Sends all output to the specified file. </DD>
<DT>http://hostname[:port]/resource </DT>
<DT>ipp://hostname[:port]/resource </DT>
<DD>Sends all output to the specified IPP printer or server. The <I>
port</I> parameters defaults to 631. </DD>
@@ -379,7 +345,7 @@ files and interface scripts located in the <CODE>/usr/share/cups/model</CODE>
directory with the &quot;-m&quot; option: </P>
<UL>
<PRE>
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -m<I>model</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -m<I>model</I> ENTER
</PRE>
</UL>
<P>The <I>model</I> argument specifies the name of the PPD file or
@@ -388,7 +354,7 @@ DeskJet series driver connected to parallel port 1 under Linux you
would use: </P>
<UL>
<PRE>
% /usr/lib/lpadmin -pDeskJet -E -vparallel:/dev/par1 -mdeskjet.ppd ENTER
% /usr/lib/lpadmin -pDeskJet -vparallel:/dev/par1 -mdeskjet.ppd ENTER
</PRE>
</UL>
<H2><A NAME=4_3>Removing Printers</A></H2>
@@ -426,82 +392,21 @@ remove a class just use the &quot;-x&quot; option: </P>
</PRE>
</UL>
<P>The <I>destination</I> argument is the name of the printer or class. </P>
<H2><A NAME=4_6>Starting and Stopping Printers</A></H2>
<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and
stop printer queues, respectively: </P>
<UL>
<PRE>
% /usr/bin/enable <I>printer</I> ENTER
% /usr/bin/disable <I>printer</I> ENTER
</PRE>
</UL>
<P>Printers that are disabled may still accept jobs for printing, but
won't actually print any files until they are restarted. This is useful
if the printer malfunctions and you need time to correct the problem.
Any queues jobs are printed after the printer is enabled (started). </P>
<H2><A NAME=4_7>Accepting and Rejecting Print Jobs</A></H2>
<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and
reject print jobs for the named printer, respectively: </P>
<UL>
<PRE>
% /usr/lib/accept <I>printer</I> ENTER
% /usr/lib/reject <I>printer</I> ENTER
</PRE>
</UL>
<P>As noted above, a printer can be stopped but accepting new print
jobs. A printer can also be rejecting new print jobs while it finishes
those that have been queued. This is useful for when you must perform
maintenance on the printer and will not have it available to users for
a long period of time. </P>
<H1 ALIGN=RIGHT><A NAME=5>4 - Printing System Management</A></H1>
<P>This chapter shows how you can configure the CUPS server. </P>
<H2><A NAME=5_1>Changing the Configuration Files</A></H2>
<P>All of the server configuration files are located in the <CODE>
/var/cups/conf</CODE> directory. Once you have made a change to a file
you need to restart the CUPS server by sending it a HUP signal or using
the supplied script &quot;<CODE>cups.sh</CODE>&quot;: </P>
<UL>
<PRE>
% ./cups.sh restart ENTER
</PRE>
</UL>
<P>The binary distribution installs the script in the <CODE>init.d</CODE>
directory with the name <CODE>lp</CODE> or <CODE>lpd</CODE> depending
on the vendor-supplied printing system. </P>
<H2><A NAME=5_2>Temporary Files</A></H2>
<P>Normally CUPS puts all of its temporary files in <CODE>/var/tmp</CODE>
. If you'd like to change this directory you'll need to edit the <CODE>
/var/cups/conf/cupsd.conf</CODE> file. </P>
<P>Start by creating the new temporary directory and setting the
appropriate permissions: </P>
<UL>
<PRE>
% mkdir <I>/foo/bar/tmp</I> ENTER
% chmod a+rwxt <I>/foo/bar/tmp</I> ENTER
</PRE>
</UL>
<P>Then change the line containing the <CODE>TempDir</CODE> directive
in the <CODE>cupsd.conf</CODE> to the directory that you've created: </P>
<UL>
<PRE>
TempDir <I>/foo/bar/tmp</I>
</PRE>
</UL>
<P>Finally, restart the server as outlined in the first section of this
chapter. </P>
<H2><A NAME=5_3>Network Configuration</A></H2>
<H2><A NAME=5_1>Network Configuration</A></H2>
<P>The default configuration of the CUPS server listens for connections
from all network interfaces on port 631 (the standard IPP port).
Administration functions are limited to local connections with the
appropriate username and password. </P>
<P>If you'd like to limit access to your system you'll need to edit the <CODE>
/var/cups/conf/cupsd.conf</CODE> file. </P>
<H3><A NAME=5_3_1>Port</A></H3>
<H3><A NAME=5_1_1>Port</A></H3>
<P>The <CODE>Port</CODE> directive specifies a port to listen on for
all interfaces. Besides the standard IPP port (631) you can also setup
your server to listen on the HTTP port (80) to use your CUPS server as
a standard web server as well. </P>
<H3><A NAME=5_3_2>Listen</A></H3>
<H3><A NAME=5_1_2>Listen</A></H3>
<P>The <CODE>Listen</CODE> directive specifies a listening address and
port, extending the functionality of the <CODE>Port</CODE> directive.
If you want to allow connections only from the local machine you can
@@ -515,7 +420,7 @@ Listen 127.0.0.1:631
<P>If you want to limit access to a specific network/subnet, make sure
you specify only the network address and not your system's network
address! </P>
<H3><A NAME=5_3_3>BrowsePort</A></H3>
<H3><A NAME=5_1_3>BrowsePort</A></H3>
<P>The <CODE>BrowsePort</CODE> directive controls which port is
monitored for remote printers. By default it is set to the IPP port
(631), however you can change it as needed. </P>
@@ -523,7 +428,7 @@ monitored for remote printers. By default it is set to the IPP port
<P>You must set the <CODE>BrowsePort</CODE> to the same value on all
of the systems that you want to see. </P>
</UL>
<H3><A NAME=5_3_4>BrowseAddress</A></H3>
<H3><A NAME=5_1_4>BrowseAddress</A></H3>
<P>The <CODE>BrowseAddress</CODE> directive specifies a broadcast
address to use when sending printer status updates over the network.
The default browse address is <CODE>255.255.255.255</CODE> which will
@@ -533,10 +438,10 @@ send printer information to all subnets. </P>
bits, printer browsing (and in fact all broadcast reception) will not
work. This problem appears to be fixed in HP-UX 11.0. </P>
</UL>
<H2><A NAME=5_4>Printer Security</A></H2>
<H2><A NAME=5_2>Printer Security</A></H2>
<P>CUPS provides IP and domain-name based access control and Basic
authentication for authentication. </P>
<H3><A NAME=5_4_1>Location</A></H3>
<H3><A NAME=5_2_1>Location</A></H3>
<P>The <CODE>Location</CODE> directive defines access control for a
specific HTTP directory. The following pseudo directories are provided
by the CUPS server: </P>
@@ -567,7 +472,7 @@ Allow From 127.0.0.1
&lt;/Location&gt;
</PRE>
</UL>
<H3><A NAME=5_4_2>Order</A></H3>
<H3><A NAME=5_2_2>Order</A></H3>
<P>The <CODE>Order</CODE> directive defines the default access control.
The following values are supported: </P>
<UL>
@@ -578,7 +483,7 @@ listed in an <CODE>Allow</CODE> directive. </LI>
</UL>
<P>The <CODE>Order</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_3>Allow</A></H3>
<H3><A NAME=5_2_3>Allow</A></H3>
<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address,
or network that is allowed access to the server: </P>
<UL>
@@ -601,7 +506,7 @@ Allow</CODE> directives can be used to allow access for multiple hosts
or networks. </P>
<P>The <CODE>Allow</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_4>Deny</A></H3>
<H3><A NAME=5_2_4>Deny</A></H3>
<P>The <CODE>Deny</CODE> directive specifies a hostname, IP address, or
network that is allowed access to the server: </P>
<UL>
@@ -623,7 +528,7 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
directives can be used to allow access for multiple hosts or networks. </P>
<P>The <CODE>Deny</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_5>AuthType</A></H3>
<H3><A NAME=5_2_5>AuthType</A></H3>
<P>The <CODE>AuthType</CODE> directive defines the type of
authentication to perform: </P>
<UL>
@@ -634,7 +539,7 @@ using the UNIX password and group files. </LI>
</UL>
<P>The <CODE>AuthType</CODE> directive must appear inside a <CODE>
Location</CODE> directive. </P>
<H3><A NAME=5_4_6>AuthClass</A></H3>
<H3><A NAME=5_2_6>AuthClass</A></H3>
<P>The <CODE>AuthClass</CODE> directive defines what level of <CODE>
Basic</CODE> access is required: </P>
<UL>
@@ -650,21 +555,21 @@ AuthGroupName</CODE> directive. </LI>
</UL>
<P>The <CODE>AuthClass</CODE> directive must appear inside a <CODE>
Location</CODE> directive. </P>
<H3><A NAME=5_4_7>AuthGroupName</A></H3>
<H3><A NAME=5_2_7>AuthGroupName</A></H3>
<P>The <CODE>AuthGroupName</CODE> directive sets the group to use for <CODE>
Group</CODE> authentication. </P>
<P>The <CODE>AuthGroupName</CODE> directive must appear inside a <CODE>
Location</CODE> directive. </P>
<H3><A NAME=5_4_8>SystemGroup</A></H3>
<H3><A NAME=5_2_8>SystemGroup</A></H3>
<P>The <CODE>SystemGroup</CODE> directive sets the administration group
used when authenticating the <CODE>System</CODE> type. It defaults to
the &quot;sys&quot; group. </P>
<H2><A NAME=5_5>File Formats</A></H2>
<H2><A NAME=5_3>File Formats</A></H2>
<P>CUPS provides a MIME-based file typing and filtering mechanism to
convert files to a printable format for each printer. The <CODE>
mime.types</CODE> and <CODE>mime.convs</CODE> files define the file
type and filters that are available on the system. </P>
<H3><A NAME=5_5_1>mime.types</A></H3>
<H3><A NAME=5_3_1>mime.types</A></H3>
<P>The <CODE>mime.types</CODE> defines the known file types. Each line
of the file starts with the MIME type and may be followed by one or
more file type recognition rules. For example, the <CODE>text/html</CODE>
@@ -706,7 +611,7 @@ identical (network or &quot;big-endian&quot; byte order) </LI>
<LI><CODE>locale(&quot;string&quot;)</CODE> - True if current locale matches
string </LI>
</UL>
<H3><A NAME=5_5_2>mime.convs</A></H3>
<H3><A NAME=5_3_2>mime.convs</A></H3>
<P>The <CODE>mime.convs</CODE> file defines all of the filter programs
that are known to the system. Each line consists of: </P>
<UL>
+631 -772
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+3 -105
Ver Arquivo
@@ -98,19 +98,6 @@ web browser.
authentication and domain or IP-based access control. Digest authentication
and TLS encryption will be available in future versions of CUPS.
<H2>Jobs</H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority.
<H2>Classes</H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs sent
to a class are forwarded to the first available printer in the class.
<H2>Filters</H2>
<P>Filters allow a user or application to print many types of files
@@ -139,24 +126,6 @@ LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS.
<H2>Networking</H2>
<P>Printers and classes on the local system are automatically shared with
other systems on the network. This allows you to setup one system to print
to a printer and use this system as a printer server or spool host for all
of the others. If there is only one occurrence of a printer on a network,
then that printer can be accessed using its name alone. If more than one
printer exists with the same name, users must select the printer by specifying
which server to use (e.g. "printer@host1" or "printer@host2".)
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup multiple
servers pointing to the same physical network printer, for example, so that
you aren't relying on a single system for printing. Because this also works
with printer classes, you can setup multiple servers and printers and never
worry about a "single point of failure" unless all of the printers and servers
goes down!
<H1 ALIGN=RIGHT>2 - Building and Installing CUPS</H1>
<P>This chapter shows how to build and install the Common UNIX Printing System.
@@ -295,7 +264,7 @@ is also a System V printing system command, it is located in the
with the "-p" option:
<UL><PRE>
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -P<I>ppd</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -P<I>ppd</I> ENTER
</PRE></UL>
<P>Spaces between the option letter and value are optional.
@@ -315,7 +284,6 @@ CUPS:
<DT>/dev/filename
<DD>Sends all output to the specified file.
<DT>http://hostname[:port]/resource
<DT>ipp://hostname[:port]/resource
<DD>Sends all output to the specified IPP printer or server.
The <I>port</I> parameters defaults to 631.
@@ -360,7 +328,7 @@ and interface scripts located in the <CODE>/usr/share/cups/model</CODE>
directory with the "-m" option:
<UL><PRE>
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -m<I>model</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -m<I>model</I> ENTER
</PRE></UL>
<P>The <I>model</I> argument specifies the name of the PPD file or interface
@@ -368,7 +336,7 @@ script. For example, to add a printer using the sample HP DeskJet series
driver connected to parallel port 1 under Linux you would use:
<UL><PRE>
% /usr/lib/lpadmin -pDeskJet -E -vparallel:/dev/par1 -mdeskjet.ppd ENTER
% /usr/lib/lpadmin -pDeskJet -vparallel:/dev/par1 -mdeskjet.ppd ENTER
</PRE></UL>
<H2>Removing Printers</H2>
@@ -411,80 +379,10 @@ command with the "-d" option:
<P>The <I>destination</I> argument is the name of the printer or class.
<H2>Starting and Stopping Printers</H2>
<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and stop
printer queues, respectively:
<UL><PRE>
% /usr/bin/enable <I>printer</I> ENTER
% /usr/bin/disable <I>printer</I> ENTER
</PRE></UL>
<P>Printers that are disabled may still accept jobs for printing, but won't
actually print any files until they are restarted. This is useful if the
printer malfunctions and you need time to correct the problem. Any queues
jobs are printed after the printer is enabled (started).
<H2>Accepting and Rejecting Print Jobs</H2>
<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and reject
print jobs for the named printer, respectively:
<UL><PRE>
% /usr/lib/accept <I>printer</I> ENTER
% /usr/lib/reject <I>printer</I> ENTER
</PRE></UL>
<P>As noted above, a printer can be stopped but accepting new print
jobs. A printer can also be rejecting new print jobs while it finishes
those that have been queued. This is useful for when you must perform
maintenance on the printer and will not have it available to users for
a long period of time.
<H1 ALIGN=RIGHT>4 - Printing System Management</H1>
<P>This chapter shows how you can configure the CUPS server.
<H2>Changing the Configuration Files</H2>
<P>All of the server configuration files are located in the
<CODE>/var/cups/conf</CODE> directory. Once you have made a change to a
file you need to restart the CUPS server by sending it a HUP signal or
using the supplied script "<CODE>cups.sh</CODE>":
<UL><PRE>
% ./cups.sh restart ENTER
</PRE></UL>
<P>The binary distribution installs the script in the
<CODE>init.d</CODE> directory with the name <CODE>lp</CODE> or
<CODE>lpd</CODE> depending on the vendor-supplied printing system.
<H2>Temporary Files</H2>
<P>Normally CUPS puts all of its temporary files in <CODE>/var/tmp</CODE>.
If you'd like to change this directory you'll need to edit the
<CODE>/var/cups/conf/cupsd.conf</CODE> file.
<P>Start by creating the new temporary directory and setting the appropriate
permissions:
<UL><PRE>
% mkdir <I>/foo/bar/tmp</I> ENTER
% chmod a+rwxt <I>/foo/bar/tmp</I> ENTER
</PRE></UL>
<P>Then change the line containing the <CODE>TempDir</CODE> directive in
the <CODE>cupsd.conf</CODE> to the directory that you've created:
<UL><PRE>
TempDir <I>/foo/bar/tmp</I>
</PRE></UL>
<P>Finally, restart the server as outlined in the first section of this
chapter.
<H2>Network Configuration</H2>
<P>The default configuration of the CUPS server listens for connections from
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990621185446Z)/Title(DRAFT - CUPS Software Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990521210321Z)/Title(DRAFT - CUPS Software Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Oblique/Encoding 2 0 R>>endobj
+16 -81
Ver Arquivo
@@ -26,16 +26,17 @@ Copyright 1997-1999, All Rights Reserved<BR>
<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 3 - Local Access Risks</A></B>
<B><A HREF=#3>3 Risk Identification</A></B>
<UL>
<LI><A HREF=#3_1>3.1 Security Breaches</A></LI>
<LI><A HREF=#3_1>3.1 Local Access Risks</A></LI>
<LI><A HREF=#3_2>3.2 Remote Access Risks</A></LI>
</UL>
<B><A HREF=#4>4 Risk Assessment</A></B>
<UL>
<LI><A HREF=#4_0_1>4.0.1 Denial of Service Attacks</A></LI>
<LI><A HREF=#4_0_2>4.0.2 Security Breaches</A></LI>
<LI><A HREF=#4_1>4.1 Local Access Risks</A></LI>
<LI><A HREF=#4_2>4.2 Remote Access Risks</A></LI>
</UL>
</UL>
<B><A HREF=#4>4 4 - Remote Access Risks</A></B><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>
@@ -68,8 +69,8 @@ sections:</P>
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Local Access Risks</LI>
<LI>4 - Remote Access Risks</LI>
<LI>3 - Risk Identification</LI>
<LI>4 - Risk Assessment</LI>
<LI>A - Glossary</LI>
</UL>
<H1><A NAME=2>2 References</A></H1>
@@ -96,78 +97,12 @@ sections:</P>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
</UL>
<H1><A NAME=3>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>Since the default installation creates a world-readable request
directory, it is possible for local users to read the contents of print
files before they are printed. </P>
<P>This problem can be alleviated by making the request directory
readable only by the user specified in the CUPS configuration file. </P>
<H1><A NAME=4>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>
<H3><A NAME=4_0_1>4.0.1 Denial of Service Attacks</A></H3>
<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
will accept no more.
<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 determined attack. </P>
</LI>
<LI>Repeatedly opening and closing connections to the server as fast
as possible.
<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>
<LI>Flooding the network with broadcast packets on port 631.
<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>
<LI>Sending partial IPP requests; specifically, sending part of an
attribute value and then stopping transmission.
<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>
<LI>Sending large/long print jobs to printers, preventing other users
from printing.
<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>
</LI>
</OL>
<H3><A NAME=4_0_2>4.0.2 Security Breaches</A></H3>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX username
and password account information, the authentication information could
be used to gain access to accounts (possibly priviledged accounts) on
the server. </P>
<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. </P>
<P>The next minor release of CUPS will support Digest authentication of
the entire message body using separate MD5-based username and password
files. This will protect password information and prevent unauthorized
access due to compromised account passwords. </P>
<H1><A NAME=3>3 Risk Identification</A></H1>
<H2><A NAME=3_1>3.1 Local Access Risks</A></H2>
<H2><A NAME=3_2>3.2 Remote Access Risks</A></H2>
<H1><A NAME=4>4 Risk Assessment</A></H1>
<H2><A NAME=4_1>4.1 Local Access Risks</A></H2>
<H2><A NAME=4_2>4.2 Remote Access Risks</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>
+307 -306
Ver Arquivo
@@ -1,62 +1,61 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990624171525Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990521210323Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[80.2 554.4 88.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[88.5 554.4 97.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
31 0 obj<</Subtype/Link/Rect[97.5 554.4 126.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
32 0 obj<</Subtype/Link/Rect[126.5 554.4 160.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
33 0 obj<</Subtype/Link/Rect[160.5 554.4 186.1 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
35 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
36 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
37 0 obj<</Subtype/Link/Rect[144.0 528.0 168.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
38 0 obj<</Subtype/Link/Rect[168.8 528.0 200.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
39 0 obj<</Subtype/Link/Rect[200.8 528.0 212.7 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
40 0 obj<</Subtype/Link/Rect[212.7 528.0 248.5 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
41 0 obj<</Subtype/Link/Rect[248.5 528.0 282.1 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
42 0 obj<</Subtype/Link/Rect[144.0 514.8 168.8 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
43 0 obj<</Subtype/Link/Rect[168.8 514.8 208.2 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
44 0 obj<</Subtype/Link/Rect[208.2 514.8 248.5 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 488.4 80.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
46 0 obj<</Subtype/Link/Rect[80.2 488.4 88.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
47 0 obj<</Subtype/Link/Rect[88.5 488.4 97.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
48 0 obj<</Subtype/Link/Rect[97.5 488.4 136.3 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
49 0 obj<</Subtype/Link/Rect[136.3 488.4 170.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
50 0 obj<</Subtype/Link/Rect[170.2 488.4 195.9 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
51 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
52 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
54 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
56 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
57 0 obj[10 0 R
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
9 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[82 0 R/XYZ null 818 0]>>endobj
10 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[82 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[82 0 R/XYZ null 737 0]>>endobj
12 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[82 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[82 0 R/XYZ null 658 0]>>endobj
14 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[82 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[82 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[82 0 R/XYZ null 434 0]>>endobj
17 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[82 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[82 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[88 0 R/XYZ null 818 0]>>endobj
20 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[88 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[88 0 R/XYZ null 737 0]>>endobj
22 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[88 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[88 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[88 0 R/XYZ null 540 0]>>endobj
25 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[88 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[88 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[94 0 R/XYZ null 818 0]>>endobj
28 0 obj<</Subtype/Link/Rect[80.2 554.4 104.4 567.4]/Border[0 0 0]/Dest[94 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[104.4 554.4 168.0 567.4]/Border[0 0 0]/Dest[94 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
31 0 obj<</Subtype/Link/Rect[124.5 541.2 152.3 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
32 0 obj<</Subtype/Link/Rect[152.3 541.2 186.2 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
33 0 obj<</Subtype/Link/Rect[186.2 541.2 210.7 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 528.0 124.5 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
35 0 obj<</Subtype/Link/Rect[124.5 528.0 161.5 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
36 0 obj<</Subtype/Link/Rect[161.5 528.0 195.4 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
37 0 obj<</Subtype/Link/Rect[195.4 528.0 219.8 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
38 0 obj<</Subtype/Link/Rect[72.0 501.6 80.2 514.6]/Border[0 0 0]/Dest[100 0 R/XYZ null 818 0]>>endobj
39 0 obj<</Subtype/Link/Rect[80.2 501.6 104.4 514.6]/Border[0 0 0]/Dest[100 0 R/XYZ null 818 0]>>endobj
40 0 obj<</Subtype/Link/Rect[104.4 501.6 158.2 514.6]/Border[0 0 0]/Dest[100 0 R/XYZ null 818 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 488.4 124.5 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
42 0 obj<</Subtype/Link/Rect[124.5 488.4 152.3 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
43 0 obj<</Subtype/Link/Rect[152.3 488.4 186.2 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
44 0 obj<</Subtype/Link/Rect[186.2 488.4 210.7 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
45 0 obj<</Subtype/Link/Rect[108.0 475.2 124.5 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
46 0 obj<</Subtype/Link/Rect[124.5 475.2 161.5 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
47 0 obj<</Subtype/Link/Rect[161.5 475.2 195.4 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
48 0 obj<</Subtype/Link/Rect[195.4 475.2 219.8 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
49 0 obj<</Subtype/Link/Rect[72.0 448.8 82.7 461.8]/Border[0 0 0]/Dest[106 0 R/XYZ null 818 0]>>endobj
50 0 obj<</Subtype/Link/Rect[82.7 448.8 124.2 461.8]/Border[0 0 0]/Dest[106 0 R/XYZ null 818 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[106 0 R/XYZ null 737 0]>>endobj
52 0 obj<</Subtype/Link/Rect[126.9 435.6 155.0 448.6]/Border[0 0 0]/Dest[106 0 R/XYZ null 737 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 422.4 126.9 435.4]/Border[0 0 0]/Dest[106 0 R/XYZ null 434 0]>>endobj
54 0 obj<</Subtype/Link/Rect[126.9 422.4 172.8 435.4]/Border[0 0 0]/Dest[106 0 R/XYZ null 434 0]>>endobj
55 0 obj[9 0 R
10 0 R
11 0 R
12 0 R
13 0 R
@@ -101,44 +100,43 @@
52 0 R
53 0 R
54 0 R
55 0 R
56 0 R
]endobj
58 0 obj<</Dests 59 0 R>>endobj
59 0 obj<</Kids[60 0 R]>>endobj
60 0 obj<</Limits[(1)(5_2)]/Names[(1)61 0 R(1_1)62 0 R(1_2)63 0 R(1_3)64 0 R(2)65 0 R(2_1)66 0 R(2_2)67 0 R(3)68 0 R(3_1)69 0 R(4)70 0 R(4_0_1)71 0 R(4_0_2)72 0 R(5)73 0 R(5_1)74 0 R(5_2)75 0 R]>>endobj
61 0 obj<</D[83 0 R/XYZ null 818 null]>>endobj
62 0 obj<</D[83 0 R/XYZ null 737 null]>>endobj
63 0 obj<</D[83 0 R/XYZ null 658 null]>>endobj
64 0 obj<</D[83 0 R/XYZ null 434 null]>>endobj
65 0 obj<</D[89 0 R/XYZ null 818 null]>>endobj
66 0 obj<</D[89 0 R/XYZ null 737 null]>>endobj
67 0 obj<</D[89 0 R/XYZ null 540 null]>>endobj
68 0 obj<</D[95 0 R/XYZ null 818 null]>>endobj
69 0 obj<</D[95 0 R/XYZ null 690 null]>>endobj
70 0 obj<</D[101 0 R/XYZ null 818 null]>>endobj
71 0 obj<</D[101 0 R/XYZ null 689 null]>>endobj
72 0 obj<</D[101 0 R/XYZ null 247 null]>>endobj
73 0 obj<</D[107 0 R/XYZ null 818 null]>>endobj
74 0 obj<</D[107 0 R/XYZ null 737 null]>>endobj
75 0 obj<</D[107 0 R/XYZ null 434 null]>>endobj
76 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[77 0 R
80 0 R
113 0 R
116 0 R
83 0 R
86 0 R
89 0 R
92 0 R
95 0 R
98 0 R
101 0 R
104 0 R
107 0 R
110 0 R
56 0 obj<</Dests 57 0 R>>endobj
57 0 obj<</Kids[58 0 R]>>endobj
58 0 obj<</Limits[(1)(5_2)]/Names[(1)59 0 R(1_1)60 0 R(1_2)61 0 R(1_3)62 0 R(2)63 0 R(2_1)64 0 R(2_2)65 0 R(3)66 0 R(3_1)67 0 R(3_2)68 0 R(4)69 0 R(4_1)70 0 R(4_2)71 0 R(5)72 0 R(5_1)73 0 R(5_2)74 0 R]>>endobj
59 0 obj<</D[82 0 R/XYZ null 818 null]>>endobj
60 0 obj<</D[82 0 R/XYZ null 737 null]>>endobj
61 0 obj<</D[82 0 R/XYZ null 658 null]>>endobj
62 0 obj<</D[82 0 R/XYZ null 434 null]>>endobj
63 0 obj<</D[88 0 R/XYZ null 818 null]>>endobj
64 0 obj<</D[88 0 R/XYZ null 737 null]>>endobj
65 0 obj<</D[88 0 R/XYZ null 540 null]>>endobj
66 0 obj<</D[94 0 R/XYZ null 818 null]>>endobj
67 0 obj<</D[94 0 R/XYZ null 737 null]>>endobj
68 0 obj<</D[94 0 R/XYZ null 679 null]>>endobj
69 0 obj<</D[100 0 R/XYZ null 818 null]>>endobj
70 0 obj<</D[100 0 R/XYZ null 737 null]>>endobj
71 0 obj<</D[100 0 R/XYZ null 679 null]>>endobj
72 0 obj<</D[106 0 R/XYZ null 818 null]>>endobj
73 0 obj<</D[106 0 R/XYZ null 737 null]>>endobj
74 0 obj<</D[106 0 R/XYZ null 434 null]>>endobj
75 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[76 0 R
79 0 R
112 0 R
115 0 R
82 0 R
85 0 R
88 0 R
91 0 R
94 0 R
97 0 R
100 0 R
103 0 R
106 0 R
109 0 R
]>>endobj
77 0 obj<</Type/Page/Parent 76 0 R/Contents 78 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
78 0 obj<</Length 79 0 R/Filter/FlateDecode>>stream
76 0 obj<</Type/Page/Parent 75 0 R/Contents 77 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 3 0 R/F8 6 0 R/F9 7 0 R>>>>>>endobj
77 0 obj<</Length 78 0 R/Filter/FlateDecode>>stream
xÚíßÜ8rÇ%µúÅOšÙíwNH€ØîO{Ï@pgF›ì[I¢‡]_r‡ öÎë½`ÿûô¯éÖRª*R57<à°¶Én~Äâ·ŠdQý·W7b½ýßøîV¼ÿ ~üßW÷òU"_ýM¼_ÿîíwû|ÿáÃÛµøÝÇ··âööæíݾÖïòÿ|÷ûìßîÅæ_×ûò~_>ìËÇ}yØ—ï÷å÷ÿõîñõ˯Ÿßý‡¸{óîßÅæææÝ=<ˆ;ñÃã«âyxá2+òñv¹\^]ìÊö?–wSç’Ë‹ÈS•‹ËëÇirÉÛ+5R ny71.yÛÅôT.¯“©pᡎhwSàz¸òÈÅ_&ŽsÝG¯\næºåRÙ4Gpf¬ìŽ™e®á™—oǸò+ÏJñ¯âºõ¬•`ã žÍrí—±^Ø2K\òʳ^ü×£så‘×Gùfd®{¯§$crÝx½3—e´ncmËëQ¸däy.“BX-ßÎ5 &€Åƒ)`1ÀÀiÉà‹LËóVqõî·Ì4›k`¬-X2×Ú¼p}òF(³Þ¹2o”òmÏ\y4AÁ}…giLA
ÚÑ ê£såÞ¨eÓW4.rŠÁ2Ç‹Á4<Yì‰\r|,ÏïK8Àå…Ö¹2ω²±Ì%#7¸Ë\kÏ‘²°Ê•yΔÄ"—+Vˆrb®Øs¨l¬qå.auJLO4PQLP40QL*ÒÀk=–+u «cÀ`z0˜ Æcœ3ŽKºˆÕ×Ã51Ã`z.5Ã`¸áº¸\._?îÊýîâC¿ƒ ùº9Éw÷ z¸ü–¤ùpÕÏ€AßÃuÙ¹Tº7@[p­ûªò¨-­‡õÐãpÒ%77xÃæb‡´tq&ÙŒËÅ 5èé¹9kÉ0¹˜ÃÅJ§æ YÈäbòÜlHÆù<®´m·8d+W4” ž¼YdEêÁþ®†IÚ;'Ù`ÃàƒM-~æUHçÊGÀ"ƒùt.²Èûv®H
cåhç 6£r¥#"— ¶ qåV<$,2ra`oáõmaµdF†Ö"yËX¤ÛW
@@ -171,282 +169,285 @@ w
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
ÈEþó¿þß¾|ùçýò§¯¿‰ìó_þòõŸåŸ·íïÄÍÍ®ýÍÝGñææýÛÛ]û]»7yž½¹y»ÞU{s³Ù~ú›ÛOþðËoç…/?ÿôë_ÙW¼{ÿöCés~þëo_þôßÿóuÛÉß½ÙþßÇŸþò‘íþò—mG~ùüåïŸÚ5MäéÿiÁñ½endstream
endobj
79 0 obj
78 0 obj
6308
endobj
80 0 obj<</Type/Page/Parent 76 0 R/Contents 81 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
81 0 obj<</Length 82 0 R/Filter/FlateDecode>>stream
79 0 obj<</Type/Page/Parent 75 0 R/Contents 80 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
80 0 obj<</Length 81 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár á
äHendstream
endobj
82 0 obj
81 0 obj
31
endobj
83 0 obj<</Type/Page/Parent 76 0 R/Contents 84 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
84 0 obj<</Length 85 0 R/Filter/FlateDecode>>stream
UKo1¾ó+F9%RÙfè-o!¥í6ª.Æ;œx=[Û ¢¿¾c/Bi«TpÁóú¾o|o¥pÊŸÎ;Ðíƒ,[—“ÖûÛ!¤C˜léŸ÷`’§0–TáÉä¹±ž%ƒÆÞ>$G’Â(GãU¡¤ðŠLã܃4]»vúëd®8*üRX‡²¶Ê¯ÀbEÖCei¡rt …^9ö¦*rNÍôN€$#ÑYðs„+*K2ðøiô-ç’i7é„’™UŒÌ<Áxå<–0=>ºzÌÆGÓøŠÖ1ZH“Óä¿îpï³ þ¼@»P¸ü ÁWX`¿ú–"Ê"°ª6>Z¬ÐFJ!vÚ9ë+oE4º˜À%0ò0nå Ñ@Ž Ô‘Ãl7­`¼‘:³”×Ò;ð0”ä‘!8/L.l¾…àHסƒ…кa±@““ }É÷êÖŽ5L (ºå²æû5ÄÀ%ÚÔúV–üÐÖÊ pI´…è’uÖŠ1§nR‚ŸA¿“Ùx’¤¹™£›Ém{”eÜNѸÏD›€ŸK‰§àéÁ3Í"ø^cÍE›µGç>àŠe¸×C§Ç÷Ùõ;x¸½JÓóáôäŒyØþO—šä »?^k¨pQUc~Ä8Ó*Wæ6íh¯¤««0 Ü´¥òs^îÿ(j#C#„æy?¨Ès,Ë’ìKÃ1Í,-] PdäüXZUù-'tñAEbGYvÍ‹ÐfÉpg(ÚìÆÊ …®«sU¥×[ï 696Ã{1³ç®K]7 kç©T?¸öb½Š¼íwŸán¾…>=楷|^ô
 TüîÕKN»Ó“=¼A¾%ª m*ïÚÃ(ã!$¿Ï0 YvbÃÌiïȶ–Õýý<tášd]2Ä?öîÿû†{gŸ„‰špiŠ]Ö´Œë‰q(܇&¿\çï ˜ï/­§þ9¼ÀW¼½{ÇåØF«CQœ°@VŸ·ôM¡]½'Ésr!9ÖÁƒr/oKÑ‹Õã©úïœãNóÿ‡°«Æ4X›Úhé°Û4fç®78M†œ9¼†ß7“Ö—ÖOªÏ8˜endstream
82 0 obj<</Type/Page/Parent 75 0 R/Contents 83 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F8 6 0 R/F9 7 0 R/Fc 8 0 R>>>>>>endobj
83 0 obj<</Length 84 0 R/Filter/FlateDecode>>stream
UKsÚH¾ó+º|²«‚ÖŒ!7¿‹ª<´§öÀeµÌÄ£ezE~ývK°–Í&e_˜~}ß×}ë¤pÉ)\÷ ?]vng?ÇŽaV°ex=€Y~žÂTû
/f_[ëU2jíÝ«QÒz$)LrtÑF«h¼k¦[×Þ°u- ù"®U@ Ôu0q+"TÁ¯LŽÊñ¿²bo_@å‰ÌÂhï4GPøq‰pçËÒ;xù4ùKŠsÉ´Ÿô¤d #s¯0ÝPÄæçgw/Ùôl~_0£…4¹LNðëwüz»àÏ+ +ƒëŸü WßS¡¬„Uµó±jƒ¡¡$±óÞÕXù #5 (I„¥¢#– D9®ÐrD <(ÚÀt'u|^ëH½`(}D†@Q¹\…|¼­¥ƒ
emËb….÷Aú’Õ­‰5L@Ýs“†lù~‘¸Åð†¥oeÉ]k—ÄP(”l³îTlÒqê6ÕDüƽ˜Ì&zí-7sò0{ìN²ŒÛ©Z÷…’±ü\J½ŠC¾úEC¾ÕXsQàfÑù ¸š2܈{…ÒÇùù‡ìþ<?Þ¥éõx~ñ¦<lÿˆDêáÖzýÆnÓ·b•
7U5åGlfºÊ•¹ Ê’?*Iu%“ÀM[›¸äUà>ñ¢vZ¡,ÏûI}Tž°,kÞZ†Œiüš„² È<Å©¦Š{NH̓iˆeÙ=/B—%Ã!ð]få4V©,p]›ƒª*»Ýz‚ÚåØïiÄÌž»®mÝn€®)úÒ|çÚ«í*ò¶?}z§åúüœ—>ðy±húâß^ƒä²?¿8Â+"ð-1¥´©0¼kÏ“Œ‡DEÐü¾@²\vbÇÌy×=m++ýü<ôáÞëºdˆÿ} Ø{øÿPî]xU®Ñ„Kûf¢ o­_7ë‰ÍPÐû6¿Þæï˜ï?ZÏ{Ãkø_ñîá×{`;­NEqRxÆY}ÞÒß
íK¨¡·“_†_Ì1Øå¸!¾$ÿVü Ç?Yþx¨°iM£­©Û*–ŽûmW>rƒÑe2æÌò*¿f?;\8Gendstream
endobj
85 0 obj
84 0 obj
824
endobj
86 0 obj<</Type/Page/Parent 76 0 R/Contents 87 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
87 0 obj<</Length 88 0 R/Filter/FlateDecode>>stream
85 0 obj<</Type/Page/Parent 75 0 R/Contents 86 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
86 0 obj<</Length 87 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
88 0 obj
87 0 obj
118
endobj
89 0 obj<</Type/Page/Parent 76 0 R/Contents 90 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
90 0 obj<</Length 91 0 R/Filter/FlateDecode>>stream
88 0 obj<</Type/Page/Parent 75 0 R/Contents 89 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F8 6 0 R/F9 7 0 R/Fc 8 0 R>>>>>>endobj
89 0 obj<</Length 90 0 R/Filter/FlateDecode>>stream
xÚ­•OÚ0Åï|Š9²Ò&K 7
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád– IIø5ß4tÄßà³Éäžî•Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
l ™áÙt:…  üÞc° ç›Ý ¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«» zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
91 0 obj
90 0 obj
522
endobj
92 0 obj<</Type/Page/Parent 76 0 R/Contents 93 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
93 0 obj<</Length 94 0 R/Filter/FlateDecode>>stream
91 0 obj<</Type/Page/Parent 75 0 R/Contents 92 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
92 0 obj<</Length 93 0 R/Filter/FlateDecode>>stream
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
endobj
94 0 obj
93 0 obj
121
endobj
95 0 obj<</Type/Page/Parent 76 0 R/Contents 96 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
96 0 obj<</Length 97 0 R/Filter/FlateDecode>>stream
xÚ}RMÓ0½çWÌ$6M7m, ! Y‰«kO¶f;ëqXòï™±·TªŠ)Λ÷5~ª¸á§íÚôXÝõÕÛ{höÐü§Ûn 7¯ZhaŸƒVÞiDðÝÒ#½î2|MSà«v_w2P ª@£@AE„t
$o•@+Gü=¹`Þ-ðlÓ ¸<>³O5ô'K@¨“ L@`Ù¦­×"«Œ‰¢h‰fDtJ¨SÃG8Z¯òxØB !Á¤ˆžCdŸF™£MË™†AÛÌ”ýÉèý—O?®ÄÄ‘éýÐB Ǻ´ÃeÞÖ»K?¥ÐºÃYæ.¢Ò'üw›ë5fYƒƒš]ë))çJÍóI|çpfÅŸFçÃ'öŸ8|äÞB\Þ€åY)YA úR6IS2}•L”uð }"énŠÖ'¬cÑ#2G6·äçŠuWçíM1°èxÞ=À_¥×ã£z”îò^®}ÃßHù–0Z`ù~ЄÚ–9¬—Ó+ëïï¿Äû`æXêß/»Ù]ºÞl»2ñ¿»¾ÙÝÔ{F3ìV¾?ôÕ·êšU cendstream
94 0 obj<</Type/Page/Parent 75 0 R/Contents 95 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R/F9 7 0 R>>>>>>endobj
95 0 obj<</Length 96 0 R/Filter/FlateDecode>>stream
xÚ}ÎA
Â0Ð}Nñ—º0mÚ¦I–
7–\ ¤)¤Ú©Á…2«Ï¼?Ì“0”iD…º…YÈI“¢S`
zJ›V4Ðã®Fï—ѮÑMÎ Ñùu¯çl9•Y¸¤ÙS†«7ÃGclïzØ
_¨Boí*: Æ>G¹Hòß,©J4¾å³&7ò×Ò:ßendstream
endobj
97 0 obj
450
96 0 obj
146
endobj
98 0 obj<</Type/Page/Parent 76 0 R/Contents 99 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
99 0 obj<</Length 100 0 R/Filter/FlateDecode>>stream
xÚ-Œ»Â0C÷ûa4$
¬åщÒËT!•ÊC$ñ÷4Ù‹-?I¢%¡L±»ÓšiÞ¬ %¸‡ÔËE>O¶¶n›Ó¡Eúüî¢GëÝ+ùë!æ)_HHü)SeôLã—Ôø±®»¡vΧ;¤k*³Ó‘¾WM%Õendstream
97 0 obj<</Type/Page/Parent 75 0 R/Contents 98 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
98 0 obj<</Length 99 0 R/Filter/FlateDecode>>stream
xÚ-‹Ë D÷÷+f© ´WLµK_MÜ)à44EŒñïcf6s2çNŒê†¬Kí•Ö†¦íÌ0<g,fL?ÚªUk °94tôùÕ%íì3…ü†r·˜òØœIIü­ºÙð¤ÆoK¨ð¸`ß»!l—CÊggèH]&endstream
endobj
100 0 obj
132
99 0 obj
130
endobj
101 0 obj<</Type/Page/Parent 76 0 R/Contents 102 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
102 0 obj<</Length 103 0 R/Filter/FlateDecode>>stream
…WKo7¾ûWÌÑ$Å’;nOMÚ"µ´_¨]JbÌ%7$×õ×÷›!Wu"€KäÌ|Ž¿œÍéÿæt½ Ë+ªš³wg¯?ÜÐü†ÖøæêzIõù’–4¥;Ýø¤é—ªÒ1Ò‰OñÕÃgœ_Ò|žÏO/ofW|£œUùl೤‚¦´õ‘ªD•r´Ò¤¿¶Ö›¤kê ¾í)²¾R–º¨Ç®~í­ƒop äðq“nf\rÏ/g Îý°5‘¢®’ñŽj¯#9u¸c‡‚¶Š“&ON§Þ‡'âð&è^YË×»`Òn– ž1.2Æåìb6§ß´3(Ö¯é^‡gS ”Tõn~7O`IŒK: ;²ÉÍ83š~ýôñ^>| yî¬ÓA­¬æbë}ºr‰TN7A¸Êvµq›Ÿ8õâ MW3Ño>#þèü}Lˆ‡¨él2-¢VÞ¹ÌVä \BÉâ=þ 7(EmH¥Æ- ã>™Ðq™tèÛ(U1Õj£Œ‹øp'!ApÐP6úuêáÝ&ÆÛú e—¬»ÔÁ7H¥@Çå‘â™±x:[sj[ ®‹ÌÖ4&If×5+€A¨cèPÄ÷8Z,ÁŠ€_Ód”n‹s̆sÒKN†Ü|dž…T·1Ž¡‹FBÕ”¹"-Š0wºÕlG»#ßBaÈÃSe=—ñ…T¤µ§êÀÛ7Ñ`ÅpVqG½Ú1ø¢Œ$+Ò$Öθ#Äâ ŽVù†¯2]#~ÐÄÑÔZÎçVZ 4f³ÍÆØëìÑw\Qìª-€—$ˆö®ÊÑDŒRý]h "VZ;ôw¥Í3¨/nú tÌW"«…¸læÓà¹$Àã¨ßzÀåκÍKQ/‹¨¬÷ÜŽÙs…
§oS'ØÚèêrþB¿ÛïV(SÑz±‰YgQ\m~a"NdÝS<'‘Ø5ÜOV…ÍÐ41G&ZæY+5xwr/¤ÝxŒÑmS <÷”ûF%,Îê¡ ¯x80¤~ -ÙšZ¡‹èYYSS×Öh9¹Ò|jû¥ˢŽv"E«Bâùyûñ#ÏÄŸ)¶º2k§ÚÝV9œe¸ÙÁ¬:$E–æL\ZL¾mqxÐlÈ›‚r±Á[†÷é¨÷ïòµ´fL¡«Ò0ª‚ EŽäeçL@¯ÀøŸO×R±/rš|D.·<—–?í÷5¾¬ñf|É盟rïµõL»‚>ûUÌ™²G&Ã@äÓž«”w=æ1+§†&z9³Ä}<¶y,«ÊX¸Zç‚¿1¼2†£2Ï™¹ü_”wøüõõ.óxoþÕ§ôùÇWߟúàLÂ<î3£ûž\ |ZßÅ–µÌ…aÒtÀFó»²·ÃnRÃ÷ã>ä…(ârn;µ$tëÊM;¡^³÷}Ó@ü.2™“Rΰ€A'ç{'Ïç:5ŽQr¥X•8—>µÀl‡0,)x˯ӺfU
œvý·'áÅÖ4Åvy²7-°-å ‹ÞÁíÕV_:î—ãÝÈ;<—±kypFz§¢©HuÜ– ­,óO¦-ãpªÑE#×`R6àâ Üú#*Z«*Ñ
éñX@yý5•dô$æh ÎèÞðË%EãBŽõéÏÛÓÁ†Õ×8°Ü ¼ Ž@}Ø}@F ÷Æ‘ JÌñsöx^ Ö½¯ >¾eê¿5Ñj½VØ(3ØaóÊE•‡*k»ª±9˜U¾žÑß¸í¥›f–ÉçÇ=¹-B8ŸÍÈ{µ˜ü°=à1Ûù«ªƒ6ò<9Úúc·â-|0¹ü]’ÝøöàÆÅõìæÿZ¾½À© >wÍ¿¿8ûëì?ˆ€lendstream
100 0 obj<</Type/Page/Parent 75 0 R/Contents 101 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R/F9 7 0 R>>>>>>endobj
101 0 obj<</Length 102 0 R/Filter/FlateDecode>>stream
uα
Â0à=Oñ:˜65i’±‚\,y¬Æ"×÷Ç«ÁADn:þï?î)jÛ`Û"f± ¢ê=”G¸pÒZp^i Wº¡#JD9=æu¹1N+S<ÝÑÅÈü]¥¥ð… )OsúQUï Ô稱,ÿ} ]-=3Îí²ïƒ8Џý7Ýendstream
endobj
103 0 obj
1455
102 0 obj
140
endobj
104 0 obj<</Type/Page/Parent 76 0 R/Contents 105 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
105 0 obj<</Length 106 0 R/Filter/FlateDecode>>stream
]PÁRÂ0¼÷+ö¨‡–*ô*"7gâ„䕯i“š¤"~½IadÆÉ;ä½ì¾ÝìgÆPÆÃ°X¦’}¶æÙl[1ð&¾,모ÁÕ#œ–„”Ö)mŽÝ¹¸çY‰|¾,ª„â-ÁÐw@¯upÔ‘ðÛàéýu“î:øq¬ ØècÜ 1†–LÐRmM‚Æ=y/Ž„ƒUgŒ>jÂÓ œtUfbž”_6ù!j©#gDOFaÞŸ¢[4º#_€·Ú_l Î’á†Ð¦±®¿¸˜¨Ž¾¢ Œ&Y´Nÿú'“ˆ¡FB°K{í¯æ¶ÝOIͶõ5YV1ÔS°›Ýã–#¿´·M8‰øñ=ÉÑépÆŽRX‰œ'N¾š—‰U§ÉbUFS_éúÇZ;²%ŸPÏ<{Ë~AΜüendstream
103 0 obj<</Type/Page/Parent 75 0 R/Contents 104 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
104 0 obj<</Length 105 0 R/Filter/FlateDecode>>stream
+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê²[ë™*€ù&
A™ÅÙ
ŽÅÅ©ÅŹ©y`®!\\g$endstream
endobj
106 0 obj
320
105 0 obj
127
endobj
107 0 obj<</Type/Page/Parent 76 0 R/Contents 108 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
108 0 obj<</Length 109 0 R/Filter/FlateDecode>>stream
106 0 obj<</Type/Page/Parent 75 0 R/Contents 107 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F6 5 0 R/F8 6 0 R/F9 7 0 R>>>>>>endobj
107 0 obj<</Length 108 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªc‚J}uÍ õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»6ã 72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
109 0 obj
108 0 obj
426
endobj
110 0 obj<</Type/Page/Parent 76 0 R/Contents 111 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R>>>>>>endobj
111 0 obj<</Length 112 0 R/Filter/FlateDecode>>stream
109 0 obj<</Type/Page/Parent 75 0 R/Contents 110 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F6 5 0 R/F8 6 0 R>>>>>>endobj
110 0 obj<</Length 111 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à• ÅI$€—W÷ÈG£Ù5~1ztÖýnDÎÓÚG„®‰ZR\h¦`$…V²‚厔ì“ð]Á¿@˜Ó”˜Ê§ßà')ÎÚáLC*J.0©×IE\„~mšµL¤¤–TV.b1ÿ‰H4—‚TPh"–ÆŒæª$‚¿7‚ƒ=CãvöÌL~²uLØÆ‰Ê'yÚÎÊw•æ¶äN&ä„W¾Ñg³-—¥ÎKCfÍ9+äšÉZTñ­>ÏÍê&àö±È‡íÔ‚©½!嬮m³ÃJÒµƒ…3ì8!¬øž›Ug¼b€õʰ/Ï(ùÊ‹ûÐKúAlóÆ‹A†Á‡Ñ#* +} ŠAÁèNq}„ÛJ¥mºF!øwÝŽÍ
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
endobj
112 0 obj
111 0 obj
383
endobj
113 0 obj<</Type/Page/Parent 76 0 R/Contents 114 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 57 0 R>>endobj
114 0 obj<</Length 115 0 R/Filter/FlateDecode>>stream
͘ێÛ6†ïý¼l/V+žt¸Üd»AImç…nÜ®¬TVìÛg†Z¤³¢T ÈÚ "†ü¸šÃ?”þ]q–Ãg¥`²`M»zµ]Ý>ÔŒ×l»g¼™`E©áºýøËv÷áѰnÏ^wÇÁ‡Ó¯Û¿W¿mWy–//ë78`…¬`YËðêîÙùÓû¿Øíƒfœãޏ¬v»q6‰‘-“:«b¾³eÓtŸ FJN»
ÛÁ”ìê²@O ×–i‘i$\­ÈÕïBÖÓYÂ×´…•½nAv úý#dÅahvá;>ïu]få5ù}ηö‰½oí`Ò·èQ.`†õ©˜ó)‘«2+b2™‰´y: ¦Mø$ùùŸöåàìD{ûÕô_æÛóÁQ<«¯"83QÑuEQqƒTTt]g”ér&*žÌs¬ŠMvBÝwÍ—Ò}š"¨T¦b Ÿ@Ä™ÐȨ O
¾.ÅYðÝý"Á×¥tR-Ò‚ïñÝñ•(k³7½96æ4áÇúºô癟œI~ðÀYîÝ`™ÜëÂ>·˜•{¿C…¢íàÌŽóúý»M"dãZH~cÐB’³;’¯¥DÛ(Š— Ú\L”Û„$INŽÅl›ðä*íŠÈd&ÒÛá“éá—c—ÈQ‹BÙ æ2]Câ*jH¦‰×ð˜$Hö~™ ô<œœ$Âóãò­u%XÙÂqôãÌžs3Í –B
ªKŽ3{Î]³{L$
XUuÉrfϺk@gO 7UŒs…í.rTÒÖ‡Ó?'pÛëQm=£yáZ•­P;X¨Ðy麘œ×hÚ£Æ#[´™‰´1Í—þ0<MãJJRÄ#;ñ^õf×|šê®›×§éÁÉ!“¶1Õ(xn0!x7VµMP•婸0p¤¨.Ñd·¨{s<¤Ê0\އÇN-ÌO°4x'Ÿ&kT¢¨Ä$š \ºÀ´1 \Ñâè‘Gœ@ î™*j‰G€Ÿ”,åL>”µíŒ.DvÌh—•Ï1—Äæ‹*‚;»‡Í—jˆ8Ç2ÒOL«Âؽ@±–É®­´<wmw¿¨k+­\Qé®íñ¶¹F|g§+©kG2«e]Ûs
篈Cfâ¬MÛ ‰² ÖCÿà;2«em»Ž%$èD«#W¥Ú¶¼–¦=“s¢têh•Ð&“gÛâºK½úŸ9ö b(™-åÍcw:íú§ ‰¬_¦DÿÛ¯N—îåHa"ÙÁ²ã£suò84bA5äyÃñÄZ¤­éÛ©d-^;úý›çîk˜}R;H½|ªœ»Nwɗφu %B“Ý£š¾;>MyV¡ú\™g­Oo*Ê6Å¡$%¯œ¤Ý¯ï¶ì†ÙO›n?|Ûõ†ûóÚ|îúRIpÀM)ìÓÈ›®¾a•endstream
112 0 obj<</Type/Page/Parent 75 0 R/Contents 113 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F5 4 0 R/F8 6 0 R/F9 7 0 R>>>>/Annots 55 0 R>>endobj
113 0 obj<</Length 114 0 R/Filter/FlateDecode>>stream
Õ˜ÛnÛ8†ïý¼Ü^T/ÓdS(Ð]Û}W¡wÝFVWr[äí—ä u"RwVm@1äGiÿÐþoCIn¿”ŒpEªzón¿¹yЄj²?ªxƈ*¤½îÿؾ<ÒÉ]s¾˜ó¥{³ÿºùs¿É³ÜRÜ…ºËö½ÅK»¬&î
÷Odçø/¦·ÿI(u;ºev£d? kÂeVNù`EÊ®j¾(9îʤÝÎNÉVÿ¡³žàÊyšI{­‰d™ÄAÄÕ]mã­˜òžÎ"¾Ak»’:o·@»}x´Yq:žªÃåÔœ_÷º,²bM~OùÖ¿qð­ÌúÖy”2;Ãû”¥|Šä²ÈÔ”Œf$íž»‹©#Å0¬·â´èP`GÚ§Ÿ¦ýy2¿^Ž ™^EpQ‘º´/…QA,*Rë 3È4wU1A£Q÷Mõ£¶é>Ï#,PˆLLa¡a6£®|Y°^ðá~‘àË‚ƒT³¸à¼tîšðÁŠ”­9šÖœ+ÓÍøQ¯K^ùðDò[ôrƒer/•o–”û°CéDc²˜s÷ù¯]$dÃZ›ü2wA“À¤PK‘¶¡Ôuƒ–ЉC›€AT9fÉ6ÈenµkBF3>]þ5m$Ãr×%r§EcÚ2_Cl5Äã‚Dµ}M$¿L˜óŽ}9ž$Äsæœ9æ{k lOÝ·yÐhqM´êŸI`¨%ç+EíÜÕé›L”O®@Û}JûÁBIË 2}¼š‘ô±©O©BB¥Â…z C;Ân+ÛˆºÈapuYÚæ4Á… ÈsÉ4S”ŒgêúOZh>ô.ÄtRh(ĤJn©_rÑ ¥hêæb"±Õ#µSÚŢȎ–»Ó_a•u D*®ìêq•Q™®S=¸_$³Bq™ x/…>X‘²@fûU/Ÿ͈ºí:Z×ÿf~Â:±Yã²HŸä¾Í@IøÁ2•R@I• {xœìf$-QÙÀ œÀÐŽ°e*Ûã¼ÊNpa‚ÈÄo¡²©@‹|h§0ˆª¬ Ð]DZg J8&£™†_aK”a¨„cÚéÂ.:ôZ;Æ… 4ÝE¯¯¶E\m)‡3|î’Ø–É­Mq¶¿ýcÑ3}ò°éhFÎû§¦ëíóë~äz¥9ùèDå9üÍ$2ƒ…‚™Sl%QÁ°¶¢x¿a¨(0#ioÚz.g]¾¯Ò× ÿò²€†äÞ1âe‰zÕ©æª$·¾™ ÑPUÛœŸç<+„m3+ó¬÷éÍC‰Ùf5­ œc–Üooöä-ñÿÍìšãåס5dgªíéòL¶æ{ÓúS ®‘½-˜»zóïÍÿ®@endstream
endobj
115 0 obj
1101
114 0 obj
1058
endobj
116 0 obj<</Type/Page/Parent 76 0 R/Contents 117 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
117 0 obj<</Length 118 0 R/Filter/FlateDecode>>stream
115 0 obj<</Type/Page/Parent 75 0 R/Contents 116 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
116 0 obj<</Length 117 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…êÊÌ ¹†pr‡Âµendstream
endobj
118 0 obj
117 0 obj
103
endobj
119 0 obj<</Count 6/First 120 0 R/Last 133 0 R>>endobj
120 0 obj<</Parent 119 0 R/Title(Table of Contents)/Dest[113 0 R/XYZ null 756 null]/Next 121 0 R>>endobj
121 0 obj<</Parent 119 0 R/Count -3/First 122 0 R/Last 124 0 R/Title(1 Scope)/Dest[83 0 R/XYZ null 743 null]/Prev 120 0 R/Next 125 0 R>>endobj
122 0 obj<</Parent 121 0 R/Title(1.1 Identification)/Dest[83 0 R/XYZ null 693 null]/Next 123 0 R>>endobj
123 0 obj<</Parent 121 0 R/Title(1.2 System Overview)/Dest[83 0 R/XYZ null 613 null]/Prev 122 0 R/Next 124 0 R>>endobj
124 0 obj<</Parent 121 0 R/Title(1.3 Document Overview)/Dest[83 0 R/XYZ null 389 null]/Prev 123 0 R>>endobj
125 0 obj<</Parent 119 0 R/Count -2/First 126 0 R/Last 127 0 R/Title(2 References)/Dest[89 0 R/XYZ null 743 null]/Prev 121 0 R/Next 128 0 R>>endobj
126 0 obj<</Parent 125 0 R/Title(2.1 CUPS Documentation)/Dest[89 0 R/XYZ null 693 null]/Next 127 0 R>>endobj
127 0 obj<</Parent 125 0 R/Title(2.2 Other Documents)/Dest[89 0 R/XYZ null 495 null]/Prev 126 0 R>>endobj
128 0 obj<</Parent 119 0 R/Count -1/First 129 0 R/Last 129 0 R/Title(3 3 - Local Access Risks)/Dest[95 0 R/XYZ null 743 null]/Prev 125 0 R/Next 132 0 R>>endobj
129 0 obj<</Parent 128 0 R/Count -2/First 130 0 R/Last 131 0 R/Title(3.1 Security Breaches)/Dest[95 0 R/XYZ null 646 null]>>endobj
130 0 obj<</Parent 129 0 R/Title(4.0.1 Denial of Service Attacks)/Dest[101 0 R/XYZ null 743 null]/Next 131 0 R>>endobj
131 0 obj<</Parent 129 0 R/Title(4.0.2 Security Breaches)/Dest[101 0 R/XYZ null 652 null]/Prev 130 0 R>>endobj
132 0 obj<</Parent 119 0 R/Title(4 4 - Remote Access Risks)/Dest[101 0 R/XYZ null 211 null]/Prev 128 0 R/Next 133 0 R>>endobj
133 0 obj<</Parent 119 0 R/Count -2/First 134 0 R/Last 135 0 R/Title(A Glossary)/Dest[107 0 R/XYZ null 743 null]/Prev 132 0 R>>endobj
134 0 obj<</Parent 133 0 R/Title(A.1 Terms)/Dest[107 0 R/XYZ null 693 null]/Next 135 0 R>>endobj
135 0 obj<</Parent 133 0 R/Title(A.2 Acronyms)/Dest[107 0 R/XYZ null 389 null]/Prev 134 0 R>>endobj
136 0 obj<</Type/Catalog/Pages 76 0 R/Names 58 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 119 0 R/PageMode/UseOutlines/OpenAction[83 0 R/XYZ null null null]>>endobj
118 0 obj<</Count 6/First 119 0 R/Last 133 0 R>>endobj
119 0 obj<</Parent 118 0 R/Title(Table of Contents)/Dest[112 0 R/XYZ null 756 null]/Next 120 0 R>>endobj
120 0 obj<</Parent 118 0 R/Count -3/First 121 0 R/Last 123 0 R/Title(1 Scope)/Dest[82 0 R/XYZ null 743 null]/Prev 119 0 R/Next 124 0 R>>endobj
121 0 obj<</Parent 120 0 R/Title(1.1 Identification)/Dest[82 0 R/XYZ null 693 null]/Next 122 0 R>>endobj
122 0 obj<</Parent 120 0 R/Title(1.2 System Overview)/Dest[82 0 R/XYZ null 613 null]/Prev 121 0 R/Next 123 0 R>>endobj
123 0 obj<</Parent 120 0 R/Title(1.3 Document Overview)/Dest[82 0 R/XYZ null 389 null]/Prev 122 0 R>>endobj
124 0 obj<</Parent 118 0 R/Count -2/First 125 0 R/Last 126 0 R/Title(2 References)/Dest[88 0 R/XYZ null 743 null]/Prev 120 0 R/Next 127 0 R>>endobj
125 0 obj<</Parent 124 0 R/Title(2.1 CUPS Documentation)/Dest[88 0 R/XYZ null 693 null]/Next 126 0 R>>endobj
126 0 obj<</Parent 124 0 R/Title(2.2 Other Documents)/Dest[88 0 R/XYZ null 495 null]/Prev 125 0 R>>endobj
127 0 obj<</Parent 118 0 R/Count -2/First 128 0 R/Last 129 0 R/Title(3 Risk Identification)/Dest[94 0 R/XYZ null 743 null]/Prev 124 0 R/Next 130 0 R>>endobj
128 0 obj<</Parent 127 0 R/Title(3.1 Local Access Risks)/Dest[94 0 R/XYZ null 693 null]/Next 129 0 R>>endobj
129 0 obj<</Parent 127 0 R/Title(3.2 Remote Access Risks)/Dest[94 0 R/XYZ null 634 null]/Prev 128 0 R>>endobj
130 0 obj<</Parent 118 0 R/Count -2/First 131 0 R/Last 132 0 R/Title(4 Risk Assessment)/Dest[100 0 R/XYZ null 743 null]/Prev 127 0 R/Next 133 0 R>>endobj
131 0 obj<</Parent 130 0 R/Title(4.1 Local Access Risks)/Dest[100 0 R/XYZ null 693 null]/Next 132 0 R>>endobj
132 0 obj<</Parent 130 0 R/Title(4.2 Remote Access Risks)/Dest[100 0 R/XYZ null 634 null]/Prev 131 0 R>>endobj
133 0 obj<</Parent 118 0 R/Count -2/First 134 0 R/Last 135 0 R/Title(A Glossary)/Dest[106 0 R/XYZ null 743 null]/Prev 130 0 R>>endobj
134 0 obj<</Parent 133 0 R/Title(A.1 Terms)/Dest[106 0 R/XYZ null 693 null]/Next 135 0 R>>endobj
135 0 obj<</Parent 133 0 R/Title(A.2 Acronyms)/Dest[106 0 R/XYZ null 389 null]/Prev 134 0 R>>endobj
136 0 obj<</Type/Catalog/Pages 75 0 R/Names 56 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 118 0 R/PageMode/UseOutlines/OpenAction[82 0 R/XYZ null null null]>>endobj
xref
0 137
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000356 00000 n
0000000434 00000 n
0000000511 00000 n
0000000590 00000 n
0000000666 00000 n
0000000747 00000 n
0000000805 00000 n
0000000907 00000 n
0000001010 00000 n
0000001114 00000 n
0000001218 00000 n
0000001322 00000 n
0000001426 00000 n
0000001530 00000 n
0000001634 00000 n
0000001738 00000 n
0000001842 00000 n
0000001944 00000 n
0000002047 00000 n
0000002151 00000 n
0000002255 00000 n
0000002359 00000 n
0000002463 00000 n
0000002567 00000 n
0000002671 00000 n
0000002773 00000 n
0000002875 00000 n
0000002977 00000 n
0000003080 00000 n
0000003184 00000 n
0000003288 00000 n
0000003392 00000 n
0000003496 00000 n
0000003600 00000 n
0000003705 00000 n
0000003810 00000 n
0000003915 00000 n
0000004020 00000 n
0000004125 00000 n
0000004230 00000 n
0000004335 00000 n
0000004440 00000 n
0000004543 00000 n
0000004646 00000 n
0000004749 00000 n
0000004853 00000 n
0000004958 00000 n
0000005063 00000 n
0000005166 00000 n
0000005270 00000 n
0000005375 00000 n
0000005480 00000 n
0000005585 00000 n
0000005690 00000 n
0000006036 00000 n
0000006068 00000 n
0000006100 00000 n
0000006303 00000 n
0000006350 00000 n
0000006397 00000 n
0000006444 00000 n
0000006491 00000 n
0000006538 00000 n
0000006585 00000 n
0000006632 00000 n
0000006679 00000 n
0000006726 00000 n
0000006774 00000 n
0000006822 00000 n
0000006870 00000 n
0000006918 00000 n
0000006966 00000 n
0000007014 00000 n
0000007186 00000 n
0000007335 00000 n
0000013712 00000 n
0000013733 00000 n
0000013843 00000 n
0000013943 00000 n
0000013962 00000 n
0000014099 00000 n
0000014992 00000 n
0000015012 00000 n
0000015122 00000 n
0000015309 00000 n
0000015329 00000 n
0000015466 00000 n
0000016057 00000 n
0000016077 00000 n
0000016187 00000 n
0000016377 00000 n
0000016397 00000 n
0000016525 00000 n
0000017044 00000 n
0000017064 00000 n
0000017174 00000 n
0000017376 00000 n
0000017397 00000 n
0000017536 00000 n
0000019062 00000 n
0000019084 00000 n
0000019205 00000 n
0000019596 00000 n
0000019617 00000 n
0000019756 00000 n
0000020253 00000 n
0000020274 00000 n
0000020404 00000 n
0000020858 00000 n
0000020879 00000 n
0000021032 00000 n
0000022204 00000 n
0000022226 00000 n
0000022338 00000 n
0000022512 00000 n
0000022533 00000 n
0000022588 00000 n
0000022693 00000 n
0000022836 00000 n
0000022941 00000 n
0000023060 00000 n
0000023168 00000 n
0000023316 00000 n
0000023425 00000 n
0000023531 00000 n
0000023691 00000 n
0000023822 00000 n
0000023941 00000 n
0000024052 00000 n
0000024178 00000 n
0000024312 00000 n
0000024409 00000 n
0000024509 00000 n
0000000360 00000 n
0000000437 00000 n
0000000516 00000 n
0000000592 00000 n
0000000673 00000 n
0000000731 00000 n
0000000832 00000 n
0000000935 00000 n
0000001039 00000 n
0000001143 00000 n
0000001247 00000 n
0000001351 00000 n
0000001455 00000 n
0000001559 00000 n
0000001663 00000 n
0000001767 00000 n
0000001869 00000 n
0000001972 00000 n
0000002076 00000 n
0000002180 00000 n
0000002284 00000 n
0000002388 00000 n
0000002492 00000 n
0000002596 00000 n
0000002698 00000 n
0000002801 00000 n
0000002905 00000 n
0000003009 00000 n
0000003113 00000 n
0000003217 00000 n
0000003321 00000 n
0000003425 00000 n
0000003529 00000 n
0000003633 00000 n
0000003737 00000 n
0000003840 00000 n
0000003944 00000 n
0000004049 00000 n
0000004154 00000 n
0000004259 00000 n
0000004364 00000 n
0000004469 00000 n
0000004574 00000 n
0000004679 00000 n
0000004784 00000 n
0000004889 00000 n
0000004992 00000 n
0000005096 00000 n
0000005201 00000 n
0000005306 00000 n
0000005411 00000 n
0000005516 00000 n
0000005854 00000 n
0000005886 00000 n
0000005918 00000 n
0000006128 00000 n
0000006175 00000 n
0000006222 00000 n
0000006269 00000 n
0000006316 00000 n
0000006363 00000 n
0000006410 00000 n
0000006457 00000 n
0000006504 00000 n
0000006551 00000 n
0000006598 00000 n
0000006646 00000 n
0000006694 00000 n
0000006742 00000 n
0000006790 00000 n
0000006838 00000 n
0000006886 00000 n
0000007058 00000 n
0000007207 00000 n
0000013584 00000 n
0000013605 00000 n
0000013715 00000 n
0000013815 00000 n
0000013834 00000 n
0000013971 00000 n
0000014864 00000 n
0000014884 00000 n
0000014994 00000 n
0000015181 00000 n
0000015201 00000 n
0000015338 00000 n
0000015929 00000 n
0000015949 00000 n
0000016059 00000 n
0000016249 00000 n
0000016269 00000 n
0000016388 00000 n
0000016603 00000 n
0000016623 00000 n
0000016733 00000 n
0000016932 00000 n
0000016952 00000 n
0000017073 00000 n
0000017284 00000 n
0000017305 00000 n
0000017417 00000 n
0000017615 00000 n
0000017636 00000 n
0000017775 00000 n
0000018272 00000 n
0000018293 00000 n
0000018423 00000 n
0000018877 00000 n
0000018898 00000 n
0000019051 00000 n
0000020180 00000 n
0000020202 00000 n
0000020314 00000 n
0000020488 00000 n
0000020509 00000 n
0000020564 00000 n
0000020669 00000 n
0000020812 00000 n
0000020917 00000 n
0000021036 00000 n
0000021144 00000 n
0000021292 00000 n
0000021401 00000 n
0000021507 00000 n
0000021664 00000 n
0000021773 00000 n
0000021883 00000 n
0000022037 00000 n
0000022147 00000 n
0000022258 00000 n
0000022392 00000 n
0000022489 00000 n
0000022589 00000 n
trailer
<</Size 137/Root 136 0 R/Info 1 0 R>>
startxref
24692
22772
%%EOF
+8 -90
Ver Arquivo
@@ -41,8 +41,8 @@ can be used to support non-PostScript printers.
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Local Access Risks</LI>
<LI>4 - Remote Access Risks</LI>
<LI>3 - Risk Identification</LI>
<LI>4 - Risk Assessment</LI>
<LI>A - Glossary</LI>
</UL>
@@ -77,99 +77,17 @@ The following non-CUPS documents are referenced by this document:
<LI>RFC 1179, Line Printer Daemon Protocol
</UL>
<H1>3 - Local Access Risks</H1>
<H1>Risk Identification</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.
<H2>Local Access Risks</H2>
<H2>Security Breaches</H2>
<H2>Remote Access Risks</H2>
<P>Since the default installation creates a world-readable request directory,
it is possible for local users to read the contents of print files before they
are printed.
<H1>Risk Assessment</H2>
<P>This problem can be alleviated by making the request directory readable only
by the user specified in the CUPS configuration file.
<H2>Local Access Risks</H2>
<H1>4 - Remote Access Risks</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.
<H3>Denial of Service Attacks</H3>
<P>Like all internet services, the CUPS server is vulnerable to denial of
service attacks, including:
<OL>
<LI>Establishing multiple connections to the server until the server
will accept no more.
<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 determined
attack.
<LI>Repeatedly opening and closing connections to the server as fast
as possible.
<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.
<LI>Flooding the network with broadcast packets on port 631.
<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.
<LI>Sending partial IPP requests; specifically, sending part of an
attribute value and then stopping transmission.
<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.
<LI>Sending large/long print jobs to printers, preventing other users
from printing.
<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.
</OL>
<H3>Security Breaches</H3>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX username
and password account information, the authentication information could
be used to gain access to accounts (possibly priviledged accounts) on
the server.
<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.
<P>The next minor release of CUPS will support Digest authentication of
the entire message body using separate MD5-based username and password
files. This will protect password information and prevent unauthorized
access due to compromised account passwords.
<H2>Remote Access Risks</H2>
<H1 TYPE=A VALUE=1>Glossary</H1>
BIN
Ver Arquivo
Arquivo binário não exibido.
+4 -33
Ver Arquivo
@@ -24,11 +24,8 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<LI><A HREF=#2_1>The Printing Problem</A></LI>
<LI><A HREF=#2_2>The Technology</A></LI>
<LI><A HREF=#2_3>Jobs</A></LI>
<LI><A HREF=#2_4>Classes</A></LI>
<LI><A HREF=#2_5>Filters</A></LI>
<LI><A HREF=#2_6>Printer Drivers</A></LI>
<LI><A HREF=#2_7>Networking</A></LI>
<LI><A HREF=#2_3>Filters</A></LI>
<LI><A HREF=#2_4>Printer Drivers</A></LI>
</UL>
<B><A HREF=#3>2 - Using the Printing System</A></B>
<UL>
@@ -139,17 +136,7 @@ using their web browser. </P>
Basic authentication and domain or IP-based access control. Digest
authentication and TLS encryption will be available in future versions
of CUPS. </P>
<H2><A NAME=2_3>Jobs</A></H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority. </P>
<H2><A NAME=2_4>Classes</A></H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs
sent to a class are forwarded to the first available printer in the
class. </P>
<H2><A NAME=2_5>Filters</A></H2>
<H2><A NAME=2_3>Filters</A></H2>
<P>Filters allow a user or application to print many types of files
without extra effort. Print jobs sent to a CUPS server are filtered
before sending them to a printer. Some filters convert job files to
@@ -165,28 +152,12 @@ printer. </P>
<P>CUPS provides backends for printing over parallel and serial ports,
and over the network via the JetDirect (AppSocket), Server Message
Block, and Line Printer Daemon protocols. </P>
<H2><A NAME=2_6>Printer Drivers</A></H2>
<H2><A NAME=2_4>Printer Drivers</A></H2>
<P>Printer drivers in CUPS consist of one of more filters specific to a
printer. CUPS includes a sample printer driver for Hewlett-Packard
LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS. </P>
<H2><A NAME=2_7>Networking</A></H2>
<P>Printers and classes on the local system are automatically shared
with other systems on the network. This allows you to setup one system
to print to a printer and use this system as a printer server or spool
host for all of the others. If there is only one occurrence of a
printer on a network, then that printer can be accessed using its name
alone. If more than one printer exists with the same name, users must
select the printer by specifying which server to use (e.g.
&quot;printer@host1&quot; or &quot;printer@host2&quot;.) </P>
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup
multiple servers pointing to the same physical network printer, for
example, so that you aren't relying on a single system for printing.
Because this also works with printer classes, you can setup multiple
servers and printers and never worry about a &quot;single point of failure&quot;
unless all of the printers and servers goes down! </P>
<H1 ALIGN=RIGHT><A NAME=3>2 - Using the Printing System</A></H1>
<P>This chapter shows you how to submit, query, and cancel print jobs
to different printers. </P>
+455 -526
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-31
Ver Arquivo
@@ -98,19 +98,6 @@ web browser.
authentication and domain or IP-based access control. Digest authentication
and TLS encryption will be available in future versions of CUPS.
<H2>Jobs</H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority.
<H2>Classes</H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs sent
to a class are forwarded to the first available printer in the class.
<H2>Filters</H2>
<P>Filters allow a user or application to print many types of files
@@ -139,24 +126,6 @@ LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS.
<H2>Networking</H2>
<P>Printers and classes on the local system are automatically shared with
other systems on the network. This allows you to setup one system to print
to a printer and use this system as a printer server or spool host for all
of the others. If there is only one occurrence of a printer on a network,
then that printer can be accessed using its name alone. If more than one
printer exists with the same name, users must select the printer by specifying
which server to use (e.g. "printer@host1" or "printer@host2".)
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup multiple
servers pointing to the same physical network printer, for example, so that
you aren't relying on a single system for printing. Because this also works
with printer classes, you can setup multiple servers and printers and never
worry about a "single point of failure" unless all of the printers and servers
goes down!
<H1 ALIGN=RIGHT>2 - Using the Printing System</H1>
<P>This chapter shows you how to submit, query, and cancel print jobs to
+1 -8
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -61,7 +61,6 @@ install:
#
hpgltops: $(HPGLOBJS) common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ $(HPGLOBJS) common.o $(LIBS) -lm
$(HPGLOBJS): hpgltops.h
@@ -70,7 +69,6 @@ $(HPGLOBJS): hpgltops.h
#
image.a: $(IMAGEOBJS) ../Makedefs ../cups/libcups.a
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(IMAGEOBJS)
$(RANLIB) $@
@@ -81,7 +79,6 @@ $(IMAGEOBJS): image.h
#
imagetops: imagetops.o common.o image.a ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetops.o common.o image.a $(IMGLIBS)
imagetops: common.h image.h
@@ -90,7 +87,6 @@ imagetops: common.h image.h
#
imagetoraster: imagetoraster.o common.o image.a ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetoraster.o common.o image.a $(IMGLIBS)
imagetoraster: common.h image.h
@@ -99,7 +95,6 @@ imagetoraster: common.h image.h
#
pstops: pstops.o common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ pstops.o common.o $(LIBS)
pstops.o: common.h
@@ -108,7 +103,6 @@ pstops.o: common.h
#
rastertohp: rastertohp.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LIBS)
rastertohp.o: ../cups/raster.h
@@ -117,7 +111,6 @@ rastertohp.o: ../cups/raster.h
#
texttops: texttops.o textcommon.o common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ texttops.o textcommon.o common.o $(LIBS)
texttops.o: common.h textcommon.h
+3 -62
Ver Arquivo
@@ -94,9 +94,6 @@ main(int argc, /* I - Number of command-line arguments */
char line[8192]; /* Line buffer */
float g; /* Gamma correction value */
float b; /* Brightness factor */
int level; /* Nesting level for embedded files */
int nbytes, /* Number of bytes read */
tbytes; /* Total bytes to read for binary data */
if (argc < 6 || argc > 7)
@@ -270,32 +267,9 @@ main(int argc, /* I - Number of command-line arguments */
* OK, we have DSC comments; read until we find a %%Page comment...
*/
level = 0;
while (psgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
if (strncmp(line, "%%Page:", 7) == 0)
break;
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
(strncmp(line, "%%BeginData:", 12) == 0 &&
strstr(line, "Binary") != NULL))
{
/*
* Copy binary data...
*/
tbytes = atoi(strchr(line, ':') + 1);
while (tbytes > 0)
{
nbytes = fread(line, 1, sizeof(line), fp);
fwrite(line, 1, nbytes, stdout);
tbytes -= nbytes;
}
}
else
puts(line);
@@ -305,26 +279,15 @@ main(int argc, /* I - Number of command-line arguments */
for (;;)
{
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
if (strncmp(line, "%%Page:", 7) == 0)
{
if (sscanf(line, "%*s%*s%d", &number) == 1)
{
if (!check_range(number))
{
while (psgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
if (strncmp(line, "%%Page:", 7) == 0)
break;
continue;
}
@@ -346,28 +309,6 @@ main(int argc, /* I - Number of command-line arguments */
}
}
}
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
(strncmp(line, "%%BeginData:", 12) == 0 &&
strstr(line, "Binary") != NULL))
{
/*
* Copy binary data...
*/
tbytes = atoi(strchr(line, ':') + 1);
while (tbytes > 0)
{
nbytes = fread(line, 1, sizeof(line), fp);
if (!sloworder)
fwrite(line, 1, nbytes, stdout);
if (slowcollate || sloworder)
fwrite(line, 1, nbytes, stdout);
tbytes -= nbytes;
}
}
else
{
if (!sloworder)
+33 -38
Ver Arquivo
@@ -6,11 +6,13 @@ Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
@@ -18,37 +20,47 @@ Color
Cyan
Magenta
Yellow
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
Copyright
All Rights Reserved
General
Printer
Image Options
HP-GL/2 Options
Extra
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
Other
Print Pages:
Entire Document
Page Range:
Reverse Order:
Page Format:
Page Range
Reverse Order
Page Format
1-Up
2-Up
4-Up
Image Scaling:
Image Scaling
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image:
Color Saturation:
Color Hue:
Fit to Page:
Shading:
Pen Width:
Gamma Correction:
Brightness:
Add
Delete
Modify
Mirror Image
Rotate Image
Best Fit
Color Saturation
Color Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Color Profile
Add Printer
Delete Printer
Modify Printer
Printer URI
Printer Name
Printer Location
@@ -80,23 +92,6 @@ Custom Size
Idle
Processing
Stopped
All
Odd
Even Pages
Darker Lighter
Media Size
Media Type
Media Source
Orientation:
Portrait
Landscape
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
+1 -14
Ver Arquivo
@@ -34,7 +34,7 @@ LOCALES = C de en es fr it
# Make everything...
#
all: translate
all:
#
# Clean all config and object files...
@@ -55,19 +55,6 @@ install:
$(CP) cups_$$dir $(LIBDIR)/locale/$$dir ; \
done
#
# translate - a simple utility to use Bablefish to translate the POSIX message
# file to one of several languages.
#
# translate outfile language
#
translate: translate.o ../cups/libcups.a
echo Linking $<...
$(CC) $(LDFLAGS) -o translate translate.o $(LIBS)
translate.o: ../cups/http.h
#
# End of "$Id$".
#
+114 -119
Ver Arquivo
@@ -1,121 +1,116 @@
iso-8859-1
OK
Löschen
Hilfe
Beendet
Nah
Ja
Nein
Auf
Weg von
Außer
Ausschuß
Rückstellung
Optionen
Mehr INFO
Schwarzes
Farbe
Cyan-blau
Magenta
Gelb
Copyright 1993-1999 durch Easy Software Products, alle Rechte vorbehalten.
General
Drucker
BildOptionen
HP-GL/2 Optionen
Extrakosten
Dokument
Anderes
DruckSeiten:
Gesamtes Dokument
Seitenbereich:
RückOrdnung:
Seite Format:
1-Up
2-Up
4-Up
BildScaling:
Natürliche BildGröße Des Gebrauches
Zoom durch Percent
Zoom durch PPI
SpiegelBild:
Farbe Sättigung:
Farbe Farbe:
Passen Sie, um zu paginieren:
Schattierend:
FederBreite:
Gamma Korrektur:
Helligkeit:
Fügen Sie hinzu
Löschung
ändern Sie
DruckerURI
DruckerName
DruckerStandort
Drucker-cInfo
Drucker bilden und formen
EinheitURI
Formatierung Seite
Seite Druckend
InitialisierenDrucker
DruckerZustand
Jobs Annehmend
Jobs Nicht, Annehmend
Druckjobs
Kategorie
Lokal
Entfernte Station
Duplexing
Heftend
Schnelle Plattenkopierprogramme
Gemischte Exemplare
Bohrung Lochen
Bedeckung
Binden
Sortierend
Klein (bis 9.5x1în)
Medium (9.5x1în bis 13x19in)
Groß (13x19in und größeres)
Kundenspezifische Größe
Leerlauf
Verarbeitend
Gestoppt
Alles
Ungerade
Gleichmäßige Seiten
Dunkleres Heller
MediaGröße
MediaArt
MediaQuelle
Lagebestimmung:
Portrait
Landschaft
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Ihre Datenbanksuchroutine sendete einen Antrag, den dieser Server nicht verstehen könnte.
Dieser Server könnte nicht überprüfen, daß Sie autorisiert sind, das Hilfsmittel zuzugreifen.
Sie müssen zahlen, diesen Server zuzugreifen.
Sie haben nicht Erlaubnis, das Hilfsmittel auf diesem Server zuzugreifen.
Das erbetene Hilfsmittel wurde nicht auf diesem Server gefunden.
Die erbetene Methode wird nicht mit dem Hilfsmittel erlaubt.
Eine passende Darstellung für das Hilfsmittel wurde nicht auf diesem Server gefunden.
Sie haben nicht Erlaubnis, diesen Server als Proxyhauptrechner zu benutzen.
Der Antrag hat zu lang genommen, um durchzuführen und ist abgebrochen worden.
Das erbetene Hilfsmittel hat mehr als einen Wert.
Das erbetene Hilfsmittel wird gegangen und ist nicht ersetzt worden.
Die erbetene Methode benötigt ein gültiges Content-Length.
Die Vorbedingung auf dem Antrag wertete zu falschem aus.
Der Antrag ist zu groß, damit dieser Server verarbeitet.
Der AntragcUri ist zu groß, damit dieser Server verarbeitet.
Das Antragformat wird nicht durch diesen Server verstanden.
500 Der Server hat einen unrecoverable Fehler ermittelt und nicht Ihren Antrag verarbeiten kann.
Die erbetene Methode wird nicht durch diesen Server eingeführt.
Das proxy server empfing eine unzulässige Antwort von einem aufwärts gerichteten Server.
Das erbetene Hilfsmittel ist aktuell auf diesem Server nicht erreichbar.
Das proxy server hat zu lang genommen, um auf diesen Server zu reagieren.
Dieser Server unterstützt nicht die HTTP-Version, die durch Ihre Datenbanksuchroutine angefordert wird.
Cancel
Help
Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
Entire Document
Page Range
Reverse Order
Page Format
1-Up
2-Up
4-Up
Image Scaling
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
Printer URI
Printer Name
Printer Location
Printer Info
Printer Make and Model
Device URI
Formatting Page
Printing Page
Initializing Printer
Printer State
Accepting Jobs
Not Accepting Jobs
Print Jobs
Class
Local
Remote
Duplexing
Stapling
Fast Copies
Collated Copies
Hole Punching
Covering
Binding
Sorting
Small (up to 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
You don't have permission to access the resource on this server.
The requested resource was not found on this server.
The requested method is not allowed with the resource.
An appropriate representation for the resource was not found on this server.
You don't have permission to use this server as a proxy host.
The request has taken too long to complete and has been aborted.
The requested resource has more than one value.
The requested resource is gone and has not been replaced.
The requested method requires a valid Content-Length.
The precondition on the request evaluated to false.
The request is too large for this server to process.
The request URI is too large for this server to process.
The request format is not understood by this server.
500 The server has detected an unrecoverable error and cannot process your request.
The requested method is not implemented by this server.
The proxy server received an invalid response from an upstream server.
The requested resource is currently unavailable on this server.
The proxy server has taken too long to respond to this server.
This server does not support the HTTP version required by your browser.
+36 -41
Ver Arquivo
@@ -6,11 +6,13 @@ Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
@@ -18,37 +20,47 @@ Colour
Cyan
Magenta
Yellow
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
Copyright
All Rights Reserved
General
Printer
Image Options
HP-GL/2 Options
Extra
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
Other
Print Pages:
Entire Document
Page Range:
Reverse Order:
Page Format:
Page Range
Reverse Order
Page Format
1-Up
2-Up
4-Up
Image Scaling:
Image Scaling
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image:
Colour Saturation:
Colour Hue:
Fit to Page:
Shading:
Pen Width:
Gamma Correction:
Brightness:
Add
Delete
Modify
Mirror Image
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
Printer URI
Printer Name
Printer Location
@@ -73,30 +85,13 @@ Hole Punching
Covering
Binding
Sorting
Small (up to 9.5x14in)
Medium (9.5x14in to 13x19in)
Large (13x19in and larger)
Small (up to 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
All
Odd
Even Pages
Darker Lighter
Media Size
Media Type
Media Source
Orientation:
Portrait
Landscape
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
+114 -119
Ver Arquivo
@@ -1,121 +1,116 @@
iso-8859-1
OK
Cancelación
Ayuda
Salido
Cercano
No
En
De
Excepto
Descarte
Valor por defecto
Opciones
Más Info
Negro
Color
Ciánico
Magenta
Amarillo
El copyright 1993-1999 por Easy Software Products, todos endereza reservado.
General
Impresora
Opciones De la Imagen
Opciones De HP-GL/2
Suplemento
Documento
Otro
Paginaciones De la Impresión:
Entero Documento
Rango De Paginación:
Orden Reversa:
Formato De la Paginación:
1-Up
2-Up
4-Up
Escalamiento De la Imagen:
Talla Natural De la Imagen Del Uso
Zoom de Percent
Zoom de PPI
Imagen Del Espejo:
Saturación Del Color:
Tonalidad Del Color:
Quepa para paginar:
Sombreando:
Anchura De la Pluma:
Corrección Gamma:
Brillo:
Agregue
Cancelación
Modifiqúese
URI De la Impresora
Nombre De la Impresora
Localización De la Impresora
Impresora Info
La impresora hace y modela
URI Del Dispositivo
Paginación Del Formato
Imprimiendo La Paginación
De Incialización Impresora
Estado De la Impresora
Validando Trabajos
No validando Trabajos
Trabajos De Impresión
Clase
Local
Telecontrol
Duplexing
Sujetando con grapa
Rápidas Copias
Clasificadas Copias
Perforación Del Agujero
Cubierta
Atando
Clasificando
Pequeño (los hasta 9.5x14in)
Media (los 9.5x14in a el 13x19in)
Grande (el 13x19in y más grande)
De encargo Talla
Marcha lenta
Procesando
Parado
Todo
Impar
Uniformes Paginaciones
Más Oscuro Más Brillante
Talla De Media
Tipo De Media
Fuente De los Media
Orientación:
Retrato
Paisaje
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Su browser envió una petición que este servidor no podría entender.
Este servidor no podría verificar que le autoricen a tener acceso al recurso.
Usted debe pagar tener acceso a este servidor.
Usted no tiene permiso de tener acceso al recurso en este servidor.
El recurso solicitado no fue encontrado en este servidor.
El método solicitado no se permite con el recurso.
Una representación apropiada para el recurso no fue encontrada en este servidor.
Usted no tiene permiso de utilizar este servidor como ordenador principal del poder.
La petición ha durado demasiado para terminar y se ha abortado.
El recurso solicitado tiene más de un valor.
Se va y no se ha substituido el recurso solicitado.
El método solicitado requiere un Content-Length válido.
La condición previa en la petición evaluó a falso.
La petición es demasiado grande para que este servidor procese.
El URI de la petición es demasiado grande para que este servidor procese.
El formato de la petición no es entendido por este servidor.
500 El servidor ha detectado un error irrecuperable y no puede procesar su petición.
El método solicitado no es puesto en ejecución por este servidor.
El proxy server recibió una respuesta inválida de un servidor por aguas arriba.
El recurso solicitado es actualmente inasequible en este servidor.
El proxy server ha durado demasiado para responder a este servidor.
Este servidor no utiliza la versión del HTTP requerida por su browser.
Cancel
Help
Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
Entire Document
Page Range
Reverse Order
Page Format
1-Up
2-Up
4-Up
Image Scaling
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
Printer URI
Printer Name
Printer Location
Printer Info
Printer Make and Model
Device URI
Formatting Page
Printing Page
Initializing Printer
Printer State
Accepting Jobs
Not Accepting Jobs
Print Jobs
Class
Local
Remote
Duplexing
Stapling
Fast Copies
Collated Copies
Hole Punching
Covering
Binding
Sorting
Small (up to 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
You don't have permission to access the resource on this server.
The requested resource was not found on this server.
The requested method is not allowed with the resource.
An appropriate representation for the resource was not found on this server.
You don't have permission to use this server as a proxy host.
The request has taken too long to complete and has been aborted.
The requested resource has more than one value.
The requested resource is gone and has not been replaced.
The requested method requires a valid Content-Length.
The precondition on the request evaluated to false.
The request is too large for this server to process.
The request URI is too large for this server to process.
The request format is not understood by this server.
500 The server has detected an unrecoverable error and cannot process your request.
The requested method is not implemented by this server.
The proxy server received an invalid response from an upstream server.
The requested resource is currently unavailable on this server.
The proxy server has taken too long to respond to this server.
This server does not support the HTTP version required by your browser.
+110 -115
Ver Arquivo
@@ -1,121 +1,116 @@
iso-8859-1
OK
Annulation
Aide
Cancel
Aide
Quitté
Étroit
Fin
Oui
Non
Automatique
Sur
Outre de
Économiser
Écart
Défaut
Options
Plus D'Information
Noir
Couleur
Cyan
Magenta
Jaune
Copyright 1993-1999 par Easy Software Products, tous droits réservés.
Général
Imprimante
Options D'Image
Options D'HP-GL/2
Frais supplémentaires
Document
Autre
Pages D'Impression:
Entier Document
Chaîne De Page
Commande D'Inversion:
Format De Page:
1-Up
2-Up
4-Up
Graduation D'Image:
Taille Normale D'Image D'Utilisation
Zoom par Percent
Zoom par PPI
Image De Miroir:
Saturation De Couleur:
Tonalité De Couleur:
Adaptez pour paginer:
Ombrageant:
Largeur De Crayon lecteur:
Gamma Correction:
Éclat:
Ajoutez
Effacement
Modifiez
URI D'Imprimante
Nom D'Imprimante
Emplacement D'Imprimante
Information D'Imprimante
L'imprimante font et modèlent
URI De Dispositif
Page De Formatage
Imprimant La Page
D' Initialisation Imprimante
État D'Imprimante
Recevant Les Travaux
Ne recevant pas Les Travaux
Tirages
Classe
Local
Périphérique
Duplexage
Agrafant
Rapides Copies
Assemblées Copies
Poinçon De Trou
Bâche
Liant
Triant
Petit (jusqu'à 9.5x1în)
Support (9.5x1în à 13x19in)
Grand (13x19in et plus grand)
Faite sur commande Taille
Ralenti
Traitant
Arrêté
Tout
Impair
Même Pages
Plus foncé Plus Lumineux
Taille De Medias
Type De Supports
Source De Medias
Orientation:
Verticale
Horizontal
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
Vous devez payer pour accéder à ce serveur.
Vous n'avez pas la permission d'accéder à la ressource sur ce serveur.
La ressource demandée n'a pas été trouvée sur ce serveur.
On ne permet pas la méthode demandée avec la ressource.
Une représentation appropriée pour la ressource n'a pas été trouvée sur ce serveur.
Vous n'avez pas la permission d'utiliser ce serveur comme centre serveur de procuration.
La demande a pris trop longtemps pour se terminer et a été interrompue.
La ressource demandée a plus d'une valeur.
La ressource demandée est allée et n'a pas été substituée.
La méthode demandée exige un Content-Length valide.
La condition préalable sur la demande a évalué à faux.
La demande est trop grande pour que ce serveur traite.
L'cUri de demande est trop grand pour que ce serveur traite.
Le format de demande n'est pas compris par ce serveur.
500 Le serveur a détecté une erreur irrémédiable et ne peut pas traiter votre demande.
La méthode demandée n'est pas appliquée par ce serveur.
Le proxy server a reçu une réponse incorrecte d'un serveur ascendant.
La ressource demandée est actuel indisponible sur ce serveur.
Le proxy server a pris trop longtemps pour répondre à ce serveur.
Ce serveur ne supporte pas la version de HTTP exigée par votre browser.
Outre
Enregistrent
Jettent
Défaut
User-Defined
Options
More Info
Black
Couleur
Cyan
Magenta
Yellow
Copyright
Tous droits réservés
General
Imprimante
PostScript
Image
Text
HPGL
Advanced
Page D'Accueil D'Impression
Bavard Enregistrement
La Copie Pagine
Document
Entire Document
Page Range
Reverse Order
Page Format
1-Up
2-Up
4-Up
Image Scaling
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image
Rotate Image
Best Fit
Saturation De Couleur
Tonalité De Couleur
Nombre de Colonnes
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Couleur Profile
Add Imprimante
Delete Imprimante
Modify Imprimante
URI D'Imprimante
Nom D'Imprimante
Emplacement D'Imprimante
L'Information D'Imprimante
L'imprimante Font et Modèlent
URI De Dispositif
Page de formatage
Imprimant la page
Imprimante D'Initialisation
Mode D'Imprimante
Les Travaux De Recevoir
Ne recevant pas Les Travaux
Print Jobs
Class
Local
Remote
Duplexing
Stapling
Fast Copies
Collated Copies
Hole Punching
Covering
Binding
Sorting
Petit (up to 241x356mm)
Moyenne (241x356mm to 330x483mm)
Grand (330x483mm and larger)
Faite sur Commande Taille
Idle
Processing
Stopped
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
You must pay to access this server.
You don't have permission to access the resource on this server.
La ressource demandée n'a pas été trouvée sur ce serveur.
The requested method is not allowed with the resource.
An appropriate representation for the resource was not found on this server.
You don't have permission to use this server as a proxy host.
The request has taken too long to complete and has been aborted.
The requested resource has more than one value.
The requested resource is gone and has not been replaced.
The requested method requires a valid Content-Length.
The precondition on the request evaluated to false.
The request is too large for this server to process.
The request URI is too large for this server to process.
The request format is not understood by this server.
500 The server has detected an unrecoverable error and cannot process your request.
The requested method is not implemented by this server.
The proxy server received an invalid response from an upstream server.
The requested resource is currently unavailable on this server.
The proxy server has taken too long to respond to this server.
This server does not support the HTTP version required by your browser.
+115 -120
Ver Arquivo
@@ -1,121 +1,116 @@
iso-8859-1
GIUSTO
Annullamento
Aiuto
Rinunciato
Vicino
No
Su
Fuori di
Risparmi
Scarto
Difetto
Opzioni
Più Info
Nero
Colore
Ciano
Fucsina
Colore giallo
Copyright 1993-1999 da di Easy Software Products, tutti radrizza riservato.
Generalità
Stampante
Opzioni Di Immagine
Opzioni Di HP-GL/2
Supplemento
Documento
Altro
Pagine Della Stampa:
Intero Documento
Gamma Di Pagina:
Ordine D'inversione:
Formato Della Pagina:
1-Up
2-Up
4-Up
Scaling Di Immagine:
Formato Naturale Di Immagine Di Uso
Zoom da Percent
Zoom da PPI
Immagine Dello Specchio:
Saturazione Di Colore:
Tonalità Di Colore:
Adattare per paginare:
Proteggendo:
Larghezza Della Penna:
Correzione Gamma:
Luminosità:
Aggiungere
Cancellazione
Modificare
URI Della Stampante
Nome Della Stampante
Posizione Della Stampante
Stampante Info
Stampante fa e modella
URI Del Dispositivo
Pagina Di Formattazione
Stampando Pagina
D' Inizializzazione Stampante
Condizione Della Stampante
Accettando I Lavori
Non accettando I Lavori
Lavori Di Stampa
Codice categoria
Locale
Periferico
Utilizzazione per due usi
Cucendo con punti metallici
Veloci Copie
Fascicolate Copie
Perforazione Del Foro
Covering
Legandosi
Ordinando
Piccolo (fino a 9.5x1în)
Media (9.5x1în - 13x19in)
Grande (13x19in e più grande)
Su ordinazione Formato
Idle
Elaborando
Arrestato
Tutto
Dispari
Anche Pagine
Più Scuro Più Luminoso
Formato Di Media
Tipo Di Media
Sorgente Di Media
Orientamento:
Portrait
Paesaggio
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Il vostro browser ha trasmesso una richiesta che questo server non potrebbe capire.
Questo server non potrebbe verificare che siete autorizzati ad accedere alla risorsa.
Dovete pagare accedere a questo server.
Non avete permesso accedere alla risorsa su questo server.
La risorsa chiesta non è stata trovata su questo server.
Il metodo chiesto non è permesso con la risorsa.
Una rappresentazione adatta per la risorsa non è stata trovata su questo server.
Non avete permesso utilizzare questo server come calcolatore centrale di procura.
La richiesta ha preso troppo lungamente per completare ed è stata abbandonata.
La risorsa chiesta ha più di un valore.
La risorsa chiesta è andata e non è stata sostituita.
Il metodo chiesto richiede un Content-Length valido.
Il presupposto sulla richiesta ha valutato a falso.
La richiesta è troppo grande affinchè questo server elabori.
Il URI di richiesta è troppo grande affinchè questo server elabori.
Il formato di richiesta non è capito da questo server.
500 Il server ha rilevato un errore unrecoverable e non può elaborare la vostra richiesta.
Il metodo chiesto non è effettuato da questo server.
Il proxy server ha ricevuto una risposta non valida da un server verso l'alto.
La risorsa chiesta è attualmente non disponibile su questo server.
Il proxy server ha preso troppo lungamente per rispondere a questo server.
Questo server non sostiene la versione del HTTP richiesta dal vostro browser.
OK
Cancel
Help
Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
Entire Document
Page Range
Reverse Order
Page Format
1-Up
2-Up
4-Up
Image Scaling
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
Printer URI
Printer Name
Printer Location
Printer Info
Printer Make and Model
Device URI
Formatting Page
Printing Page
Initializing Printer
Printer State
Accepting Jobs
Not Accepting Jobs
Print Jobs
Class
Local
Remote
Duplexing
Stapling
Fast Copies
Collated Copies
Hole Punching
Covering
Binding
Sorting
Small (up to 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
You don't have permission to access the resource on this server.
The requested resource was not found on this server.
The requested method is not allowed with the resource.
An appropriate representation for the resource was not found on this server.
You don't have permission to use this server as a proxy host.
The request has taken too long to complete and has been aborted.
The requested resource has more than one value.
The requested resource is gone and has not been replaced.
The requested method requires a valid Content-Length.
The precondition on the request evaluated to false.
The request is too large for this server to process.
The request URI is too large for this server to process.
The request format is not understood by this server.
500 The server has detected an unrecoverable error and cannot process your request.
The requested method is not implemented by this server.
The proxy server received an invalid response from an upstream server.
The requested resource is currently unavailable on this server.
The proxy server has taken too long to respond to this server.
This server does not support the HTTP version required by your browser.
-259
Ver Arquivo
@@ -1,259 +0,0 @@
/*
* "$Id$"
*
* HTTP-based translation program for the Common UNIX Printing System (CUPS).
*
* This program uses AltaVista's "babelfish" page to translate the POSIX
* message file (C/cups_C) to several different languages. The translation
* isn't perfect, but it's a good start (better than working from scratch.)
*
* Copyright 1997-1999 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE.txt" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
* main() - Main entry.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <cups/http.h>
/*
* 'main()' - Main entry.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
http_t *http; /* HTTP connection */
http_status_t status; /* Status of GET command */
char line[1024], /* Line from file */
*lineptr, /* Pointer into line */
buffer[2048], /* Input/output buffer */
*bufptr, /* Pointer into buffer */
length[16]; /* Content length */
int bytes; /* Number of bytes read */
FILE *in, /* Input file */
*out; /* Output file */
if (argc != 3)
{
fputs("Usage: translate outfile language\n", stderr);
return (1);
}
if ((in = fopen("C/cups_C", "r")) == NULL)
{
perror("translate: Unable to open input file");
return (1);
}
if ((out = fopen(argv[1], "w")) == NULL)
{
perror("translate: Unable to create output file");
fclose(in);
return (1);
}
/*
* Do character set...
*/
fgets(line, sizeof(line), in);
fputs("iso-8859-1\n", out); /* Right now that's all that Babelfish does */
/*
* Then strings...
*/
while (fgets(line, sizeof(line), in) != NULL)
{
/*
* Strip trailing newline if necessary...
*/
lineptr = line + strlen(line) - 1;
if (*lineptr == '\n')
*lineptr = '\0';
/*
* Skip leading numbers and whitespace...
*/
lineptr = line;
while (isdigit(*lineptr))
putc(*lineptr++, out);
while (isspace(*lineptr))
putc(*lineptr++, out);
if (*lineptr == '\0')
{
putc('\n', out);
continue;
}
/*
* Encode the line into the buffer...
*/
sprintf(buffer, "doit=done&lp=en_%s&urltext=[", argv[2]);
bufptr = buffer + strlen(buffer);
while (*lineptr)
{
if (*lineptr == ' ')
*bufptr++ = '+';
else if (*lineptr < ' ' || *lineptr == '%')
{
sprintf(bufptr, "%%%02X", *lineptr & 255);
bufptr += 3;
}
else
*bufptr++ = *lineptr;
lineptr ++;
}
*bufptr++ = '&';
*bufptr = '\0';
sprintf(length, "%d", bufptr - buffer);
/*
* Send the request...
*/
if ((http = httpConnect("dns.easysw.com", 80)) == NULL)
{
perror("translate: Unable to contact proxy server");
fclose(in);
fclose(out);
return (1);
}
lineptr = line;
while (isdigit(*lineptr))
lineptr ++;
while (isspace(*lineptr))
lineptr ++;
printf("%s = ", lineptr);
fflush(stdout);
http->version = HTTP_1_0;
httpClearFields(http);
httpSetField(http, HTTP_FIELD_CONTENT_TYPE,
"application/x-www-form-urlencoded");
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
if (httpPost(http, "http://babelfish.altavista.digital.com/cgi-bin/translate?"))
httpPost(http, "http://babelfish.altavista.digital.com/cgi-bin/translate?");
httpWrite(http, buffer, bufptr - buffer);
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
if (status == HTTP_OK)
{
int sawparen = 0;
int skipws = 1;
int sawbracket = 0;
while ((bytes = httpRead(http, buffer, sizeof(buffer))) > 0)
{
buffer[bytes] = '\0';
for (bufptr = buffer; *bufptr; bufptr ++)
{
if (*bufptr == '>')
sawbracket = 0;
else if (*bufptr == '<')
{
sawbracket = 1;
if (sawparen)
break;
}
else if (*bufptr == '[' && !sawbracket)
sawparen = 1;
else if (sawparen)
{
if (skipws)
{
if (!isspace(*bufptr))
{
skipws = 0;
*bufptr = toupper(*bufptr);
}
}
if (!skipws)
{
if (*bufptr == '\n')
{
putc(' ', out);
putchar(' ');
}
else
{
putc(*bufptr, out);
putchar(*bufptr);
}
}
}
}
if (sawparen && sawbracket)
break;
}
httpFlush(http);
putc('\n', out);
putchar('\n');
}
else
{
printf("HTTP error %d\n", status);
fprintf(out, "%s\n", lineptr);
httpFlush(http);
}
httpClose(http);
}
fclose(in);
fclose(out);
return (0);
}
/*
* End of "$Id$".
*/
+6 -6
Ver Arquivo
@@ -33,9 +33,9 @@ MAN5 = classes.conf.5 cupsd.conf.5 mime.convs.5 mime.types.5 \
printers.conf.5
MAN8 = accept.8 cupsd.8 enable.8 lpadmin.8 lpc.8
CAT1 = $(MAN1:.1=.$(CAT))
CAT5 = $(MAN5:.5=.$(CAT))
CAT8 = $(MAN8:.8=.$(CAT))
CAT1 = $(MAN1:.1=.z)
CAT5 = $(MAN5:.5=.z)
CAT8 = $(MAN8:.8=.z)
#
# Make everything...
@@ -65,13 +65,13 @@ install:
$(LN) enable.8 $(MANDIR)/man8/disable.8
-$(MKDIR) $(MANDIR)/cat1
$(CP) $(CAT1) $(MANDIR)/cat1
$(LN) lp.$(CAT) $(MANDIR)/cat1/cancel.$(CAT)
$(LN) lp.z $(MANDIR)/cat1/cancel.z
-$(MKDIR) $(MANDIR)/cat5
$(CP) $(CAT5) $(MANDIR)/cat5
-$(MKDIR) $(MANDIR)/cat8
$(CP) $(CAT8) $(MANDIR)/cat8
$(LN) accept.$(CAT) $(MANDIR)/cat8/reject.$(CAT)
$(LN) enable.$(CAT) $(MANDIR)/cat8/disable.$(CAT)
$(LN) accept.z $(MANDIR)/cat8/reject.z
$(LN) enable.z $(MANDIR)/cat8/disable.z
#
# End of "$Id$".
BIN
Ver Arquivo
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
+3 -8
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpadmin.8 461 1999-06-24 17:44:19Z mike $"
.\" "$Id: lpadmin.8 380 1999-06-10 16:15:04Z mike $"
.\"
.\" lpadmin man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,7 +21,7 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH lpadmin 8 "Common UNIX Printing System" "22 June 1999" "Easy Software Products"
.TH lpadmin 8 "Common UNIX Printing System" "14 May 1999" "Easy Software Products"
.SH NAME
lpadmin \- configure cups printers and classes
.SH SYNOPSIS
@@ -91,11 +91,6 @@ is a filename it is automatically converted to the form \fBfile:/file/name\fR.
.br
Provides a textual description of the printer.
.TP 5
\-E
.br
Enables the printer; this is the same as running the \fIaccept(8)\fR and
\fIenable(8)\fR programs on the printer.
.TP 5
\-L \fIlocation\fR
.br
Provides a textual location of the printer.
@@ -120,5 +115,5 @@ CUPS Software Administrator's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpadmin.8 461 1999-06-24 17:44:19Z mike $".
.\" End of "$Id: lpadmin.8 380 1999-06-10 16:15:04Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+4 -60
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpstat.1 461 1999-06-24 17:44:19Z mike $"
.\" "$Id: lpstat.1 380 1999-06-10 16:15:04Z mike $"
.\"
.\" lpstat man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,7 +21,7 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH lpstat 1 "Common UNIX Printing System" "24 June 1999" "Easy Software Products"
.TH lpstat 1 "Common UNIX Printing System" "14 May 1999" "Easy Software Products"
.SH NAME
lpstat \- print cups status information
.SH SYNOPSIS
@@ -44,72 +44,16 @@ lpstat \- print cups status information
.SH DESCRIPTION
\fBlpstat\fR displays status information about the current classes, jobs, and
printers. When run with no arguments, \fBlpstat\fR will list jobs queued by
the user. Other options include:
.TP 5
\-a [\fIprinter(s)\fR]
.br
Shows the accepting state of printer queues. If no printers are
specified then all printers are listed.
.TP 5
\-c [\fIclass(es)\fR]
.br
Shows the printer classes and the printers that belong to them. If no
classes are specified then all classes are listed.
.TP 5
\-d
.br
Shows the current default destination.
.TP 5
\-h \fIserver\fR
.br
Specifies the CUPS server to communicate with.
.TP 5
\-o [\fIdestination(s)\fR]
.br
Shows the jobs queue on the specified destinations. If no destinations are
specified all jobs are shown.
.TP 5
\-p [\fIprinter(s)\fR]
.br
Shows the printers and whether or not they are enabled for printing. If
no printers are specified then all printers are listed.
.TP 5
\-r
.br
Shows whether or not the CUPS server is running.
.TP 5
\-s
.br
Shows a status summary, including the system default destination, a
list of classes and their member printers, and a list of printers and
their associated devices. This is equivalent to using the "-d", "-c",
and "-p" options.
.TP 5
\-t
.br
Shows all status information. This is equivalent to using the "-r",
"-d", "-c", "-d", "-v", "-a", "-p", and "-o" options.
.TP 5
\-u [\fIuser(s)\fR]
.br
Shows a list of print jobs queued by the specified users. If no users
are specified, lists the jobs queued by the current user.
.TP 5
\-v [\fIprinter(s)\fR]
.br
Shows the printers and what device they are attached to. If no printers
are specified then all printers are listed.
the user.
.SH COMPATIBILITY
Unlike the System V printing system, CUPS allows printer names to contain
any printable character except SPACE and TAB. Also, printer and class names are
\fBnot\fR case-sensitive.
.LP
The "-h" option is not a standard System V option.
.SH SEE ALSO
cancel(1), lp(1),
CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpstat.1 461 1999-06-24 17:44:19Z mike $".
.\" End of "$Id: lpstat.1 380 1999-06-10 16:15:04Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
-3
Ver Arquivo
@@ -129,10 +129,8 @@ install: $(TARGETS)
#
genarch: genarch.o
echo Linking $@...
$(CC) $(LDFLAGS) -o genarch genarch.o
arch.h: genarch
echo Generating $@...
./genarch arch.h
#
@@ -140,7 +138,6 @@ arch.h: genarch
#
pstoraster: $(OBJS) ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o pstoraster $(OBJS) $(IMGLIBS)
gdevcups.o: ../cups/raster.h
+18 -18
Ver Arquivo
@@ -119,7 +119,7 @@ mem_mono_strip_copy_rop(gx_device *dev,
const gx_strip_bitmap *textures, const gx_color_index *tcolors,
int x, int y, int width, int height,
int phase_x, int phase_y, gs_logical_operation_t lop)
{ gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
{ gs_rop3_t rop = lop & lop_rop_mask;
gx_strip_bitmap no_texture;
bool invert;
uint draster = mdev->raster;
@@ -163,17 +163,17 @@ mem_mono_strip_copy_rop(gx_device *dev,
*/
if ( invert )
rop = (gs_rop3_t)(byte_reverse_bits[rop] ^ 0xff);
rop = byte_reverse_bits[rop] ^ 0xff;
/* Modify the raster operation according to the source palette. */
if ( scolors != 0 )
{ /* Source with palette. */
switch ( (int)((scolors[1] << 1) + scolors[0]) )
{
case 0: rop = (gs_rop3_t)rop3_know_S_0(rop); break;
case 1: rop = (gs_rop3_t)rop3_invert_S(rop); break;
case 0: rop = rop3_know_S_0(rop); break;
case 1: rop = rop3_invert_S(rop); break;
case 2: break;
case 3: rop = (gs_rop3_t)rop3_know_S_1(rop); break;
case 3: rop = rop3_know_S_1(rop); break;
}
}
@@ -182,10 +182,10 @@ mem_mono_strip_copy_rop(gx_device *dev,
{ /* Texture with palette. */
switch ( (int)((tcolors[1] << 1) + tcolors[0]) )
{
case 0: rop = (gs_rop3_t)rop3_know_T_0(rop); break;
case 1: rop = (gs_rop3_t)rop3_invert_T(rop); break;
case 0: rop = rop3_know_T_0(rop); break;
case 1: rop = rop3_invert_T(rop); break;
case 2: break;
case 3: rop = (gs_rop3_t)rop3_know_T_1(rop); break;
case 3: rop = rop3_know_T_1(rop); break;
}
}
@@ -367,7 +367,7 @@ mem_gray8_rgb24_strip_copy_rop(gx_device *dev,
const gx_strip_bitmap *textures, const gx_color_index *tcolors,
int x, int y, int width, int height,
int phase_x, int phase_y, gs_logical_operation_t lop)
{ gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
{ gs_rop3_t rop = lop & lop_rop_mask;
gx_color_index const_source = gx_no_color_index;
gx_color_index const_texture = gx_no_color_index;
uint draster = mdev->raster;
@@ -386,9 +386,9 @@ mem_gray8_rgb24_strip_copy_rop(gx_device *dev,
{ /* Constant source */
const_source = scolors[0];
if ( const_source == 0 )
rop = (gs_rop3_t)rop3_know_S_0(rop);
rop = rop3_know_S_0(rop);
else if ( const_source == all_ones )
rop = (gs_rop3_t)rop3_know_S_1(rop);
rop = rop3_know_S_1(rop);
}
else if ( !rop3_uses_S(rop) )
const_source = 0; /* arbitrary */
@@ -398,9 +398,9 @@ mem_gray8_rgb24_strip_copy_rop(gx_device *dev,
{ /* Constant texture */
const_texture = tcolors[0];
if ( const_texture == 0 )
rop = (gs_rop3_t)rop3_know_T_0(rop);
rop = rop3_know_T_0(rop);
else if ( const_texture == all_ones )
rop = (gs_rop3_t)rop3_know_T_1(rop);
rop = rop3_know_T_1(rop);
}
else if ( !rop3_uses_T(rop) )
const_texture = 0; /* arbitrary */
@@ -684,7 +684,7 @@ gx_real_default_strip_copy_rop(gx_device *dev,
* pixels, the memory device implementation to do the operation,
* and copy_color to write the pixels back.
*/
gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
gs_rop3_t rop = lop & lop_rop_mask;
int depth = dev->color_info.depth;
const gx_device_memory *mdproto = gdev_mem_device_for_bits(depth);
gx_device_memory mdev;
@@ -1006,8 +1006,8 @@ gs_transparent_rop(gs_rop3_t rop, bool source_transparent,
#define So rop3_not(rop3_S)
#define Po rop3_not(rop3_T)
gs_rop3_t mask =
(gs_rop3_t)(source_transparent ?
(pattern_transparent ? So & Po : So) :
(pattern_transparent ? ~So | Po : rop3_1));
return (gs_rop3_t)((rop & mask) | (rop3_D & ~mask));
(source_transparent ?
(pattern_transparent ? So & Po : So) :
(pattern_transparent ? ~So | Po : rop3_1));
return (rop & mask) | (rop3_D & ~mask);
}
+1 -1
Ver Arquivo
@@ -96,7 +96,7 @@ public_st_const_string_element();
#define sptr ((gs_const_string *)vptr)
private ENUM_PTRS_BEGIN(const_string_enum_ptrs) return 0;
case 0: *pep = (void *)sptr; return ptr_const_string_type;
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(const_string_reloc_ptrs) {
gs_reloc_const_string(sptr, gcst);
} RELOC_PTRS_END
+1 -1
Ver Arquivo
@@ -70,7 +70,7 @@ private ENUM_PTRS_BEGIN(halftone_component_enum_ptrs) return 0;
if ( hptr->type != ht_type_threshold )
return 0;
ENUM_RETURN_CONST_STRING_PTR(gs_halftone_component, params.threshold.thresholds);
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(halftone_component_reloc_ptrs) {
if ( hptr->type == ht_type_threshold )
+1 -1
Ver Arquivo
@@ -139,7 +139,7 @@ gs_image_init(gs_image_enum *pie, const gs_image_t *pim, bool multi,
code = (*dev_proc(dev, begin_image))
(dev, (const gs_imager_state *)pgs, &image,
(multi ? gs_image_format_component_planar : gs_image_format_chunky),
(gs_image_shape_t)(gs_image_shape_rows | gs_image_shape_split_row),
gs_image_shape_rows | gs_image_shape_split_row,
pgs->dev_color, pgs->clip_path, pie->memory, &pie->info);
if ( code < 0 )
return code;
+2 -2
Ver Arquivo
@@ -185,7 +185,7 @@ fill_with_rule(gs_state *pgs, int rule)
/* into the parent's path. */
if ( pgs->in_charpath )
code = gx_path_add_char_path(pgs->show_gstate->path, pgs->path,
(gs_char_path_mode)pgs->in_charpath);
pgs->in_charpath);
else
{ int abits, acode;
@@ -231,7 +231,7 @@ gs_stroke(gs_state *pgs)
/* into the parent's path. */
if ( pgs->in_charpath )
code = gx_path_add_char_path(pgs->show_gstate->path, pgs->path,
(gs_char_path_mode)pgs->in_charpath);
pgs->in_charpath);
else
{ int abits, acode;
float orig_width;
+1 -1
Ver Arquivo
@@ -342,7 +342,7 @@ private ENUM_PTRS_BEGIN(dc_binary_masked_enum_ptrs) {
}
case 0:
return dc_masked_enum_ptrs(vptr, size, index, pep);
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(dc_binary_masked_reloc_ptrs) {
dc_masked_reloc_ptrs(vptr, size, gcst);
(*gx_dc_procs_ht_binary.reloc_ptrs)(vptr, size, gcst);
+1 -1
Ver Arquivo
@@ -40,7 +40,7 @@ gs_setrasterop(gs_state *pgs, gs_rop3_t rop)
/* currentrasterop */
gs_rop3_t
gs_currentrasterop(const gs_state *pgs)
{ return (gs_rop3_t)(pgs->log_op & lop_rop_mask);
{ return pgs->log_op & lop_rop_mask;
}
/* setsourcetransparent */
+1 -1
Ver Arquivo
@@ -961,6 +961,6 @@ type1_endchar(gs_type1_state *pcis, gs_imager_state *pis, gx_path *ppath)
}
/* Set the flatness for curve rendering. */
if ( !pcis->charpath_flag )
gs_setflat((gs_state *)pis, pcis->flatness);
gs_setflat(pis, pcis->flatness);
return 0;
}
+1 -1
Ver Arquivo
@@ -51,7 +51,7 @@ private_st_cached_char_ptr_elt();
/* We do all the work in font_dir_enum/reloc_ptrs in gsfont.c. */
/* See gxfcache.h for details. */
private ENUM_PTRS_BEGIN(cc_ptr_enum_ptrs) return 0;
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(cc_ptr_reloc_ptrs) {
} RELOC_PTRS_END
+1 -1
Ver Arquivo
@@ -1057,7 +1057,7 @@ clist_strip_copy_rop(gx_device *dev,
const gx_strip_bitmap *textures, const gx_color_index *tcolors,
int x, int y, int width, int height,
int phase_x, int phase_y, gs_logical_operation_t lop)
{ gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
{ gs_rop3_t rop = lop & lop_rop_mask;
gx_strip_bitmap tile_with_id;
const gx_strip_bitmap *tiles = textures;
+1 -2
Ver Arquivo
@@ -1046,8 +1046,7 @@ sti: state_slot =
color_set_pure(&devc, state.colors[1]);
code = (*dev_proc(tdev, begin_image))
(tdev, &imager_state, &image,
gs_image_format_chunky,
(gs_image_shape_t)shape,
gs_image_format_chunky, shape,
&devc, pcpath, mem, &image_info);
if ( code < 0 )
goto out;
+1 -1
Ver Arquivo
@@ -44,7 +44,7 @@ private ENUM_PTRS_BEGIN(device_color_enum_ptrs) {
if ( proc == 0 )
return 0;
return (*proc)(vptr, size, index, pep);
} } }
} ENUM_PTRS_END
private RELOC_PTRS_BEGIN(device_color_reloc_ptrs) {
struct_proc_reloc_ptrs((*proc)) = cptr->type->reloc_ptrs;
if ( proc != 0 )
+1 -1
Ver Arquivo
@@ -56,7 +56,7 @@ private ENUM_PTRS_BEGIN(clip_path_enum_ptrs) ;
return ret;
}
return (*st_path.enum_ptrs)(&cptr->path, sizeof(cptr->path), index - st_clip_list_max_ptrs, pep);
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(clip_path_reloc_ptrs) {
clip_list_reloc_ptrs(&cptr->list, sizeof(gx_clip_list), gcst);
(*st_path.reloc_ptrs)(&cptr->path, sizeof(gx_path), gcst);
+1
Ver Arquivo
@@ -88,6 +88,7 @@ dict_int_null_param(const ref *pdict, const char _ds *kstr, int minval,
break;
case t_null:
return 2;
break;
default:
return_error(e_typecheck);
}
-1
Ver Arquivo
@@ -212,7 +212,6 @@ make_initial_dict(const char *iname, uint namelen, ref idicts[])
* but not in initial_dictionaries.
*/
gs_abort();
return (NULL);
}
/* Initialize objects other than operators. In particular, */
+1
Ver Arquivo
@@ -744,6 +744,7 @@ end_comment: retcode = scan_comment(comment_line, daptr, true);
goto sret;
goto top;
}
break;
}
#undef comment_line
/*NOTREACHED*/
+1 -1
Ver Arquivo
@@ -48,7 +48,7 @@ private ENUM_PTRS_BEGIN(ref_stack_enum_ptrs) return 0;
case 0:
*pep = &sptr->current;
return ptr_ref_type;
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(ref_stack_reloc_ptrs) {
#if stacks_are_segmented
/* In a segmented environment, the top block can't move, */
+1 -1
Ver Arquivo
@@ -37,7 +37,7 @@
* Include necessary headers...
*/
#include <cups/string.h>
#include <config.h>
#include "ghost.h"
#include "imain.h"
#include "iminst.h"
+1 -1
Ver Arquivo
@@ -34,7 +34,7 @@ public_st_DCT_state();
/* GC procedures */
private ENUM_PTRS_BEGIN(dct_enum_ptrs) return 0;
ENUM_CONST_STRING_PTR(0, stream_DCT_state, Markers);
} }
ENUM_PTRS_END
private RELOC_PTRS_BEGIN(dct_reloc_ptrs) {
RELOC_CONST_STRING_PTR(stream_DCT_state, Markers);
} RELOC_PTRS_END

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais