Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet fef1ede14e Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.1.3@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
125 arquivos alterados com 16091 adições e 13598 exclusões
+149 -1
Ver Arquivo
@@ -1,6 +1,154 @@
CHANGES.txt - 08/04/2000
CHANGES.txt - 09/18/2000
------------------------
CHANGES IN CUPS v1.1.3
- Makefile fixes.
- RPM spec file changes.
- Documentation updates.
- Enabled pstoraster debug messages for everything
(only logged when LogLevel set to "debug"...)
- Changed the Input/OutputAttributes fix in
pstoraster so that it works on all platforms.
- The HP-GL/2 filter didn't set the right green
color value in encoded polylines or text.
- Updated the "fitplot" code to handle plot sizes
specified as "PSwidth,length" and "PSlength,width".
- Updated the Linux parallel and USB backends to open
the device files prior to looking in /proc for
autoprobe info. This makes sure that loadable device
driver modules are in fact loaded...
- Added new FilterLimit directive to limit the number
of processing jobs/filters on a system.
- set-job-attributes didn't change the job-state to
held/pending when the job-hold-until attribute was
specified.
- set-job-attributes didn't save the new job attributes.
- Now change the "requesting-user-name" attribute in
requests from remote systems to "remroot" when an
unauthenticated "root" user is sent. This can be
changed using the new RemoteRoot directive in
cupsd.conf.
- The cancel-job, hold-job, release-job, and restart-job
operations didn't log the authenticated username.
- The cups-lpd mini-daemon now checks for a
document-format option before forcing raw mode with
filter mode 'l'.
- The cups-lpd mini-daemon now supports "-o" options
on the command-line (passed by inetd) to set global
defaults for all print queues.
- The pstops filter assumed that a file with a Trailer
comment would also have an EOF comment.
- Added new cupsSetPasswordCB(), cupsSetServer(),
cupsSetUser(), and ippSetPort() functions to better
support client applications (especially GUIs...)
- The CUPS-add-class and CUPS-add-printer operations
didn't reset the printer-name attribute on remote
print queues that had to be renamed when a local
printer was defined with the same name.
- The lpoptions command now supports a "-r" option to
remove options for a printer or instance.
- The lpadmin and admin.cgi programs no longer allow
class and printer names to begin with a number; this
caused the command-line utilities to become confused.
- The Linux USB backend now looks for both the parallel
and usblp driver names in the device list.
- Added a new FontPath directive to cupsd.conf, and also
a "--with-fontpath" option for the configure script to
specify alternate font paths for pstoraster.
- The CUPS-move-job operation didn't update the
job-printer-uri attribute.
- The scheduler only looked up printers and classes by
name in IPP requests, instead of using the full URI.
This caused problems with KUPS and friends with
remote printers.
- The scheduler now handles better localization of
hostnames (e.g. server is host.foo.com, remote is
host.subfoo.foo.com, localized is not host.subfoo...)
- The scheduler logging functions now use a common
log file checking/rotation function (courtesy of
Crutcher Dunnavant at Red Hat)
- The scheduler could accept more client connections
than it allocated for if more than one Port or Listen
line was present in cupsd.conf.
- Other minor scheduler performance tweeks.
- The lpq and lprm commands didn't support the default
printer set using lpoptions.
- The lpoptions command now supports a "-l" option to
list the printer-specific options and their current
settings.
- The web printer and class lists now show a link to the
default printer or class at the top of the page.
- The text filter now supports pretty printing of shell
and perl scripts as well as C/C++ source files.
- The top and bottom margins were reversed for landscape
text printing.
- The lpq and lprm commands didn't understand printer
instances.
- The scheduler only selected on the first 100 file
descriptors instead of the maximum file descriptor
limit.
- The scheduler client, listener, and mainline functions
now share code to disable and enable monitoring for
new client connections.
- The imagetoraster filter didn't support all of the
required pagedevice parameters.
- The serial backend now checks for 100 serial ports
under Linux.
- The scheduler used sscanf() to pull out the remote
printer location, description, and make/model strings,
but if any of these options was empty then sscanf()
would stop processing.
- Added "debug2" log level to provide a little less
verbose debugging information at the "debug" level.
- The scheduler would crash if you stopped a printer
that was currently printing a job.
- The scheduler incorrectly allowed jobs in the cancelled,
aborted, or completed state to be cancelled.
- The image filters did not load TIFF images properly
for bottom-to-top and right-to-left orientations.
- Added new cupsEncodeOptions() function to encode
CUPS options as IPP job attributes.
- The IPP backend, LPD mini-daemon, client commands,
and CUPS API did not properly encode multiple
option values separated by commas.
- Added new scheduler malloc logging in debug mode
(provides summary of total arena size, allocated,
and free bytes once a minute)
- The EPM-based distributions didn't install the
correct symlinks for a few man pages.
- Fixed a memory leak in the scheduler - wasn't
freeing old filters when deleting or renaming
printers.
- The scheduler now queries the primary IP address
for the name of the server and maps any incoming
requests from that address to the server name.
This fixes web admin mapping problems from
server.domain.com to localhost.
- The web printer modify interface now remembers
the previous device and driver settings (except
for serial ports.)
- The job-k-octets attribute is now stored as part of
the job attributes; this preserves the information
after a job is completed when job file history is
turned off.
- Dropped option sub-group parsing code for the moment,
since many Xerox PPD files abuse this feature in PPD
files and don't follow the hierarchy rules.
- Added new wrapper code around options so that duplex
options for some HP printers don't prevent prints.
- Added support for Digital UNIX/Tru64 UNIX/OSF/1 format
for "lpstat -v" output.
- Now show the URI for remote printers instead of
/dev/null in "lpstat -v" output.
- Creating classes and adding printers to a class with
the lpadmin command didn't work.
- The banner pages and test page should now format
correctly in both portrait and landscape orientations.
- Updated banner page substitution so that { can appear
by itself without quoting.
CHANGES IN CUPS v1.1.2
- Makefile/configure fixes
+1
Ver Arquivo
@@ -63,6 +63,7 @@ INSTALL_SYSV = @INSTALL_SYSV@
LIBCUPS = @LIBCUPS@
LIBCUPSIMAGE = @LIBCUPSIMAGE@
LIBJPEG = @LIBJPEG@
LIBMALLOC = @LIBMALLOC@
LIBPNG = @LIBPNG@
LIBTIFF = @LIBTIFF@
LIBZ = @LIBZ@
+12 -4
Ver Arquivo
@@ -70,14 +70,22 @@ install:
(cd fonts; $(MAKE) $(MFLAGS) install)
echo Installing in locale...
(cd locale; $(MAKE) $(MFLAGS) install)
echo Installing in ppd...
(cd ppd; $(MAKE) $(MFLAGS) install)
echo Installing in templates...
(cd templates; $(MAKE) $(MFLAGS) install)
echo Installing startup script...
if test "x$INITDIR" != "x"; then \
$(INSTALL_SCRIPT) cups.sh $prefix/$INITDIR/init.d/cups; \
$(CHMOD) ugo+rx $prefix/$INITDIR/init.d/cups; \
ln -s $INITDDIR/cups $prefix/$INITDIR/rc0.d/K00cups; \
ln -s $INITDDIR/cups $prefix/$INITDIR/rc2.d/S99cups; \
$(MKDIR) $(prefix)/$(INITDIR)/init.d; \
$(RM) $(prefix)/$(INITDIR)/init.d/cups; \
$(INSTALL_SCRIPT) cups.sh $(prefix)/$(INITDIR)/init.d/cups; \
$(CHMOD) ugo+rx $(prefix)/$(INITDIR)/init.d/cups; \
$(MKDIR) $(prefix)/$(INITDIR)/rc0.d; \
$(RM) $(prefix)/$(INITDIR)/rc0.d/K00cups; \
ln -s $(INITDDIR)/cups $(prefix)/$(INITDIR)/rc0.d/K00cups; \
$(MKDIR) $(prefix)/$(INITDIR)/rc3.d; \
$(RM) $(prefix)/$(INITDIR)/rc3.d/S99cups; \
ln -s $(INITDDIR)/cups $(prefix)/$(INITDIR)/rc3.d/S99cups; \
fi
#
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
README - CUPS v1.1.2 - 08/04/2000
README - CUPS v1.1.3 - 09/18/2000
---------------------------------
INTRODUCTION
+1 -1
Ver Arquivo
@@ -41,7 +41,7 @@ all: $(TARGETS)
#
clean:
$(RM) $(OBJS) $(TARGETS)
$(RM) $(OBJS) $(TARGETS) http
#
+7 -114
Ver Arquivo
@@ -53,11 +53,6 @@ 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 */
*s; /* Pointer into option value */
const char *val; /* Pointer to option value */
int num_options; /* Number of printer options */
cups_option_t *options; /* Printer options */
char method[255], /* Method in URI */
@@ -91,6 +86,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if (argc == 1)
{
char *s;
if ((s = strrchr(argv[0], '/')) != NULL)
s ++;
else
@@ -439,119 +436,15 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
if (cupsGetOption("raw", num_options, options) ||
((content_type = getenv("CONTENT_TYPE")) != NULL &&
strcasecmp(content_type, "application/vnd.cups-raw") == 0))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else if ((val = cupsGetOption("document-format", num_options, options)) != NULL)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, val);
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
if ((content_type = getenv("CONTENT_TYPE")) != NULL &&
strcasecmp(content_type, "application/vnd.cups-raw") == 0)
num_options = cupsAddOption("raw", "", num_options, &options);
if (copies_sup)
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
for (i = 0; i < num_options; i ++)
{
/*
* Skip the "raw" option - handled above...
*/
if (strcasecmp(options[i].name, "raw") == 0 ||
strcasecmp(options[i].name, "document-format") == 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 (strncasecmp(option, "no", 2) == 0)
{
option += 2;
n = 0;
}
else
n = 1;
s = "";
}
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
/*
* String value(s)...
*/
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
else if (val != NULL)
{
/*
* Numeric value, range, or resolution...
*/
if (*s == '-')
{
n2 = strtol(s + 1, NULL, 0);
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
}
else if (*s == 'x')
{
n2 = strtol(s + 1, &s, 0);
if (strcasecmp(s, "dpc") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_CM, n, n2);
else if (strcasecmp(s, "dpi") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_INCH, n, n2);
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
}
else
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
}
else
/*
* Boolean value...
*/
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
}
cupsEncodeOptions(request, num_options, options);
cupsFreeOptions(num_options, options);
/*
* Now fill in the HTTP request stuff...
+42 -19
Ver Arquivo
@@ -275,7 +275,8 @@ list_devices(void)
#ifdef __linux
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
char device[255], /* Device filename */
probefile[255]; /* Probe filename */
FILE *probe; /* /proc/parport/n/autoprobe file */
char line[1024], /* Line from file */
*delim, /* Delimiter in file */
@@ -285,9 +286,41 @@ list_devices(void)
for (i = 0; i < 4; i ++)
{
sprintf(device, "/proc/parport/%d/autoprobe", i);
if ((probe = fopen(device, "r")) != NULL)
/*
* First open the device to make sure the driver module is loaded...
*/
sprintf(device, "/dev/lp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
close(fd);
else
{
sprintf(device, "/dev/par%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
close(fd);
}
/*
* Then try looking at the probe file...
*/
sprintf(probefile, "/proc/parport/%d/autoprobe", i);
if ((probe = fopen(probefile, "r")) == NULL)
{
/*
* Linux 2.4 kernel has different path...
*/
sprintf(probefile, "/proc/sys/dev/parport/parport%d/autoprobe", i);
probe = fopen(probefile, "r");
}
if (probe != NULL)
{
/*
* Found a probe file!
*/
memset(make, 0, sizeof(make));
memset(model, 0, sizeof(model));
strcpy(model, "Unknown");
@@ -324,23 +357,13 @@ list_devices(void)
printf("direct parallel:/dev/lp%d \"%s\" \"Parallel Port #%d\"\n",
i, model, i + 1);
}
else
else if (fd >= 0)
{
sprintf(device, "/dev/lp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
else
{
sprintf(device, "/dev/par%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
/*
* No probe file, but we know the port is there...
*/
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
#elif defined(__sgi)
+1 -1
Ver Arquivo
@@ -396,7 +396,7 @@ list_devices(void)
char device[255]; /* Device filename */
for (i = 0; i < 4; i ++)
for (i = 0; i < 100; i ++)
{
sprintf(device, "/dev/ttyS%d", i);
if ((fd = open(device, O_WRONLY | O_NOCTTY | O_NDELAY)) >= 0)
+25 -2
Ver Arquivo
@@ -262,15 +262,33 @@ list_devices(void)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
FILE *probe; /* /proc/parport/n/autoprobe file */
FILE *probe; /* /proc/bus/usb/devices file */
char line[1024], /* Line from file */
*delim, /* Delimiter in file */
make[IPP_MAX_NAME], /* Make from file */
model[IPP_MAX_NAME]; /* Model from file */
/*
* First try opening one of the USB devices to load the driver
* module as needed...
*/
if ((fd = open("/dev/usb/lp0", O_WRONLY)) >= 0)
close(fd); /* 2.3.x and 2.4.x */
else if ((fd = open("/dev/usblp0", O_WRONLY)) >= 0)
close(fd); /* 2.2.x */
/*
* Then look at the device list for the USB bus...
*/
if ((probe = fopen("/proc/bus/usb/devices", "r")) != NULL)
{
/*
* Scan the device list...
*/
i = 0;
memset(make, 0, sizeof(make));
@@ -305,7 +323,8 @@ list_devices(void)
strncpy(model, line + 12, sizeof(model) - 1);
}
else if (strncmp(line, "I:", 2) == 0 &&
strstr(line, "Driver=printer") != NULL &&
(strstr(line, "Driver=printer") != NULL ||
strstr(line, "Driver=usblp") != NULL) &&
make[0] && model[0])
{
/*
@@ -326,6 +345,10 @@ list_devices(void)
}
else
{
/*
* Just probe manually for USB devices...
*/
for (i = 0; i < 8; i ++)
{
sprintf(device, "/dev/usb/lp%d", i);
+17 -1
Ver Arquivo
@@ -65,9 +65,13 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to server */
const char *dest, /* Desired printer */
*user; /* Desired user */
char *instance; /* Printer instance */
int id, /* Desired job ID */
interval, /* Reporting interval */
longstatus; /* Show file details */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
/*
* Connect to the scheduler...
@@ -79,12 +83,18 @@ main(int argc, /* I - Number of command-line arguments */
* Check for command-line options...
*/
dest = cupsGetDefault();
dest = NULL;
user = NULL;
id = 0;
interval = 0;
longstatus = 0;
num_dests = cupsGetDests(&dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '+')
interval = atoi(argv[i] + 1);
@@ -100,6 +110,9 @@ main(int argc, /* I - Number of command-line arguments */
i ++;
dest = argv[i];
}
if ((instance = strchr(dest, '/')) != NULL)
*instance = '\0';
break;
case 'l' : /* Long status */
@@ -108,6 +121,8 @@ main(int argc, /* I - Number of command-line arguments */
default :
fputs("Usage: lpq [-P dest] [-l] [+interval]\n", stderr);
httpClose(http);
cupsFreeDests(num_dests, dests);
return (1);
}
}
@@ -140,6 +155,7 @@ main(int argc, /* I - Number of command-line arguments */
* Close the connection to the server and return...
*/
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
+5 -2
Ver Arquivo
@@ -123,14 +123,17 @@ main(int argc, /* I - Number of command-line arguments */
break;
case 'l' : /* Literal/raw */
num_options = cupsParseOptions("raw", num_options, &options);
num_options = cupsAddOption("raw", "", num_options, &options);
break;
case 'p' : /* Prettyprint */
num_options = cupsParseOptions("prettyprint", num_options, &options);
num_options = cupsAddOption("prettyprint", "", num_options, &options);
break;
case 'h' : /* Suppress burst page */
num_options = cupsAddOption("job-sheets", "none", num_options, &options);
break;
case 's' : /* Don't use symlinks */
break;
+23 -1
Ver Arquivo
@@ -50,11 +50,14 @@ main(int argc, /* I - Number of command-line arguments */
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *instance; /* Pointer to instance name */
char uri[1024]; /* Printer or job URI */
ipp_t *request; /* IPP request */
ipp_t *response; /* IPP response */
ipp_op_t op; /* Operation */
cups_lang_t *language; /* Language */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
/*
@@ -63,10 +66,16 @@ main(int argc, /* I - Number of command-line arguments */
op = IPP_CANCEL_JOB;
job_id = 0;
dest = cupsGetDefault();
dest = NULL;
response = NULL;
http = NULL;
num_dests = cupsGetDests(&dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
/*
* Open a connection to the server...
*/
@@ -74,6 +83,7 @@ main(int argc, /* I - Number of command-line arguments */
if ((http = httpConnect(cupsServer(), ippPort())) == NULL)
{
fputs("lprm: Unable to contact server!\n", stderr);
cupsFreeDests(num_dests, dests);
return (1);
}
@@ -93,10 +103,15 @@ main(int argc, /* I - Number of command-line arguments */
i ++;
dest = argv[i];
}
if ((instance = strchr(dest, '/')) != NULL)
*instance = '\0';
break;
default :
fprintf(stderr, "lprm: Unknown option \'%c\'!\n", argv[i][1]);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
else
@@ -196,6 +211,8 @@ main(int argc, /* I - Number of command-line arguments */
else
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
}
@@ -209,9 +226,14 @@ main(int argc, /* I - Number of command-line arguments */
if (!cupsCancelJob(dest, 0))
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
}
+123 -42
Ver Arquivo
@@ -263,9 +263,12 @@ do_am_class(http_t *http, /* I - HTTP connection */
}
name = cgiGetVariable("PRINTER_NAME");
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
if (isdigit(*name))
ptr = name;
else
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
if (*ptr || ptr == name)
{
@@ -483,7 +486,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
ipp_attribute_t *attr, /* Current attribute */
*last; /* Last attribute */
ipp_t *request, /* IPP request */
*response; /* IPP response */
*response, /* IPP response */
*oldinfo; /* Old printer information */
ipp_status_t status; /* Request status */
const char *var; /* CGI variable */
char uri[HTTP_MAX_URI], /* Device or printer URI */
@@ -507,49 +511,51 @@ do_am_printer(http_t *http, /* I - HTTP connection */
};
if (modify)
{
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the
* following attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
snprintf(uri, sizeof(uri), "ipp://localhost/printers/%s",
cgiGetVariable("PRINTER_NAME"));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
/*
* Do the request and get back a response...
*/
oldinfo = cupsDoRequest(http, request, "/");
}
if (cgiGetVariable("PRINTER_LOCATION") == NULL)
{
if (modify)
{
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the
* following attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
snprintf(uri, sizeof(uri), "ipp://localhost/printers/%s",
cgiGetVariable("PRINTER_NAME"));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
ippSetCGIVars(response, NULL, NULL);
ippDelete(response);
}
/*
* Update the location and description of an existing printer...
*/
if (oldinfo)
ippSetCGIVars(oldinfo, NULL, NULL);
cgiCopyTemplateLang(stdout, TEMPLATES, "modify-printer.tmpl", getenv("LANG"));
}
else
@@ -561,13 +567,19 @@ do_am_printer(http_t *http, /* I - HTTP connection */
cgiCopyTemplateLang(stdout, TEMPLATES, "add-printer.tmpl", getenv("LANG"));
}
if (oldinfo)
ippDelete(oldinfo);
return;
}
name = cgiGetVariable("PRINTER_NAME");
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
if (isdigit(*name))
ptr = name;
else
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
if (*ptr || ptr == name)
{
@@ -616,10 +628,32 @@ do_am_printer(http_t *http, /* I - HTTP connection */
* Let the user choose...
*/
if (oldinfo &&
(attr = ippFindAttribute(oldinfo, "device-uri", IPP_TAG_URI)) != NULL)
{
strncpy(uri, attr->values[0].string.text, sizeof(uri) - 1);
uri[sizeof(uri) - 1] = '\0';
if ((uriptr = strchr(uri, ':')) != NULL && strncmp(uriptr, "://", 3) == 0)
*uriptr = '\0';
cgiSetVariable("CURRENT_DEVICE_URI", uri);
}
cgiCopyTemplateLang(stdout, TEMPLATES, "choose-device.tmpl", getenv("LANG"));
}
else if (strchr(var, '/') == NULL)
{
if (oldinfo &&
(attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
{
/*
* Set the current device URI for the form to the old one...
*/
if (strncmp(attr->values[0].string.text, var, strlen(var)) == 0)
cgiSetVariable("DEVICE_URI", attr->values[0].string.text);
}
/*
* User needs to set the full URI...
*/
@@ -651,6 +685,50 @@ do_am_printer(http_t *http, /* I - HTTP connection */
}
else if ((var = cgiGetVariable("PPD_NAME")) == NULL)
{
if (modify)
{
/*
* Get the PPD file...
*/
FILE *fp; /* PPD file */
char filename[1024]; /* PPD filename */
ppd_file_t *ppd; /* PPD information */
char buffer[1024]; /* Buffer */
int bytes; /* Number of bytes */
sprintf(uri, "/printers/%s.ppd", name);
cupsTempFile(filename, sizeof(filename));
if (httpGet(http, uri))
httpGet(http, uri);
while (httpUpdate(http) == HTTP_CONTINUE);
if ((fp = fopen(filename, "w")) != NULL)
{
while ((bytes = httpRead(http, buffer, sizeof(buffer))) > 0)
fwrite(buffer, 1, bytes, fp);
fclose(fp);
if ((ppd = ppdOpenFile(filename)) != NULL)
{
if (ppd->manufacturer)
cgiSetVariable("CURRENT_MAKE", ppd->manufacturer);
if (ppd->nickname)
cgiSetVariable("CURRENT_MAKE_AND_MODEL", ppd->nickname);
ppdClose(ppd);
}
}
else
httpFlush(http);
unlink(filename);
}
/*
* Build a CUPS_GET_PPDS request, which requires the following
* attributes:
@@ -804,6 +882,9 @@ do_am_printer(http_t *http, /* I - HTTP connection */
else
cgiCopyTemplateLang(stdout, TEMPLATES, "printer-added.tmpl", getenv("LANG"));
}
if (oldinfo)
ippDelete(oldinfo);
}
+59
Ver Arquivo
@@ -46,6 +46,7 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
ipp_status_t status; /* Operation status... */
char uri[HTTP_MAX_URI];
/* Printer URI */
@@ -98,6 +99,64 @@ main(int argc, /* I - Number of command-line arguments */
if (op == NULL || strcasecmp(op, "print-test-page") != 0)
{
/*
* Get the default destination...
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_DEFAULT;
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);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "printer-name", IPP_TAG_NAME)) != NULL)
cgiSetVariable("DEFAULT_NAME", attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
char method[HTTP_MAX_URI],
username[HTTP_MAX_URI],
hostname[HTTP_MAX_URI],
resource[HTTP_MAX_URI],
uri[HTTP_MAX_URI];
int port; /* URI data */
const char *server; /* Name of server */
/*
* Map localhost access to localhost...
*/
server = getenv("SERVER_NAME");
httpSeparate(attr->values[0].string.text, method, username,
hostname, &port, resource);
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0 ||
strcmp(getenv("REMOTE_HOST"), server) == 0))
strcpy(hostname, "localhost");
/*
* Rewrite URI with HTTP address...
*/
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
cgiSetVariable("DEFAULT_URI", uri);
}
ippDelete(response);
}
/*
* Get the class info...
*/
+4 -3
Ver Arquivo
@@ -96,12 +96,12 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
resource[HTTP_MAX_URI],
uri[HTTP_MAX_URI];
int port; /* URI data */
char server[1024]; /* Name of server */
const char *server; /* Name of server */
ippSetServerVersion();
strcpy(server, cupsServer());
server = getenv("SERVER_NAME");
for (attr = response->attrs;
attr && attr->group_tag == IPP_TAG_OPERATION;
@@ -206,7 +206,8 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0))
strcmp(getenv("REMOTE_HOST"), "localhost") == 0 ||
strcmp(getenv("REMOTE_HOST"), server) == 0))
strcpy(hostname, "localhost");
/*
+59
Ver Arquivo
@@ -46,6 +46,7 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
ipp_status_t status; /* Operation status... */
char uri[HTTP_MAX_URI];
/* Printer URI */
@@ -98,6 +99,64 @@ main(int argc, /* I - Number of command-line arguments */
if (op == NULL || strcasecmp(op, "print-test-page") != 0)
{
/*
* Get the default destination...
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_DEFAULT;
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);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "printer-name", IPP_TAG_NAME)) != NULL)
cgiSetVariable("DEFAULT_NAME", attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
char method[HTTP_MAX_URI],
username[HTTP_MAX_URI],
hostname[HTTP_MAX_URI],
resource[HTTP_MAX_URI],
uri[HTTP_MAX_URI];
int port; /* URI data */
const char *server; /* Name of server */
/*
* Map localhost access to localhost...
*/
server = getenv("SERVER_NAME");
httpSeparate(attr->values[0].string.text, method, username,
hostname, &port, resource);
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0 ||
strcmp(getenv("REMOTE_HOST"), server) == 0))
strcpy(hostname, "localhost");
/*
* Rewrite URI with HTTP address...
*/
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
cgiSetVariable("DEFAULT_URI", uri);
}
ippDelete(response);
}
/*
* Get the printer info...
*/
+29 -5
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 1171 2000-06-27 21:15:41Z mike $"
# "$Id: cupsd.conf 1344 2000-09-06 18:32:40Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -111,6 +111,13 @@
#ErrorLog /var/log/cups/error_log
#
# FontPath: the path to locate all font files (currently only for pstoraster)
# By default /usr/share/cups/fonts.
#
#FontPath /usr/share/cups/fonts
#
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
@@ -170,6 +177,13 @@ LogLevel info
#RequestRoot /var/spool/cups
#
# RemoteRoot: the name of the user assigned to unauthenticated accesses
# from remote systems. By default "remroot".
#
#RemoteRoot remroot
#
# ServerBin: the root directory for the scheduler executables.
# By default /usr/lib/cups or /usr/lib32/cups (IRIX 6.5).
@@ -213,12 +227,22 @@ LogLevel info
#
# 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.
# writable by the user defined above! Defaults to "/var/spool/cups/tmp" or
# the value of the TMPDIR environment variable.
#
#TempDir /var/tmp
#TempDir /var/spool/cups/tmp
#
# FilterLimit: sets the maximum cost of all job filters that can be run
# at the same time. A limit of 0 means no limit. A typical job may need
# a filter limit of at least 200; limits less than the minimum required
# by a job force a single job to be printed at any time.
#
# The default limit is 0 (unlimited).
#
#FilterLimit 0
########
######## Network Options
@@ -538,5 +562,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 1171 2000-06-27 21:15:41Z mike $".
# End of "$Id: cupsd.conf 1344 2000-09-06 18:32:40Z mike $".
#
+16 -13
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 1270 2000-08-03 18:05:22Z mike $"
# "$Id: mime.convs 1340 2000-09-06 13:53:00Z mike $"
#
# MIME converts file for the Common UNIX Printing System (CUPS).
#
@@ -41,23 +41,26 @@
# PostScript filters
#
#application/msword application/postscript 50 mswordtops
application/pdf application/postscript 50 pdftops
application/postscript application/vnd.cups-postscript 50 pstops
application/vnd.hp-HPGL application/postscript 50 hpgltops
image/* application/vnd.cups-postscript 50 imagetops
#text/html application/postscript 50 htmltops
text/html application/postscript 50 texttops
text/plain application/postscript 50 texttops
application/vnd.cups-form application/vnd.cups-postscript 50 formtops
#application/msword application/postscript 33 mswordtops
application/pdf application/postscript 33 pdftops
application/postscript application/vnd.cups-postscript 66 pstops
application/vnd.hp-HPGL application/postscript 66 hpgltops
image/* application/vnd.cups-postscript 66 imagetops
#text/html application/postscript 33 htmltops
application/x-cshell application/postscript 33 texttops
application/x-perl application/postscript 33 texttops
application/x-shell application/postscript 33 texttops
text/html application/postscript 33 texttops
text/plain application/postscript 33 texttops
application/vnd.cups-form application/vnd.cups-postscript 33 formtops
########################################################################
#
# Raster filters...
#
image/* application/vnd.cups-raster 50 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
image/* application/vnd.cups-raster 100 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 100 pstoraster
########################################################################
#
@@ -71,5 +74,5 @@ application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
#*/* application/vnd.cups-raw 0 -
#
# End of "$Id: mime.convs 1270 2000-08-03 18:05:22Z mike $".
# End of "$Id: mime.convs 1340 2000-09-06 13:53:00Z mike $".
#
+9 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 1270 2000-08-03 18:05:22Z mike $"
# "$Id: mime.types 1340 2000-09-06 13:53:00Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -110,6 +110,13 @@ image/x-bitmap bmp string(0,BM) && !printable(2,14)
text/html html htm printable(0,1024) +\
(string(0,"<HTML>") string(0,"<!DOCTYPE"))
application/x-cshell csh printable(0,1024) + string(0,#!) +\
(contains(2,80,/csh) contains(2,80,/tcsh))
application/x-perl pl printable(0,1024) + string(0,#!) +\
contains(2,80,/perl)
application/x-shell sh printable(0,1024) + string(0,#!) +\
(contains(2,80,/bash) contains(2,80,/ksh)\
contains(2,80,/sh) contains(2,80,/zsh))
text/plain txt printable(0,1024)
########################################################################
@@ -134,5 +141,5 @@ application/vnd.cups-raw
#application/octet-stream
#
# End of "$Id: mime.types 1270 2000-08-03 18:05:22Z mike $".
# End of "$Id: mime.types 1340 2000-09-06 13:53:00Z mike $".
#
+9 -1
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.1.2"
#define CUPS_SVERSION "CUPS v1.1.3"
/*
* Where are files stored?
@@ -41,6 +41,7 @@
#define CUPS_REQUESTS "/var/spool/cups"
#define CUPS_LOGDIR "/var/logs/cups"
#define CUPS_DATADIR "/usr/share/cups"
#define CUPS_FONTPATH "/usr/share/cups/fonts"
/*
@@ -122,6 +123,13 @@
#undef HAVE_WAITPID
#undef HAVE_WAIT3
/*
* Do we have the mallinfo function and malloc.h?
*/
#undef HAVE_MALLINFO
#undef HAVE_MALLOC_H
/*
* End of "$Id$".
*/
+30 -2
Ver Arquivo
@@ -113,6 +113,8 @@ fi
AC_ARG_ENABLE(pam, [ --enable-pam turn on PAM support [default=yes]])
AC_ARG_WITH(fontpath, [ --with-fontpath set font path for pstoraster],fontpath="$withval",fontpath="")
dnl Checks for programs...
AC_PROG_AWK
AC_PROG_CC
@@ -142,9 +144,23 @@ dnl Architecture checks...
AC_C_BIGENDIAN
dnl Check for libraries...
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
AC_CHECK_HEADER(crypt.h, AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_LIB(c,crypt,LIBS="$LIBS")
if test "$ac_cv_lib_c_crypt" = "no"; then
AC_CHECK_LIB(crypt,crypt)
fi
AC_CHECK_LIB(sec,getspent)
LIBMALLOC=""
AC_CHECK_LIB(c,mallinfo,LIBS="$LIBS"; AC_DEFINE(HAVE_MALLINFO),LIBS="$LIBS")
if test "$ac_cv_lib_c_mallinfo" = "no"; then
AC_CHECK_LIB(malloc,mallinfo,
LIBS="$LIBS"
LIBMALLOC="-lmalloc"
AC_DEFINE(HAVE_MALLINFO),
LIBS="$LIBS")
fi
AC_SUBST(LIBMALLOC)
if test "$enable_pam" != "no"; then
OLDLIBS="$LIBS"
AC_CHECK_LIB(dl,dlopen)
@@ -215,7 +231,11 @@ LIBS="$SAVELIBS"
dnl Checks for header files.
AC_HEADER_STDC
AC_HEADER_DIRENT
AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
AC_CHECK_HEADER(stddef.h,AC_DEFINE(HAVE_STDDEF_H))
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
dnl Checks for string functions.
AC_CHECK_FUNCS(strdup)
@@ -389,6 +409,11 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
fi
fi
dnl Fix "fontpath" variable...
if test "x$fontpath" = "x"; then
fontpath="$datadir/cups/fonts"
fi
dnl Setup manpage extensions...
case "$uname" in
FreeBSD* | NetBSD* | OpenBSD*)
@@ -524,6 +549,9 @@ CUPS_DOCROOT='${exec_prefix}/share/doc/cups'
AC_DEFINE_UNQUOTED(CUPS_DOCROOT, "$exec_prefix/share/doc/cups")
AC_SUBST(CUPS_DOCROOT)
dnl Set the CUPS_FONTPATH directory...
AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$fontpath")
AC_OUTPUT(Makedefs cups.sh)
dnl
+13 -11
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.list 1277 2000-08-04 14:53:49Z mike $"
# "$Id: cups.list 1368 2000-09-14 18:04:10Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
@@ -28,7 +28,7 @@
%vendor Easy Software Products
%license LICENSE.txt
%readme README.txt
%version 1.1.2
%version 1.1.3
%incompat printpro
%system all
@@ -311,10 +311,12 @@ f 0644 root sys $SERVERROOT/mime.types conf/mime.types
c 0644 root sys $SERVERROOT/printers.conf conf/printers.conf
%system linux
# Linux version needs PAM...
%requires /lib/libpam.so.0
d 0555 root sys $PAMDIR -
c 0644 root sys $PAMDIR/cups data/cups.pam
c 0644 root sys $PAMDIR/cups.suse data/cups.suse
%install if test -f /lib/security/pam_unix.so; then
%install mv $PAMDIR/cups.suse $PAMDIR/cups
%install fi
%system all
# Developer files
@@ -444,7 +446,7 @@ d 0555 root sys $MANDIR/man5 -
d 0555 root sys $MANDIR/man1m -
f 0444 root sys $MANDIR/man1m/accept.1m man/accept.man
l 0444 root sys $MANDIR/man1m/reject.1m accept.man
l 0444 root sys $MANDIR/man1m/reject.1m accept.1m
f 0444 root sys $MANDIR/man1/backend.1 man/backend.man
f 0444 root sys $MANDIR/man1/classes.conf.5 man/classes.conf.man
f 0444 root sys $MANDIR/man1m/cups-lpd.1m man/cups-lpd.man
@@ -452,7 +454,7 @@ f 0444 root sys $MANDIR/man1m/cups-polld.1m man/cups-polld.man
f 0444 root sys $MANDIR/man1m/cupsd.1m man/cupsd.man
f 0444 root sys $MANDIR/man5/cupsd.conf.5 man/cupsd.conf.man
f 0444 root sys $MANDIR/man1m/enable.1m man/enable.man
l 0444 root sys $MANDIR/man1m/disable.1m enable.man
l 0444 root sys $MANDIR/man1m/disable.1m enable.1m
f 0444 root sys $MANDIR/man1/filter.1 man/filter.man
f 0444 root sys $MANDIR/man1m/lpadmin.1m man/lpadmin.man
f 0444 root sys $MANDIR/man1m/lpc.1m man/lpc.man
@@ -464,7 +466,7 @@ f 0444 root sys $MANDIR/man1/lprm.1 man/lprm.man
f 0444 root sys $MANDIR/man1/lpr.1 man/lpr.man
f 0444 root sys $MANDIR/man1/lpstat.1 man/lpstat.man
f 0444 root sys $MANDIR/man1/lp.1 man/lp.man
l 0444 root sys $MANDIR/man1/cancel.1 lp.man
l 0444 root sys $MANDIR/man1/cancel.1 lp.1
f 0444 root sys $MANDIR/man5/mime.convs.5 man/mime.convs.man
f 0444 root sys $MANDIR/man5/mime.types.5 man/mime.types.man
f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
@@ -475,7 +477,7 @@ d 0555 root sys $MANDIR/man5 -
d 0555 root sys $MANDIR/man8 -
f 0444 root sys $MANDIR/man8/accept.8 man/accept.man
l 0444 root sys $MANDIR/man8/reject.8 accept.man
l 0444 root sys $MANDIR/man8/reject.8 accept.8
f 0444 root sys $MANDIR/man1/backend.1 man/backend.man
f 0444 root sys $MANDIR/man1/classes.conf.5 man/classes.conf.man
f 0444 root sys $MANDIR/man8/cups-lpd.8 man/cups-lpd.man
@@ -483,7 +485,7 @@ f 0444 root sys $MANDIR/man8/cups-polld.8 man/cups-polld.man
f 0444 root sys $MANDIR/man8/cupsd.8 man/cupsd.man
f 0444 root sys $MANDIR/man5/cupsd.conf.5 man/cupsd.conf.man
f 0444 root sys $MANDIR/man8/enable.8 man/enable.man
l 0444 root sys $MANDIR/man8/disable.8 enable.man
l 0444 root sys $MANDIR/man8/disable.8 enable.8
f 0444 root sys $MANDIR/man1/filter.1 man/filter.man
f 0444 root sys $MANDIR/man8/lpadmin.8 man/lpadmin.man
f 0444 root sys $MANDIR/man8/lpc.8 man/lpc.man
@@ -495,7 +497,7 @@ f 0444 root sys $MANDIR/man1/lprm.1 man/lprm.man
f 0444 root sys $MANDIR/man1/lpr.1 man/lpr.man
f 0444 root sys $MANDIR/man1/lpstat.1 man/lpstat.man
f 0444 root sys $MANDIR/man1/lp.1 man/lp.man
l 0444 root sys $MANDIR/man1/cancel.1 lp.man
l 0444 root sys $MANDIR/man1/cancel.1 lp.1
f 0444 root sys $MANDIR/man5/mime.convs.5 man/mime.convs.man
f 0444 root sys $MANDIR/man5/mime.types.5 man/mime.types.man
f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
@@ -505,5 +507,5 @@ f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
i 0555 root sys cups cups.sh
#
# End of "$Id: cups.list 1277 2000-08-04 14:53:49Z mike $".
# End of "$Id: cups.list 1368 2000-09-14 18:04:10Z mike $".
#
+1 -1
Ver Arquivo
@@ -6,7 +6,7 @@
#
# Linux chkconfig stuff:
#
# chkconfig: 02 99 00
# chkconfig: 0235 99 00
# description: Startup/shutdown script for the Common UNIX \
# Printing System (CUPS).
#
+42 -21
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.spec 1277 2000-08-04 14:53:49Z mike $"
# "$Id: cups.spec 1339 2000-09-06 12:38:12Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
@@ -26,16 +26,16 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.1.2
Version: 1.1.3
Release: 0
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/%version/cups-%version-source.tar.gz
Source: ftp://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.gz
Url: http://www.cups.org
Packager: Michael Sweet <mike@easysw.com>
Vendor: Easy Software Products
# use buildroot so as not to disturb the version already installed
BuildRoot: /tmp/rpmbuild
BuildRoot: /var/tmp/%{name}-root
Conflicts: lpr
%package devel
@@ -67,6 +67,9 @@ make
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc0.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc3.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc5.d
make prefix=$RPM_BUILD_ROOT \
exec_prefix=$RPM_BUILD_ROOT/usr \
@@ -120,34 +123,52 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/etc/cups/certs
%config /etc/cups/classes.conf
%config /etc/cups/client.conf
%config /etc/cups/cupsd.conf
/etc/cups/interfaces
%dir /etc/cups
%config /etc/cups/*.conf
%dir /etc/cups/certs
%dir /etc/cups/interfaces
/etc/cups/mime.types
/etc/cups/mime.convs
/etc/cups/ppd
%config /etc/cups/printers.conf
%dir /etc/cups/ppd
%dir /etc/pam.d
/etc/pam.d/*
/etc/init.d/*
/etc/rc0.d/*
/etc/rc2.d/*
/etc/rc.d/*
# RC dirs are a pain under Linux... Uncomment the appropriate ones if you
# don't use Red Hat or Mandrake...
/etc/rc.d/init.d/*
/etc/rc.d/rc0.d/*
/etc/rc.d/rc3.d/*
/etc/rc.d/rc5.d/*
#/etc/init.d/*
#/etc/rc0.d/*
#/etc/rc3.d/*
#/etc/rc5.d/*
#/sbin/rc.d/*
#/sbin/rc.d/rc0.d/*
#/sbin/rc.d/rc3.d/*
#/sbin/rc.d/rc5.d/*
/usr/bin/*
/usr/lib/*.so*
%dir /usr/lib/cups
/usr/lib/cups/*
/usr/man/*
/usr/sbin/*
/usr/share/*
/usr/lib/cups/*
%attr(0700,lp,root) /var/spool/cups
%attr(1700,lp,root) /var/spool/cups/tmp
/sbin/init.d/*
%dir /usr/share/cups
/usr/share/cups/*
%dir /usr/share/locale
/usr/share/locale/*
%attr(0700,lp,root) %dir /var/spool/cups
%attr(1700,lp,root) %dir/var/spool/cups/tmp
%files devel
%dir /usr/include/cups
/usr/include/cups/*
/usr/lib/*.a
#
# End of "$Id: cups.spec 1277 2000-08-04 14:53:49Z mike $".
# End of "$Id: cups.spec 1339 2000-09-06 12:38:12Z mike $".
#
+3 -3
Ver Arquivo
@@ -59,7 +59,7 @@ all: $(TARGETS)
#
clean:
$(RM) $(OBJS) $(TARGETS)
$(RM) $(OBJS) $(TARGETS) `basename $(LIBCUPS) .2`
#
@@ -76,8 +76,8 @@ install: all
$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
if test $(LIBCUPS) != "libcups.a" -a $(LIBCUPS) != "libcups.la"; then \
$(INSTALL_LIB) libcups.a $(LIBDIR); \
$(RM) `basename $(LIBCUPS) .2`; \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .2`; \
$(RM) `basename $(LIBDIR)/$(LIBCUPS) .2`; \
$(LN) $(LIBCUPS) `basename $(LIBDIR)/$(LIBCUPS) .2`; \
fi
+9 -3
Ver Arquivo
@@ -29,8 +29,8 @@
* Include necessary headers...
*/
# include <cups/ipp.h>
# include <cups/ppd.h>
# include "ipp.h"
# include "ppd.h"
/*
@@ -46,7 +46,7 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 1.0100
# define CUPS_VERSION 1.0103
# define CUPS_DATE_ANY -1
@@ -75,6 +75,7 @@ enum /* Not a typedef'd enum so we can OR */
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_DEFAULT = 0x20000, /* Default printer on network */
CUPS_PRINTER_OPTIONS = 0xfffc /* ~(CLASS | REMOTE | IMPLICIT) */
};
@@ -125,6 +126,8 @@ extern void cupsSetDests(int num_dests, cups_dest_t *dests);
extern int cupsAddOption(const char *name, const char *value,
int num_options, cups_option_t **options);
extern void cupsEncodeOptions(ipp_t *ipp, int num_options,
cups_option_t *options);
extern void cupsFreeOptions(int num_options, cups_option_t *options);
extern const char *cupsGetOption(const char *name, int num_options,
cups_option_t *options);
@@ -135,6 +138,9 @@ extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
extern const char *cupsGetPassword(const char *prompt);
extern const char *cupsServer(void);
extern void cupsSetPasswordCB(const char *(*cb)(const char *));
extern void cupsSetServer(const char *server);
extern void cupsSetUser(const char *user);
extern const char *cupsUser(void);
# ifdef __cplusplus
+34
Ver Arquivo
@@ -156,6 +156,17 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
for (i = 0; i < count; i ++)
if (section != PPD_ORDER_EXIT && section != PPD_ORDER_JCL)
{
/*
* Send wrapper commands to prevent printer errors for unsupported
* options...
*/
if (fputs("[{\n", fp) < 0)
{
free(choices);
return (-1);
}
/*
* Send DSC comments with option...
*/
@@ -210,6 +221,12 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
free(choices);
return (-1);
}
if (fputs("} stopped cleartomark\n", fp) < 0)
{
free(choices);
return (-1);
}
}
else if (fputs(choices[i]->code, fp) < 0)
{
@@ -243,6 +260,17 @@ ppdEmitFd(ppd_file_t *ppd, /* I - PPD file record */
for (i = 0; i < count; i ++)
if (section != PPD_ORDER_EXIT && section != PPD_ORDER_JCL)
{
/*
* Send wrapper commands to prevent printer errors for unsupported
* options...
*/
if (write(fd, "[{\n", 3) < 1)
{
free(choices);
return (-1);
}
/*
* Send DSC comments with option...
*/
@@ -267,6 +295,12 @@ ppdEmitFd(ppd_file_t *ppd, /* I - PPD file record */
free(choices);
return (-1);
}
if (write(fd, "} stopped cleartomark\n", 22) < 1)
{
free(choices);
return (-1);
}
}
else if (write(fd, choices[i]->code, strlen(choices[i]->code)) < 1)
{
+1 -1
Ver Arquivo
@@ -47,7 +47,7 @@
# include <netinet/tcp.h>
# endif /* WIN32 || __EMX__ */
# include <cups/md5.h>
# include "md5.h"
/*
+25 -4
Ver Arquivo
@@ -44,6 +44,7 @@
* ippNew() - Allocate a new IPP request.
* ippPort() - Return the default IPP port number.
* ippRead() - Read data for an IPP request.
* ippSetPort() - Set the default port number.
* ippTimeToDate() - Convert from UNIX time to RFC 1903 format.
* ippWrite() - Write data for an IPP request.
* _ipp_add_attr() - Add a new attribute to the request.
@@ -65,6 +66,13 @@
#include <ctype.h>
/*
* Local globals...
*/
static int ipp_port = 0;
/*
* Local functions...
*/
@@ -1577,12 +1585,25 @@ ippPort(void)
struct servent *port; /* Port number info */
if ((server_port = getenv("IPP_PORT")) != NULL)
return (atoi(server_port));
if (ipp_port)
return (ipp_port);
else if ((server_port = getenv("IPP_PORT")) != NULL)
return (ipp_port = atoi(server_port));
else if ((port = getservbyname("ipp", NULL)) == NULL)
return (IPP_PORT);
return (ipp_port = IPP_PORT);
else
return (ntohs(port->s_port));
return (ipp_port = ntohs(port->s_port));
}
/*
* 'ippSetPort()' - Set the default port number.
*/
void
ippSetPort(int p) /* I - Port number to use */
{
ipp_port = p;
}
+2 -1
Ver Arquivo
@@ -30,7 +30,7 @@
* Include necessary headers...
*/
# include <cups/http.h>
# include "http.h"
/*
@@ -342,6 +342,7 @@ extern ipp_state_t ippRead(http_t *http, ipp_t *ipp);
extern const ipp_uchar_t *ippTimeToDate(time_t t);
extern ipp_state_t ippWrite(http_t *http, ipp_t *ipp);
extern int ippPort(void);
extern void ippSetPort(int p);
extern ipp_attribute_t *_ipp_add_attr(ipp_t *, int);
extern void _ipp_free_attr(ipp_attribute_t *);
+275 -5
Ver Arquivo
@@ -23,11 +23,12 @@
*
* Contents:
*
* cupsAddOption() - Add an option to an option array.
* cupsFreeOptions() - Free all memory used by options.
* cupsGetOption() - Get an option value.
* cupsParseOptions() - Parse options from a command-line argument.
* cupsMarkOptions() - Mark command-line options in a PPD file.
* cupsAddOption() - Add an option to an option array.
* cupsEncodeOptions() - Encode printer options into IPP attributes.
* cupsFreeOptions() - Free all memory used by options.
* cupsGetOption() - Get an option value.
* cupsParseOptions() - Parse options from a command-line argument.
* cupsMarkOptions() - Mark command-line options in a PPD file.
*/
/*
@@ -38,6 +39,7 @@
#include <stdlib.h>
#include <ctype.h>
#include "string.h"
#include "debug.h"
/*
@@ -100,6 +102,274 @@ cupsAddOption(const char *name, /* I - Name of option */
}
/*
* 'cupsEncodeOptions()' - Encode printer options into IPP attributes.
*/
void
cupsEncodeOptions(ipp_t *ipp, /* I - Request to add to */
int num_options, /* I - Number of options */
cups_option_t *options) /* I - Options */
{
int i, j; /* Looping vars */
int count; /* Number of values */
int n; /* Attribute value */
char *s, /* Pointer into option value */
*val, /* Pointer to option value */
*copy, /* Copy of option value */
*sep; /* Option separator */
ipp_attribute_t *attr; /* IPP job-id attribute */
DEBUG_printf(("cupsEncodeOptions(%p, %d, %p)\n", ipp, num_options, options));
if (ipp == NULL || num_options < 1 || options == NULL)
return;
/*
* Handle the document format stuff first...
*/
if ((val = (char *)cupsGetOption("document-format", num_options, options)) != NULL)
ippAddString(ipp, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, val);
else if (cupsGetOption("raw", num_options, options))
ippAddString(ipp, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(ipp, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
/*
* Then add all other options...
*/
for (i = 0; i < num_options; i ++)
{
/*
* Skip document format options - handled above...
*/
if (strcasecmp(options[i].name, "raw") == 0 ||
strcasecmp(options[i].name, "document-format") == 0)
continue;
/*
* Count the number of values...
*/
for (count = 1, sep = options[i].value;
(sep = strchr(sep + 1, ',')) != NULL;
count ++);
DEBUG_printf(("cupsEncodeOptions: option = \'%s\', count = %d\n",
options[i].name, count));
if ((attr = _ipp_add_attr(ipp, count)) == NULL)
{
/*
* Ran out of memory!
*/
DEBUG_puts("cupsEncodeOptions: Ran out of memory for attributes!");
return;
}
attr->group_tag = IPP_TAG_JOB;
if ((attr->name = strdup(options[i].name)) == NULL)
{
/*
* Ran out of memory!
*/
DEBUG_puts("cupsEncodeOptions: Ran out of memory for name!");
return;
}
if (count > 1)
{
/*
* Make a copy of the value we can fiddle with...
*/
if ((copy = strdup(options[i].value)) == NULL)
{
/*
* Ran out of memory!
*/
DEBUG_puts("cupsEncodeOptions: Ran out of memory for value copy!");
return;
}
val = copy;
}
else
{
/*
* Since we have a single value, use the value directly...
*/
val = options[i].value;
copy = NULL;
}
/*
* 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, option=MxN, and option=val1,val2,...,valN.
*/
if (*val == '\0')
{
/*
* Old-style System V boolean value...
*/
attr->value_tag = IPP_TAG_BOOLEAN;
if (strncasecmp(attr->name, "no", 2) == 0)
{
DEBUG_puts("cupsEncodeOptions: Added boolean false value...");
strcpy(attr->name, attr->name + 2);
attr->values[0].boolean = 0;
}
else
{
DEBUG_puts("cupsEncodeOptions: Added boolean true value...");
attr->values[0].boolean = 1;
}
}
else
{
/*
* Scan the value string for values...
*/
for (j = 0; *val != '\0'; val = sep, j ++)
{
/*
* Find the end of this value and mark it if needed...
*/
if ((sep = strchr(val, ',')) != NULL)
*sep++ = '\0';
else
sep = val + strlen(val);
/*
* See what kind of value it is...
*/
if (strcasecmp(val, "true") == 0 ||
strcasecmp(val, "on") == 0 ||
strcasecmp(val, "yes") == 0)
{
/*
* Boolean value - true...
*/
attr->value_tag = IPP_TAG_BOOLEAN;
attr->values[j].boolean = 1;
DEBUG_puts("cupsEncodeOptions: Added boolean true value...");
}
else if (strcasecmp(val, "false") == 0 ||
strcasecmp(val, "off") == 0 ||
strcasecmp(val, "no") == 0)
{
/*
* Boolean value - false...
*/
attr->value_tag = IPP_TAG_BOOLEAN;
attr->values[j].boolean = 0;
DEBUG_puts("cupsEncodeOptions: Added boolean false value...");
}
else
{
/*
* Number, range, resolution, or string...
*/
n = strtol(val, &s, 0);
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
{
/*
* String value(s)...
*/
if ((attr->values[j].string.text = strdup(val)) == NULL)
{
/*
* Ran out of memory!
*/
DEBUG_puts("cupsEncodeOptions: Ran out of memory for string!");
return;
}
attr->value_tag = IPP_TAG_NAME;
DEBUG_printf(("cupsEncodeOptions: Added string value \'%s\'...\n", val));
}
else if (*s == '-')
{
attr->value_tag = IPP_TAG_RANGE;
attr->values[j].range.lower = n;
attr->values[j].range.upper = strtol(s + 1, NULL, 0);
DEBUG_printf(("cupsEncodeOptions: Added range option value %d-%d...\n",
n, attr->values[j].range.upper));
}
else if (*s == 'x')
{
attr->value_tag = IPP_TAG_RESOLUTION;
attr->values[j].resolution.xres = n;
attr->values[j].resolution.yres = strtol(s + 1, &s, 0);
if (strcasecmp(s, "dpc") == 0)
attr->values[j].resolution.units = IPP_RES_PER_CM;
else if (strcasecmp(s, "dpi") == 0)
attr->values[j].resolution.units = IPP_RES_PER_INCH;
else
{
if ((attr->values[j].string.text = strdup(val)) == NULL)
{
/*
* Ran out of memory!
*/
DEBUG_puts("cupsEncodeOptions: Ran out of memory for string!");
return;
}
attr->value_tag = IPP_TAG_NAME;
DEBUG_printf(("cupsEncodeOptions: Added string value \'%s\'...\n", val));
continue;
}
DEBUG_printf(("cupsEncodeOptions: Adding resolution option value %s...\n",
val));
}
else
{
attr->value_tag = IPP_TAG_INTEGER;
attr->values[j].integer = n;
DEBUG_printf(("cupsEncodeOptions: Adding integer option value %d...\n", n));
}
}
}
}
}
}
/*
* 'cupsFreeOptions()' - Free all memory used by options.
*/
-39
Ver Arquivo
@@ -1028,45 +1028,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
}
else if (strcmp(keyword, "CloseGroup") == 0)
group = NULL;
else if (strcmp(keyword, "OpenSubGroup") == 0)
{
/*
* Open a new sub-group...
*/
DEBUG_printf(("group = %p, subgroup = %p\n", group, subgroup));
if (group == NULL || subgroup != NULL)
{
ppdClose(ppd);
safe_free(string);
return (NULL);
}
if (group->num_subgroups == 0)
subgroup = malloc(sizeof(ppd_group_t));
else
subgroup = realloc(group->subgroups,
(group->num_subgroups + 1) * sizeof(ppd_group_t));
if (subgroup == NULL)
{
ppdClose(ppd);
safe_free(string);
return (NULL);
}
group->subgroups = subgroup;
subgroup += group->num_subgroups;
group->num_subgroups ++;
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strncpy(subgroup->text, string, sizeof(subgroup->text) - 1);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
subgroup = NULL;
else if (strcmp(keyword, "OrderDependency") == 0 ||
strcmp(keyword, "NonUIOrderDependency") == 0)
{
+202 -105
Ver Arquivo
@@ -24,9 +24,13 @@
*
* Contents:
*
* cupsUser() - Return the current users name.
* cupsGetPassword() - Get a password from the user...
* cupsServer() - Return the hostname of the default server...
* cupsGetPassword() - Get a password from the user...
* cupsServer() - Return the hostname of the default server...
* cupsSetPasswordCB() - Set the password callback for CUPS.
* cupsSetServer() - Set the default server name...
* cupsSetUser() - Set the default user name...
* cupsUser() - Return the current users name.
* cups_get_password() - Get a password from the user...
*/
/*
@@ -34,11 +38,173 @@
*/
#include "cups.h"
#include <config.h>
#include "string.h"
#include <stdlib.h>
#include <ctype.h>
/*
* Local functions...
*/
static const char *cups_get_password(const char *prompt);
/*
* Local globals...
*/
static char cups_user[65] = "",
cups_server[256] = "";
static const char *(*cups_pwdcb)(const char *) = cups_get_password;
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return ((*cups_pwdcb)(prompt));
}
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
const char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* client.conf file */
char *server; /* Pointer to server name */
const char *home; /* Home directory of user */
static char line[1024]; /* Line from file */
/*
* First see if we have already set the server name...
*/
if (!cups_server[0])
{
/*
* Then see if the CUPS_SERVER environment variable is set...
*/
if ((server = getenv("CUPS_SERVER")) == NULL)
{
/*
* Next check to see if we have a $HOME/.cupsrc or client.conf file...
*/
if ((home = getenv("HOME")) != NULL)
{
snprintf(line, sizeof(line), "%s/.cupsrc", home);
fp = fopen(line, "r");
}
else
fp = NULL;
if (fp == NULL)
{
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
{
snprintf(line, sizeof(line), "%s/client.conf", home);
fp = fopen(line, "r");
}
else
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
}
server = "localhost";
if (fp != NULL)
{
/*
* Read the config 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 ++);
break;
}
fclose(fp);
}
}
/*
* Copy the server name over...
*/
strncpy(cups_server, server, sizeof(cups_server) - 1);
cups_server[sizeof(cups_server) - 1] = '\0';
}
return (cups_server);
}
/*
* 'cupsSetPasswordCB()' - Set the password callback for CUPS.
*/
void
cupsSetPasswordCB(const char *(*cb)(const char *)) /* I - Callback function */
{
if (cb == (const char *(*)(const char *))0)
cups_pwdcb = cups_get_password;
else
cups_pwdcb = cb;
}
/*
* 'cupsSetServer()' - Set the default server name...
*/
void
cupsSetServer(const char *server) /* I - Server name */
{
if (server)
{
strncpy(cups_server, server, sizeof(cups_server) - 1);
cups_server[sizeof(cups_server) - 1] = '\0';
}
else
cups_server[0] = '\0';
}
/*
* 'cupsSetUser()' - Set the default user name...
*/
void
cupsSetUser(const char *user) /* I - User name */
{
if (user)
{
strncpy(cups_user, user, sizeof(cups_user) - 1);
cups_user[sizeof(cups_user) - 1] = '\0';
}
else
cups_user[0] = '\0';
}
#if defined(WIN32) || defined(__EMX__)
/*
* WIN32 and OS/2 username and password stuff...
@@ -51,16 +217,19 @@
const char * /* O - User name */
cupsUser(void)
{
return ("WindowsUser");
if (!cups_user[0])
strcpy(cups_user, "WindowsUser");
return (cups_user);
}
/*
* 'cupsGetPassword()' - Get a password from the user...
* 'cups_get_password()' - Get a password from the user...
*/
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
static const char * /* O - Password */
cups_get_password(const char *prompt) /* I - Prompt string */
{
return (NULL);
}
@@ -81,121 +250,49 @@ cupsUser(void)
struct passwd *pwd; /* User/password entry */
/*
* Rewind the password file...
*/
if (!cups_user[0])
{
/*
* Rewind the password file...
*/
setpwent();
setpwent();
/*
* Lookup the password entry for the current user.
*/
/*
* Lookup the password entry for the current user.
*/
if ((pwd = getpwuid(getuid())) == NULL)
return ("unknown"); /* Unknown user! */
if ((pwd = getpwuid(getuid())) == NULL)
strcpy(cups_user, "unknown"); /* Unknown user! */
else
{
/*
* Rewind the password file again and copy the username...
*/
/*
* Rewind the password file again and return the username...
*/
setpwent();
setpwent();
strncpy(cups_user, pwd->pw_name, sizeof(cups_user) - 1);
cups_user[sizeof(cups_user) - 1] = '\0';
}
}
return (pwd->pw_name);
return (cups_user);
}
/*
* 'cupsGetPassword()' - Get a password from the user...
* 'cups_get_password()' - Get a password from the user...
*/
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
static const char * /* O - Password */
cups_get_password(const char *prompt) /* I - Prompt string */
{
return (getpass(prompt));
}
#endif /* WIN32 || __EMX__ */
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
const char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* client.conf file */
char *server; /* Pointer to server name */
const char *home; /* Home directory of user */
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 $HOME/.cupsrc or client.conf file...
*/
if ((home = getenv("HOME")) != NULL)
{
snprintf(line, sizeof(line), "%s/.cupsrc", home);
fp = fopen(line, "r");
}
else
fp = NULL;
if (fp == NULL)
{
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
{
snprintf(line, sizeof(line), "%s/client.conf", home);
fp = fopen(line, "r");
}
else
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
}
if (fp == NULL)
return ("localhost");
/*
* Read the config 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)
{
fclose(fp);
return (server);
}
}
/*
* Didn't see a ServerName line, so return "localhost"...
*/
fclose(fp);
return ("localhost");
}
/*
* End of "$Id$".
*/
+14 -148
Ver Arquivo
@@ -177,6 +177,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char prompt[1024]; /* Prompt string */
if (http == NULL || request == NULL || resource == NULL)
@@ -188,7 +189,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
return (NULL);
}
DEBUG_printf(("cupsDoFileRequest(%08x, %08s, \'%s\', \'%s\')\n",
DEBUG_printf(("cupsDoFileRequest(%p, %08s, \'%s\', \'%s\')\n",
http, request, resource, filename ? filename : "(null)"));
/*
@@ -308,10 +309,10 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
* Nope - get a password from the user...
*/
printf("Authentication required for %s on %s...\n", cupsUser(),
http->hostname);
snprintf(prompt, sizeof(prompt), "Password for %s on %s? ", cupsUser(),
http->hostname);
if ((password = cupsGetPassword("UNIX Password: ")) != NULL)
if ((password = cupsGetPassword(prompt)) != NULL)
{
/*
* Got a password; send it to the server...
@@ -687,6 +688,7 @@ cupsGetPPD(const char *name) /* I - Printer name */
plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
http_status_t status; /* HTTP status from server */
char prompt[1024]; /* Prompt string */
static char filename[HTTP_MAX_URI]; /* Local filename */
@@ -831,10 +833,10 @@ cupsGetPPD(const char *name) /* I - Printer name */
* Nope, get a password from the user...
*/
printf("Authentication required for %s on %s...\n", cupsUser(),
cups_server->hostname);
snprintf(prompt, sizeof(prompt), "Password for %s on %s? ", cupsUser(),
cups_server->hostname);
if ((password = cupsGetPassword("UNIX Password: ")) != NULL)
if ((password = cupsGetPassword(prompt)) != NULL)
{
/*
* Got a password; send it to the server...
@@ -1028,7 +1030,7 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
int num_options,/* I - Number of options */
cups_option_t *options) /* I - Options */
{
DEBUG_printf(("cupsPrintFile(\'%s\', \'%s\', %d, %08x)\n",
DEBUG_printf(("cupsPrintFile(\'%s\', \'%s\', %d, %p)\n",
printer, filename, num_options, options));
return (cupsPrintFiles(name, 1, &filename, title, num_options, options));
@@ -1048,9 +1050,6 @@ cupsPrintFiles(const char *name, /* I - Printer or class name */
cups_option_t *options) /* I - Options */
{
int i; /* Looping var */
int n, n2; /* Attribute values */
char *option, /* Name of option */
*s; /* Pointer into option value */
const char *val; /* Pointer to option value */
ipp_t *request; /* IPP request */
ipp_t *response; /* IPP response */
@@ -1062,7 +1061,7 @@ cupsPrintFiles(const char *name, /* I - Printer or class name */
int jobid; /* New job ID */
DEBUG_printf(("cupsPrintFiles(\'%s\', %d, %p, %d, %08x)\n",
DEBUG_printf(("cupsPrintFiles(\'%s\', %d, %p, %d, %p)\n",
printer, num_files, files, num_options, options));
if (name == NULL || num_files < 1 || files == NULL)
@@ -1106,20 +1105,6 @@ cupsPrintFiles(const char *name, /* I - Printer or class name */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
/*
* Handle raw print files...
*/
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else if ((val = cupsGetOption("document-format", num_options, options)) != NULL)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, val);
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
@@ -1127,129 +1112,10 @@ cupsPrintFiles(const char *name, /* I - Printer or class name */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
/*
* Then add all options on the command-line...
* Then add all options...
*/
for (i = 0; i < num_options; i ++)
{
/*
* Skip the "raw" option - handled above...
*/
if (strcasecmp(options[i].name, "raw") == 0 ||
strcasecmp(options[i].name, "document-format") == 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 (strncasecmp(option, "no", 2) == 0)
{
option += 2;
n = 0;
}
else
n = 1;
s = "";
}
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
{
/*
* String value(s)...
*/
DEBUG_printf(("cupsPrintFile: Adding string option \'%s\' with value \'%s\'...\n",
option, val));
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);
DEBUG_printf(("cupsPrintFile: Adding range option \'%s\' with value %d-%d...\n",
option, n, n2));
}
else if (*s == 'x')
{
n2 = strtol(s + 1, &s, 0);
if (strcasecmp(s, "dpc") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_CM, n, n2);
else if (strcasecmp(s, "dpi") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_INCH, n, n2);
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
DEBUG_printf(("cupsPrintFile: Adding resolution option \'%s\' with value %s...\n",
option, val));
}
else
{
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
DEBUG_printf(("cupsPrintFile: Adding integer option \'%s\' with value %d...\n",
option, n));
}
}
else
{
/*
* Boolean value...
*/
DEBUG_printf(("cupsPrintFile: Adding boolean option \'%s\' with value %d...\n",
option, n));
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
}
}
cupsEncodeOptions(request, num_options, options);
/*
* Do the request...
@@ -1411,7 +1277,7 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
* Format a string using the hex time values...
*/
snprintf(filename, len, "%s/%08x%05x", tmpdir,
snprintf(filename, len, "%s/%p%05x", tmpdir,
curtime.tv_sec, curtime.tv_usec);
/*
+5 -1
Ver Arquivo
@@ -94,7 +94,11 @@ install:
-if test "$(PAMDIR)" != ""; then \
$(MKDIR) $(PAMDIR); \
$(CHMOD) ugo+rx $(PAMDIR); \
$(INSTALL_DATA) cups.pam $(PAMDIR)/cups; \
if test -f /lib/security/pam_unix.so; then \
$(INSTALL_DATA) cups.suse $(PAMDIR)/cups; \
else \
$(INSTALL_DATA) cups.pam $(PAMDIR)/cups; \
fi \
fi
+33 -25
Ver Arquivo
@@ -22,28 +22,28 @@
% to third parties or copied or duplicated in any form, in whole or
% in part, without the prior written consent of Easy Software Products.
%
/CENTER \{ % Draw centered text
/CENTER { % Draw centered text
% (name) CENTER -
dup stringwidth pop % Get the width of the string
0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
show % Show the string
} bind def
/RIGHT \{ % Draw right-justified text
/RIGHT { % Draw right-justified text
% (name) RIGHT -
dup stringwidth pop % Get the width of the string
neg 0 rmoveto % Shift left the entire distance
show % Show the string
} bind def
/NUMBER \{ % Draw a number
/NUMBER { % Draw a number
% power n NUMBER -
1 index 1 eq \{ % power == 1?
1 index 1 eq { % power == 1?
round cvi exch pop % Convert "n" to integer
} \{
} {
1 index mul round exch div % Truncate extra decimal places
} ifelse
100 string cvs show % Convert to a string and show it...
} bind def
/CUPSLOGO \{ % Draw the CUPS logo
/CUPSLOGO { % Draw the CUPS logo
% height CUPSLOGO
% Start with a big C...
/Helvetica findfont 1 index scalefont setfont
@@ -61,14 +61,14 @@
dup 1.2 mul moveto
(System) show
} bind def
/ESPLOGO \{ % Draw the ESP logo
/ESPLOGO { % Draw the ESP logo
% height ESPLOGO
% Compute the size of the logo...
0 0
2 index 1.5 mul 3 index
% Do the "metallic" fill from 10% black to 40% black...
1 -0.001 0 \{
1 -0.001 0 {
dup % loopval
-0.15 mul % loopval * -0.15
0.9 add % 0.9 - loopval * 0.15
@@ -151,14 +151,20 @@ gsave
/pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
/pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
/boxWidth % width of text box
pageWidth pageHeight lt
{ pageWidth 54 mul }
{ pageHeight 42 mul }
ifelse def
newpath % Clear bounding path
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
% Offset page to account for lower-left margin...
pageLeft 72 mul
@@ -170,28 +176,30 @@ gsave
pageWidth 36 mul % Center of page
pageHeight 72 mul % Top of page
pageWidth -9 mul add % - 1 line
pageWidth -7 mul add % - 2 lines
moveto % Position text
bigFont setfont % Font
(Classified) CENTER % Show text centered
pageWidth 36 mul % Center of page
pageWidth 8 mul % Bottom of page
pageHeight 6 mul % Bottom of page
moveto % Position text
bigFont setfont % Font
(Classified) CENTER % Show text centered
% Job information box...
pageWidth 18 mul 9 add % x = pageWidth * 1/4 * 72 + 9
pageHeight 27 mul 9 sub % y = pageHeight * 3/8 * 72 - 9
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
0.5 setgray rectfill % Draw a shadow
pageWidth 18 mul % x = pageWidth * 1/4 * 72
pageHeight 27 mul % y = pageHeight * 3/8 * 72
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul % x = pageWidth * 1/2 * 72
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul % y = pageHeight * 1/4 * 72
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
4 copy 1 setgray rectfill % Clear the box to white
0 setgray rectstroke % Draw a black box around it...
@@ -201,7 +209,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 4 mul add % y += 2 lines
pageHeight 5 mul add % y += 2 lines
2 copy % Copy X & Y
moveto
(Job ID: ) RIGHT
@@ -210,7 +218,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 1 mul add % y += 1 line
pageHeight 2 mul add % y += 1 line
2 copy % Copy X & Y
moveto
(Title: ) RIGHT
@@ -219,7 +227,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -2 mul add % y -= 1 line
pageHeight -1 mul add % y -= 1 line
2 copy % Copy X & Y
moveto
(Requesting User: ) RIGHT
@@ -228,7 +236,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -5 mul add % y -= 2 lines
pageHeight -4 mul add % y -= 2 lines
2 copy % Copy X & Y
moveto
(Billing Info: ) RIGHT
@@ -254,6 +262,6 @@ gsave
grestore
showpage
%
% End of "$Id: classified 1075 2000-05-11 20:02:21Z mike $".
% End of "$Id: classified 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+33 -25
Ver Arquivo
@@ -22,28 +22,28 @@
% to third parties or copied or duplicated in any form, in whole or
% in part, without the prior written consent of Easy Software Products.
%
/CENTER \{ % Draw centered text
/CENTER { % Draw centered text
% (name) CENTER -
dup stringwidth pop % Get the width of the string
0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
show % Show the string
} bind def
/RIGHT \{ % Draw right-justified text
/RIGHT { % Draw right-justified text
% (name) RIGHT -
dup stringwidth pop % Get the width of the string
neg 0 rmoveto % Shift left the entire distance
show % Show the string
} bind def
/NUMBER \{ % Draw a number
/NUMBER { % Draw a number
% power n NUMBER -
1 index 1 eq \{ % power == 1?
1 index 1 eq { % power == 1?
round cvi exch pop % Convert "n" to integer
} \{
} {
1 index mul round exch div % Truncate extra decimal places
} ifelse
100 string cvs show % Convert to a string and show it...
} bind def
/CUPSLOGO \{ % Draw the CUPS logo
/CUPSLOGO { % Draw the CUPS logo
% height CUPSLOGO
% Start with a big C...
/Helvetica findfont 1 index scalefont setfont
@@ -61,14 +61,14 @@
dup 1.2 mul moveto
(System) show
} bind def
/ESPLOGO \{ % Draw the ESP logo
/ESPLOGO { % Draw the ESP logo
% height ESPLOGO
% Compute the size of the logo...
0 0
2 index 1.5 mul 3 index
% Do the "metallic" fill from 10% black to 40% black...
1 -0.001 0 \{
1 -0.001 0 {
dup % loopval
-0.15 mul % loopval * -0.15
0.9 add % 0.9 - loopval * 0.15
@@ -151,14 +151,20 @@ gsave
/pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
/pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
/boxWidth % width of text box
pageWidth pageHeight lt
{ pageWidth 54 mul }
{ pageHeight 42 mul }
ifelse def
newpath % Clear bounding path
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
% Offset page to account for lower-left margin...
pageLeft 72 mul
@@ -170,28 +176,30 @@ gsave
pageWidth 36 mul % Center of page
pageHeight 72 mul % Top of page
pageWidth -9 mul add % - 1 line
pageWidth -7 mul add % - 2 lines
moveto % Position text
bigFont setfont % Font
(Confidential) CENTER % Show text centered
pageWidth 36 mul % Center of page
pageWidth 8 mul % Bottom of page
pageHeight 6 mul % Bottom of page
moveto % Position text
bigFont setfont % Font
(Confidential) CENTER % Show text centered
% Job information box...
pageWidth 18 mul 9 add % x = pageWidth * 1/4 * 72 + 9
pageHeight 27 mul 9 sub % y = pageHeight * 3/8 * 72 - 9
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
0.5 setgray rectfill % Draw a shadow
pageWidth 18 mul % x = pageWidth * 1/4 * 72
pageHeight 27 mul % y = pageHeight * 3/8 * 72
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul % x = pageWidth * 1/2 * 72
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul % y = pageHeight * 1/4 * 72
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
4 copy 1 setgray rectfill % Clear the box to white
0 setgray rectstroke % Draw a black box around it...
@@ -201,7 +209,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 4 mul add % y += 2 lines
pageHeight 5 mul add % y += 2 lines
2 copy % Copy X & Y
moveto
(Job ID: ) RIGHT
@@ -210,7 +218,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 1 mul add % y += 1 line
pageHeight 2 mul add % y += 1 line
2 copy % Copy X & Y
moveto
(Title: ) RIGHT
@@ -219,7 +227,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -2 mul add % y -= 1 line
pageHeight -1 mul add % y -= 1 line
2 copy % Copy X & Y
moveto
(Requesting User: ) RIGHT
@@ -228,7 +236,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -5 mul add % y -= 2 lines
pageHeight -4 mul add % y -= 2 lines
2 copy % Copy X & Y
moveto
(Billing Info: ) RIGHT
@@ -254,6 +262,6 @@ gsave
grestore
showpage
%
% End of "$Id: confidential 1075 2000-05-11 20:02:21Z mike $".
% End of "$Id: confidential 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+2
Ver Arquivo
@@ -0,0 +1,2 @@
auth required /lib/security/pam_unix.so nullok shadow
account required /lib/security/pam_unix.so
+33 -25
Ver Arquivo
@@ -22,28 +22,28 @@
% to third parties or copied or duplicated in any form, in whole or
% in part, without the prior written consent of Easy Software Products.
%
/CENTER \{ % Draw centered text
/CENTER { % Draw centered text
% (name) CENTER -
dup stringwidth pop % Get the width of the string
0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
show % Show the string
} bind def
/RIGHT \{ % Draw right-justified text
/RIGHT { % Draw right-justified text
% (name) RIGHT -
dup stringwidth pop % Get the width of the string
neg 0 rmoveto % Shift left the entire distance
show % Show the string
} bind def
/NUMBER \{ % Draw a number
/NUMBER { % Draw a number
% power n NUMBER -
1 index 1 eq \{ % power == 1?
1 index 1 eq { % power == 1?
round cvi exch pop % Convert "n" to integer
} \{
} {
1 index mul round exch div % Truncate extra decimal places
} ifelse
100 string cvs show % Convert to a string and show it...
} bind def
/CUPSLOGO \{ % Draw the CUPS logo
/CUPSLOGO { % Draw the CUPS logo
% height CUPSLOGO
% Start with a big C...
/Helvetica findfont 1 index scalefont setfont
@@ -61,14 +61,14 @@
dup 1.2 mul moveto
(System) show
} bind def
/ESPLOGO \{ % Draw the ESP logo
/ESPLOGO { % Draw the ESP logo
% height ESPLOGO
% Compute the size of the logo...
0 0
2 index 1.5 mul 3 index
% Do the "metallic" fill from 10% black to 40% black...
1 -0.001 0 \{
1 -0.001 0 {
dup % loopval
-0.15 mul % loopval * -0.15
0.9 add % 0.9 - loopval * 0.15
@@ -151,14 +151,20 @@ gsave
/pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
/pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
/boxWidth % width of text box
pageWidth pageHeight lt
{ pageWidth 54 mul }
{ pageHeight 42 mul }
ifelse def
newpath % Clear bounding path
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
% Offset page to account for lower-left margin...
pageLeft 72 mul
@@ -170,28 +176,30 @@ gsave
pageWidth 36 mul % Center of page
pageHeight 72 mul % Top of page
pageWidth -9 mul add % - 1 line
pageWidth -7 mul add % - 2 lines
moveto % Position text
bigFont setfont % Font
(Secret) CENTER % Show text centered
pageWidth 36 mul % Center of page
pageWidth 8 mul % Bottom of page
pageHeight 6 mul % Bottom of page
moveto % Position text
bigFont setfont % Font
(Secret) CENTER % Show text centered
% Job information box...
pageWidth 18 mul 9 add % x = pageWidth * 1/4 * 72 + 9
pageHeight 27 mul 9 sub % y = pageHeight * 3/8 * 72 - 9
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
0.5 setgray rectfill % Draw a shadow
pageWidth 18 mul % x = pageWidth * 1/4 * 72
pageHeight 27 mul % y = pageHeight * 3/8 * 72
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul % x = pageWidth * 1/2 * 72
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul % y = pageHeight * 1/4 * 72
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
4 copy 1 setgray rectfill % Clear the box to white
0 setgray rectstroke % Draw a black box around it...
@@ -201,7 +209,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 4 mul add % y += 2 lines
pageHeight 5 mul add % y += 2 lines
2 copy % Copy X & Y
moveto
(Job ID: ) RIGHT
@@ -210,7 +218,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 1 mul add % y += 1 line
pageHeight 2 mul add % y += 1 line
2 copy % Copy X & Y
moveto
(Title: ) RIGHT
@@ -219,7 +227,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -2 mul add % y -= 1 line
pageHeight -1 mul add % y -= 1 line
2 copy % Copy X & Y
moveto
(Requesting User: ) RIGHT
@@ -228,7 +236,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -5 mul add % y -= 2 lines
pageHeight -4 mul add % y -= 2 lines
2 copy % Copy X & Y
moveto
(Billing Info: ) RIGHT
@@ -254,6 +262,6 @@ gsave
grestore
showpage
%
% End of "$Id: secret 1075 2000-05-11 20:02:21Z mike $".
% End of "$Id: secret 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+31 -39
Ver Arquivo
@@ -22,28 +22,28 @@
% to third parties or copied or duplicated in any form, in whole or
% in part, without the prior written consent of Easy Software Products.
%
/CENTER \{ % Draw centered text
/CENTER { % Draw centered text
% (name) CENTER -
dup stringwidth pop % Get the width of the string
0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
show % Show the string
} bind def
/RIGHT \{ % Draw right-justified text
/RIGHT { % Draw right-justified text
% (name) RIGHT -
dup stringwidth pop % Get the width of the string
neg 0 rmoveto % Shift left the entire distance
show % Show the string
} bind def
/NUMBER \{ % Draw a number
/NUMBER { % Draw a number
% power n NUMBER -
1 index 1 eq \{ % power == 1?
1 index 1 eq { % power == 1?
round cvi exch pop % Convert "n" to integer
} \{
} {
1 index mul round exch div % Truncate extra decimal places
} ifelse
100 string cvs show % Convert to a string and show it...
} bind def
/CUPSLOGO \{ % Draw the CUPS logo
/CUPSLOGO { % Draw the CUPS logo
% height CUPSLOGO
% Start with a big C...
/Helvetica findfont 1 index scalefont setfont
@@ -61,14 +61,14 @@
dup 1.2 mul moveto
(System) show
} bind def
/ESPLOGO \{ % Draw the ESP logo
/ESPLOGO { % Draw the ESP logo
% height ESPLOGO
% Compute the size of the logo...
0 0
2 index 1.5 mul 3 index
% Do the "metallic" fill from 10% black to 40% black...
1 -0.001 0 \{
1 -0.001 0 {
dup % loopval
-0.15 mul % loopval * -0.15
0.9 add % 0.9 - loopval * 0.15
@@ -151,47 +151,39 @@ gsave
/pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
/pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
/boxWidth % width of text box
pageWidth pageHeight lt
{ pageWidth 54 mul }
{ pageHeight 42 mul }
ifelse def
newpath % Clear bounding path
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
% Offset page to account for lower-left margin...
pageLeft 72 mul
pageBottom 72 mul
translate
% Draw the label at the top and bottom...
0 setgray % Color
pageWidth 36 mul % Center of page
pageHeight 72 mul % Top of page
pageWidth -9 mul add % - 1 line
moveto % Position text
bigFont setfont % Font
(Banner) CENTER % Show text centered
pageWidth 36 mul % Center of page
pageWidth 8 mul % Bottom of page
moveto % Position text
bigFont setfont % Font
(Banner) CENTER % Show text centered
% Job information box...
pageWidth 18 mul 9 add % x = pageWidth * 1/4 * 72 + 9
pageHeight 27 mul 9 sub % y = pageHeight * 3/8 * 72 - 9
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
0.5 setgray rectfill % Draw a shadow
pageWidth 18 mul % x = pageWidth * 1/4 * 72
pageHeight 27 mul % y = pageHeight * 3/8 * 72
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul % x = pageWidth * 1/2 * 72
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul % y = pageHeight * 1/4 * 72
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
4 copy 1 setgray rectfill % Clear the box to white
0 setgray rectstroke % Draw a black box around it...
@@ -201,7 +193,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 4 mul add % y += 2 lines
pageHeight 5 mul add % y += 2 lines
2 copy % Copy X & Y
moveto
(Job ID: ) RIGHT
@@ -210,7 +202,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 1 mul add % y += 1 line
pageHeight 2 mul add % y += 1 line
2 copy % Copy X & Y
moveto
(Title: ) RIGHT
@@ -219,7 +211,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -2 mul add % y -= 1 line
pageHeight -1 mul add % y -= 1 line
2 copy % Copy X & Y
moveto
(Requesting User: ) RIGHT
@@ -228,7 +220,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -5 mul add % y -= 2 lines
pageHeight -4 mul add % y -= 2 lines
2 copy % Copy X & Y
moveto
(Billing Info: ) RIGHT
@@ -254,6 +246,6 @@ gsave
grestore
showpage
%
% End of "$Id: standard 1075 2000-05-11 20:02:21Z mike $".
% End of "$Id: standard 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+34 -27
Ver Arquivo
@@ -213,15 +213,22 @@ gsave
/yResolution exch abs def % yResolution = abs(yres)
/xResolution exch abs def % xResolution = abs(xres)
% Figure out the sizes of things...
/wheelSize % size of wheels
pageWidth pageHeight lt
{ pageWidth 9 mul }
{ pageHeight 7 mul }
ifelse def
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
/smallFont /Times-Roman findfont % smallFont = Times-Roman
pageWidth 1.5 mul scalefont def % size = pageWidth * 1.5 (nominally 13)
pageHeight scalefont def % size = pageHeight (nominally 11)
% Offset page to account for lower-left margin...
pageLeft 72 mul
@@ -239,7 +246,7 @@ gsave
translate
% Size the wheel...
pageWidth 9 mul % radius = pageWidth * 1/8 * 72
wheelSize
% Draw the colors...
dup (C) exch 0 1 1 OCTANT 45 rotate
@@ -268,7 +275,7 @@ gsave
translate
% Size the wheel...
pageWidth 9 mul % radius = pageWidth * 1/8 * 72
wheelSize
% Loop at 1 degree increments
0 1 359 {
@@ -290,7 +297,7 @@ gsave
(1 Degree Radial Lines) CENTER % Show the text centered
% Imageable area...
pageWidth 19.5 mul % Height of imageable area
pageHeight 15 mul % Height of imageable area
pageWidth 4.5 mul % x = pageWidth * 1/16 * 72
pageHeight 35.5 mul % y = pageHeight * 1/2 * 72
@@ -319,7 +326,7 @@ gsave
smallFont setfont % Font
pageWidth 14 mul % x = pageWidth * 3/16 * 72
pageHeight 36 mul % y = pageWidth * 1/2 * 72
pageWidth -3 mul add % y -= 2 * smallFont height
pageHeight -2 mul add % y -= 2 * smallFont height
% Page Size inches
2 copy moveto % Move to x & y
@@ -330,7 +337,7 @@ gsave
(in) show % "in"
% Page Size millimeters
pageWidth -1.5 mul add % Move down...
pageHeight sub % Move down...
2 copy moveto % Move to x & y
10 pageWidth 25.4 mul NUMBER % pageWidth
@@ -339,7 +346,7 @@ gsave
(mm) show % "mm"
% Lower-left inches
pageWidth -3 mul add % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Move to x & y
(Lower-Left: ) RIGHT % Label
@@ -349,7 +356,7 @@ gsave
(in) show % "in"
% Lower-left millimeters
pageWidth -1.5 mul add % Move down...
pageHeight sub % Move down...
2 copy moveto % Move to x & y
10 pageLeft 25.4 mul NUMBER % pageLeft
@@ -358,7 +365,7 @@ gsave
(mm) show % "mm"
% Upper-right inches
pageWidth -3 mul add % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Move to x & y
(Upper-Right: ) RIGHT % Label
@@ -368,7 +375,7 @@ gsave
(in) show % "in"
% Upper-right millimeters
pageWidth -1.5 mul add % Move down...
pageHeight sub % Move down...
2 copy moveto % Move to x & y
10 pageRight 25.4 mul NUMBER % pageRight
@@ -377,7 +384,7 @@ gsave
(mm) show % "mm"
% Resolution dots-per-inch
pageWidth -3 mul add % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Move to x & y
(Resolution: ) RIGHT % Label
@@ -387,7 +394,7 @@ gsave
(dpi) show % "dpi"
% Resolution dots-per-meter
pageWidth -1.5 mul add % Move down...
pageHeight sub % Move down...
moveto % Move to x & y
1 xResolution 39.27 mul NUMBER % xResolution
@@ -396,7 +403,7 @@ gsave
(dpm) show % "dpm"
% Interpreter Information...
pageWidth 19.5 mul % Height of interpreter info
pageHeight 15 mul % Height of interpreter information
pageWidth 40.5 mul % x = pageWidth * 9/16 * 72
pageHeight 35.5 mul % y = pageHeight * 1/2 * 72
@@ -425,7 +432,7 @@ gsave
smallFont setfont % Font
pageWidth 49 mul % x = pageWidth * 11/16 * 72
pageHeight 36 mul % y = pageWidth * 1/2 * 72
pageWidth -3 mul add % y -= 2 * smallFont height
pageHeight 2 mul sub % y -= 2 * smallFont height
% Language level
2 copy moveto % Move to x & y
@@ -434,7 +441,7 @@ gsave
1 languagelevel NUMBER % Language level
% Version
pageWidth -3 mul add % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Move to x & y
(Version: ) RIGHT % Label
version show % Version
@@ -443,13 +450,13 @@ gsave
(\)) show % ")"
% Product
pageWidth -3 mul add % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Move to x & y
(Product: ) RIGHT % Label
product show % Product name
% Serial Number
pageWidth -3 mul add % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Move to x & y
(Serial #: ) RIGHT % Label
1 serialnumber NUMBER % S/N
@@ -463,28 +470,28 @@ gsave
% Draw the copyright notice at the bottom...
pageWidth 36 mul % Center of page
pageWidth 14 mul % Bottom of page
pageHeight 10 mul % Bottom of page
2 copy moveto % Position text
(Printed Using CUPS v1.1.x) CENTER % Show text centered
pageWidth 3 mul sub % Move down...
pageHeight 2 mul sub % Move down...
2 copy moveto % Position text
smallFont setfont % Font
(Copyright 1993-2000 Easy Software Products, All Rights Reserved.) CENTER
pageWidth 1.5 mul sub % Move down...
pageHeight sub % Move down...
2 copy moveto % Position text
(CUPS, and the CUPS logo are the trademark property of) CENTER
pageWidth 1.5 mul sub % Move down...
pageHeight sub % Move down...
2 copy moveto % Position text
(Easy Software Products, 44141 Airport View Drive, Suite 204,) CENTER
pageWidth 1.5 mul sub % Move down...
pageHeight sub % Move down...
2 copy moveto % Position text
(Hollywood, Maryland, 20636-3111, USA.) CENTER
% Then the CUPS logo....
gsave
pageWidth 4 mul
pageWidth 6 mul
pageHeight 4 mul
translate
pageWidth 9 mul CUPSLOGO
grestore
@@ -492,7 +499,7 @@ gsave
% And the ESP logo....
gsave
pageWidth 59 mul
pageWidth 6 mul
pageHeight 4 mul
translate
pageWidth 6 mul ESPLOGO
grestore
@@ -500,6 +507,6 @@ gsave
grestore
showpage
%
% End of "$Id: testprint.ps 1260 2000-08-01 17:52:30Z mike $".
% End of "$Id: testprint.ps 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+33 -25
Ver Arquivo
@@ -22,28 +22,28 @@
% to third parties or copied or duplicated in any form, in whole or
% in part, without the prior written consent of Easy Software Products.
%
/CENTER \{ % Draw centered text
/CENTER { % Draw centered text
% (name) CENTER -
dup stringwidth pop % Get the width of the string
0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
show % Show the string
} bind def
/RIGHT \{ % Draw right-justified text
/RIGHT { % Draw right-justified text
% (name) RIGHT -
dup stringwidth pop % Get the width of the string
neg 0 rmoveto % Shift left the entire distance
show % Show the string
} bind def
/NUMBER \{ % Draw a number
/NUMBER { % Draw a number
% power n NUMBER -
1 index 1 eq \{ % power == 1?
1 index 1 eq { % power == 1?
round cvi exch pop % Convert "n" to integer
} \{
} {
1 index mul round exch div % Truncate extra decimal places
} ifelse
100 string cvs show % Convert to a string and show it...
} bind def
/CUPSLOGO \{ % Draw the CUPS logo
/CUPSLOGO { % Draw the CUPS logo
% height CUPSLOGO
% Start with a big C...
/Helvetica findfont 1 index scalefont setfont
@@ -61,14 +61,14 @@
dup 1.2 mul moveto
(System) show
} bind def
/ESPLOGO \{ % Draw the ESP logo
/ESPLOGO { % Draw the ESP logo
% height ESPLOGO
% Compute the size of the logo...
0 0
2 index 1.5 mul 3 index
% Do the "metallic" fill from 10% black to 40% black...
1 -0.001 0 \{
1 -0.001 0 {
dup % loopval
-0.15 mul % loopval * -0.15
0.9 add % 0.9 - loopval * 0.15
@@ -151,14 +151,20 @@ gsave
/pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
/pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
/boxWidth % width of text box
pageWidth pageHeight lt
{ pageWidth 54 mul }
{ pageHeight 42 mul }
ifelse def
newpath % Clear bounding path
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
% Offset page to account for lower-left margin...
pageLeft 72 mul
@@ -170,28 +176,30 @@ gsave
pageWidth 36 mul % Center of page
pageHeight 72 mul % Top of page
pageWidth -9 mul add % - 1 line
pageWidth -7 mul add % - 2 lines
moveto % Position text
bigFont setfont % Font
(Top Secret) CENTER % Show text centered
pageWidth 36 mul % Center of page
pageWidth 8 mul % Bottom of page
pageHeight 6 mul % Bottom of page
moveto % Position text
bigFont setfont % Font
(Top Secret) CENTER % Show text centered
% Job information box...
pageWidth 18 mul 9 add % x = pageWidth * 1/4 * 72 + 9
pageHeight 27 mul 9 sub % y = pageHeight * 3/8 * 72 - 9
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
0.5 setgray rectfill % Draw a shadow
pageWidth 18 mul % x = pageWidth * 1/4 * 72
pageHeight 27 mul % y = pageHeight * 3/8 * 72
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul % x = pageWidth * 1/2 * 72
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul % y = pageHeight * 1/4 * 72
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
4 copy 1 setgray rectfill % Clear the box to white
0 setgray rectstroke % Draw a black box around it...
@@ -201,7 +209,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 4 mul add % y += 2 lines
pageHeight 5 mul add % y += 2 lines
2 copy % Copy X & Y
moveto
(Job ID: ) RIGHT
@@ -210,7 +218,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 1 mul add % y += 1 line
pageHeight 2 mul add % y += 1 line
2 copy % Copy X & Y
moveto
(Title: ) RIGHT
@@ -219,7 +227,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -2 mul add % y -= 1 line
pageHeight -1 mul add % y -= 1 line
2 copy % Copy X & Y
moveto
(Requesting User: ) RIGHT
@@ -228,7 +236,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -5 mul add % y -= 2 lines
pageHeight -4 mul add % y -= 2 lines
2 copy % Copy X & Y
moveto
(Billing Info: ) RIGHT
@@ -254,6 +262,6 @@ gsave
grestore
showpage
%
% End of "$Id: topsecret 1075 2000-05-11 20:02:21Z mike $".
% End of "$Id: topsecret 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+33 -25
Ver Arquivo
@@ -22,28 +22,28 @@
% to third parties or copied or duplicated in any form, in whole or
% in part, without the prior written consent of Easy Software Products.
%
/CENTER \{ % Draw centered text
/CENTER { % Draw centered text
% (name) CENTER -
dup stringwidth pop % Get the width of the string
0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
show % Show the string
} bind def
/RIGHT \{ % Draw right-justified text
/RIGHT { % Draw right-justified text
% (name) RIGHT -
dup stringwidth pop % Get the width of the string
neg 0 rmoveto % Shift left the entire distance
show % Show the string
} bind def
/NUMBER \{ % Draw a number
/NUMBER { % Draw a number
% power n NUMBER -
1 index 1 eq \{ % power == 1?
1 index 1 eq { % power == 1?
round cvi exch pop % Convert "n" to integer
} \{
} {
1 index mul round exch div % Truncate extra decimal places
} ifelse
100 string cvs show % Convert to a string and show it...
} bind def
/CUPSLOGO \{ % Draw the CUPS logo
/CUPSLOGO { % Draw the CUPS logo
% height CUPSLOGO
% Start with a big C...
/Helvetica findfont 1 index scalefont setfont
@@ -61,14 +61,14 @@
dup 1.2 mul moveto
(System) show
} bind def
/ESPLOGO \{ % Draw the ESP logo
/ESPLOGO { % Draw the ESP logo
% height ESPLOGO
% Compute the size of the logo...
0 0
2 index 1.5 mul 3 index
% Do the "metallic" fill from 10% black to 40% black...
1 -0.001 0 \{
1 -0.001 0 {
dup % loopval
-0.15 mul % loopval * -0.15
0.9 add % 0.9 - loopval * 0.15
@@ -151,14 +151,20 @@ gsave
/pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
/pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
/boxWidth % width of text box
pageWidth pageHeight lt
{ pageWidth 54 mul }
{ pageHeight 42 mul }
ifelse def
newpath % Clear bounding path
% Create fonts...
/bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
pageWidth 4 mul scalefont def % size = pageWidth * 4 (nominally 34)
pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
/mediumFont /Helvetica findfont % mediumFont = Helvetica
pageWidth 2 mul scalefont def % size = pageWidth * 2 (nominally 17)
pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
% Offset page to account for lower-left margin...
pageLeft 72 mul
@@ -170,28 +176,30 @@ gsave
pageWidth 36 mul % Center of page
pageHeight 72 mul % Top of page
pageWidth -9 mul add % - 1 line
pageWidth -7 mul add % - 2 lines
moveto % Position text
bigFont setfont % Font
(Unclassified) CENTER % Show text centered
pageWidth 36 mul % Center of page
pageWidth 8 mul % Bottom of page
pageHeight 6 mul % Bottom of page
moveto % Position text
bigFont setfont % Font
(Unclassified) CENTER % Show text centered
% Job information box...
pageWidth 18 mul 9 add % x = pageWidth * 1/4 * 72 + 9
pageHeight 27 mul 9 sub % y = pageHeight * 3/8 * 72 - 9
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
0.5 setgray rectfill % Draw a shadow
pageWidth 18 mul % x = pageWidth * 1/4 * 72
pageHeight 27 mul % y = pageHeight * 3/8 * 72
pageWidth 36 mul % w = pageWidth * 1/2 * 72
pageHeight 18 mul % h = pageHeight * 1/4 * 72
pageWidth 36 mul % x = pageWidth * 1/2 * 72
boxWidth 0.5 mul sub % x-= 1/2 box width
pageHeight 30 mul % y = pageHeight * 1/4 * 72
boxWidth % w = box width
pageHeight 14 mul % h = pageHeight * 1/2 * 72
4 copy 1 setgray rectfill % Clear the box to white
0 setgray rectstroke % Draw a black box around it...
@@ -201,7 +209,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 4 mul add % y += 2 lines
pageHeight 5 mul add % y += 2 lines
2 copy % Copy X & Y
moveto
(Job ID: ) RIGHT
@@ -210,7 +218,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth 1 mul add % y += 1 line
pageHeight 2 mul add % y += 1 line
2 copy % Copy X & Y
moveto
(Title: ) RIGHT
@@ -219,7 +227,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -2 mul add % y -= 1 line
pageHeight -1 mul add % y -= 1 line
2 copy % Copy X & Y
moveto
(Requesting User: ) RIGHT
@@ -228,7 +236,7 @@ gsave
pageWidth 36 mul % x = pageWidth * 1/2 * 72
pageHeight 36 mul % y = pageHeight * 1/2 * 72
pageWidth -5 mul add % y -= 2 lines
pageHeight -4 mul add % y -= 2 lines
2 copy % Copy X & Y
moveto
(Billing Info: ) RIGHT
@@ -254,6 +262,6 @@ gsave
grestore
showpage
%
% End of "$Id: unclassified 1075 2000-05-11 20:02:21Z mike $".
% End of "$Id: unclassified 1379 2000-09-18 17:12:42Z mike $".
%
%%EOF
+13 -1
Ver Arquivo
@@ -79,6 +79,7 @@ WEBIMAGES = images/accept-jobs.gif \
images/printer-stopped.gif \
images/reject-jobs.gif \
images/release-job.gif \
images/restart-job.gif \
images/right.gif \
images/show-active.gif \
images/show-completed.gif \
@@ -208,7 +209,18 @@ sum-7x8.ps: sum.shtml
--size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ sum.shtml
$(DOCUMENTS): glossary.shtml printing-overview.shtml \
$(DOCUMENTS:.shtml=.html): \
glossary.shtml printing-overview.shtml \
references.shtml system-overview.shtml \
../LICENSE.html
$(DOCUMENTS:.shtml=.pdf): \
glossary.shtml printing-overview.shtml \
references.shtml system-overview.shtml \
../LICENSE.html
$(DOCUMENTS:.shtml=.ps): \
glossary.shtml printing-overview.shtml \
references.shtml system-overview.shtml \
../LICENSE.html
+1 -1
Ver Arquivo
@@ -153,7 +153,7 @@ sections:
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
+121 -123
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000731155313Z)/Title( CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182222Z)/Title( CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -306,14 +306,12 @@ endobj
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
156 0 obj
31
endobj
äHendstream
endobj
156 0 obj
31
endobj
VMoÛ8½çW zJ€µjÉŸÙ[§Y/šTk9Å|¡%ÊfC‰
157 0 obj<</Type/Page/Parent 150 0 R/Contents 158 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>/Annots 14 0 R>>endobj
158 0 obj<</Length 159 0 R/Filter/FlateDecode>>stream
VMoÛ8½çW zJ€µjÉŸÙ[§Y/šTk9Å|¡%ÊfC‰
IÙpýÎtì¸éb³„â ç½7Ã<_ÄÐÅŸF ô†W“ÅÅÇÏ×taQâÎp4†EqC–«†_-¾»Ýxäw;½~”¸ý(†YÁk+J3+TíCûÇ!4EC
@@ -712,122 +710,122 @@ xref
0000008401 00000 n
0000008506 00000 n
0000008610 00000 n
0000008191 00000 n
0000008296 00000 n
0000008401 00000 n
0000008506 00000 n
0000008610 00000 n
0000008713 00000 n
0000008816 00000 n
0000009120 00000 n
0000009225 00000 n
0000009330 00000 n
0000009434 00000 n
0000009539 00000 n
0000009644 00000 n
0000009748 00000 n
0000009853 00000 n
0000009958 00000 n
0000010062 00000 n
0000010167 00000 n
0000010272 00000 n
0000010376 00000 n
0000010477 00000 n
0000010509 00000 n
0000010541 00000 n
0000011261 00000 n
0000011309 00000 n
0000011357 00000 n
0000011405 00000 n
0000011453 00000 n
0000011502 00000 n
0000011551 00000 n
0000011600 00000 n
0000011649 00000 n
0000011698 00000 n
0000011747 00000 n
0000011796 00000 n
0000011845 00000 n
0000011894 00000 n
0000011943 00000 n
0000011992 00000 n
0000012041 00000 n
0000012090 00000 n
0000012139 00000 n
0000012188 00000 n
0000012237 00000 n
0000012286 00000 n
0000012335 00000 n
0000012384 00000 n
0000012433 00000 n
0000012482 00000 n
0000012531 00000 n
0000012580 00000 n
0000012629 00000 n
0000012678 00000 n
0000012727 00000 n
0000012776 00000 n
0000012825 00000 n
0000012874 00000 n
0000012923 00000 n
0000012972 00000 n
0000013021 00000 n
0000013070 00000 n
0000013119 00000 n
0000013168 00000 n
0000013217 00000 n
0000013266 00000 n
0000013315 00000 n
0000013364 00000 n
0000013413 00000 n
0000013462 00000 n
0000013511 00000 n
0000013560 00000 n
0000013609 00000 n
0000013658 00000 n
0000013707 00000 n
0000013756 00000 n
0000013805 00000 n
0000013854 00000 n
0000013903 00000 n
0000014164 00000 n
0000014316 00000 n
0000020676 00000 n
0000020698 00000 n
0000020793 00000 n
0000020895 00000 n
0000020915 00000 n
0000021069 00000 n
0000022130 00000 n
0000022151 00000 n
0000022264 00000 n
0000022452 00000 n
0000022473 00000 n
0000022627 00000 n
0000024028 00000 n
0000024050 00000 n
0000024163 00000 n
0000024356 00000 n
0000024377 00000 n
0000024508 00000 n
0000025119 00000 n
0000025140 00000 n
0000025253 00000 n
0000025443 00000 n
0000025464 00000 n
0000025595 00000 n
0000026596 00000 n
0000026617 00000 n
0000026730 00000 n
0000026932 00000 n
0000026953 00000 n
0000027093 00000 n
0000028111 00000 n
0000028132 00000 n
0000028245 00000 n
0000028444 00000 n
0000008713 00000 n
0000008816 00000 n
0000009120 00000 n
0000009225 00000 n
0000009330 00000 n
0000009434 00000 n
0000009539 00000 n
0000009644 00000 n
0000009748 00000 n
0000009853 00000 n
0000009958 00000 n
0000010062 00000 n
0000010167 00000 n
0000010272 00000 n
0000010376 00000 n
0000010477 00000 n
0000010509 00000 n
0000010541 00000 n
0000011261 00000 n
0000011309 00000 n
0000011357 00000 n
0000011405 00000 n
0000011453 00000 n
0000011502 00000 n
0000011551 00000 n
0000011600 00000 n
0000011649 00000 n
0000011698 00000 n
0000011747 00000 n
0000011796 00000 n
0000011845 00000 n
0000011894 00000 n
0000011943 00000 n
0000011992 00000 n
0000012041 00000 n
0000012090 00000 n
0000012139 00000 n
0000012188 00000 n
0000012237 00000 n
0000012286 00000 n
0000012335 00000 n
0000012384 00000 n
0000012433 00000 n
0000012482 00000 n
0000012531 00000 n
0000012580 00000 n
0000012629 00000 n
0000012678 00000 n
0000012727 00000 n
0000012776 00000 n
0000012825 00000 n
0000012874 00000 n
0000012923 00000 n
0000012972 00000 n
0000013021 00000 n
0000013070 00000 n
0000013119 00000 n
0000013168 00000 n
0000013217 00000 n
0000013266 00000 n
0000013315 00000 n
0000013364 00000 n
0000013413 00000 n
0000013462 00000 n
0000013511 00000 n
0000013560 00000 n
0000013609 00000 n
0000013658 00000 n
0000013707 00000 n
0000013756 00000 n
0000013805 00000 n
0000013854 00000 n
0000013903 00000 n
0000014164 00000 n
0000014316 00000 n
0000020676 00000 n
0000020698 00000 n
0000020793 00000 n
0000020895 00000 n
0000020915 00000 n
0000021069 00000 n
0000022130 00000 n
0000022151 00000 n
0000022264 00000 n
0000022452 00000 n
0000022473 00000 n
0000022627 00000 n
0000024026 00000 n
0000024048 00000 n
0000024161 00000 n
0000024354 00000 n
0000024375 00000 n
0000024506 00000 n
0000025117 00000 n
0000025138 00000 n
0000025251 00000 n
0000025441 00000 n
0000025462 00000 n
0000025593 00000 n
0000026594 00000 n
0000026615 00000 n
0000026728 00000 n
0000026930 00000 n
0000026951 00000 n
0000027091 00000 n
0000028109 00000 n
0000028130 00000 n
0000028243 00000 n
0000028442 00000 n
0000028463 00000 n
0000028603 00000 n
0000029270 00000 n
0000029291 00000 n
0000029404 00000 n
0000029597 00000 n
0000028605 00000 n
0000029618 00000 n
0000029758 00000 n
0000029293 00000 n
0000030901 00000 n
0000030923 00000 n
+1 -1
Ver Arquivo
@@ -127,7 +127,7 @@ following sections: </P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
+124 -126
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000731155319Z)/Title( CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182228Z)/Title( CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -289,14 +289,12 @@ endobj
141 0 obj<</Type/Page/Parent 137 0 R/Contents 142 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
142 0 obj<</Length 143 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
143 0 obj
ár
á
äHendstream
endobj
143 0 obj
144 0 obj<</Type/Page/Parent 137 0 R/Contents 145 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 10 0 R>>>>/Annots 15 0 R>>endobj
31
endobj
144 0 obj<</Type/Page/Parent 137 0 R/Contents 145 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 10 0 R>>>>/Annots 15 0 R>>endobj
145 0 obj<</Length 146 0 R/Filter/FlateDecode>>stream
@@ -755,125 +753,125 @@ xref
0000003673 00000 n
0000003758 00000 n
0000003824 00000 n
0000003522 00000 n
0000003607 00000 n
0000003673 00000 n
0000003758 00000 n
0000003824 00000 n
0000003909 00000 n
0000003975 00000 n
0000004060 00000 n
0000004126 00000 n
0000004211 00000 n
0000004277 00000 n
0000004362 00000 n
0000004428 00000 n
0000004513 00000 n
0000004607 00000 n
0000004708 00000 n
0000004793 00000 n
0000004894 00000 n
0000004979 00000 n
0000005080 00000 n
0000005164 00000 n
0000005202 00000 n
0000005289 00000 n
0000005374 00000 n
0000005461 00000 n
0000005546 00000 n
0000005577 00000 n
0000005643 00000 n
0000005728 00000 n
0000005784 00000 n
0000005866 00000 n
0000005897 00000 n
0000006001 00000 n
0000006106 00000 n
0000006211 00000 n
0000006316 00000 n
0000006420 00000 n
0000006525 00000 n
0000006630 00000 n
0000006734 00000 n
0000006839 00000 n
0000006944 00000 n
0000007049 00000 n
0000007154 00000 n
0000007259 00000 n
0000007364 00000 n
0000007469 00000 n
0000007574 00000 n
0000007679 00000 n
0000007784 00000 n
0000007889 00000 n
0000007994 00000 n
0000008099 00000 n
0000008204 00000 n
0000008309 00000 n
0000008413 00000 n
0000008518 00000 n
0000008623 00000 n
0000008728 00000 n
0000008833 00000 n
0000008938 00000 n
0000009043 00000 n
0000009148 00000 n
0000009253 00000 n
0000009358 00000 n
0000009463 00000 n
0000009567 00000 n
0000009671 00000 n
0000009776 00000 n
0000009881 00000 n
0000010164 00000 n
0000010196 00000 n
0000010228 00000 n
0000010758 00000 n
0000010806 00000 n
0000010854 00000 n
0000010903 00000 n
0000010952 00000 n
0000011001 00000 n
0000011050 00000 n
0000011099 00000 n
0000011148 00000 n
0000011197 00000 n
0000011246 00000 n
0000011295 00000 n
0000011344 00000 n
0000011393 00000 n
0000011442 00000 n
0000011491 00000 n
0000011540 00000 n
0000011589 00000 n
0000011638 00000 n
0000011687 00000 n
0000011736 00000 n
0000011785 00000 n
0000011834 00000 n
0000011883 00000 n
0000011932 00000 n
0000011981 00000 n
0000012030 00000 n
0000012079 00000 n
0000012128 00000 n
0000012177 00000 n
0000012226 00000 n
0000012275 00000 n
0000012324 00000 n
0000012373 00000 n
0000012422 00000 n
0000012471 00000 n
0000012520 00000 n
0000012569 00000 n
0000012618 00000 n
0000012667 00000 n
0000012976 00000 n
0000013128 00000 n
0000019489 00000 n
0000019511 00000 n
0000003909 00000 n
0000003975 00000 n
0000004060 00000 n
0000004126 00000 n
0000004211 00000 n
0000004277 00000 n
0000004362 00000 n
0000004428 00000 n
0000004513 00000 n
0000004607 00000 n
0000004708 00000 n
0000004793 00000 n
0000004894 00000 n
0000004979 00000 n
0000005080 00000 n
0000005164 00000 n
0000005202 00000 n
0000005289 00000 n
0000005374 00000 n
0000005461 00000 n
0000005546 00000 n
0000005577 00000 n
0000005643 00000 n
0000005728 00000 n
0000005784 00000 n
0000005866 00000 n
0000005897 00000 n
0000006001 00000 n
0000006106 00000 n
0000006211 00000 n
0000006316 00000 n
0000006420 00000 n
0000006525 00000 n
0000006630 00000 n
0000006734 00000 n
0000006839 00000 n
0000006944 00000 n
0000007049 00000 n
0000007154 00000 n
0000007259 00000 n
0000007364 00000 n
0000007469 00000 n
0000007574 00000 n
0000007679 00000 n
0000007784 00000 n
0000007889 00000 n
0000007994 00000 n
0000008099 00000 n
0000008204 00000 n
0000008309 00000 n
0000008413 00000 n
0000008518 00000 n
0000008623 00000 n
0000008728 00000 n
0000008833 00000 n
0000008938 00000 n
0000009043 00000 n
0000009148 00000 n
0000009253 00000 n
0000009358 00000 n
0000009463 00000 n
0000009567 00000 n
0000009671 00000 n
0000009776 00000 n
0000009881 00000 n
0000010164 00000 n
0000010196 00000 n
0000010228 00000 n
0000010758 00000 n
0000010806 00000 n
0000010854 00000 n
0000010903 00000 n
0000010952 00000 n
0000011001 00000 n
0000011050 00000 n
0000011099 00000 n
0000011148 00000 n
0000011197 00000 n
0000011246 00000 n
0000011295 00000 n
0000011344 00000 n
0000011393 00000 n
0000011442 00000 n
0000011491 00000 n
0000011540 00000 n
0000011589 00000 n
0000011638 00000 n
0000011687 00000 n
0000011736 00000 n
0000011785 00000 n
0000011834 00000 n
0000011883 00000 n
0000011932 00000 n
0000011981 00000 n
0000012030 00000 n
0000012079 00000 n
0000012128 00000 n
0000012177 00000 n
0000012226 00000 n
0000012275 00000 n
0000012324 00000 n
0000012373 00000 n
0000012422 00000 n
0000012471 00000 n
0000012520 00000 n
0000012569 00000 n
0000012618 00000 n
0000012667 00000 n
0000012976 00000 n
0000013128 00000 n
0000019489 00000 n
0000019511 00000 n
0000019606 00000 n
0000019708 00000 n
0000019728 00000 n
0000019883 00000 n
0000020911 00000 n
0000020932 00000 n
0000019708 00000 n
0000021045 00000 n
0000021231 00000 n
0000019883 00000 n
0000021252 00000 n
0000021407 00000 n
+1 -1
Ver Arquivo
@@ -233,7 +233,7 @@ EPSON printers are included that use these filters. </P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
+223 -225
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000731155326Z)/Title( CUPS Implementation of IPP)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182234Z)/Title( CUPS Implementation of IPP)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -496,14 +496,12 @@ endobj
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›u¯b øñÇm†ç÷dÓøÕ:^,ë—¸p¾ÈÒ<­jŒOQVŸm¼>ÂþnXZë_ŽpþŽëó²X•q–‘´Žö;|Øçw(’m™Ö¯x$6EYa7šï³‰êXá…ï„ᱟIÜϽ‰û‰6Ioo2×Ö„±:ŒŽ­£õ³(»ÂPXò"ï
ÈOW…«èÄ4L¬|ôbÑËà Ö?ÃÇwБ \‹™Z¬!ÜC3 ÃÍ|Ã×â–år~2È3"Ãjlðœ@Þ¶ OÏ3ù©‡qÒòŒÈÀ±Í8¼k „Ó™ú†ÓóÞdÇþÅ›|•+èõƒËñ'J@ç‹â QÕ¡'V‚”*0W+\§k×E™Å5„‘¤Ë4‘5tÔ‰{b8I¥ß×ìömÕ5öÐË·ÇH£.ÏD%¶ê’ ººQ—oÔÕò.8-Ï̾eSì5<'wcªç¼G¹éù²éYêľɿ]œ¯¶Ø¥ûydÑsZ.àj‘RM«}ØDÏàÏâ â|ÑÉ'5üØ5*Tª¥hï›,£WyR,¨®‘ᨌóêà ¤³E­_Î*Tào¶éBgç¾Xˆµt(Yœ×irÀ—Ó(ܜȜO¥äb¿Dïuî§@çÁÀ9AÕÖ&ýéxF ïËÚ¨ãAç'0Æ osªôýp}‰ïzÁîÒ\ôµ*Ö bê")Ö_^‡ìÀB¶É’Zh²ÔÒ2 :šÀ9AY
0&ZžTå&u-Ïä=ª©Zž”Õé€ÿœ Jñ×òŒ@>0w‚?¬;°U†I5öÔõFí }SÄë
禲ºpä¢é|Tnþ?aÄÌNGr¡ÓQC+™hh`ÞpŒÔ㜠yÎp‚täàYÖòŒ YÌÅ(éxNŽüûœ î*U«ã¼KÓ­–gòþt žœ YzÏ S/`*õGð R¢x€°.·I½ÅY/­ôF߆ôb=íLèeþQ»4|¶¢– ¨ZiVC3€ŠãqNH}J¹Žgòݽ´<#H¤4 ëxNÐ# ÉêxFÐh‘ˆ:þ¹SÃg2Âyo6”ç'Q¿‘ÃÝ|&ƒ³L—ûêëkÜÔ’w•m¹ÐÉ¡¡U¶54¨Æ9T148'¨— òçmkˆç„J¯Þ}NPzJoÇÞ©­îk2½®åŽàû+Ž×µøU«ÑÇû.«0Ã÷(’#ë×'Øñû‘U-t nh•? ÍY=
ç þ€3œPʧå9¡šŒÞNdÍiÔòŒ áÆ¥jÔñ ú‘à eηXìéZ"{È\ÄUšÈc?KWô‹Ùy’ˆªz¯[ì>®:ƒß*·wûþ÷'î‰oâW0é#§Ð_'¿VÐTÂendstream
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›µèV,?ÿ¸ÑðüžŒ¿ZÏ‹eýÎYš§U*ÊŠ´×GØßKký+âÎßq}^«2Î2ÒÖÑ~‡ûüE²-ÓúÏĦ(ë#ìFó}v#Q«¼ðñ0<Vâ3‰û¹7q?Ñ&éíMæÚ¢0V§Ñ±Õi´qñ£~eWª«B^äãÊP9ðé²p˜†‰¥^,zy¸Áh˜àø:’ëc5S5„{hd¸™oøZܲ\ÎOyFdXŽížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°u9þD è|Q<áñ/ª:”âÄJR æj…ët-àº(³¸†p#’t™&²†Ž:qO Ç ©ôûšÝ¾­ºÆzùöiÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕÛt?Œ zNË\-RÊà±Icµ›èüY<Aœ/:ù„¢†¡f…êCµí}“eô*OŠÕ52•q^}¸t¶ºÞOþf.Äqvî‹…XK‡B‘Åy&|9Â͉ÌùT
@.öK„ø^÷è~štÌœTmmÒŸŽgò¾¬t~#`üú6§Jß×—ø®Œà.ÍE_«b‘a Â!¦.býåuÈ,d,©…&K--“ £€Q´­œ”¥c¢åAUn‚Q×òŒ@Þ£šªåAYøÏ ê¡äs'øÃª±[e˜TcO]oÔÎÐ7E¼®pn*ñ «G.šÎGåæÿÓFÌìt$:5´’‰†fæ ÇH=Î Ò‘7à 'HGže-ÏšÅ\Œ’ŽçéÈ°Ï ê®Rµ:žÈ»4ÝjyF ïOâÉ šõ¨÷÷ü¦R²iÆk!%Š7ër›Ô[œåñÒJoômH/ÖÓ΄^柵KÃg+j¹Ð‰º¡•f54¨8ç‰Ô§”ëxF ÐÝKË3‚DJºŽç]0’¬Žg‰¨ã;5|&#l‘÷ñfCy~õ‹9ÜÍgR18Ët¹¯¾¾ÆM-y'QÙ– Ze[C3€jœCCƒs‚zÙ ïqÞ¶†xN¨ôêÝç¥×¡ôvüéÚê¾&ÓëZâx]‹_µq¼ï²
ã1|"9²~}‚¿YÕB—à†VùÓÐ  ‘Õ£ipNÐê8à 5¬xZžªÉèýáDÖœF-Ïn\ªF€ œ ‰Q8ÜPÆá|‹Åž®%²‡œÁE\¥‰<ö³tE¿˜'‰¨ª÷ºÅîãª3ø­RpÛq·ïãžø&~“>rýuòHÒU'endstream
endobj
280 0 obj
1330
1328
endobj
281 0 obj<</Type/Page/Parent 265 0 R/Contents 282 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
282 0 obj<</Length 283 0 R/Filter/FlateDecode>>stream
@@ -1267,224 +1265,224 @@ xref
0000032989 00000 n
0000033010 00000 n
0000033164 00000 n
0000034565 00000 n
0000034587 00000 n
0000034700 00000 n
0000034886 00000 n
0000034907 00000 n
0000035056 00000 n
0000036284 00000 n
0000036306 00000 n
0000036428 00000 n
0000037463 00000 n
0000037484 00000 n
0000037633 00000 n
0000038586 00000 n
0000038607 00000 n
0000038756 00000 n
0000039488 00000 n
0000039509 00000 n
0000039658 00000 n
0000040587 00000 n
0000040608 00000 n
0000040757 00000 n
0000041662 00000 n
0000041683 00000 n
0000041814 00000 n
0000042542 00000 n
0000042563 00000 n
0000042703 00000 n
0000043540 00000 n
0000043561 00000 n
0000043701 00000 n
0000044499 00000 n
0000044520 00000 n
0000044651 00000 n
0000045550 00000 n
0000045571 00000 n
0000045702 00000 n
0000046314 00000 n
0000046335 00000 n
0000046475 00000 n
0000047255 00000 n
0000047276 00000 n
0000047407 00000 n
0000048232 00000 n
0000048253 00000 n
0000048393 00000 n
0000049238 00000 n
0000049259 00000 n
0000049390 00000 n
0000050055 00000 n
0000050076 00000 n
0000050207 00000 n
0000050929 00000 n
0000050950 00000 n
0000051081 00000 n
0000051763 00000 n
0000051784 00000 n
0000051915 00000 n
0000052766 00000 n
0000052787 00000 n
0000052918 00000 n
0000053763 00000 n
0000053784 00000 n
0000053924 00000 n
0000054540 00000 n
0000054561 00000 n
0000054701 00000 n
0000055864 00000 n
0000055886 00000 n
0000056017 00000 n
0000057224 00000 n
0000057246 00000 n
0000057386 00000 n
0000058389 00000 n
0000058410 00000 n
0000058559 00000 n
0000059567 00000 n
0000059588 00000 n
0000059728 00000 n
0000060714 00000 n
0000060735 00000 n
0000060884 00000 n
0000062070 00000 n
0000062092 00000 n
0000062232 00000 n
0000062832 00000 n
0000062853 00000 n
0000062966 00000 n
0000063187 00000 n
0000063208 00000 n
0000063348 00000 n
0000064015 00000 n
0000064036 00000 n
0000064149 00000 n
0000064334 00000 n
0000064355 00000 n
0000064509 00000 n
0000066918 00000 n
0000066940 00000 n
0000067095 00000 n
0000070009 00000 n
0000070031 00000 n
0000070186 00000 n
0000071674 00000 n
0000071696 00000 n
0000071809 00000 n
0000071975 00000 n
0000071995 00000 n
0000072050 00000 n
0000072155 00000 n
0000072299 00000 n
0000072405 00000 n
0000072525 00000 n
0000072634 00000 n
0000072783 00000 n
0000072893 00000 n
0000073000 00000 n
0000073147 00000 n
0000073247 00000 n
0000073358 00000 n
0000073508 00000 n
0000073655 00000 n
0000073766 00000 n
0000073878 00000 n
0000074039 00000 n
0000074151 00000 n
0000074264 00000 n
0000074433 00000 n
0000074553 00000 n
0000074674 00000 n
0000074841 00000 n
0000074959 00000 n
0000075078 00000 n
0000075246 00000 n
0000075365 00000 n
0000075485 00000 n
0000075652 00000 n
0000075770 00000 n
0000075889 00000 n
0000076059 00000 n
0000076180 00000 n
0000076302 00000 n
0000076469 00000 n
0000076587 00000 n
0000076706 00000 n
0000076871 00000 n
0000076987 00000 n
0000077104 00000 n
0000077273 00000 n
0000077393 00000 n
0000077514 00000 n
0000077682 00000 n
0000077801 00000 n
0000077921 00000 n
0000078089 00000 n
0000078208 00000 n
0000078328 00000 n
0000078496 00000 n
0000078615 00000 n
0000078735 00000 n
0000078903 00000 n
0000079022 00000 n
0000079142 00000 n
0000079307 00000 n
0000079423 00000 n
0000079540 00000 n
0000079692 00000 n
0000079808 00000 n
0000079925 00000 n
0000080074 00000 n
0000080219 00000 n
0000080343 00000 n
0000080477 00000 n
0000080621 00000 n
0000080733 00000 n
0000080898 00000 n
0000081013 00000 n
0000081151 00000 n
0000081284 00000 n
0000081409 00000 n
0000081535 00000 n
0000081670 00000 n
0000081804 00000 n
0000081938 00000 n
0000082085 00000 n
0000082242 00000 n
0000082368 00000 n
0000082508 00000 n
0000082646 00000 n
0000082785 00000 n
0000082919 00000 n
0000083056 00000 n
0000083193 00000 n
0000083327 00000 n
0000083459 00000 n
0000083590 00000 n
0000083729 00000 n
0000083866 00000 n
0000083977 00000 n
0000084132 00000 n
0000084266 00000 n
0000084397 00000 n
0000084538 00000 n
0000084656 00000 n
0000084815 00000 n
0000084966 00000 n
0000085132 00000 n
0000085266 00000 n
0000085405 00000 n
0000085563 00000 n
0000085707 00000 n
0000085859 00000 n
0000085988 00000 n
0000086108 00000 n
0000086242 00000 n
0000086339 00000 n
0000086439 00000 n
0000034563 00000 n
0000034585 00000 n
0000034698 00000 n
0000034884 00000 n
0000034905 00000 n
0000035054 00000 n
0000036282 00000 n
0000036304 00000 n
0000036426 00000 n
0000037461 00000 n
0000037482 00000 n
0000037631 00000 n
0000038584 00000 n
0000038605 00000 n
0000038754 00000 n
0000039486 00000 n
0000039507 00000 n
0000039656 00000 n
0000040585 00000 n
0000040606 00000 n
0000040755 00000 n
0000041660 00000 n
0000041681 00000 n
0000041812 00000 n
0000042540 00000 n
0000042561 00000 n
0000042701 00000 n
0000043538 00000 n
0000043559 00000 n
0000043699 00000 n
0000044497 00000 n
0000044518 00000 n
0000044649 00000 n
0000045548 00000 n
0000045569 00000 n
0000045700 00000 n
0000046312 00000 n
0000046333 00000 n
0000046473 00000 n
0000047253 00000 n
0000047274 00000 n
0000047405 00000 n
0000048230 00000 n
0000048251 00000 n
0000048391 00000 n
0000049236 00000 n
0000049257 00000 n
0000049388 00000 n
0000050053 00000 n
0000050074 00000 n
0000050205 00000 n
0000050927 00000 n
0000050948 00000 n
0000051079 00000 n
0000051761 00000 n
0000051782 00000 n
0000051913 00000 n
0000052764 00000 n
0000052785 00000 n
0000052916 00000 n
0000053761 00000 n
0000053782 00000 n
0000053922 00000 n
0000054538 00000 n
0000054559 00000 n
0000054699 00000 n
0000055862 00000 n
0000055884 00000 n
0000056015 00000 n
0000057222 00000 n
0000057244 00000 n
0000057384 00000 n
0000058387 00000 n
0000058408 00000 n
0000058557 00000 n
0000059565 00000 n
0000059586 00000 n
0000059726 00000 n
0000060712 00000 n
0000060733 00000 n
0000060882 00000 n
0000062068 00000 n
0000062090 00000 n
0000062230 00000 n
0000062830 00000 n
0000062851 00000 n
0000062964 00000 n
0000063185 00000 n
0000063206 00000 n
0000063346 00000 n
0000064013 00000 n
0000064034 00000 n
0000064147 00000 n
0000064332 00000 n
0000064353 00000 n
0000064507 00000 n
0000066916 00000 n
0000066938 00000 n
0000067093 00000 n
0000070007 00000 n
0000070029 00000 n
0000070184 00000 n
0000071672 00000 n
0000071694 00000 n
0000071807 00000 n
0000071973 00000 n
0000071993 00000 n
0000072048 00000 n
0000072153 00000 n
0000072297 00000 n
0000072403 00000 n
0000072523 00000 n
0000072632 00000 n
0000072781 00000 n
0000072891 00000 n
0000072998 00000 n
0000073145 00000 n
0000073245 00000 n
0000073356 00000 n
0000073506 00000 n
0000073653 00000 n
0000073764 00000 n
0000073876 00000 n
0000074037 00000 n
0000074149 00000 n
0000074262 00000 n
0000074431 00000 n
0000074551 00000 n
0000074672 00000 n
0000074839 00000 n
0000074957 00000 n
0000075076 00000 n
0000075244 00000 n
0000075363 00000 n
0000075483 00000 n
0000075650 00000 n
0000075768 00000 n
0000075887 00000 n
0000076057 00000 n
0000076178 00000 n
0000076300 00000 n
0000076467 00000 n
0000076585 00000 n
0000076704 00000 n
0000076869 00000 n
0000076985 00000 n
0000077102 00000 n
0000077271 00000 n
0000077391 00000 n
0000077512 00000 n
0000077680 00000 n
0000077799 00000 n
0000077919 00000 n
0000078087 00000 n
0000078206 00000 n
0000078326 00000 n
0000078494 00000 n
0000078613 00000 n
0000078733 00000 n
0000078901 00000 n
0000079020 00000 n
0000079140 00000 n
0000079305 00000 n
0000079421 00000 n
0000079538 00000 n
0000079690 00000 n
0000079806 00000 n
0000079923 00000 n
0000080072 00000 n
0000080217 00000 n
0000080341 00000 n
0000080475 00000 n
0000080619 00000 n
0000080731 00000 n
0000080896 00000 n
0000081011 00000 n
0000081149 00000 n
0000081282 00000 n
0000081407 00000 n
0000081533 00000 n
0000081668 00000 n
0000081802 00000 n
0000081936 00000 n
0000082083 00000 n
0000082240 00000 n
0000082366 00000 n
0000082506 00000 n
0000082644 00000 n
0000082783 00000 n
0000082917 00000 n
0000083054 00000 n
0000083191 00000 n
0000083325 00000 n
0000083457 00000 n
0000083588 00000 n
0000083727 00000 n
0000083864 00000 n
0000083975 00000 n
0000084130 00000 n
0000084264 00000 n
0000084395 00000 n
0000084536 00000 n
0000084654 00000 n
0000084813 00000 n
0000084964 00000 n
0000085130 00000 n
0000085264 00000 n
0000085403 00000 n
0000085561 00000 n
0000085705 00000 n
0000085857 00000 n
0000085986 00000 n
0000086106 00000 n
0000086240 00000 n
0000086337 00000 n
0000086437 00000 n
trailer
<</Size 496/Root 495 0 R/Info 1 0 R/ID[<d6a9884e48339a8c4e4ec4c671a9d8b5><d6a9884e48339a8c4e4ec4c671a9d8b5>]>>
<</Size 496/Root 495 0 R/Info 1 0 R/ID[<b78a9bcdf8c9212682177c5bbebab4ff><b78a9bcdf8c9212682177c5bbebab4ff>]>>
startxref
86667
86665
%%EOF
+1 -1
Ver Arquivo
@@ -7,7 +7,7 @@
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual
<LI>CUPS-SDD-1.1: CUPS Software Design Description
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual
+49 -7
Ver Arquivo
@@ -4,7 +4,7 @@
<TITLE> CUPS Software Administrators Manual</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.3">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<STYLE>
BODY { font-family: serif; font-size: 11.0pt }
@@ -22,7 +22,7 @@ PRE { font-size: 9.0pt }
<BODY BGCOLOR="#ffffff">
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
<H1> CUPS Software Administrators Manual</H1></A><BR>
CUPS-SAM-1.1.1<BR>
CUPS-SAM-1.1.3<BR>
Easy Software Products<BR>
Copyright 1997-2000, All Rights Reserved<BR>
</CENTER>
@@ -128,6 +128,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
<LI><A HREF="#Deny">Deny</A></LI>
<LI><A HREF="#DocumentRoot">DocumentRoot</A></LI>
<LI><A HREF="#ErrorLog">ErrorLog</A></LI>
<LI><A HREF="#FilterLimit">FilterLimit</A></LI>
<LI><A HREF="#Group">Group</A></LI>
<LI><A HREF="#HostNameLookups">HostNameLookups</A></LI>
<LI><A HREF="#ImplicitClasses">ImplicitClasses</A></LI>
@@ -145,6 +146,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
<LI><A HREF="#PreserveJobHistory">PreserveJobHistory</A></LI>
<LI><A HREF="#PreserveJobFiles">PreserveJobFiles</A></LI>
<LI><A HREF="#Printcap">Printcap</A></LI>
<LI><A HREF="#RemoteRoot">RemoteRoot</A></LI>
<LI><A HREF="#RequestRoot">RequestRoot</A></LI>
<LI><A HREF="#RIPCache">RIPCache</A></LI>
<LI><A HREF="#ServerAdmin">ServerAdmin</A></LI>
@@ -245,7 +247,7 @@ Machine!</A></LI>
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
<P>This software administrators manual provides printer administration
information for the Common UNIX Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>
TM</SUP>&quot;), version 1.1.1. </P>
TM</SUP>&quot;), version 1.1.3. </P>
<H2><A NAME="1_1">System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
@@ -1038,6 +1040,7 @@ determine how the server operates: </P>
<LI><A HREF="#Deny"><CODE>Deny</CODE></A></LI>
<LI><A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A></LI>
<LI><A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A></LI>
<LI><A HREF="#FilterLimit"><CODE>FilterLimit</CODE></A></LI>
<LI><A HREF="#Group"><CODE>Group</CODE></A></LI>
<LI><A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A></LI>
<LI><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A></LI>
@@ -1056,6 +1059,7 @@ determine how the server operates: </P>
<LI><A HREF="#PreserveJobFiles"><CODE>PreserveJobFiles</CODE></A></LI>
<LI><A HREF="#PreserveJobHistory"><CODE>PreserveJobHistory</CODE></A></LI>
<LI><A HREF="#Printcap"><CODE>Printcap</CODE></A></LI>
<LI><A HREF="#RemoteRoot"><CODE>RemoteRoot</CODE></A></LI>
<LI><A HREF="#RequestRoot"><CODE>RequestRoot</CODE></A></LI>
<LI><A HREF="#RIPCache"><CODE>RIPCache</CODE></A></LI>
<LI><A HREF="#ServerAdmin"><CODE>ServerAdmin</CODE></A></LI>
@@ -1597,6 +1601,28 @@ default error log file is <VAR>/var/log/cups/error_log</VAR>. </P>
to the system log instead of a plain file.
<!-- NEED 3in ---->
</P>
<H3><A NAME="FilterLimit">FilterLimit</A></H3>
<HR>
<H4>Examples</H4>
<UL>
<PRE>
FilterLimit 0
FilterLimit 200
FilterLimit 1000
</PRE>
</UL>
<H4>Description</H4>
<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost of all
running job filters. It can be used to limit the number of filter
programs that are run on a server to minimize disk, memory, and CPU
resource problems. A limit of 0 disables filter limiting. </P>
<P>An average print to a non-PostScript printer needs a filter limit of
about 200. A PostScript printer needs about half that (100). Setting
the limit below these thresholds will effectively limit the scheduler
to printing a single job at any time. </P>
<P>The default limit is 0.
<!-- NEED 3in ---->
</P>
<H3><A NAME="Group">Group</A></H3>
<HR>
<H4>Examples</H4>
@@ -1931,6 +1957,22 @@ printcap file can then be used by applications that are hardcoded to
look at the printcap file for the available printers.
<!-- NEED 3in ---->
</P>
<H3><A NAME="RemoteRoot">RemoteRoot</A></H3>
<HR>
<H4>Examples</H4>
<UL>
<PRE>
RemoteRoot remroot
RemoteRoot root
</PRE>
</UL>
<H4>Description</H4>
<P>The <CODE>RemoteRoot</CODE> directive sets the username for
unauthenticated root requests from remote hosts. The default username
is <VAR>remroot</VAR>. Setting <CODE>RemoteRoot</CODE> to <VAR>root</VAR>
effectively disables this security mechanism.
<!-- NEED 3in ---->
</P>
<H3><A NAME="RequestRoot">RequestRoot</A></H3>
<HR>
<H4>Examples</H4>
@@ -2330,10 +2372,10 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
<!-- NEW PAGE ---->
<H2><A NAME="PRINTER_ACCOUNTING">Printer Accounting</A></H2>
<P>CUPS maintains a log of all accesses, errors, and pages that are </P>
<P>The log files are normally stored in the <VAR>/var/log/cups</VAR>
directory. You can change this by editing the <VAR>/etc/cups/cupsd.conf</VAR>
configuration file. </P>
<P>ESP Print Pro maintains a log of all accesses, errors, and pages
that are printed. The log files are normally stored in the <VAR>
/var/log/cups</VAR> directory. You can change this by editing the <VAR>
/etc/cups/cupsd.conf</VAR> configuration file. </P>
<H3><A NAME="7_6_1">The access_log File</A></H3>
<P>The <VAR>access_log</VAR> file lists each HTTP resource that is
accessed by a web browser or CUPS/IPP client. Each line is in the
+2304 -2219
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+53 -7
Ver Arquivo
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.3">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Administrators Manual</TITLE>
</HEAD>
@@ -11,7 +11,7 @@
<P>This software administrators manual provides printer administration
information for the Common UNIX Printing System<SUP>TM</SUP>
("CUPS<SUP>TM</SUP>"), version 1.1.1.
("CUPS<SUP>TM</SUP>"), version 1.1.3.
<EMBED SRC="system-overview.shtml">
@@ -848,6 +848,7 @@ determine how the server operates:
<LI><A HREF="#Deny"><CODE>Deny</CODE></A>
<LI><A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A>
<LI><A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A>
<LI><A HREF="#FilterLimit"><CODE>FilterLimit</CODE></A>
<LI><A HREF="#Group"><CODE>Group</CODE></A>
<LI><A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
<LI><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
@@ -872,6 +873,7 @@ determine how the server operates:
<LI><A HREF="#PreserveJobFiles"><CODE>PreserveJobFiles</CODE></A>
<LI><A HREF="#PreserveJobHistory"><CODE>PreserveJobHistory</CODE></A>
<LI><A HREF="#Printcap"><CODE>Printcap</CODE></A>
<LI><A HREF="#RemoteRoot"><CODE>RemoteRoot</CODE></A>
<LI><A HREF="#RequestRoot"><CODE>RequestRoot</CODE></A>
<LI><A HREF="#RIPCache"><CODE>RIPCache</CODE></A>
<LI><A HREF="#ServerAdmin"><CODE>ServerAdmin</CODE></A>
@@ -1536,6 +1538,33 @@ default error log file is <VAR>/var/log/cups/error_log</VAR>.
<P>The special name "syslog" can be used to send the error information
to the system log instead of a plain file.
<!-- NEED 3in -->
<H3><A NAME="FilterLimit">FilterLimit</A></H3>
<HR>
<H4>Examples</H4>
<UL><PRE>
FilterLimit 0
FilterLimit 200
FilterLimit 1000
</PRE></UL>
<H4>Description</H4>
<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost
of all running job filters. It can be used to limit the number
of filter programs that are run on a server to minimize disk,
memory, and CPU resource problems. A limit of 0 disables filter
limiting.
<P>An average print to a non-PostScript printer needs a filter
limit of about 200. A PostScript printer needs about half that
(100). Setting the limit below these thresholds will effectively
limit the scheduler to printing a single job at any time.
<P>The default limit is 0.
<!-- NEED 3in -->
<H3><A NAME="Group">Group</A></H3>
<HR>
@@ -1934,6 +1963,24 @@ printcap file is written whenever a printer is added or removed. The
printcap file can then be used by applications that are hardcoded to
look at the printcap file for the available printers.
<!-- NEED 3in -->
<H3><A NAME="RemoteRoot">RemoteRoot</A></H3>
<HR>
<H4>Examples</H4>
<UL><PRE>
RemoteRoot remroot
RemoteRoot root
</PRE></UL>
<H4>Description</H4>
<P>The <CODE>RemoteRoot</CODE> directive sets the username for
unauthenticated root requests from remote hosts. The default
username is <VAR>remroot</VAR>. Setting <CODE>RemoteRoot</CODE>
to <VAR>root</VAR> effectively disables this security mechanism.
<!-- NEED 3in -->
<H3><A NAME="RequestRoot">RequestRoot</A></H3>
<HR>
@@ -2400,11 +2447,10 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
<!-- NEW PAGE -->
<H2><A NAME="PRINTER_ACCOUNTING">Printer Accounting</A></H2>
<P>CUPS maintains a log of all accesses, errors, and pages that are
<P>The log files are normally stored in the <VAR>/var/log/cups</VAR>
directory. You can change this by editing the
<VAR>/etc/cups/cupsd.conf</VAR> configuration file.
<P>ESP Print Pro maintains a log of all accesses, errors, and
pages that are printed. The log files are normally stored in the
<VAR>/var/log/cups</VAR> directory. You can change this by
editing the <VAR>/etc/cups/cupsd.conf</VAR> configuration file.
<H3>The access_log File</H3>
+1 -1
Ver Arquivo
@@ -172,7 +172,7 @@ EPSON printers are included that use these filters. </P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
+136 -138
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000731155344Z)/Title( CUPS Software Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182250Z)/Title( CUPS Software Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Oblique/Encoding 2 0 R>>endobj
@@ -385,14 +385,12 @@ endobj
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›u¯b øñÇm†ç÷dÓøÕ:^,ë—¸p¾ÈÒ<­jŒOQVŸm¼>ÂþnXZë_ŽpþŽëó²X•q–‘´Žö;|Øçw(’m™Ö¯x$6EYa7šï³‰êXá…ï„ᱟIÜϽ‰û‰6Ioo2×Ö„±:ŒŽ­£õ³(»ÂPXò"ï
ÈOW…«èÄ4L¬|ôbÑËà Ö?ÃÇwБ \‹™Z¬!ÜC3 ÃÍ|Ã×â–år~2È3"Ãjlðœ@Þ¶ OÏ3ù©‡qÒòŒÈÀ±Í8¼k „Ó™ú†ÓóÞdÇþÅ›|•+èõƒËñ'J@ç‹â QÕ¡'V‚”*0W+\§k×E™Å5„‘¤Ë4‘5tÔ‰{b8I¥ß×ìömÕ5öÐË·ÇH£.ÏD%¶ê’ ººQ—oÔÕò.8-Ï̾eSì5<'wcªç¼G¹éù²éYêľɿ]œ¯¶Ø¥ûydÑsZ.àj‘RM«}ØDÏàÏâ â|ÑÉ'5üØ5*Tª¥hï›,£WyR,¨®‘ᨌóêà ¤³E­_Î*Tào¶éBgç¾Xˆµt(Yœ×irÀ—Ó(ܜȜO¥äb¿Dïuî§@çÁÀ9AÕÖ&ýéxF ïËÚ¨ãAç'0Æ osªôýp}‰ïzÁîÒ\ôµ*Ö bê")Ö_^‡ìÀB¶É’Zh²ÔÒ2 :šÀ9AY
0&ZžTå&u-Ïä=ª©Zž”Õé€ÿœ Jñ×òŒ@>0w‚?¬;°U†I5öÔõFí }SÄë
禲ºpä¢é|Tnþ?aÄÌNGr¡ÓQC+™hh`ÞpŒÔ㜠yÎp‚täàYÖòŒ YÌÅ(éxNŽüûœ î*U«ã¼KÓ­–gòþt žœ YzÏ S/`*õGð R¢x€°.·I½ÅY/­ôF߆ôb=íLèeþQ»4|¶¢– ¨ZiVC3€ŠãqNH}J¹Žgòݽ´<#H¤4 ëxNÐ# ÉêxFÐh‘ˆ:þ¹SÃg2Âyo6”ç'Q¿‘ÃÝ|&ƒ³L—ûêëkÜÔ’w•m¹ÐÉ¡¡U¶54¨Æ9T148'¨— òçmkˆç„J¯Þ}NPzJoÇÞ©­îk2½®åŽàû+Ž×µøU«ÑÇû.«0Ã÷(’#ë×'Øñû‘U-t nh•? ÍY=
ç þ€3œPʧå9¡šŒÞNdÍiÔòŒ áÆ¥jÔñ ú‘à eηXìéZ"{È\ÄUšÈc?KWô‹Ùy’ˆªz¯[ì>®:ƒß*·wûþ÷'î‰oâW0é#§Ð_'¿VÐTÂendstream
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›µèV,?ÿ¸ÑðüžŒ¿ZÏ‹eýÎYš§U*ÊŠ´×GØßKký+âÎßq}^«2Î2ÒÖÑ~‡ûüE²-ÓúÏĦ(ë#ìFó}v#Q«¼ðñ0<Vâ3‰û¹7q?Ñ&éíMæÚ¢0V§Ñ±Õi´qñ£~eWª«B^äãÊP9ðé²p˜†‰¥^,zy¸Áh˜àø:’ëc5S5„{hd¸™oøZܲ\ÎOyFdXŽížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°u9þD è|Q<áñ/ª:”âÄJR æj…ët-àº(³¸†p#’t™&²†Ž:qO Ç ©ôûšÝ¾­ºÆzùöiÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕÛt?Œ zNË\-RÊà±Icµ›èüY<Aœ/:ù„¢†¡f…êCµí}“eô*OŠÕ52•q^}¸t¶ºÞOþf.Äqvî‹…XK‡B‘Åy&|9Â͉ÌùT
@.öK„ø^÷è~štÌœTmmÒŸŽgò¾¬t~#`üú6§Jß×—ø®Œà.ÍE_«b‘a Â!¦.býåuÈ,d,©…&K--“ £€Q´­œ”¥c¢åAUn‚Q×òŒ@Þ£šªåAYøÏ ê¡äs'øÃª±[e˜TcO]oÔÎÐ7E¼®pn*ñ «G.šÎGåæÿÓFÌìt$:5´’‰†fæ ÇH=Î Ò‘7à 'HGže-ÏšÅ\Œ’ŽçéÈ°Ï ê®Rµ:žÈ»4ÝjyF ïOâÉ šõ¨÷÷ü¦R²iÆk!%Š7ër›Ô[œåñÒJoômH/ÖÓ΄^柵KÃg+j¹Ð‰º¡•f54¨8ç‰Ô§”ëxF ÐÝKË3‚DJºŽç]0’¬Žg‰¨ã;5|&#l‘÷ñfCy~õ‹9ÜÍgR18Ët¹¯¾¾ÆM-y'QÙ– Ze[C3€jœCCƒs‚zÙ ïqÞ¶†xN¨ôêÝç¥×¡ôvüéÚê¾&ÓëZâx]‹_µq¼ï²
ã1|"9²~}‚¿YÕB—à†VùÓÐ  ‘Õ£ipNÐê8à 5¬xZžªÉèýáDÖœF-Ïn\ªF€ œ ‰Q8ÜPÆá|‹Åž®%²‡œÁE\¥‰<ö³tE¿˜'‰¨ª÷ºÅîãª3ø­RpÛq·ïãžø&~“>rýuòHÒU'endstream
endobj
220 0 obj
1330
1328
endobj
221 0 obj<</Type/Page/Parent 205 0 R/Contents 222 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
222 0 obj<</Length 223 0 R/Filter/FlateDecode>>stream
@@ -863,137 +861,137 @@ xref
0000027260 00000 n
0000027281 00000 n
0000027436 00000 n
0000028837 00000 n
0000028859 00000 n
0000028972 00000 n
0000029162 00000 n
0000029183 00000 n
0000029333 00000 n
0000030372 00000 n
0000030393 00000 n
0000030552 00000 n
0000031483 00000 n
0000031504 00000 n
0000031635 00000 n
0000032597 00000 n
0000032618 00000 n
0000032749 00000 n
0000033673 00000 n
0000033694 00000 n
0000033844 00000 n
0000034897 00000 n
0000034918 00000 n
0000035049 00000 n
0000035795 00000 n
0000035816 00000 n
0000035947 00000 n
0000037080 00000 n
0000037102 00000 n
0000037242 00000 n
0000038196 00000 n
0000038217 00000 n
0000038348 00000 n
0000038939 00000 n
0000038960 00000 n
0000039073 00000 n
0000039262 00000 n
0000039283 00000 n
0000039423 00000 n
0000040091 00000 n
0000040112 00000 n
0000040225 00000 n
0000040414 00000 n
0000040435 00000 n
0000040589 00000 n
0000042985 00000 n
0000043007 00000 n
0000043162 00000 n
0000044800 00000 n
0000044822 00000 n
0000044877 00000 n
0000044982 00000 n
0000045126 00000 n
0000045232 00000 n
0000045352 00000 n
0000045461 00000 n
0000045610 00000 n
0000045720 00000 n
0000045827 00000 n
0000045981 00000 n
0000046117 00000 n
0000046214 00000 n
0000046324 00000 n
0000046439 00000 n
0000046552 00000 n
0000046665 00000 n
0000046762 00000 n
0000046920 00000 n
0000047017 00000 n
0000047127 00000 n
0000047237 00000 n
0000047335 00000 n
0000047479 00000 n
0000047582 00000 n
0000047700 00000 n
0000047815 00000 n
0000047921 00000 n
0000048100 00000 n
0000048215 00000 n
0000048336 00000 n
0000048456 00000 n
0000048581 00000 n
0000048688 00000 n
0000048849 00000 n
0000048974 00000 n
0000049107 00000 n
0000049240 00000 n
0000049364 00000 n
0000049491 00000 n
0000049601 00000 n
0000049749 00000 n
0000049862 00000 n
0000049970 00000 n
0000050118 00000 n
0000050220 00000 n
0000050336 00000 n
0000050456 00000 n
0000050570 00000 n
0000050683 00000 n
0000050800 00000 n
0000050920 00000 n
0000051037 00000 n
0000051139 00000 n
0000051290 00000 n
0000051397 00000 n
0000051511 00000 n
0000051624 00000 n
0000051744 00000 n
0000051858 00000 n
0000051983 00000 n
0000052093 00000 n
0000052204 00000 n
0000052318 00000 n
0000052430 00000 n
0000052542 00000 n
0000052654 00000 n
0000052757 00000 n
0000052903 00000 n
0000053003 00000 n
0000053116 00000 n
0000053230 00000 n
0000053343 00000 n
0000053452 00000 n
0000053566 00000 n
0000053679 00000 n
0000053792 00000 n
0000053908 00000 n
0000054022 00000 n
0000054123 00000 n
0000054257 00000 n
0000054354 00000 n
0000054454 00000 n
0000028835 00000 n
0000028857 00000 n
0000028970 00000 n
0000029160 00000 n
0000029181 00000 n
0000029331 00000 n
0000030370 00000 n
0000030391 00000 n
0000030550 00000 n
0000031481 00000 n
0000031502 00000 n
0000031633 00000 n
0000032595 00000 n
0000032616 00000 n
0000032747 00000 n
0000033671 00000 n
0000033692 00000 n
0000033842 00000 n
0000034895 00000 n
0000034916 00000 n
0000035047 00000 n
0000035793 00000 n
0000035814 00000 n
0000035945 00000 n
0000037078 00000 n
0000037100 00000 n
0000037240 00000 n
0000038194 00000 n
0000038215 00000 n
0000038346 00000 n
0000038937 00000 n
0000038958 00000 n
0000039071 00000 n
0000039260 00000 n
0000039281 00000 n
0000039421 00000 n
0000040089 00000 n
0000040110 00000 n
0000040223 00000 n
0000040412 00000 n
0000040433 00000 n
0000040587 00000 n
0000042983 00000 n
0000043005 00000 n
0000043160 00000 n
0000044798 00000 n
0000044820 00000 n
0000044875 00000 n
0000044980 00000 n
0000045124 00000 n
0000045230 00000 n
0000045350 00000 n
0000045459 00000 n
0000045608 00000 n
0000045718 00000 n
0000045825 00000 n
0000045979 00000 n
0000046115 00000 n
0000046212 00000 n
0000046322 00000 n
0000046437 00000 n
0000046550 00000 n
0000046663 00000 n
0000046760 00000 n
0000046918 00000 n
0000047015 00000 n
0000047125 00000 n
0000047235 00000 n
0000047333 00000 n
0000047477 00000 n
0000047580 00000 n
0000047698 00000 n
0000047813 00000 n
0000047919 00000 n
0000048098 00000 n
0000048213 00000 n
0000048334 00000 n
0000048454 00000 n
0000048579 00000 n
0000048686 00000 n
0000048847 00000 n
0000048972 00000 n
0000049105 00000 n
0000049238 00000 n
0000049362 00000 n
0000049489 00000 n
0000049599 00000 n
0000049747 00000 n
0000049860 00000 n
0000049968 00000 n
0000050116 00000 n
0000050218 00000 n
0000050334 00000 n
0000050454 00000 n
0000050568 00000 n
0000050681 00000 n
0000050798 00000 n
0000050918 00000 n
0000051035 00000 n
0000051137 00000 n
0000051288 00000 n
0000051395 00000 n
0000051509 00000 n
0000051622 00000 n
0000051742 00000 n
0000051856 00000 n
0000051981 00000 n
0000052091 00000 n
0000052202 00000 n
0000052316 00000 n
0000052428 00000 n
0000052540 00000 n
0000052652 00000 n
0000052755 00000 n
0000052901 00000 n
0000053001 00000 n
0000053114 00000 n
0000053228 00000 n
0000053341 00000 n
0000053450 00000 n
0000053564 00000 n
0000053677 00000 n
0000053790 00000 n
0000053906 00000 n
0000054020 00000 n
0000054121 00000 n
0000054255 00000 n
0000054352 00000 n
0000054452 00000 n
trailer
<</Size 349/Root 348 0 R/Info 1 0 R/ID[<8de922e9a9f5038e4e82e5319b2335a2><8de922e9a9f5038e4e82e5319b2335a2>]>>
<</Size 349/Root 348 0 R/Info 1 0 R/ID[<593d6a8686c294605faf2eb41ba1551f><593d6a8686c294605faf2eb41ba1551f>]>>
startxref
54682
54680
%%EOF
+843 -620
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+7820 -7521
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+261 -3
Ver Arquivo
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SPM-1.1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SPM-1.1.3">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Programmers Manual</TITLE>
</HEAD>
@@ -10,7 +10,7 @@
<H1 ALIGN="RIGHT">Preface</H1>
<P>This software programmers manual provides software programming
information for the Common UNIX Printing System ("CUPS") Version 1.1.1.
information for the Common UNIX Printing System ("CUPS") Version 1.1.3.
<EMBED SRC="system-overview.shtml">
@@ -450,6 +450,65 @@ if (jobid == 0)
puts(cupsErrorString(cupsLastError()));
</PRE></UL>
<H3>Passwords and Authentication</H3>
<P>CUPS supports authentication of any request, including
submission of print jobs. The default mechanism for getting the
username and password is to use the login user and a password
from the console.
<P>To support other types of applications, in particular
Graphical User Interfaces ("GUIs"), the CUPS API provides
functions to set the default username and to register a callback
function that returns a password string.
<P>The <A HREF="cupsSetPasswordCB"><CODE>cupsSetPasswordCB()</CODE></A>
function is used to set a password callback in your program. Only one
function can be used at any time.
<P>The <A HREF="cupsSetUser"><CODE>cupsSetUser()</CODE></A> function sets
the current username for authentication. This function can be called by
your password callback function to change the current username as needed.
<P>The following example shows a simple password callback that gets a
username and password from the user:
<UL><PRE>
#include &lt;cups/cups.h&gt;
const char *
my_password_cb(const char *prompt)
{
char user[65];
puts(prompt);
/* Get a username from the user */
printf("Username: ");
if (fgets(user, sizeof(user), stdin) == NULL)
return (NULL);
/* Strip the newline from the string and set the user */
user[strlen(user) - 1] = '\0';
cupsSetUser(user);
/* Use getpass() to ask for the password... */
return (getpass("Password: "));
}
...
cupsSetPasswordCB(my_password_cb);
</PRE></UL>
<P>Similarly, a GUI interface could display the prompt string in a
window with input fields for the username and password. The username
should probably default to the value of
<A HREF="#cupsUser"><CODE>cupsUser()</CODE></A> to make things easier
on the user.
<H2>PPD Services</H2>
<P>CUPS includes functions to access and manipulate PostScript Printer
@@ -3259,6 +3318,9 @@ password = cupsGetPassword("Please enter a password:");
<P>
<A HREF="#cupsServer">cupsServer()</A>,
<A HREF="#cupsSetPasswordCB">cupsSetPasswordCB()</A>,
<A HREF="#cupsSetServer">cupsSetServer()</A>,
<A HREF="#cupsSetUser">cupsSetUser()</A>,
<A HREF="#cupsUser()">cupsUser()</A>
<!-- NEW PAGE --><H2><A NAME="cupsGetPPD">cupsGetPPD()</A></H2>
@@ -4429,8 +4491,160 @@ server = cupsServer();
<P>
<A HREF="#cupsGetPassword">cupsGetPassword()</A>,
<A HREF="#cupsSetPasswordCB">cupsSetPasswordCB()</A>,
<A HREF="#cupsSetServer">cupsSetServer()</A>,
<A HREF="#cupsSetUser">cupsSetUser()</A>,
<A HREF="#cupsUser">cupsUser()</A>
<!-- NEW PAGE --><H2><A NAME="cupsSetPasswordCB">cupsSetPasswordCB()</A></H2>
<H3>Usage</H3>
<PRE>
void
cupsSetPasswordCB(const char *(*cb)(const char *prompt));
</PRE>
<H3>Arguments</H3>
<CENTER><TABLE WIDTH="80%" BORDER>
<TR>
<TH>Argument</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>cb</TD>
<TD>The password callback function.</TD>
</TR>
</TABLE></CENTER>
<H3>Description</H3>
<P><CODE>cupsSetPasswordCB()</CODE> sets the callback function to use when
asking the user for a password. The callback function must accept a single
character string pointer (the prompt string) and return <CODE>NULL</CODE>
if the user did not enter a password string or a pointer to the password
string otherwise.
<H3>Example</H3>
<PRE>
#include &lt;cups/cups.h&gt;
const char *
my_password_cb(const char *prompt)
{
return (getpass(prompt));
}
...
char *password;
...
cupsSetPasswordCB(my_password_cb);
password = cupsGetPassword("Please enter a password:");
</PRE>
<H3>See Also</H3>
<P>
<A HREF="#cupsServer">cupsServer()</A>,
<A HREF="#cupsSetServer">cupsSetServer()</A>,
<A HREF="#cupsSetUser">cupsSetUser()</A>,
<A HREF="#cupsUser()">cupsUser()</A>
<!-- NEW PAGE --><H2><A NAME="cupsSetServer">cupsSetServer()</A></H2>
<H3>Usage</H3>
<PRE>
void
cupsSetServer(const char *server);
</PRE>
<H3>Arguments</H3>
<CENTER><TABLE WIDTH="80%" BORDER>
<TR>
<TH>Argument</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>server</TD>
<TD>The default server to use.</TD>
</TR>
</TABLE></CENTER>
<H3>Description</H3>
<P><CODE>cupsSetServer()</CODE> sets the default server to use for
the CUPS API. If the <CODE>server</CODE> argument is <CODE>NULL</CODE>,
the default server is used.
<H3>Example</H3>
<PRE>
#include &lt;cups/cups.h&gt;
cupsSetServer("foo.bar.com");
</PRE>
<H3>See Also</H3>
<P>
<A HREF="#cupsServer">cupsServer()</A>,
<A HREF="#cupsSetPasswordCB">cupsSetPasswordCB()</A>,
<A HREF="#cupsSetUser">cupsSetUser()</A>,
<A HREF="#cupsUser()">cupsUser()</A>
<!-- NEW PAGE --><H2><A NAME="cupsSetUser">cupsSetUser()</A></H2>
<H3>Usage</H3>
<PRE>
void
cupsSetUser(const char *user);
</PRE>
<H3>Arguments</H3>
<CENTER><TABLE WIDTH="80%" BORDER>
<TR>
<TH>Argument</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>user</TD>
<TD>The user name string to use.</TD>
</TR>
</TABLE></CENTER>
<H3>Description</H3>
<P><CODE>cupsSetUser()</CODE> sets the default user name for authentication.
If the <CODE>user</CODE> argument is <CODE>NULL</CODE> then the current
login user is used.
<H3>Example</H3>
<PRE>
#include &lt;cups/cups.h&gt;
...
cupsSetUser("root");
</PRE>
<H3>See Also</H3>
<P>
<A HREF="#cupsServer">cupsServer()</A>,
<A HREF="#cupsSetPasswordCB">cupsSetPasswordCB()</A>,
<A HREF="#cupsSetServer">cupsSetServer()</A>,
<A HREF="#cupsUser()">cupsUser()</A>
<!-- NEW PAGE --><H2><A NAME="cupsTempFile">cupsTempFile()</A></H2>
<H3>Usage</H3>
@@ -7047,7 +7261,8 @@ http = httpConnect(cupsServer(), ippPort());
<H3>See Also</H3>
<A HREF="#cupsServer"><CODE>cupsServer()</CODE></A>
<A HREF="#cupsServer"><CODE>cupsServer()</CODE></A>,
<A HREF="#ippSetPort"><CODE>ippSetPort()</CODE></A>
<!-- NEW PAGE --><H2><A NAME="ippRead">ippRead()</A></H2>
@@ -7112,6 +7327,49 @@ if (status == IPP_DATA)
<A HREF="#ippWrite"><CODE>ippWrite()</CODE></A>
<!-- NEW PAGE --><H2><A NAME="ippSetPort">ippSetPort()</A></H2>
<H3>Usage</H3>
<PRE>
void
ippSetPort(int port);
</PRE>
<H3>Arguments</H3>
<CENTER><TABLE WIDTH="80%" BORDER>
<TR>
<TH>Argument</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>port</TD>
<TD>The port number to use</TD>
</TR>
</TABLE></CENTER>
<H3>Description</H3>
<P>The <CODE>ippSetPort()</CODE> function sets the default IPP port number
for requests.
<H3>Example</H3>
<PRE>
#include &lt;cups/http.h>
#include &lt;cups/ipp.h>
...
ippSetPort(8631);
</PRE>
<H3>See Also</H3>
<A HREF="#ippPort"><CODE>ippPort()</CODE></A>
<!-- NEW PAGE --><H2><A NAME="ippTimeToDate">ippTimeToDate()</A></H2>
<H3>Usage</H3>
+1 -1
Ver Arquivo
@@ -89,7 +89,7 @@ following sections:</P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
BIN
Ver Arquivo
Arquivo binário não exibido.
+1 -1
Ver Arquivo
@@ -92,7 +92,7 @@ sections:</P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
BIN
Ver Arquivo
Arquivo binário não exibido.
+1 -1
Ver Arquivo
@@ -86,7 +86,7 @@ EPSON printers are included that use these filters. </P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
BIN
Ver Arquivo
Arquivo binário não exibido.
+3 -3
Ver Arquivo
@@ -4,7 +4,7 @@
<TITLE> CUPS Software Users Manual</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.3">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<STYLE>
BODY { font-family: serif; font-size: 11.0pt }
@@ -22,7 +22,7 @@ PRE { font-size: 9.0pt }
<BODY BGCOLOR="#ffffff">
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
<H1> CUPS Software Users Manual</H1></A><BR>
CUPS-SUM-1.1.1<BR>
CUPS-SUM-1.1.3<BR>
Easy Software Products<BR>
Copyright 1997-2000, All Rights Reserved<BR>
</CENTER>
@@ -125,7 +125,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
<HR>
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
<P>This software users manual describes how to use the Common UNIX
Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>TM</SUP>&quot;) Version 1.1.1. </P>
Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>TM</SUP>&quot;) Version 1.1.3. </P>
<H2><A NAME="1_1">System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
+200 -195
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000731155420Z)/Title( CUPS Software Users Manual)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182337Z)/Title( CUPS Software Users Manual)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -343,7 +343,10 @@ h)
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
—XŒÒ¸°DôÖ!‰kvKÄgиš…X!•kæø—°MäšÕ)¹/T®9½3eû‰Ê5c`OJš#sÍ6Ähi/t®™†1±ŒÁ5Ï#îí2¸fbÔ,%=pÍ`sM®ôT9×ÄÚÁÈdr‰<\)´ášRY©Ã\®éÀx™dl.FÚÏ$ŽËšk¢ÉóÄ×þ9椰áòoŠü,M+.ß`ɧv\~UÑ&Yؒ˧ƒ¶Ê¶åòf—ŒoÍEΡö41qÏåcÚb™®î†Ë½,ÚŸ›pÂÕ
·¶øhß"7\o¶è®Ë’CW+Âé,—\ŽºìþІÆÕŠ'küâª-.¹ø©ÕªGw-qËe‘^HÝž“‹Kæ–ʇìþ‹ë6øà"æÅÇ[ï¹ðÃõV^qÙññýw/·÷Æuê5ƒAÞm_}ÝÛ'ש۞¶wê~z|õy_ß\çŽ;žpØ>ÜËývûøúêý–“pÍPàÿÿÿârõä
äÿÿMÎM0à=§xKMlmKºTƒ;„r"ÅŸ1-h¸½ÔÄhf7ó¾—Ùé`}P ºgŒrðDÒºY`_å%ʾ^µ5¨œ±Y}ën©o³“àüë6 <¤Â;ÏHYe„Óy|”(ƒˆˆJOk7ýjsÛ7ãipŸœ iôWÔ?&{=_p¥b"c+l»…_:f~éiOSƒ7Üdï^endstream
äÿÿMÎM0à=§˜¥&vì”
w$åDŠ?!bZÐp{©‰Ñí¼÷½ÌNëƒÁA·@œ#%ÐÍöU^Bٷë¶*g¬ƒ¬¾u·Ô·ÙI úº 0
Qxç+«Œ†¾ÊÆÀD„Òçií¦ßlnûf< îÓ“!FCýc²×óeR*fs¾‚m×
3¿ô4§©ŽÁÝ>ï`endstream
endobj
192 0 obj
6279
@@ -360,11 +363,13 @@ endobj
196 0 obj<</Type/Page/Parent 189 0 R/Contents 197 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 6 0 R/F8 10 0 R/F9 11 0 R>>>>/Annots 18 0 R>>endobj
197 0 obj<</Length 198 0 R/Filter/FlateDecode>>stream
xÚ…UßoÓ0~ï_qâiH4$iÖfŒQĶ@:ÄÃ^Ü了9q°Vå¯çÎv·®€P¥H¶Ïþ~Üg÷ç(˜~ ÌR˜L¡jGç‹ÑÛgưXA–dÑ ¦³õI¡q%*|½øA$ WŒ}Éx’¥QÊUucÀ¨•Ý
0ÔZÑ BB¦ÒÍ ¬Õ¬âU°k„÷ªmUw7óïP観M÷åÎXl÷h9ƒMf9LÌõKIJxîO^½¿+Ê—ó(ûϾW÷¯yeœe1ëI&^Î7âß·$âŸß{ÉŒ÷Æ´5¥ƒ©Ì“…Û êMƒ[®»\Œâ(&wù“ðçëdÓ$Ê!¥ïZÈrFñ# ¥÷~Ï,¦…”ètÖ½V›†,½ÒV,%Ò\0KŠjX)íL¼OO§ã¥0XƒêQ WbEÁÜÂZX"vÔ’ Jª©a¹f}DY?ÀÉ¥0»
¢¤ÛKrÒè4 XÍ_Ô?´'O[ƒvž*´ª‡Êš—Üâ=7NÓ*‹ä‹±¢«…®Ÿ}1J–ûÇÖ)}Æ6ØÕŠrIÕ>¡¼°Ø=g€#üÍí9GýˆwPQpib, Qó 1Q8 z5îp2.ís®ëÐ>GDZU)ÉÙE„¯¥&Òubò„#¸Øiƒjéùÿp DXPõg¢qÄÝaP4.ò#€ÏÅ””Tš¿FcĹTÕ#/—×ç´üÆý®ïKš&ª÷'"zŒDŸÐ^4+KGô6¡N iÔ¸zŽ*¥kÛØ5h¤VÒ`5t7EÈÆî‚õ¢® )[¥½D"·ÔjkX3“)”±%½}0õÚ…{^z×nRxþ<B¹uù 숖c•eCW£¿Kí%k¥~Wrð²ŒUmó‹6áÁP+¸º¹ƒ«5Ñö¼ˆT5h•»@K­þ¬:NcÿhcDM˽Z5tõ¿Î Jˆ°žÙúPR§ºñ_ÁOJI)Úž6׺až.X gïeQÞÞ¡î÷9Œ ·ö¨áé6Ž;Û¿ùÓë5N’™·ìà#ËãèŒi6 oÊ—Ño*ö÷ëendstream
0ÔZÑ BB¦ÒÍ ¬Õ¬âU°k„÷ªmUw7óïP観M÷åÎXl÷h9ƒMf9LÌõKIJxîO^½¿+Ê—ó(ûϾW÷¯yeœe1ëI&^Î7âß·$J¢Iä÷žA2ã½1mMé`*ódávƒzÓà–ë.£8ŠÉ]þ$üùzÙ4‰rHé;…²œQüHBé½ß3‹i!¥:õ@¯Õ¦! A@¯´K‰4Ì’b‡VJ;ïÓÓéx) Ö zÔ•GÑD0·°–ˆµdƒ’jjXî€Ypr)ÌhiÆö’œ4: õÏ-äÉÓÖ ‡gÁÏ}€
­ê¡²æ%·xÏSDÆ´Ê"ùb¬èj¡ëg_Œ’ƒåþ±5BJŸ± vµ¢\RµOh/,v`Ïàˆ†s{ÎQ?¢ÄT˦C HÔ|CLH§^;œ€ŒKûœë:´ÏQ'VUJrvçEAQák©‰t˜<áˆ.vÚà‡Zzþ?Tý™hqw àsqÁ%%•æ¯Ññ€p.UõÈËåõ9-¿qg¿ëû’¦‰êý‰ˆ#Á'´ÆÊÒ} MD¨SBun†ž£JéÚ6v ©•4X ]ÅM²±»`½¨kdÊVéG/‘È-µÚÖÌd
elIïGŒC}„váž—Þµ›„^§¿OPnÝpn;¢%ä˜påAÙÐÕèïÒ_{ÉZ©ß•ü…¬cUÛü"¤Mx0Ô
®nîàjM´=/"U Zcgå.ÐR«?«N£ÓØ¿EÚØÑAÓr¯V ]ý¯ó‚",„g¶>”Ô©n|àWð“RRж§Íµn˜§ ÖÇÂÙ{Y”·7G¨û}#È­=jxºcãÎöocþôz“dæ-;øãÈò8:£EšM›òeô5¦÷íendstream
endobj
198 0 obj
833
835
endobj
199 0 obj<</Type/Page/Parent 189 0 R/Contents 200 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 6 0 R/F5 7 0 R/F8 10 0 R/F9 11 0 R/Fa 12 0 R/Fc 13 0 R>>>>/Annots 24 0 R>>endobj
200 0 obj<</Length 201 0 R/Filter/FlateDecode>>stream
@@ -1104,196 +1109,196 @@ xref
0000024134 00000 n
0000024154 00000 n
0000024301 00000 n
0000025205 00000 n
0000025226 00000 n
0000025420 00000 n
0000026543 00000 n
0000026565 00000 n
0000026707 00000 n
0000027133 00000 n
0000027154 00000 n
0000027268 00000 n
0000027453 00000 n
0000027474 00000 n
0000027616 00000 n
0000028523 00000 n
0000028544 00000 n
0000028686 00000 n
0000030203 00000 n
0000030225 00000 n
0000030367 00000 n
0000031354 00000 n
0000031375 00000 n
0000031489 00000 n
0000031675 00000 n
0000031696 00000 n
0000031847 00000 n
0000032558 00000 n
0000032579 00000 n
0000032762 00000 n
0000033871 00000 n
0000033893 00000 n
0000034067 00000 n
0000034806 00000 n
0000034827 00000 n
0000034941 00000 n
0000035145 00000 n
0000035166 00000 n
0000035317 00000 n
0000035868 00000 n
0000035889 00000 n
0000036050 00000 n
0000037158 00000 n
0000037180 00000 n
0000037341 00000 n
0000038208 00000 n
0000038229 00000 n
0000038380 00000 n
0000039033 00000 n
0000039054 00000 n
0000039233 00000 n
0000040262 00000 n
0000040283 00000 n
0000040452 00000 n
0000041608 00000 n
0000041630 00000 n
0000041799 00000 n
0000042812 00000 n
0000042833 00000 n
0000042974 00000 n
0000043301 00000 n
0000043322 00000 n
0000043487 00000 n
0000044307 00000 n
0000044328 00000 n
0000044488 00000 n
0000045394 00000 n
0000045415 00000 n
0000045562 00000 n
0000046404 00000 n
0000046425 00000 n
0000046591 00000 n
0000048039 00000 n
0000048061 00000 n
0000048217 00000 n
0000048599 00000 n
0000048620 00000 n
0000048762 00000 n
0000050271 00000 n
0000050293 00000 n
0000050426 00000 n
0000052315 00000 n
0000052337 00000 n
0000052460 00000 n
0000054268 00000 n
0000054290 00000 n
0000054423 00000 n
0000056365 00000 n
0000056387 00000 n
0000056520 00000 n
0000057252 00000 n
0000057273 00000 n
0000057415 00000 n
0000059117 00000 n
0000059139 00000 n
0000059281 00000 n
0000061230 00000 n
0000061252 00000 n
0000061384 00000 n
0000063130 00000 n
0000063152 00000 n
0000063284 00000 n
0000065054 00000 n
0000065076 00000 n
0000065208 00000 n
0000067041 00000 n
0000067063 00000 n
0000067195 00000 n
0000069160 00000 n
0000069182 00000 n
0000069324 00000 n
0000070046 00000 n
0000070067 00000 n
0000070181 00000 n
0000070386 00000 n
0000070407 00000 n
0000070563 00000 n
0000073475 00000 n
0000073497 00000 n
0000073654 00000 n
0000075593 00000 n
0000075615 00000 n
0000075670 00000 n
0000075775 00000 n
0000075919 00000 n
0000076022 00000 n
0000076140 00000 n
0000076261 00000 n
0000076375 00000 n
0000076479 00000 n
0000076644 00000 n
0000076752 00000 n
0000076867 00000 n
0000076972 00000 n
0000077080 00000 n
0000077188 00000 n
0000077297 00000 n
0000077413 00000 n
0000077511 00000 n
0000077677 00000 n
0000077794 00000 n
0000077913 00000 n
0000078037 00000 n
0000078162 00000 n
0000078312 00000 n
0000078453 00000 n
0000078562 00000 n
0000078727 00000 n
0000078866 00000 n
0000078977 00000 n
0000079120 00000 n
0000079243 00000 n
0000079394 00000 n
0000079499 00000 n
0000079652 00000 n
0000079766 00000 n
0000079894 00000 n
0000080008 00000 n
0000080131 00000 n
0000080247 00000 n
0000080396 00000 n
0000080525 00000 n
0000080662 00000 n
0000080792 00000 n
0000080917 00000 n
0000081020 00000 n
0000081170 00000 n
0000081279 00000 n
0000081397 00000 n
0000081536 00000 n
0000081670 00000 n
0000081822 00000 n
0000081927 00000 n
0000082056 00000 n
0000082173 00000 n
0000082285 00000 n
0000082461 00000 n
0000082564 00000 n
0000082703 00000 n
0000082832 00000 n
0000082960 00000 n
0000083078 00000 n
0000083184 00000 n
0000083338 00000 n
0000083507 00000 n
0000083607 00000 n
0000083718 00000 n
0000083845 00000 n
0000083940 00000 n
0000084067 00000 n
0000084189 00000 n
0000025207 00000 n
0000025228 00000 n
0000025422 00000 n
0000026545 00000 n
0000026567 00000 n
0000026709 00000 n
0000027135 00000 n
0000027156 00000 n
0000027270 00000 n
0000027455 00000 n
0000027476 00000 n
0000027618 00000 n
0000028525 00000 n
0000028546 00000 n
0000028688 00000 n
0000030205 00000 n
0000030227 00000 n
0000030369 00000 n
0000031356 00000 n
0000031377 00000 n
0000031491 00000 n
0000031677 00000 n
0000031698 00000 n
0000031849 00000 n
0000032560 00000 n
0000032581 00000 n
0000032764 00000 n
0000033873 00000 n
0000033895 00000 n
0000034069 00000 n
0000034808 00000 n
0000034829 00000 n
0000034943 00000 n
0000035147 00000 n
0000035168 00000 n
0000035319 00000 n
0000035870 00000 n
0000035891 00000 n
0000036052 00000 n
0000037160 00000 n
0000037182 00000 n
0000037343 00000 n
0000038210 00000 n
0000038231 00000 n
0000038382 00000 n
0000039035 00000 n
0000039056 00000 n
0000039235 00000 n
0000040264 00000 n
0000040285 00000 n
0000040454 00000 n
0000041610 00000 n
0000041632 00000 n
0000041801 00000 n
0000042814 00000 n
0000042835 00000 n
0000042976 00000 n
0000043303 00000 n
0000043324 00000 n
0000043489 00000 n
0000044309 00000 n
0000044330 00000 n
0000044490 00000 n
0000045396 00000 n
0000045417 00000 n
0000045564 00000 n
0000046406 00000 n
0000046427 00000 n
0000046593 00000 n
0000048041 00000 n
0000048063 00000 n
0000048219 00000 n
0000048601 00000 n
0000048622 00000 n
0000048764 00000 n
0000050273 00000 n
0000050295 00000 n
0000050428 00000 n
0000052317 00000 n
0000052339 00000 n
0000052462 00000 n
0000054270 00000 n
0000054292 00000 n
0000054425 00000 n
0000056367 00000 n
0000056389 00000 n
0000056522 00000 n
0000057254 00000 n
0000057275 00000 n
0000057417 00000 n
0000059119 00000 n
0000059141 00000 n
0000059283 00000 n
0000061232 00000 n
0000061254 00000 n
0000061386 00000 n
0000063132 00000 n
0000063154 00000 n
0000063286 00000 n
0000065056 00000 n
0000065078 00000 n
0000065210 00000 n
0000067043 00000 n
0000067065 00000 n
0000067197 00000 n
0000069162 00000 n
0000069184 00000 n
0000069326 00000 n
0000070048 00000 n
0000070069 00000 n
0000070183 00000 n
0000070388 00000 n
0000070409 00000 n
0000070565 00000 n
0000073477 00000 n
0000073499 00000 n
0000073656 00000 n
0000075595 00000 n
0000075617 00000 n
0000075672 00000 n
0000075777 00000 n
0000075921 00000 n
0000076024 00000 n
0000076142 00000 n
0000076263 00000 n
0000076377 00000 n
0000076481 00000 n
0000076646 00000 n
0000076754 00000 n
0000076869 00000 n
0000076974 00000 n
0000077082 00000 n
0000077190 00000 n
0000077299 00000 n
0000077415 00000 n
0000077513 00000 n
0000077679 00000 n
0000077796 00000 n
0000077915 00000 n
0000078039 00000 n
0000078164 00000 n
0000078314 00000 n
0000078455 00000 n
0000078564 00000 n
0000078729 00000 n
0000078868 00000 n
0000078979 00000 n
0000079122 00000 n
0000079245 00000 n
0000079396 00000 n
0000079501 00000 n
0000079654 00000 n
0000079768 00000 n
0000079896 00000 n
0000080010 00000 n
0000080133 00000 n
0000080249 00000 n
0000080398 00000 n
0000080527 00000 n
0000080664 00000 n
0000080794 00000 n
0000080919 00000 n
0000081022 00000 n
0000081172 00000 n
0000081281 00000 n
0000081399 00000 n
0000081538 00000 n
0000081672 00000 n
0000081824 00000 n
0000081929 00000 n
0000082058 00000 n
0000082175 00000 n
0000082287 00000 n
0000082463 00000 n
0000082566 00000 n
0000082705 00000 n
0000082834 00000 n
0000082962 00000 n
0000083080 00000 n
0000083186 00000 n
0000083340 00000 n
0000083509 00000 n
0000083609 00000 n
0000083720 00000 n
0000083847 00000 n
0000083942 00000 n
0000084069 00000 n
0000084191 00000 n
trailer
<</Size 386/Root 385 0 R/Info 1 0 R/ID[<0508efee20f17d905b9a2d2212f81bf4><0508efee20f17d905b9a2d2212f81bf4>]>>
<</Size 386/Root 385 0 R/Info 1 0 R/ID[<9a6dc479b21ff7b88be69c740fbfa3ae><9a6dc479b21ff7b88be69c740fbfa3ae>]>>
startxref
84417
84419
%%EOF
+2 -2
Ver Arquivo
@@ -2,7 +2,7 @@
<HEAD>
<META NAME="Description" CONTENT="Common UNIX Printing System Software Users Manual">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.3">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Users Manual</TITLE>
</HEAD>
@@ -11,7 +11,7 @@
<H1 ALIGN="RIGHT">Preface</H1>
<P>This software users manual describes how to use the Common UNIX Printing
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.1.
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.3.
<EMBED SRC="system-overview.shtml">
+1 -1
Ver Arquivo
@@ -110,7 +110,7 @@ following sections:</P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-IPP-1.1: CUPS Implementation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
+66 -68
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000731155427Z)/Title( CUPS Software Version Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182343Z)/Title( CUPS Software Version Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -229,14 +229,12 @@ endobj
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›u¯b øñÇm†ç÷dÓøÕ:^,ë—¸p¾ÈÒ<­jŒOQVŸm¼>ÂþnXZë_ŽpþŽëó²X•q–‘´Žö;|Øçw(’m™Ö¯x$6EYa7šï³‰êXá…ï„ᱟIÜϽ‰û‰6Ioo2×Ö„±:ŒŽ­£õ³(»ÂPXò"ï
ÈOW…«èÄ4L¬|ôbÑËà Ö?ÃÇwБ \‹™Z¬!ÜC3 ÃÍ|Ã×â–år~2È3"Ãjlðœ@Þ¶ OÏ3ù©‡qÒòŒÈÀ±Í8¼k „Ó™ú†ÓóÞdÇþÅ›|•+èõƒËñ'J@ç‹â QÕ¡'V‚”*0W+\§k×E™Å5„‘¤Ë4‘5tÔ‰{b8I¥ß×ìömÕ5öÐË·ÇH£.ÏD%¶ê’ ººQ—oÔÕò.8-Ï̾eSì5<'wcªç¼G¹éù²éYêľɿ]œ¯¶Ø¥ûydÑsZ.àj‘RM«}ØDÏàÏâ â|ÑÉ'5üØ5*Tª¥hï›,£WyR,¨®‘ᨌóêà ¤³E­_Î*Tào¶éBgç¾Xˆµt(Yœ×irÀ—Ó(ܜȜO¥äb¿Dïuî§@çÁÀ9AÕÖ&ýéxF ïËÚ¨ãAç'0Æ osªôýp}‰ïzÁîÒ\ôµ*Ö bê")Ö_^‡ìÀB¶É’Zh²ÔÒ2 :šÀ9AY
0&ZžTå&u-Ïä=ª©Zž”Õé€ÿœ Jñ×òŒ@>0w‚?¬;°U†I5öÔõFí }SÄë
禲ºpä¢é|Tnþ?aÄÌNGr¡ÓQC+™hh`ÞpŒÔ㜠yÎp‚täàYÖòŒ YÌÅ(éxNŽüûœ î*U«ã¼KÓ­–gòþt žœ YzÏ S/`*õGð R¢x€°.·I½ÅY/­ôF߆ôb=íLèeþQ»4|¶¢– ¨ZiVC3€ŠãqNH}J¹Žgòݽ´<#H¤4 ëxNÐ# ÉêxFÐh‘ˆ:þ¹SÃg2Âyo6”ç'Q¿‘ÃÝ|&ƒ³L—ûêëkÜÔ’w•m¹ÐÉ¡¡U¶54¨Æ9T148'¨— òçmkˆç„J¯Þ}NPzJoÇÞ©­îk2½®åŽàû+Ž×µøU«ÑÇû.«0Ã÷(’#ë×'Øñû‘U-t nh•? ÍY=
ç þ€3œPʧå9¡šŒÞNdÍiÔòŒ áÆ¥jÔñ ú‘à eηXìéZ"{È\ÄUšÈc?KWô‹Ùy’ˆªz¯[ì>®:ƒß*·wûþ÷'î‰oâW0é#§Ð_'¿VÐTÂendstream
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›µèV,?ÿ¸ÑðüžŒ¿ZÏ‹eýÎYš§U*ÊŠ´×GØßKký+âÎßq}^«2Î2ÒÖÑ~‡ûüE²-ÓúÏĦ(ë#ìFó}v#Q«¼ðñ0<Vâ3‰û¹7q?Ñ&éíMæÚ¢0V§Ñ±Õi´qñ£~eWª«B^äãÊP9ðé²p˜†‰¥^,zy¸Áh˜àø:’ëc5S5„{hd¸™oøZܲ\ÎOyFdXŽížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°u9þD è|Q<áñ/ª:”âÄJR æj…ët-àº(³¸†p#’t™&²†Ž:qO Ç ©ôûšÝ¾­ºÆzùöiÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕÛt?Œ zNË\-RÊà±Icµ›èüY<Aœ/:ù„¢†¡f…êCµí}“eô*OŠÕ52•q^}¸t¶ºÞOþf.Äqvî‹…XK‡B‘Åy&|9Â͉ÌùT
@.öK„ø^÷è~štÌœTmmÒŸŽgò¾¬t~#`üú6§Jß×—ø®Œà.ÍE_«b‘a Â!¦.býåuÈ,d,©…&K--“ £€Q´­œ”¥c¢åAUn‚Q×òŒ@Þ£šªåAYøÏ ê¡äs'øÃª±[e˜TcO]oÔÎÐ7E¼®pn*ñ «G.šÎGåæÿÓFÌìt$:5´’‰†fæ ÇH=Î Ò‘7à 'HGže-ÏšÅ\Œ’ŽçéÈ°Ï ê®Rµ:žÈ»4ÝjyF ïOâÉ šõ¨÷÷ü¦R²iÆk!%Š7ër›Ô[œåñÒJoômH/ÖÓ΄^柵KÃg+j¹Ð‰º¡•f54¨8ç‰Ô§”ëxF ÐÝKË3‚DJºŽç]0’¬Žg‰¨ã;5|&#l‘÷ñfCy~õ‹9ÜÍgR18Ët¹¯¾¾ÆM-y'QÙ– Ze[C3€jœCCƒs‚zÙ ïqÞ¶†xN¨ôêÝç¥×¡ôvüéÚê¾&ÓëZâx]‹_µq¼ï²
ã1|"9²~}‚¿YÕB—à†VùÓÐ  ‘Õ£ipNÐê8à 5¬xZžªÉèýáDÖœF-Ïn\ªF€ œ ‰Q8ÜPÆá|‹Åž®%²‡œÁE\¥‰<ö³tE¿˜'‰¨ª÷ºÅîãª3ø­RpÛq·ïãžø&~“>rýuòHÒU'endstream
endobj
120 0 obj
1330
1328
endobj
121 0 obj<</Type/Page/Parent 105 0 R/Contents 122 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
122 0 obj<</Length 123 0 R/Filter/FlateDecode>>stream
@@ -480,67 +478,67 @@ xref
0000018734 00000 n
0000018755 00000 n
0000018910 00000 n
0000020311 00000 n
0000020333 00000 n
0000020446 00000 n
0000020637 00000 n
0000020658 00000 n
0000020807 00000 n
0000021778 00000 n
0000021799 00000 n
0000021939 00000 n
0000022494 00000 n
0000022515 00000 n
0000022664 00000 n
0000023941 00000 n
0000023963 00000 n
0000024076 00000 n
0000024265 00000 n
0000024286 00000 n
0000024426 00000 n
0000025093 00000 n
0000025114 00000 n
0000025227 00000 n
0000025418 00000 n
0000025439 00000 n
0000025593 00000 n
0000027187 00000 n
0000027209 00000 n
0000027322 00000 n
0000027493 00000 n
0000027514 00000 n
0000027569 00000 n
0000027674 00000 n
0000027818 00000 n
0000027924 00000 n
0000028044 00000 n
0000028153 00000 n
0000028302 00000 n
0000028412 00000 n
0000028519 00000 n
0000028667 00000 n
0000028802 00000 n
0000028920 00000 n
0000029034 00000 n
0000029151 00000 n
0000029258 00000 n
0000029396 00000 n
0000029544 00000 n
0000029646 00000 n
0000029750 00000 n
0000029899 00000 n
0000030002 00000 n
0000030115 00000 n
0000030215 00000 n
0000030325 00000 n
0000030471 00000 n
0000030582 00000 n
0000030692 00000 n
0000030826 00000 n
0000030923 00000 n
0000031023 00000 n
0000020309 00000 n
0000020331 00000 n
0000020444 00000 n
0000020635 00000 n
0000020656 00000 n
0000020805 00000 n
0000021776 00000 n
0000021797 00000 n
0000021937 00000 n
0000022492 00000 n
0000022513 00000 n
0000022662 00000 n
0000023939 00000 n
0000023961 00000 n
0000024074 00000 n
0000024263 00000 n
0000024284 00000 n
0000024424 00000 n
0000025091 00000 n
0000025112 00000 n
0000025225 00000 n
0000025416 00000 n
0000025437 00000 n
0000025591 00000 n
0000027185 00000 n
0000027207 00000 n
0000027320 00000 n
0000027491 00000 n
0000027512 00000 n
0000027567 00000 n
0000027672 00000 n
0000027816 00000 n
0000027922 00000 n
0000028042 00000 n
0000028151 00000 n
0000028300 00000 n
0000028410 00000 n
0000028517 00000 n
0000028665 00000 n
0000028800 00000 n
0000028918 00000 n
0000029032 00000 n
0000029149 00000 n
0000029256 00000 n
0000029394 00000 n
0000029542 00000 n
0000029644 00000 n
0000029748 00000 n
0000029897 00000 n
0000030000 00000 n
0000030113 00000 n
0000030213 00000 n
0000030323 00000 n
0000030469 00000 n
0000030580 00000 n
0000030690 00000 n
0000030824 00000 n
0000030921 00000 n
0000031021 00000 n
trailer
<</Size 179/Root 178 0 R/Info 1 0 R/ID[<fdb2c461d03459ddbf79da0ee106ee57><fdb2c461d03459ddbf79da0ee106ee57>]>>
<</Size 179/Root 178 0 R/Info 1 0 R/ID[<7c81fc334a74b7e117b3327dd928e447><7c81fc334a74b7e117b3327dd928e447>]>>
startxref
31250
31248
%%EOF
+3 -3
Ver Arquivo
@@ -51,7 +51,7 @@ all: $(TARGETS)
#
clean:
$(RM) $(OBJS) $(TARGETS) $(LIBCUPSIMAGE)
$(RM) $(OBJS) $(TARGETS) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .2`
#
@@ -71,8 +71,8 @@ install:
$(CHMOD) ugo+rx $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR)
-if test $(LIBCUPSIMAGE) != "libcupsimage.a" -a $(LIBCUPSIMAGE) != "libcupsimage.la"; then \
$(RM) `basename $(LIBCUPSIMAGE) .2`; \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .2`; \
$(RM) `basename $(LIBDIR)/$(LIBCUPSIMAGE) .2`; \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBDIR)/$(LIBCUPSIMAGE) .2`; \
fi
+4 -4
Ver Arquivo
@@ -153,13 +153,13 @@ SetCommonOptions(int num_options, /* I - Number of options */
PageBottom = (float)atof(val);
break;
case 1 :
PageRight = PageWidth - (float)atof(val);
PageLeft = (float)atof(val);
break;
case 2 :
PageTop = PageLength - (float)atof(val);
break;
case 3 :
PageLeft = (float)atof(val);
PageRight = PageWidth - (float)atof(val);
break;
}
}
@@ -172,13 +172,13 @@ SetCommonOptions(int num_options, /* I - Number of options */
PageTop = PageLength - (float)atof(val);
break;
case 1 :
PageLeft = (float)atof(val);
PageRight = PageWidth - (float)atof(val);
break;
case 2 :
PageBottom = (float)atof(val);
break;
case 3 :
PageRight = PageWidth - (float)atof(val);
PageLeft = (float)atof(val);
break;
}
}
+6
Ver Arquivo
@@ -237,6 +237,7 @@ PC_pen_color(int num_params, /* I - Number of parameters */
{ 0.0, 1.0, 1.0 } /* Cyan */
};
if (num_params == 0)
{
for (i = 0; i <= PenCount; i ++)
@@ -276,6 +277,11 @@ PC_pen_color(int num_params, /* I - Number of parameters */
(ColorRange[1][1] - ColorRange[1][0]);
Pens[i].rgb[2] = (params[3].value.number - ColorRange[2][0]) /
(ColorRange[2][1] - ColorRange[2][0]);
fprintf(stderr, "DEBUG: Pen %d %.0f %.0f %.0f = %.3f %.3f %.3f\n",
i, params[1].value.number, params[2].value.number,
params[3].value.number, Pens[i].rgb[0], Pens[i].rgb[1],
Pens[i].rgb[2]);
}
if (PageDirty && i == PenNumber)
+1 -1
Ver Arquivo
@@ -319,7 +319,7 @@ LB_label(int num_params, /* I - Number of parameters */
Pens[CharPen].rgb[CharPen], Pens[CharPen].rgb[2],
Pens[CharPen].width * PenScaling);
Outputf("%.3f %.3f %.3f %.2f SP\n", Pens[PenNumber].rgb[0],
Pens[PenNumber].rgb[PenNumber], Pens[PenNumber].rgb[2],
Pens[PenNumber].rgb[1], Pens[PenNumber].rgb[2],
Pens[PenNumber].width * PenScaling);
}
+4 -7
Ver Arquivo
@@ -43,6 +43,8 @@
#include "hpgltops.h"
#define max(a,b) ((a) < (b) ? (b) : (a))
/*
* 'update_transform()' - Update the page transformation matrix as needed.
@@ -155,12 +157,7 @@ update_transform(void)
scaling = page_width / height;
if (FitPlot)
{
if (Rotation == 0 || Rotation == 180)
scaling *= page_width / PlotSize[1];
else
scaling *= page_width / PlotSize[0];
}
scaling *= max(page_width, page_height) / max(PlotSize[1], PlotSize[0]);
/*
* Offset for the current P1 location...
@@ -540,7 +537,7 @@ PS_plot_size(int num_params, /* I - Number of parameters */
* sends a two-argument PS command as documented in the
* HP-GL/2 Reference Manual from HP. Instead, applications
* send the width before the length, which causes all sorts
* of problems.
* of problems when scaling.
*
* Rather than fight it, we now look for them as width,length
* instead of length,width.
+1 -1
Ver Arquivo
@@ -387,7 +387,7 @@ PE_polyline_encoded(int num_params, /* I - Number of parameters */
PenNumber = (int)decode_number(&s, base_bits, 1.0);
if (PageDirty)
printf("%.3f %.3f %.3f %.2f SP\n", Pens[PenNumber].rgb[0],
Pens[PenNumber].rgb[PenNumber], Pens[PenNumber].rgb[2],
Pens[PenNumber].rgb[1], Pens[PenNumber].rgb[2],
Pens[PenNumber].width * PenScaling);
#ifdef DEBUG
+1 -1
Ver Arquivo
@@ -334,7 +334,7 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
k = min(c, min(m, y));
if ((km = max(c, max(m, y))) > k)
k = k * k / km;
k = k * k * k / km / km;
c -= k;
m -= k;
+82 -52
Ver Arquivo
@@ -69,6 +69,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
num_colors, /* Number of colors */
bpp, /* Bytes per pixel */
x, y, /* Current x & y */
row, /* Current row in image */
xstart, ystart, /* Starting x & y */
xdir, ydir, /* X & y direction */
xcount, ycount, /* X & Y counters */
@@ -177,6 +178,35 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Set the X & Y start and direction according to the image orientation...
*/
switch (orientation)
{
case ORIENTATION_TOPRIGHT :
fputs("DEBUG: orientation = top-right\n", stderr);
break;
case ORIENTATION_RIGHTTOP :
fputs("DEBUG: orientation = right-top\n", stderr);
break;
default :
case ORIENTATION_TOPLEFT :
fputs("DEBUG: orientation = top-left\n", stderr);
break;
case ORIENTATION_LEFTTOP :
fputs("DEBUG: orientation = left-top\n", stderr);
break;
case ORIENTATION_BOTLEFT :
fputs("DEBUG: orientation = bottom-left\n", stderr);
break;
case ORIENTATION_LEFTBOT :
fputs("DEBUG: orientation = left-bottom\n", stderr);
break;
case ORIENTATION_BOTRIGHT :
fputs("DEBUG: orientation = bottom-right\n", stderr);
break;
case ORIENTATION_RIGHTBOT :
fputs("DEBUG: orientation = right-bottom\n", stderr);
break;
}
switch (orientation)
{
case ORIENTATION_TOPRIGHT :
@@ -272,13 +302,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Row major order...
*/
for (y = ystart, ycount = img->ysize;
for (y = ystart, ycount = img->ysize, row = 0;
ycount > 0;
ycount --, y += ydir)
ycount --, y += ydir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart, bit = 128;
xcount > 0;
xcount --, p += pstep)
@@ -299,7 +329,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart, bit = 0xc0;
xcount > 0;
xcount --, p += pstep)
@@ -320,7 +350,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart, bit = 0xf0;
xcount > 0;
xcount --, p += pstep)
@@ -340,7 +370,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (xdir < 0 || zero || alpha)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
if (alpha)
{
@@ -380,7 +410,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
}
else
TIFFReadScanline(tif, in, y, 0);
TIFFReadScanline(tif, in, row, 0);
if (img->colorspace == IMAGE_WHITE)
{
@@ -420,13 +450,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Column major order...
*/
for (x = xstart, xcount = img->xsize;
for (x = xstart, xcount = img->xsize, row = 0;
xcount > 0;
xcount --, x += xdir)
xcount --, x += xdir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + ystart, bit = 128;
ycount > 0;
ycount --, p += ydir)
@@ -447,7 +477,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + ystart, bit = 0xc0;
ycount > 0;
ycount --, p += ydir)
@@ -469,7 +499,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + ystart, bit = 0xf0;
ycount > 0;
ycount --, p += ydir)
@@ -489,7 +519,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (ydir < 0 || zero || alpha)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
if (alpha)
{
@@ -529,7 +559,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
}
else
TIFFReadScanline(tif, in, x, 0);
TIFFReadScanline(tif, in, row, 0);
if (img->colorspace == IMAGE_WHITE)
{
@@ -587,13 +617,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Row major order...
*/
for (y = ystart, ycount = img->ysize;
for (y = ystart, ycount = img->ysize, row = 0;
ycount > 0;
ycount --, y += ydir)
ycount --, y += ydir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline,
p = in + xstart * 3, bit = 128;
xcount > 0;
@@ -623,7 +653,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline,
p = in + xstart * 3, bit = 0xc0;
xcount > 0;
@@ -648,7 +678,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline,
p = in + 3 * xstart, bit = 0xf0;
xcount > 0;
@@ -674,7 +704,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, p = in + 3 * xstart, scanptr = scanline;
xcount > 0;
@@ -724,13 +754,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Column major order...
*/
for (x = xstart, xcount = img->xsize;
for (x = xstart, xcount = img->xsize, row = 0;
xcount > 0;
xcount --, x += xdir)
xcount --, x += xdir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline,
p = in + 3 * ystart, bit = 128;
ycount > 0;
@@ -760,7 +790,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline,
p = in + 3 * ystart, bit = 0xc0;
ycount > 0;
@@ -785,7 +815,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline,
p = in + 3 * ystart, bit = 0xf0;
ycount > 0;
@@ -811,7 +841,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, p = in + 3 * ystart, scanptr = scanline;
ycount > 0;
@@ -864,13 +894,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Row major order...
*/
for (y = ystart, ycount = img->ysize;
for (y = ystart, ycount = img->ysize, row = 0;
ycount > 0;
ycount --, y += ydir)
ycount --, y += ydir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart * 3, bit = 0xf0;
xcount > 0;
xcount --, p += pstep)
@@ -901,7 +931,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart * 3;
xcount > 0;
xcount --, p += pstep, scanptr ++)
@@ -916,7 +946,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart * 3;
xcount > 0;
xcount -= 2, p += 2 * pstep, scanptr += 3)
@@ -940,7 +970,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (xdir < 0 || alpha)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
if (alpha)
{
@@ -966,7 +996,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
}
else
TIFFReadScanline(tif, in, y, 0);
TIFFReadScanline(tif, in, row, 0);
if ((saturation != 100 || hue != 0) && bpp > 1)
ImageRGBAdjust(in, img->xsize, saturation, hue);
@@ -1009,13 +1039,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Column major order...
*/
for (x = xstart, xcount = img->xsize;
for (x = xstart, xcount = img->xsize, row = 0;
xcount > 0;
xcount --, x += xdir)
xcount --, x += xdir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + ystart * 3, bit = 0xf0;
ycount > 0;
ycount --, p += pstep)
@@ -1046,7 +1076,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + ystart * 3;
ycount > 0;
ycount --, p += pstep, scanptr ++)
@@ -1061,7 +1091,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + ystart * 3;
ycount > 0;
ycount -= 2, p += 2 * pstep, scanptr += 3)
@@ -1085,7 +1115,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (ydir < 0 || alpha)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
if (alpha)
{
@@ -1111,7 +1141,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
}
else
TIFFReadScanline(tif, in, x, 0);
TIFFReadScanline(tif, in, row, 0);
if ((saturation != 100 || hue != 0) && bpp > 1)
ImageRGBAdjust(in, img->ysize, saturation, hue);
@@ -1161,13 +1191,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Row major order...
*/
for (y = ystart, ycount = img->ysize;
for (y = ystart, ycount = img->ysize, row = 0;
ycount > 0;
ycount --, y += ydir)
ycount --, y += ydir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart * 3, bit = 0xf0;
xcount > 0;
xcount --, p += pstep)
@@ -1207,7 +1237,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart * 3;
xcount > 0;
xcount --, p += pstep, scanptr ++)
@@ -1253,7 +1283,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, scanptr = scanline, p = in + xstart * 3;
xcount > 0;
xcount --, p += pstep, scanptr += 2)
@@ -1299,7 +1329,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else
{
TIFFReadScanline(tif, scanline, y, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (xcount = img->xsize, p = in + xstart * 3, scanptr = scanline;
xcount > 0;
@@ -1382,13 +1412,13 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Column major order...
*/
for (x = xstart, xcount = img->xsize;
for (x = xstart, xcount = img->xsize, row = 0;
xcount > 0;
xcount --, x += xdir)
xcount --, x += xdir, row ++)
{
if (bits == 1)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + xstart * 3, bit = 0xf0;
ycount > 0;
ycount --, p += pstep)
@@ -1428,7 +1458,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 2)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + xstart * 3;
ycount > 0;
ycount --, p += pstep, scanptr ++)
@@ -1474,7 +1504,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else if (bits == 4)
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, scanptr = scanline, p = in + xstart * 3;
ycount > 0;
ycount --, p += pstep, scanptr += 2)
@@ -1520,7 +1550,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
}
else
{
TIFFReadScanline(tif, scanline, x, 0);
TIFFReadScanline(tif, scanline, row, 0);
for (ycount = img->ysize, p = in + xstart * 3, scanptr = scanline;
ycount > 0;
+8 -1
Ver Arquivo
@@ -360,7 +360,7 @@ main(int argc, /* I - Number of command-line arguments */
header.cupsColorOrder = CUPS_ORDER_CHUNKED;
header.cupsColorSpace = CUPS_CSPACE_K;
if (ppd->patches)
if (ppd && ppd->patches)
exec_code(&header, ppd->patches);
if ((count = ppdCollect(ppd, PPD_ORDER_DOCUMENT, &choices)) > 0)
@@ -746,6 +746,9 @@ main(int argc, /* I - Number of command-line arguments */
header.Margins[0] = PageLeft;
header.Margins[1] = PageBottom;
fprintf(stderr, "DEBUG: PageSize = [%d %d]\n", header.PageSize[0],
header.PageSize[1]);
switch (Orientation)
{
case 0 :
@@ -1327,6 +1330,10 @@ exec_code(cups_page_header_t *header, /* I - Page header */
else if (strcmp(name, "cupsMediaPosition") == 0 || /* Compatibility */
strcmp(name, "MediaPosition") == 0)
header->MediaPosition = atoi(value);
else if (strcmp(name, "MediaClass") == 0)
strncpy(header->MediaClass, value, sizeof(header->MediaClass) - 1);
else if (strcmp(name, "MediaColor") == 0)
strncpy(header->MediaColor, value, sizeof(header->MediaColor) - 1);
else if (strcmp(name, "MediaType") == 0)
strncpy(header->MediaType, value, sizeof(header->MediaType) - 1);
else if (strcmp(name, "OutputType") == 0)
-7
Ver Arquivo
@@ -403,14 +403,7 @@ main(int argc, /* I - Number of command-line arguments */
}
}
else if (strcmp(line, "%%Trailer") == 0 && level == 0)
{
/*
* Assume that a file with a %%Trailer will likely also have %%EOF...
*/
saweof = 1;
break;
}
else
{
if (!sloworder)
+401 -14
Ver Arquivo
@@ -52,7 +52,15 @@ int NumPages = 0; /* Number of pages in document */
int CharsPerInch = 10; /* Number of character columns per inch */
int LinesPerInch = 6; /* Number of lines per inch */
int UTF8 = 0; /* Use UTF-8 encoding? */
char *Keywords[] = /* List of known keywords... */
int NumKeywords = 0; /* Number of known keywords */
char **Keywords = NULL; /* List of known keywords */
/*
* Local globals...
*/
static char *code_keywords[] = /* List of known C/C++ keywords... */
{
"and",
"and_eq",
@@ -120,6 +128,344 @@ char *Keywords[] = /* List of known keywords... */
"while",
"xor",
"xor_eq"
},
*sh_keywords[] = /* List of known Boure/Korn/zsh/bash keywords... */
{
"alias",
"bg",
"break",
"case",
"cd",
"command",
"continue",
"do",
"done",
"echo",
"elif",
"else",
"esac",
"eval",
"exec",
"exit",
"export",
"fc",
"fg",
"fi",
"for",
"function",
"getopts",
"if",
"in",
"jobs",
"kill",
"let",
"limit",
"newgrp",
"print",
"pwd",
"read",
"readonly",
"return",
"select",
"set",
"shift",
"test",
"then",
"time",
"times",
"trap",
"typeset",
"ulimit",
"umask",
"unalias",
"unlimit",
"unset",
"until",
"wait",
"whence"
"while",
},
*csh_keywords[] = /* List of known csh/tcsh keywords... */
{
"alias",
"aliases",
"bg",
"bindkey",
"break",
"breaksw",
"builtins",
"case",
"cd",
"chdir",
"complete",
"continue",
"default",
"dirs",
"echo",
"echotc",
"else",
"end",
"endif",
"eval",
"exec",
"exit",
"fg",
"foreach",
"glob",
"goto",
"history",
"if",
"jobs",
"kill",
"limit",
"login",
"logout",
"ls",
"nice",
"nohup",
"notify",
"onintr",
"popd",
"pushd",
"pwd",
"rehash",
"repeat",
"set",
"setenv",
"settc",
"shift",
"source",
"stop",
"suspend",
"switch",
"telltc",
"then",
"time",
"umask",
"unalias",
"unbindkey",
"unhash",
"unlimit",
"unset",
"unsetenv",
"wait",
"where",
"which",
"while"
},
*perl_keywords[] = /* List of known perl keywords... */
{
"abs",
"accept",
"alarm",
"and",
"atan2",
"bind",
"binmode",
"bless",
"caller",
"chdir",
"chmod",
"chomp",
"chop",
"chown",
"chr",
"chroot",
"closdir",
"close",
"connect",
"continue",
"cos",
"crypt",
"dbmclose",
"dbmopen",
"defined",
"delete",
"die",
"do",
"dump",
"each",
"else",
"elsif",
"endgrent",
"endhostent",
"endnetent",
"endprotoent",
"endpwent",
"endservent",
"eof",
"eval",
"exec",
"exists",
"exit",
"exp",
"fcntl",
"fileno",
"flock",
"for",
"foreach",
"fork",
"format",
"formline",
"getc",
"getgrent",
"getgrgid",
"getgrnam",
"gethostbyaddr",
"gethostbyname",
"gethostent",
"getlogin",
"getnetbyaddr",
"getnetbyname",
"getnetent",
"getpeername",
"getpgrp",
"getppid",
"getpriority",
"getprotobyname",
"getprotobynumber",
"getprotoent",
"getpwent",
"getpwnam",
"getpwuid",
"getservbyname",
"getservbyport",
"getservent",
"getsockname",
"getsockopt",
"glob",
"gmtime",
"goto",
"grep",
"hex",
"if",
"import",
"index",
"int",
"ioctl",
"join",
"keys",
"kill",
"last",
"lc",
"lcfirst",
"length",
"link",
"listen",
"local",
"localtime",
"log",
"lstat",
"map",
"mkdir",
"msgctl",
"msgget",
"msgrcv",
"msgsend",
"my",
"next",
"no",
"not",
"oct",
"open",
"opendir",
"or",
"ord",
"pack",
"package",
"pipe",
"pop",
"pos",
"print",
"printf",
"push",
"quotemeta",
"rand",
"read",
"readdir",
"readlink",
"recv",
"redo",
"ref",
"rename",
"require",
"reset",
"return",
"reverse",
"rewinddir",
"rindex",
"rmdir",
"scalar",
"seek",
"seekdir",
"select",
"semctl",
"semget",
"semop",
"send",
"setgrent",
"sethostent",
"setnetent",
"setpgrp",
"setpriority",
"setprotoent",
"setpwent",
"setservent",
"setsockopt",
"shift",
"shmctl",
"shmget",
"shmread",
"shmwrite",
"shutdown",
"sin",
"sleep",
"socket",
"socketpair",
"sort",
"splice",
"split",
"sprintf",
"sqrt",
"srand",
"stat",
"study",
"sub",
"substr",
"symlink",
"syscall",
"sysread",
"sysseek",
"system",
"syswrite",
"tell",
"telldir",
"tie",
"tied",
"time",
"times"
"times",
"truncate",
"uc",
"ucfirst",
"umask",
"undef",
"unless",
"unlink",
"unpack",
"unshift",
"untie",
"until",
"use",
"utime",
"values",
"vec",
"wait",
"waitpid",
"wantarray",
"warn",
"while",
"write"
};
@@ -195,13 +541,43 @@ TextMain(char *name, /* I - Name of filter */
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageLeft = 72.0f;
PageRight = PageWidth - 36.0f;
PageBottom = PageBottom > 36.0f ? PageBottom : 36.0f;
PageTop = PageLength - 36.0f;
CharsPerInch = 12;
LinesPerInch = 8;
if ((val = getenv("CONTENT_TYPE")) == NULL)
{
PrettyPrint = PRETTY_CODE;
NumKeywords = sizeof(code_keywords) / sizeof(code_keywords[0]);
Keywords = code_keywords;
}
else if (strcasecmp(val, "application/x-cshell") == 0)
{
PrettyPrint = PRETTY_SHELL;
NumKeywords = sizeof(csh_keywords) / sizeof(csh_keywords[0]);
Keywords = csh_keywords;
}
else if (strcasecmp(val, "application/x-perl") == 0)
{
PrettyPrint = PRETTY_PERL;
NumKeywords = sizeof(perl_keywords) / sizeof(perl_keywords[0]);
Keywords = perl_keywords;
}
else if (strcasecmp(val, "application/x-shell") == 0)
{
PrettyPrint = PRETTY_SHELL;
NumKeywords = sizeof(sh_keywords) / sizeof(sh_keywords[0]);
Keywords = sh_keywords;
}
else
{
PrettyPrint = PRETTY_CODE;
NumKeywords = sizeof(code_keywords) / sizeof(code_keywords[0]);
Keywords = code_keywords;
}
}
ppd = SetCommonOptions(num_options, options, 1);
@@ -270,8 +646,8 @@ TextMain(char *name, /* I - Name of filter */
*keyptr = '\0';
keyptr = keyword;
if (bsearch(&keyptr, Keywords, sizeof(Keywords) / sizeof(Keywords[0]),
sizeof(Keywords[0]), compare_keywords))
if (bsearch(&keyptr, Keywords, NumKeywords, sizeof(char *),
compare_keywords))
{
/*
* Put keywords in boldface...
@@ -316,8 +692,8 @@ TextMain(char *name, /* I - Name of filter */
*keyptr = '\0';
keyptr = keyword;
if (bsearch(&keyptr, Keywords, sizeof(Keywords) / sizeof(Keywords[0]),
sizeof(Keywords[0]), compare_keywords))
if (bsearch(&keyptr, Keywords, NumKeywords, sizeof(char *),
compare_keywords))
{
/*
* Put keywords in boldface...
@@ -370,8 +746,8 @@ TextMain(char *name, /* I - Name of filter */
*keyptr = '\0';
keyptr = keyword;
if (bsearch(&keyptr, Keywords, sizeof(Keywords) / sizeof(Keywords[0]),
sizeof(Keywords[0]), compare_keywords))
if (bsearch(&keyptr, Keywords, NumKeywords, sizeof(char *),
compare_keywords))
{
/*
* Put keywords in boldface...
@@ -480,8 +856,8 @@ TextMain(char *name, /* I - Name of filter */
keyptr = keyword;
if (!(attr & ATTR_ITALIC) &&
bsearch(&keyptr, Keywords, sizeof(Keywords) / sizeof(Keywords[0]),
sizeof(Keywords[0]), compare_keywords))
bsearch(&keyptr, Keywords, NumKeywords, sizeof(char *),
compare_keywords))
{
/*
* Put keywords in boldface...
@@ -517,7 +893,8 @@ TextMain(char *name, /* I - Name of filter */
cstring = -1;
attr |= ATTR_BLUE;
}
else if (ch == '*' && lastch == '/' && !cstring)
else if (ch == '*' && lastch == '/' && !cstring &&
PrettyPrint != PRETTY_SHELL)
{
/*
* Start a C-style comment...
@@ -526,7 +903,8 @@ TextMain(char *name, /* I - Name of filter */
ccomment = 1;
attr |= ATTR_ITALIC | ATTR_GREEN;
}
else if (ch == '/' && lastch == '/' && !cstring)
else if (ch == '/' && lastch == '/' && !cstring &&
PrettyPrint == PRETTY_CODE)
{
/*
* Start a C++-style comment...
@@ -534,7 +912,16 @@ TextMain(char *name, /* I - Name of filter */
attr |= ATTR_ITALIC | ATTR_GREEN;
}
else if (ch == '#' && column == 0 && !ccomment && !cstring)
else if (ch == '#' && !cstring && PrettyPrint != PRETTY_CODE)
{
/*
* Start a shell-style comment...
*/
attr |= ATTR_ITALIC | ATTR_GREEN;
}
else if (ch == '#' && column == 0 && !ccomment && !cstring &&
PrettyPrint == PRETTY_CODE)
{
/*
* Start a preprocessor command...
@@ -594,7 +981,7 @@ TextMain(char *name, /* I - Name of filter */
Page[line][column].attr |= ATTR_BOLD;
}
else if ((ch == '/' || ch == '*') && lastch == '/' &&
column < ColumnWidth)
column < ColumnWidth && PrettyPrint != PRETTY_SHELL)
{
/*
* Highlight first comment character...
+9 -2
Ver Arquivo
@@ -46,6 +46,12 @@
#define ATTR_GREEN 0x40
#define ATTR_BLUE 0x80
#define PRETTY_OFF 0
#define PRETTY_CODE 1
#define PRETTY_SHELL 2
#define PRETTY_PERL 3
#define PRETTY_HTML 4
/*
* Structures...
@@ -68,14 +74,15 @@ extern int WrapLines, /* Wrap text in lines */
PageColumns, /* Number of columns on a page */
ColumnGutter, /* Number of characters between text columns */
ColumnWidth, /* Width of each column */
PrettyPrint, /* Do pretty code formatting */
PrettyPrint, /* Do pretty code formatting? */
Copies; /* Number of copies to produce */
extern lchar_t **Page; /* Page characters */
extern int NumPages; /* Number of pages in document */
extern int CharsPerInch, /* Number of character columns per inch */
LinesPerInch, /* Number of lines per inch */
UTF8; /* Use UTF-8 encoding? */
extern char *Keywords[]; /* List of known keywords... */
extern int NumKeywords; /* Number of known keywords */
extern char **Keywords; /* List of known keywords... */
/*
+5 -5
Ver Arquivo
@@ -637,7 +637,7 @@ WriteProlog(char *title, /* I - Title of job */
*/
for (i = 0, num_fonts = 0; i < NumFonts; i ++)
for (j = 1 + PrettyPrint; j >= 0; j --)
for (j = PrettyPrint ? 2 : 1; j >= 0; j --)
{
for (k = 0; k < num_fonts; k ++)
if (strcmp(Fonts[i][j], fonts[k]) == 0)
@@ -717,13 +717,13 @@ WriteProlog(char *title, /* I - Title of job */
snprintf(filename, sizeof(filename), "%s/fonts/%s", datadir, fonts[i]);
if ((fp = fopen(filename, "rb")) != NULL)
{
while (fgets(line, sizeof(line), fp) != NULL)
fputs(line, stdout);
while ((j = fread(line, 1, sizeof(line), fp)) > 0)
fwrite(line, 1, j, stdout);
fclose(fp);
}
puts("%%EndResource");
puts("\n%%EndResource");
}
}
@@ -763,7 +763,7 @@ WriteProlog(char *title, /* I - Title of job */
puts("% Reencode fonts");
for (i = 1 + PrettyPrint; i >= 0; i --)
for (i = PrettyPrint ? 2 : 1; i >= 0; i --)
{
printf("/%s findfont\n", Fonts[0][i]);
puts("dup length 1 add dict begin\n"
+1
Ver Arquivo
@@ -52,6 +52,7 @@ all: $(CAT1) $(CAT5) $(CAT8)
#
clean:
$(RM) $(CAT1) $(CAT5) $(CAT8)
#
+22 -5
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpoptions.man 1231 2000-07-20 17:10:57Z mike $"
.\" "$Id: lpoptions.man 1337 2000-09-05 20:50:23Z mike $"
.\"
.\" lpoptions man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,7 +21,7 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH lpoptions 1 "Common UNIX Printing System" "10 May 2000" "Easy Software Products"
.TH lpoptions 1 "Common UNIX Printing System" "5 September 2000" "Easy Software Products"
.SH NAME
lpoptions \- display or set printer options and defaults
.SH SYNOPSIS
@@ -39,12 +39,21 @@ lpoptions \- display or set printer options and defaults
.B lpoptions
[ -h
.I server
] -p
] [ -p
.I dest[/instance]
[ -o
] -l
.br
.B lpoptions
[ -h
.I server
] [ -o
.I option=value
] ... [ -o
.I option=value
] -p
.I dest[/instance]
] -r
.I option
]
.br
.B lpoptions
@@ -67,6 +76,10 @@ printer for the current user.
.br
Specifies the CUPS server to communicate with.
.TP 5
\-l
.br
Lists the printer specific options and their current settings.
.TP 5
\-o \fIoption=value\fR
.br
Specifies a new option for the named destination.
@@ -76,6 +89,10 @@ Specifies a new option for the named destination.
Sets the destination and instance, if specified, for any options that follow.
If the named instance does not exist then it is created.
.TP 5
\-r \fIoption\fR
.br
Removes the specified option for the named destination.
.TP 5
\-x \fIdest[/instance]\fR
.br
Removes the options for the named destination and instance, if specified.
@@ -95,5 +112,5 @@ http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpoptions.man 1231 2000-07-20 17:10:57Z mike $".
.\" End of "$Id: lpoptions.man 1337 2000-09-05 20:50:23Z mike $".
.\"
+1
Ver Arquivo
@@ -34,6 +34,7 @@ all: pdftops
clean:
$(RM) $(OBJS)
$(RM) libxpdf.a
$(RM) pdftops
+213 -19
Ver Arquivo
@@ -106,6 +106,7 @@ extern const char *cupsProfile;
private dev_proc_close_device(cups_close);
private dev_proc_get_initial_matrix(cups_get_matrix);
private int cups_get_params(gx_device *, gs_param_list *);
private dev_proc_map_cmyk_color(cups_map_cmyk_color);
private dev_proc_map_color_rgb(cups_map_color_rgb);
private dev_proc_map_rgb_color(cups_map_rgb_color);
private dev_proc_open_device(cups_open);
@@ -145,7 +146,7 @@ private gx_device_procs cups_procs =
gx_default_get_bits,
cups_get_params,
cups_put_params,
NULL,
NULL, /* map_cmyk_color */
NULL, /* get_xfont_procs */
NULL, /* get_xfont_device */
NULL, /* map_rgb_alpha_color */
@@ -597,10 +598,149 @@ cups_get_params(gx_device *pdev, /* I - Device info */
}
/*
* 'cups_map_cmyk_color()' - Map a CMYK color to a color index.
*
* This function is only called when a 4 or 6 color colorspace is
* selected for output. CMYK colors are *not* corrected but *are*
* density adjusted.
*/
private gx_color_index /* O - Color index */
cups_map_cmyk_color(gx_device *pdev, /* I - Device info */
gx_color_value c, /* I - Cyan value */
gx_color_value m, /* I - Magenta value */
gx_color_value y, /* I - Yellow value */
gx_color_value k) /* I - Black value */
{
gx_color_index i; /* Temporary index */
gx_color_value ic, im, iy, ik; /* Integral CMYK values */
#ifdef DEBUG
fprintf(stderr, "DEBUG: cups_map_cmyk_color(%08x, %d, %d, %d, %d)\n", pdev,
c, m, y, k);
#endif /* DEBUG */
/*
* Setup the color info data as needed...
*/
if (pdev->color_info.num_components == 0)
cups_set_color_info(pdev);
/*
* Density correct...
*/
c = cupsDensity[c];
m = cupsDensity[m];
y = cupsDensity[y];
k = cupsDensity[k];
ic = lut_rgb_color[c];
im = lut_rgb_color[m];
iy = lut_rgb_color[y];
ik = lut_rgb_color[k];
/*
* Convert the CMYK color to a color index...
*/
switch (cups->header.cupsColorSpace)
{
default :
switch (cups->header.cupsBitsPerColor)
{
case 1 :
i = (((((ic << 1) | im) << 1) | iy) << 1) | ik;
break;
case 2 :
i = (((((ic << 2) | im) << 2) | iy) << 2) | ik;
break;
case 4 :
i = (((((ic << 4) | im) << 4) | iy) << 4) | ik;
break;
case 8 :
i = (((((ic << 8) | im) << 8) | iy) << 8) | ik;
break;
}
break;
case CUPS_CSPACE_YMCK :
case CUPS_CSPACE_GMCK :
case CUPS_CSPACE_GMCS :
switch (cups->header.cupsBitsPerColor)
{
case 1 :
i = (((((iy << 1) | im) << 1) | ic) << 1) | ik;
break;
case 2 :
i = (((((iy << 2) | im) << 2) | ic) << 2) | ik;
break;
case 4 :
i = (((((iy << 4) | im) << 4) | ic) << 4) | ik;
break;
case 8 :
i = (((((iy << 8) | im) << 8) | ic) << 8) | ik;
break;
}
break;
case CUPS_CSPACE_KCMYcm :
if (cups->header.cupsBitsPerColor == 1)
{
if (ik)
i = 32;
else
i = 0;
if (ic && im)
i |= 17;
else if (ic && iy)
i |= 6;
else if (im && iy)
i |= 12;
else if (ic)
i |= 16;
else if (im)
i |= 8;
else if (iy)
i |= 4;
break;
}
case CUPS_CSPACE_KCMY :
switch (cups->header.cupsBitsPerColor)
{
case 1 :
i = (((((ik << 1) | ic) << 1) | im) << 1) | iy;
break;
case 2 :
i = (((((ik << 2) | ic) << 2) | im) << 2) | iy;
break;
case 4 :
i = (((((ik << 4) | ic) << 4) | im) << 4) | iy;
break;
case 8 :
i = (((((ik << 8) | ic) << 8) | im) << 8) | iy;
break;
}
break;
}
if (gs_log_errors > 1)
fprintf(stderr, "DEBUG: CMYK (%d,%d,%d,%d) -> CMYK %08.8x (%d,%d,%d,%d)\n",
c, m, y, k, i, ic, im, iy, ik);
return (i);
}
/*
* 'cups_map_color_rgb()' - Map a color index to an RGB color.
*/
private int
cups_map_color_rgb(gx_device *pdev, /* I - Device info */
gx_color_index color, /* I - Color index */
@@ -795,6 +935,7 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
gx_color_index i; /* Temporary index */
gx_color_value ic, im, iy, ik, mk; /* Integral CMYK values */
int tc, tm, ty; /* Temporary color values */
float kscale; /* K scaling value */
#ifdef DEBUG
@@ -901,10 +1042,7 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
}
break;
case CUPS_CSPACE_K :
case CUPS_CSPACE_WHITE :
case CUPS_CSPACE_GOLD :
case CUPS_CSPACE_SILVER :
default :
i = lut_rgb_color[gx_max_color_value - (r * 31 + g * 61 + b * 8) / 100];
break;
@@ -960,7 +1098,10 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
mk = max(ic, max(im, iy));
if (mk > ik)
ik = ik * ik / mk;
{
kscale = (float)ik / (float)mk;
ik = ik * kscale * kscale;
}
ic = lut_rgb_color[ic - ik];
im = lut_rgb_color[im - ik];
@@ -998,7 +1139,10 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
mk = max(ic, max(im, iy));
if (mk > ik)
ik = ik * ik / mk;
{
kscale = (float)ik / (float)mk;
ik = ik * kscale * kscale;
}
ic = lut_rgb_color[ic - ik];
im = lut_rgb_color[im - ik];
@@ -1061,7 +1205,10 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
mk = max(ic, max(im, iy));
if (mk > ik)
ik = ik * ik / mk;
{
kscale = (float)ik / (float)mk;
ik = ik * kscale * kscale;
}
ic = lut_rgb_color[ic - ik];
im = lut_rgb_color[im - ik];
@@ -1142,6 +1289,8 @@ cups_print_pages(gx_device_printer *pdev, /* I - Device info */
*dst; /* Bitmap data */
(void)fp; /* reference unused file pointer to prevent compiler warning */
#ifdef DEBUG
fprintf(stderr, "DEBUG: cups_print_pages(%08x, %08x, %d)\n", pdev, fp,
num_copies);
@@ -1322,7 +1471,10 @@ cups_put_params(gx_device *pdev, /* I - Device info */
return (code); \
} \
else if (code == 0) \
cups->header.name = (type)intval;
{ \
fprintf(stderr, "DEBUG: Setting %s to %d...\n", sname, intval); \
cups->header.name = (type)intval; \
}
#define floatoption(name, sname) \
if ((code = param_read_float(plist, sname, &floatval)) < 0) \
@@ -1391,12 +1543,8 @@ cups_put_params(gx_device *pdev, /* I - Device info */
booloption(Separations, "Separations")
booloption(TraySwitch, "TraySwitch")
booloption(Tumble, "Tumble")
intoption(cupsWidth, "cupsWidth", unsigned)
intoption(cupsHeight, "cupsHeight", unsigned)
intoption(cupsMediaType, "cupsMediaType", unsigned)
intoption(cupsBitsPerColor, "cupsBitsPerColor", unsigned)
intoption(cupsBitsPerPixel, "cupsBitsPerPixel", unsigned)
intoption(cupsBytesPerLine, "cupsBytesPerLine", unsigned)
intoption(cupsColorOrder, "cupsColorOrder", cups_order_t)
intoption(cupsColorSpace, "cupsColorSpace", cups_cspace_t)
intoption(cupsCompression, "cupsCompression", unsigned)
@@ -1418,11 +1566,48 @@ cups_put_params(gx_device *pdev, /* I - Device info */
* accordingly.
*/
size = cups->ppd->sizes;
margins[0] = size->left / 72.0;
margins[1] = size->bottom / 72.0;
margins[2] = (size->width - size->right) / 72.0;
margins[3] = (size->length - size->top) / 72.0;
for (i = cups->ppd->num_sizes, size = cups->ppd->sizes;
i > 0;
i --, size ++)
if ((fabs(cups->PageSize[1] - size->length) < 18.0 &&
fabs(cups->PageSize[0] - size->width) < 18.0) ||
(fabs(cups->PageSize[0] - size->length) < 18.0 &&
fabs(cups->PageSize[1] - size->width) < 18.0))
break;
if (i == 0 && !cups->ppd->variable_sizes)
{
i = 1;
size = cups->ppd->sizes;
}
if (i > 0)
{
/*
* Standard size...
*/
fprintf(stderr, "DEBUG: size = %s\n", size->name);
margins[0] = size->left / 72.0;
margins[1] = size->bottom / 72.0;
margins[2] = (size->width - size->right) / 72.0;
margins[3] = (size->length - size->top) / 72.0;
}
else
{
/*
* Custom size...
*/
fputs("DEBUG: size = Custom\n", stderr);
for (i = 0; i < 4; i ++)
margins[i] = cups->ppd->custom_margins[i] / 72.0;
}
fprintf(stderr, "DEBUG: margins[] = [ %f %f %f %f ]\n",
margins[0], margins[1], margins[2], margins[3]);
}
else
{
@@ -1560,6 +1745,15 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
cups->color_info.dither_colors = 0;
}
/*
* Enable/disable CMYK color support...
*/
if (cups->color_info.num_components == 4)
cups->procs.map_cmyk_color = cups_map_cmyk_color;
else
cups->procs.map_cmyk_color = NULL;
/*
* Compute the lookup tables...
*/
-269
Ver Arquivo
@@ -1,269 +0,0 @@
/* Copyright (C) 1997, 1998 Aladdin Enterprises. All rights reserved.
This file is part of GNU Ghostscript.
GNU Ghostscript is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
to anyone for the consequences of using it or for whether it serves any
particular purpose or works at all, unless he says so in writing. Refer
to the GNU General Public License for full details.
Everyone is granted permission to copy, modify and redistribute GNU
Ghostscript, but only under the conditions described in the GNU General
Public License. A copy of this license is supposed to have been given
to you along with GNU Ghostscript so you can know your rights and
responsibilities. It should be in a file named COPYING. Among other
things, the copyright notice and this notice must be preserved on all
copies.
Aladdin Enterprises supports the work of the GNU Project, but is not
affiliated with the Free Software Foundation or the GNU Project. GNU
Ghostscript, as distributed by Aladdin Enterprises, does not require any
GNU software to build or run it.
*/
/*$Id$ */
/* Enumerated attribute value definitions for PCL XL */
#ifndef gdevpxen_INCLUDED
# define gdevpxen_INCLUDED
typedef enum {
eClockWise = 0,
eCounterClockWise,
pxeArcDirection_next
} pxeArcDirection_t;
typedef enum {
eNoSubstitution = 0,
eVerticalSubstitution,
pxeCharSubModeArray_next
} pxeCharSubModeArray_t;
typedef enum {
eNonZeroWinding = 0,
eEvenOdd,
pxeClipMode_next,
pxeFillMode_next = pxeClipMode_next /* see pxeFillMode_t below */
} pxeClipMode_t;
typedef enum {
eInterior = 0,
eExterior,
pxeClipRegion_next
} pxeClipRegion_t;
typedef enum {
e1Bit = 0,
e4Bit,
e8Bit,
pxeColorDepth_next
} pxeColorDepth_t;
typedef enum {
eCRGB = 5, /* Note: for this enumeration, 0 is not a valid value */
pxeColorimetricColorSpace_next
} pxeColorimetricColorSpace_t; /* 2.0 */
typedef enum {
eDirectPixel = 0,
eIndexedPixel,
pxeColorMapping_next
} pxeColorMapping_t;
typedef enum {
eNoColorSpace = 0, /* Note: for this enumeration, 0 is not a valid value */
eGray,
eRGB,
eSRGB, /* 2.0 */
pxeColorSpace_next
} pxeColorSpace_t;
typedef enum {
eNoCompression = 0,
eRLECompression,
eJPEGCompression, /* 2.0 */
pxeCompressMode_next
} pxeCompressMode_t;
typedef enum {
eBinaryHighByteFirst = 0,
eBinaryLowByteFirst,
pxeDataOrg_next /* is this DataOrg or DataOrganization? */
} pxeDataOrg_t;
typedef enum {
eDefault = 0, /* bad choice of name! */
pxeDataSource_next
} pxeDataSource_t;
typedef enum {
eUByte = 0,
eSByte,
eUInt16,
eSInt16,
pxeDataType_next
} pxeDataType_t;
typedef enum {
eDownloaded = -1, /* Not a real value, indicates a downloaded matrix */
eDeviceBest = 0,
pxeDitherMatrix_next
} pxeDitherMatrix_t;
typedef enum {
eDuplexHorizontalBinding = 0,
eDuplexVerticalBinding,
pxeDuplexPageMode_next
} pxeDuplexPageMode_t;
typedef enum {
eFrontMediaSide = 0,
eBackMediaSide,
pxeDuplexPageSide_next
} pxeDuplexPageSide_t;
typedef enum {
/* Several pieces of code know that this is a bit mask. */
eNoReporting = 0,
eBackChannel,
eErrorPage,
eBackChAndErrPage,
eNWBackChannel, /* 2.0 */
eNWErrorPage, /* 2.0 */
eNWBackChAndErrPage, /* 2.0 */
pxeErrorReport_next
} pxeErrorReport_t;
typedef pxeClipMode_t pxeFillMode_t;
typedef enum {
eButtCap = 0,
eRoundCap,
eSquareCap,
eTriangleCap,
pxeLineCap_next
} pxeLineCap_t;
#define pxeLineCap_to_library\
{ gs_cap_butt, gs_cap_round, gs_cap_square, gs_cap_triangle }
typedef enum {
eMiterJoin = 0,
eRoundJoin,
eBevelJoin,
eNoJoin,
pxeLineJoin_next
} pxeLineJoin_t;
#define pxeLineJoin_to_library\
{ gs_join_miter, gs_join_round, gs_join_bevel, gs_join_none }
typedef enum {
eInch = 0,
eMillimeter,
eTenthsOfAMillimeter,
pxeMeasure_next
} pxeMeasure_t;
#define pxeMeasure_to_points { 72.0, 72.0 / 25.4, 72.0 / 254.0 }
typedef enum {
eDefaultDestination = 0,
eFaceDownBin, /* 2.0 */
eFaceUpBin, /* 2.0 */
eJobOffsetBin, /* 2.0 */
pxeMediaDestination_next
} pxeMediaDestination_t;
typedef enum {
eLetterPaper = 0,
eLegalPaper,
eA4Paper,
eExecPaper,
eLedgerPaper,
eA3Paper,
eCOM10Envelope,
eMonarchEnvelope,
eC5Envelope,
eDLEnvelope,
eJB4Paper,
eJB5Paper,
eB5Envelope,
eJPostcard,
eJDoublePostcard,
eA5Paper,
eA6Paper, /* 2.0 */
eJB6Paper, /* 2.0 */
pxeMediaSize_next
} pxeMediaSize_t;
/*
* Apply a macro (or procedure) to all known paper sizes.
* The arguments are:
* media size code, resolution for width/height, width, height.
*/
#define px_enumerate_media(m)\
m(eLetterPaper, 300, 2550, 3300)\
m(eLegalPaper, 300, 2550, 5300)\
m(eA4Paper, 300, 2480, 3507)\
m(eExecPaper, 300, 2175, 3150)\
m(eLedgerPaper, 300, 3300, 5100)\
m(eA3Paper, 300, 3507, 4960)\
m(eCOM10Envelope, 300, 1237, 2850)\
m(eMonarchEnvelope, 300, 1162, 2250)\
m(eC5Envelope, 300, 1913, 2704)\
m(eDLEnvelope, 300, 1299, 2598)\
m(eB5Envelope, 300, 2078, 2952)
typedef enum {
eDefaultSource = 0,
eAutoSelect,
eManualFeed,
eMultiPurposeTray,
eUpperCassette,
eLowerCassette,
eEnvelopeTray,
eThirdCassette, /* 2.0 */
pxeMediaSource_next
} pxeMediaSource_t;
/**** MediaType is not documented. ****/
typedef enum {
eDefaultType = 0,
pxeMediaType_next
} pxeMediaType_t;
typedef enum {
ePortraitOrientation = 0,
eLandscapeOrientation,
eReversePortrait,
eReverseLandscape,
pxeOrientation_next
} pxeOrientation_t;
typedef enum {
eTempPattern = 0,
ePagePattern,
eSessionPattern,
pxePatternPersistence_next
} pxePatternPersistence_t;
typedef enum {
eSimplexFrontSide = 0,
pxeSimplexPageMode_next
} pxeSimplexPageMode_t;
typedef enum {
eOpaque = 0,
eTransparent,
pxeTxMode_next
} pxeTxMode_t;
typedef enum {
eHorizontal = 0,
eVertical,
pxeWritingMode_next
} pxeWritingMode_t; /* 2.0 */
#endif /* gdevpxen_INCLUDED */
+2 -2
Ver Arquivo
@@ -22,7 +22,7 @@
% Ghostscript, as distributed by Aladdin Enterprises, does not require any
% GNU software to build or run it.
% $Id: gs_init.ps 956 2000-03-08 23:15:43Z mike $
% $Id: gs_init.ps 1284 2000-08-14 20:17:17Z mike $
% Initialization file for the interpreter.
% When this is run, systemdict is still writable.
@@ -84,7 +84,7 @@ true setpacking
<1a> cvn { } def
% Acquire the debugging flags.
currentdict /DEBUG known /DEBUG exch def
/DEBUG true def
/VMDEBUG
DEBUG {{print mark
systemdict /level2dict known
+30 -32
Ver Arquivo
@@ -21,7 +21,7 @@
% Ghostscript, as distributed by Aladdin Enterprises, does not require any
% GNU software to build or run it.
% $Id: gs_setpd.ps 1159 2000-06-26 15:50:18Z mike $
% $Id: gs_setpd.ps 1355 2000-09-10 16:46:41Z mike $
% The current implementation of setpagedevice has the following limitations:
% - It doesn't attempt to "interact with the user" for Policy = 2.
@@ -107,7 +107,7 @@ level2dict begin
dup type /booleantype eq
{ pop pop }
{ % This should never happen!
(Error in .trysetparams!\n) print pstack flush
DEBUG { (Error in .trysetparams!\n) print pstack flush } if
cleartomark pop pop pop
/.installpagedevice cvx /rangecheck signalerror
}
@@ -197,6 +197,7 @@ level2dict begin
% We have to deal specially with entries that the driver may change
% on its own.
/.dynamicppkeys mark
/PageSize dup % because it changes when PageSize is set
/PageCount dup
.dicttomark readonly def
/.makecurrentpagedevice % - .makecurrentpagedevice <dict>
@@ -281,29 +282,18 @@ level2dict begin
% Define the keys used in input attribute matching.
/.inputattrkeys [
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything but PageSize
%%%% which is processed differently from all other attributes.
% /PageSize /MediaColor /MediaWeight /MediaType /InsertSheet
/PageSize /MediaColor /MediaWeight /MediaType /InsertSheet
% The following are documented in Adobe's supplement for v2017.
% /LeadingEdge /MediaClass
/PageSize
/LeadingEdge /MediaClass
] readonly def
% Define other keys used in media selection.
/.inputselectionkeys [
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything.
% /MediaPosition /Orientation
/MediaPosition /Orientation
] readonly def
% Define the keys used in output attribute matching.
/.outputattrkeys [
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything.
% /OutputType
/OutputType
] readonly def
% Define all the parameters that should always be copied to the merged
@@ -323,10 +313,12 @@ level2dict begin
% true iff the key/value pair should be presented to .putdeviceparams.
/.presentspecial mark
.dynamicppkeys { pop false } forall
% We must ignore an explicit request for PageSize,
% because media matching always handles this.
/PageSize false
/Name false
/OutputDevice false
/PageOffset false
/PageSize false
/InputAttributes false
.inputattrkeys
{ dup /PageSize eq
@@ -404,11 +396,17 @@ level2dict begin
% They are expected to consume the top 2 operands.
% NOTE: we currently treat all values other than 0, 1, or 7 (for PageSize)
% the same as 0, i.e., we signal an error.
0 { % Set errorinfo and signal a configurationerror.
pop dup 4 index exch get 2 array astore
$error /errorinfo 3 -1 roll put
cleartomark
/setpagedevice load /configurationerror signalerror
% 0 { % Set errorinfo and signal a configurationerror.
% pop dup 4 index exch get 2 array astore
% $error /errorinfo 3 -1 roll put
% cleartomark
% /setpagedevice load /configurationerror signalerror
% } bind
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must allow all attributes and values.
0 { % For all attributes just impose the request.
pop 2 index exch 7 put
} bind
1 { % Roll back the failed request to its previous status.
DEBUG { (Rolling back.\n) print pstack flush } if
@@ -480,9 +478,9 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% -mark- key1 value1 ...
counttomark 5 add index .computemediasize
exch pop exch pop /PageSize exch
(Putting.\n) print pstack flush
DEBUG { (Putting.\n) print pstack flush } if
.putdeviceparamsonly
(Result of putting.\n) print pstack flush
DEBUG { (Result of putting.\n) print pstack flush } if
} bind def
% Compute the media size and initial matrix from a merged request (after
@@ -518,7 +516,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% also handle the case where the current device
% is not a page device.
% Stack: mark <request> <current>
(Checking.\n) print pstack flush
DEBUG { (Checking.\n) print pstack flush } if
dup /OutputDevice .knownget
{ % Current device is a page device.
@@ -560,7 +558,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% Construct a merged request from the actual request plus
% any keys that should always be propagated.
% Stack: mark <request> <orig>
(Merging.\n) print pstack flush
DEBUG { (Merging.\n) print pstack flush } if
exch 1 index length 1 index length add dict
.copiedkeys
@@ -587,7 +585,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% Select input and output media.
% Stack: mark <orig> <request> <merged>
(Selecting.\n) print pstack flush
DEBUG { (Selecting.\n) print pstack flush } if
0 dict % <failed>
1 index /InputAttributes .knownget
@@ -604,7 +602,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% Construct the new device, and attempt to set its attributes.
% Stack: mark <orig> <request> <merged> <failed>
(Constructing.\n) print pstack flush
DEBUG { (Constructing.\n) print pstack flush } if
currentdevice .devicename 2 index /OutputDevice get eq
{ currentdevice }
@@ -620,7 +618,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
{ % The request failed.
% Stack: ... <orig> <request> <merged> <failed> <device>
% <Policies> true mark <name> <errorname> ...
(Recovering.\n) print pstack flush
DEBUG { (Recovering.\n) print pstack flush } if
counttomark 4 add index
counttomark 2 idiv { dup 4 -2 roll put } repeat
pop pop pop
@@ -640,7 +638,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% The attempt succeeded. Install the new device.
% Stack: mark ... <merged> <failed> <device> <eraseflag>
(Installing.\n) print pstack flush
DEBUG { (Installing.\n) print pstack flush } if
pop 2 .endpage
{ 1 true .outputpage
@@ -691,7 +689,7 @@ DEBUG { (Rolling back.\n) print pstack flush } if
% Clean up, calling PolicyReport if needed.
% Stack: mark ... <failed> <merged>
(Finishing.\n) print pstack flush
DEBUG { (Finishing.\n) print pstack flush } if
exch dup length 0 ne
{ 1 index /Policies get /PolicyReport get
+2 -2
Ver Arquivo
@@ -292,9 +292,9 @@ gdev_write_input_media(int index, gs_param_dict * pdict,
if (code < 0)
return code;
}
code = finish_media(mdict.list, "MediaType", pim->MediaType);
/* code = finish_media(mdict.list, "MediaType", pim->MediaType);
if (code < 0)
return code;
return code;*/
return param_end_write_dict(pdict->list, key, &mdict);
}
+2 -2
Ver Arquivo
@@ -114,7 +114,7 @@ private long heap_available(P0());
gs_malloc_memory_t *
gs_malloc_memory_init(void)
{
gs_malloc_memory_t *mem = malloc(sizeof(gs_malloc_memory_t));
gs_malloc_memory_t *mem = calloc(1, sizeof(gs_malloc_memory_t));
mem->procs = gs_malloc_memory_procs;
mem->allocated = 0;
@@ -173,7 +173,7 @@ gs_heap_alloc_bytes(gs_memory_t * mem, uint size, client_name_t cname)
if (mmem->limit - added < mmem->used)
set_msg("exceeded limit");
else if ((ptr = (byte *) malloc(added)) == 0)
else if ((ptr = (byte *) calloc(1, added)) == 0)
set_msg("failed");
else {
gs_malloc_block_t *bp = (gs_malloc_block_t *) ptr;
+1 -1
Ver Arquivo
@@ -240,7 +240,7 @@ gs_realloc(void *old_ptr, size_t old_size, size_t new_size)
new_size = (new_size + 7) & ~7;
if (new_size) {
new_ptr = malloc(new_size);
new_ptr = calloc(1, new_size);
if (new_ptr == NULL)
return NULL;
} else
+2 -6
Ver Arquivo
@@ -52,12 +52,8 @@ extern void free();
#endif /* !__TURBOC__ */
/* (At least some versions of) Linux don't have a working realloc.... */
#ifdef linux
# define malloc__need_realloc
/* MRS - in order to make sure memory is initialized, always use gs_realloc() */
#define malloc__need_realloc
void *gs_realloc(P3(void *, size_t, size_t));
#else
# define gs_realloc(ptr, old_size, new_size) realloc(ptr, new_size)
#endif
#endif /* malloc__INCLUDED */
+4 -3
Ver Arquivo
@@ -96,8 +96,8 @@ main(int argc, /* I - Number of command-line arguments */
int num_options; /* Number of job options */
cups_option_t *options; /* Job options */
char gspath[2048]; /* Path to GS files... */
char fontpath[2048]; /* Path to GS fonts... */
const char *datadir; /* CUPS_DATADIR env variable */
const char *fontpath; /* CUPS_FONTPATH env variable */
/*
@@ -142,8 +142,10 @@ main(int argc, /* I - Number of command-line arguments */
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
datadir = CUPS_DATADIR;
if ((fontpath = getenv("CUPS_FONTPATH")) == NULL)
fontpath = CUPS_FONTPATH;
snprintf(gspath, sizeof(gspath), "%s/pstoraster:%s/fonts", datadir, datadir);
snprintf(gspath, sizeof(gspath), "%s/pstoraster:%s", datadir, fontpath);
minst->lib_path.final = gspath;
gs_main_set_lib_paths(minst);
@@ -160,7 +162,6 @@ main(int argc, /* I - Number of command-line arguments */
define_string("OutputFile", "-");
snprintf(fontpath, sizeof(fontpath), "%s/fonts", datadir);
define_string("FONTPATH", fontpath);
/*
+4 -3
Ver Arquivo
@@ -67,10 +67,10 @@ install:
-$(MKDIR) $(LOGDIR)
$(CHMOD) ugo+rx $(LOGDIR)
-$(MKDIR) $(REQUESTS)
$(CHMOD) u+rwx,go-a $(REQUESTS)
$(CHMOD) u+rwx,go-rwx $(REQUESTS)
$(CHOWN) lp $(REQUESTS)
-$(MKDIR) $(REQUESTS)/tmp
$(CHMOD) u+rwx,go-a,+t $(REQUESTS)/tmp
$(CHMOD) u+rwx,go-rwx,+t $(REQUESTS)/tmp
$(CHOWN) lp $(REQUESTS)/tmp
@@ -80,7 +80,8 @@ install:
cupsd: $(CUPSDOBJS) libmime.a ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) libmime.a $(LIBZ) $(LIBS)
$(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) libmime.a \
$(LIBZ) $(LIBS) $(LIBMALLOC)
$(CUPSDOBJS): auth.h banners.h cert.h classes.h client.h conf.h \
cupsd.h dirsvc.h job.h mime.h printers.h \
+1 -1
Ver Arquivo
@@ -701,7 +701,7 @@ IsAuthorized(client_t *con) /* I - Connection */
DEBUG_puts("IsAuthorized: user not in group!");
return (HTTP_FORBIDDEN);
return (HTTP_UNAUTHORIZED);
}
+44 -36
Ver Arquivo
@@ -62,7 +62,6 @@ static int pipe_command(client_t *con, int infile, int *outfile, char *command,
void
AcceptClient(listener_t *lis) /* I - Listener socket */
{
int i; /* Looping var */
int val; /* Parameter value */
client_t *con; /* New client pointer */
unsigned address;/* Address of client */
@@ -72,6 +71,13 @@ AcceptClient(listener_t *lis) /* I - Listener socket */
DEBUG_printf(("AcceptClient(%08x) %d NumClients = %d\n",
lis, lis->fd, NumClients));
/*
* Make sure we don't have a full set of clients already...
*/
if (NumClients == MaxClients)
return;
/*
* Get a pointer to the next available client...
*/
@@ -113,13 +119,21 @@ AcceptClient(listener_t *lis) /* I - Listener socket */
else
host = NULL;
if (host == NULL)
if (con->http.hostaddr.sin_addr.s_addr == ServerAddr.sin_addr.s_addr)
{
/*
* Map accesses from the same host to the server name.
*/
strncpy(con->http.hostname, ServerName, sizeof(con->http.hostname) - 1);
}
else if (host == NULL)
sprintf(con->http.hostname, "%d.%d.%d.%d", (address >> 24) & 255,
(address >> 16) & 255, (address >> 8) & 255, address & 255);
else
strncpy(con->http.hostname, host->h_name, sizeof(con->http.hostname) - 1);
LogMessage(L_DEBUG, "accept() %d from %s:%d.", con->http.fd,
LogMessage(L_DEBUG, "AcceptClient() %d from %s:%d.", con->http.fd,
con->http.hostname, ntohs(con->http.hostaddr.sin_port));
/*
@@ -138,11 +152,7 @@ AcceptClient(listener_t *lis) /* I - Listener socket */
*/
if (NumClients == MaxClients)
for (i = 0; i < NumListeners; i ++)
{
DEBUG_printf(("AcceptClient: Removing fd %d from InputSet...\n", Listeners[i].fd));
FD_CLR(Listeners[i].fd, &InputSet);
}
PauseListening();
}
@@ -165,7 +175,6 @@ CloseAllClients(void)
void
CloseClient(client_t *con) /* I - Client to close */
{
int i; /* Looping var */
int status; /* Exit status of pipe command */
@@ -184,24 +193,18 @@ CloseClient(client_t *con) /* I - Client to close */
con->http.fd = 0;
}
for (i = 0; i < NumListeners; i ++)
{
DEBUG_printf(("CloseClient: Adding fd %d to InputSet...\n", Listeners[i].fd));
FD_SET(Listeners[i].fd, &InputSet);
}
if (con->pipe_pid != 0)
{
DEBUG_printf(("CloseClient: Removing fd %d from InputSet...\n", con->file));
FD_CLR(con->file, &InputSet);
}
/*
* If we have a data file open, close it...
*/
if (con->file)
{
/*
* Close the open data file...
*/
if (con->pipe_pid)
{
kill(con->pipe_pid, SIGKILL);
@@ -213,6 +216,14 @@ CloseClient(client_t *con) /* I - Client to close */
con->file = 0;
}
/*
* Re-enable new client connections if we are going back under the
* limit...
*/
if (NumClients == MaxClients)
ResumeListening();
/*
* Compact the list of clients as necessary...
*/
@@ -597,8 +608,8 @@ ReadClient(client_t *con) /* I - Client to read from */
* so check the length against any limits that are set...
*/
LogMessage(L_DEBUG, "POST %s", con->uri);
LogMessage(L_DEBUG, "CONTENT_TYPE = %s", con->http.fields[HTTP_FIELD_CONTENT_TYPE]);
LogMessage(L_DEBUG2, "POST %s", con->uri);
LogMessage(L_DEBUG2, "CONTENT_TYPE = %s", con->http.fields[HTTP_FIELD_CONTENT_TYPE]);
if (con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
atoi(con->http.fields[HTTP_FIELD_CONTENT_LENGTH]) > MaxRequestSize &&
@@ -661,7 +672,7 @@ ReadClient(client_t *con) /* I - Client to read from */
if (con->options[0] == '/')
con->options ++;
LogMessage(L_DEBUG, "ReadClient() %d command=\"%s\", options = \"%s\"",
LogMessage(L_DEBUG2, "ReadClient() %d command=\"%s\", options = \"%s\"",
con->http.fd, con->command, con->options);
if (con->http.version <= HTTP_1_0)
@@ -797,7 +808,7 @@ ReadClient(client_t *con) /* I - Client to read from */
break;
case HTTP_POST_RECV :
LogMessage(L_DEBUG, "ReadClient() %d con->data_encoding = %s, con->data_remaining = %d, con->file = %d",
LogMessage(L_DEBUG2, "ReadClient() %d con->data_encoding = %s, con->data_remaining = %d, con->file = %d",
con->http.fd,
con->http.data_encoding == HTTP_ENCODE_CHUNKED ? "chunked" : "length",
con->http.data_remaining, con->file);
@@ -833,7 +844,7 @@ ReadClient(client_t *con) /* I - Client to read from */
fchmod(con->file, 0640);
fchown(con->file, User, Group);
LogMessage(L_DEBUG, "ReadClient() %d REQUEST %s", con->http.fd,
LogMessage(L_DEBUG2, "ReadClient() %d REQUEST %s", con->http.fd,
con->filename);
if (con->file < 0)
@@ -857,7 +868,7 @@ ReadClient(client_t *con) /* I - Client to read from */
{
con->bytes += bytes;
LogMessage(L_DEBUG, "ReadClient() %d writing %d bytes",
LogMessage(L_DEBUG2, "ReadClient() %d writing %d bytes",
con->http.fd, bytes);
if (write(con->file, line, bytes) < bytes)
@@ -1217,7 +1228,7 @@ WriteClient(client_t *con) /* I - Client connection */
*bufptr++ = '\0';
httpPrintf(HTTP(con), "%s\r\n", buf);
LogMessage(L_DEBUG, "WriteClient() %d %s", con->http.fd, buf);
LogMessage(L_DEBUG2, "WriteClient() %d %s", con->http.fd, buf);
/*
* Update buffer...
@@ -1319,7 +1330,7 @@ WriteClient(client_t *con) /* I - Client connection */
}
if (bytes >= 1024)
LogMessage(L_DEBUG, "WriteClient() %d %d bytes", con->http.fd, bytes);
LogMessage(L_DEBUG2, "WriteClient() %d %d bytes", con->http.fd, bytes);
con->http.activity = time(NULL);
@@ -1347,7 +1358,7 @@ check_if_modified(client_t *con, /* I - Client connection */
if (*ptr == '\0')
return (1);
LogMessage(L_DEBUG, "check_if_modified() %d If-Modified-Since=\"%s\"",
LogMessage(L_DEBUG2, "check_if_modified() %d If-Modified-Since=\"%s\"",
con->http.fd, ptr);
while (*ptr != '\0')
@@ -1371,7 +1382,7 @@ check_if_modified(client_t *con, /* I - Client connection */
}
}
LogMessage(L_DEBUG, "check_if_modified() %d sizes=%d,%d dates=%d,%d",
LogMessage(L_DEBUG2, "check_if_modified() %d sizes=%d,%d dates=%d,%d",
con->http.fd, size, filestats->st_size, date, filestats->st_mtime);
return ((size != filestats->st_size && size != 0) ||
@@ -1526,7 +1537,7 @@ get_file(client_t *con, /* I - Client connection */
status = stat(filename, filestats);
}
LogMessage(L_DEBUG, "get_file() %d filename=%s size=%d",
LogMessage(L_DEBUG2, "get_file() %d filename=%s size=%d",
con->http.fd, filename, status ? -1 : filestats->st_size);
if (status)
@@ -1556,8 +1567,7 @@ pipe_command(client_t *con, /* I - Client connection */
char argbuf[10240], /* Argument buffer */
*argv[100], /* Argument strings */
*envp[100]; /* Environment variables */
char hostname[1024], /* Hostname string */
lang[1024], /* LANG env variable */
char lang[1024], /* LANG env variable */
content_length[1024], /* CONTENT_LENGTH env variable */
content_type[1024], /* CONTENT_TYPE env variable */
ipp_port[1024], /* Default listen port */
@@ -1628,12 +1638,10 @@ pipe_command(client_t *con, /* I - Client connection */
* Setup the environment variables as needed...
*/
gethostname(hostname, sizeof(hostname) - 1);
sprintf(lang, "LANG=%s", con->language ? con->language->language : "C");
sprintf(ipp_port, "IPP_PORT=%d", ntohs(con->http.hostaddr.sin_port));
sprintf(server_port, "SERVER_PORT=%d", ntohs(con->http.hostaddr.sin_port));
snprintf(server_name, sizeof(server_name), "SERVER_NAME=%s", hostname);
snprintf(server_name, sizeof(server_name), "SERVER_NAME=%s", ServerName);
snprintf(remote_host, sizeof(remote_host), "REMOTE_HOST=%s", con->http.hostname);
snprintf(remote_user, sizeof(remote_user), "REMOTE_USER=%s", con->username);
snprintf(tmpdir, sizeof(tmpdir), "TMPDIR=%s", TempDir);
@@ -1731,7 +1739,7 @@ pipe_command(client_t *con, /* I - Client connection */
* Close extra file descriptors...
*/
for (fd = 3; fd < 1024; fd ++)
for (fd = 3; fd < MaxFDs; fd ++)
close(fd);
/*
+3
Ver Arquivo
@@ -73,6 +73,7 @@ VAR int NumClients VALUE(0);
/* Number of HTTP clients */
VAR client_t *Clients VALUE(NULL);
/* HTTP clients */
VAR struct sockaddr_in ServerAddr; /* Server IP address */
/*
@@ -82,8 +83,10 @@ VAR client_t *Clients VALUE(NULL);
extern void AcceptClient(listener_t *lis);
extern void CloseAllClients(void);
extern void CloseClient(client_t *con);
extern void PauseListening(void);
extern void ProcessIPPRequest(client_t *con);
extern int ReadClient(client_t *con);
extern void ResumeListening(void);
extern int SendCommand(client_t *con, char *command, char *options);
extern int SendError(client_t *con, http_status_t code);
extern int SendFile(client_t *con, http_status_t code, char *filename,
+13 -6
Ver Arquivo
@@ -92,6 +92,8 @@ static var_t variables[] =
{ "RIPCache", RIPCache, VAR_STRING, sizeof(RIPCache) },
{ "TempDir", TempDir, VAR_STRING, sizeof(TempDir) },
{ "Printcap", Printcap, VAR_STRING, sizeof(Printcap) },
{ "FontPath", FontPath, VAR_STRING, sizeof(FontPath) },
{ "RemoteRoot", RemoteRoot, VAR_STRING, sizeof(RemoteRoot) },
{ "HostNameLookups", &HostNameLookups, VAR_BOOLEAN, 0 },
{ "Timeout", &Timeout, VAR_INTEGER, 0 },
{ "KeepAlive", &KeepAlive, VAR_BOOLEAN, 0 },
@@ -106,7 +108,8 @@ static var_t variables[] =
{ "MaxLogSize", &MaxLogSize, VAR_INTEGER, 0 },
{ "MaxRequestSize", &MaxRequestSize, VAR_INTEGER, 0 },
{ "PreserveJobHistory", &JobHistory, VAR_BOOLEAN, 0 },
{ "PreserveJobFiles", &JobFiles, VAR_BOOLEAN, 0 }
{ "PreserveJobFiles", &JobFiles, VAR_BOOLEAN, 0 },
{ "FilterLimit", &FilterLimit, VAR_INTEGER, 0 }
};
#define NUM_VARS (sizeof(variables) / sizeof(variables[0]))
@@ -190,7 +193,7 @@ ReadConfiguration(void)
DeleteAllClasses();
gethostname(ServerName, sizeof(ServerName));
sprintf(ServerAdmin, "root@%s", ServerName);
snprintf(ServerAdmin, sizeof(ServerAdmin), "root@%s", ServerName);
strcpy(ServerRoot, CUPS_SERVERROOT);
strcpy(ServerBin, CUPS_SERVERBIN);
strcpy(RequestRoot, CUPS_REQUESTS);
@@ -200,6 +203,8 @@ ReadConfiguration(void)
strcpy(ErrorLog, CUPS_LOGDIR "/error_log");
strcpy(PageLog, CUPS_LOGDIR "/page_log");
strcpy(Printcap, "");
strcpy(FontPath, CUPS_FONTPATH);
strcpy(RemoteRoot, "remroot");
if ((language = DEFAULT_LANGUAGE) == NULL)
language = "en";
@@ -288,9 +293,9 @@ ReadConfiguration(void)
KeepAlive = TRUE;
KeepAliveTimeout = DEFAULT_KEEPALIVE;
ImplicitClasses = TRUE;
FilterLimit = 0;
FilterLevel = 0;
MaxClients = 100;
MaxLogSize = 1024 * 1024;
MaxRequestSize = 0;
@@ -420,7 +425,7 @@ ReadConfiguration(void)
snprintf(directory, sizeof(directory), "%s/model", DataDir);
LoadPPDs(directory);
sprintf(directory, "%s/backend", ServerBin);
snprintf(directory, sizeof(directory), "%s/backend", ServerBin);
LoadDevices(directory);
/*
@@ -979,7 +984,9 @@ read_configuration(FILE *fp) /* I - File to read from */
* Amount of logging to do...
*/
if (strcmp(value, "debug") == 0)
if (strcmp(value, "debug2") == 0)
LogLevel = L_DEBUG2;
else if (strcmp(value, "debug") == 0)
LogLevel = L_DEBUG;
else if (strcmp(value, "info") == 0)
LogLevel = L_INFO;

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