Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| f8e258e655 |
@@ -1,6 +1,168 @@
|
||||
CHANGES.txt - 2008-04-01
|
||||
CHANGES.txt - 2008-10-09
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS V1.3.9
|
||||
|
||||
- SECURITY: The HP-GL/2 filter did not range check pen numbers
|
||||
(STR #2911)
|
||||
- SECURITY: The SGI image file reader did not range check
|
||||
16-bit run lengths (STR #2918)
|
||||
- SECURITY: The text filter did not range check cpi, lpi, or
|
||||
column values (STR #2919)
|
||||
- Documentation updates (STR #2904, STR #2944)
|
||||
- The French web admin page was never updated (STR #2963)
|
||||
- The IPP backend did not retry print jobs when the printer
|
||||
reported itself as busy or unavailable (STR #2951)
|
||||
- The "Set Allowed Users" web interface did not handle trailing
|
||||
whitespace correctly (STR #2956)
|
||||
- The PostScript filter did not work with Adobe applications
|
||||
using custom page sizes (STR #2968)
|
||||
- The Mac OS X USB backend did not work with some printers
|
||||
that reported a bad 1284 device ID.
|
||||
- The scheduler incorrectly resolved the client connection
|
||||
address when HostNameLookups was set to Off (STR #2946)
|
||||
- The IPP backend incorrectly stopped the local queue if
|
||||
the remote server reported the "paused" state.
|
||||
- The cupsGetDests() function did not catch all types of
|
||||
request errors.
|
||||
- The scheduler did not always log "job queued" messages
|
||||
(STR #2943)
|
||||
- The scheduler did not support destination filtering using
|
||||
the printer-location attribute properly (STR #2945)
|
||||
- The scheduler did not send the server-started,
|
||||
server-restarted, or server-stopped events (STR #2927)
|
||||
- The scheduler no longer enforces configuration file
|
||||
permissions on symlinked files (STR #2937)
|
||||
- CUPS now reinitializes the DNS resolver on failures
|
||||
(STR #2920)
|
||||
- The CUPS desktop menu item was broken (STR #2924)
|
||||
- The PPD parser was too strict about missing keyword
|
||||
values in "relaxed" mode.
|
||||
- The PostScript filter incorrectly mirrored landscape
|
||||
documents.
|
||||
- The scheduler did not correctly update the
|
||||
auth-info-required value(s) if the AuthType was Default.
|
||||
- The scheduler required Kerberos authentication for
|
||||
all operations on remote Kerberized printers instead
|
||||
of just for the operations that needed it.
|
||||
- The socket backend could wait indefinitely for back-
|
||||
channel data with some devices.
|
||||
- PJL panel messages were not reset correctly on older
|
||||
printers (STR #2909)
|
||||
- cupsfilter used the wrong default path (STR #2908)
|
||||
- Fixed address matching for "BrowseAddress @IF(name)"
|
||||
(STR #2910)
|
||||
- Fixed compiles on AIX.
|
||||
- Firefox 3 did not work with the CUPS web interface in SSL
|
||||
mode (STR #2892)
|
||||
- Custom options with multiple parameters were not emitted
|
||||
correctly.
|
||||
- Refined the cupstestppd utility.
|
||||
- ppdEmit*() did not support custom JCL options (STR #2889)
|
||||
- The cupstestppd utility incorrectly reported missing
|
||||
"en" base translations (STR #2887)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.8
|
||||
|
||||
- Documentation updates (STR #2785, STR #2861, STR #2862)
|
||||
- The scheduler did not add the ending job sheet when the
|
||||
job was released.
|
||||
- The IPP backend did not relay marker-* attributes.
|
||||
- The CUPS GNOME/KDE menu item was not localized for
|
||||
Chinese (STR #2880)
|
||||
- The CUPS GNOME/KDE menu item was not localized for
|
||||
Japanese (STR #2876)
|
||||
- The cupstestppd utility reported mixed line endings for
|
||||
Mac OS and Windows PPD files (STR #2874)
|
||||
- The pdftops filter did not print landscape orientation PDF
|
||||
pages correctly on all printers (STR #2850)
|
||||
- The scheduler did not handle expiring of implicit classes
|
||||
or their members properly, leading to a configuration where
|
||||
one of the members would have a short name (STR #2766)
|
||||
- The scheduler and cupstestppd utilities did not support
|
||||
cupsFilter and cupsPreFilter programs with spaces in their
|
||||
names (STR #2866)
|
||||
- Removed unused variables and assignments found by the
|
||||
LLVM "clang" tool.
|
||||
- Added NULL checks recommended by the LLVM "clang" tool.
|
||||
- The scheduler would crash if you started a printer that
|
||||
pointed to a backend that did not exist (STR #2865)
|
||||
- The ppdLocalize functions incorrectly mapped all generic
|
||||
locales to country-specific locales.
|
||||
- The cups-driverd program did not support Simplified Chinese
|
||||
or Traditional Chinese language version strings (STR #2851)
|
||||
- Added an Indonesian translation (STR #2792)
|
||||
- Fixed a timing issue in the backends that could cause data
|
||||
corruption with the CUPS_SC_CMD_DRAIN_OUTPUT side-channel
|
||||
command (STR #2858)
|
||||
- The scheduler did not support "HostNameLookups" with all of
|
||||
the boolean names (STR #2861)
|
||||
- Fixed a compile problem with glibc 2.8 (STR #2860)
|
||||
- The PostScript filter did not support %%IncludeFeature lines
|
||||
in the page setup section of each page (STR #2831)
|
||||
- The scheduler did not generate printer-state events when the
|
||||
default printer was changed (STR #2764)
|
||||
- cupstestppd incorrectly reported a warning about the PPD format
|
||||
version in some locales (STR #2854)
|
||||
- cupsGetPPD() and friends incorrectly returned a PPD file for
|
||||
a class with no printers.
|
||||
- The member-uris values for local printers in a class returned
|
||||
by the scheduler did not reflect the connected hostname or
|
||||
port.
|
||||
- The CUPS PHP extension was not thread-safe (STR #2828)
|
||||
- The scheduler incorrectly added the document-format-default
|
||||
attribute to the list of "common" printer attributes, which
|
||||
over time would slow down the printing system (STR #2755,
|
||||
STR #2836)
|
||||
- The cups-deviced and cups-driverd helper programs did not set
|
||||
the CFProcessPath environment variable on Mac OS X (STR #2837)
|
||||
- "lpstat -p" could report the wrong job as printing (STR #2845)
|
||||
- The scheduler would crash when some cupsd.conf directives
|
||||
were missing values (STR #2849)
|
||||
- The web interface "move jobs" operation redirected users to
|
||||
the wrong URL (STR #2815)
|
||||
- The Polish web interface translation contained errors
|
||||
(STR #2815)
|
||||
- The scheduler did not report PostScript printer PPDs with
|
||||
filters as PostScript devices.
|
||||
- The scheduler did not set the job document-format attribute
|
||||
for jobs submitted using Create-Job and Send-Document.
|
||||
- cupsFileTell() did not work for log files opened in append
|
||||
mode (STR #2810)
|
||||
- The scheduler did not set QUERY_STRING all of the time
|
||||
for CGI scripts (STR #2781, STR #2816)
|
||||
- The scheduler now returns an error for bad job-sheets
|
||||
values (STR #2775)
|
||||
- Authenticated remote printing did not work over domain
|
||||
sockets (STR #2750)
|
||||
- The scheduler incorrectly logged errors for print filters
|
||||
when a job was canceled (STR #2806, #2808)
|
||||
- The scheduler no longer allows multiple RSS subscriptions
|
||||
with the same URI (STR #2789)
|
||||
- The scheduler now supports Kerberized printing with
|
||||
multiple server names (STR #2783)
|
||||
- "Satisfy any" did not work in IPP policies (STR #2782)
|
||||
- The CUPS imaging library would crash with very large
|
||||
images - more than 16Mx16M pixels (STR #2805)
|
||||
- The PNG image loading code would crash with large images
|
||||
(STR #2790)
|
||||
- The scheduler did not limit the total number of filters.
|
||||
- The scheduler now ensures that the RSS directory has
|
||||
the correct permissions.
|
||||
- The RSS notifier did not quote the feed URL in the RSS
|
||||
file it created (STR #2801)
|
||||
- The web interface allowed the creation and cancellation
|
||||
of RSS subscriptions without a username (STR #2774)
|
||||
- Increased the default MaxCopies value on Mac OS X to
|
||||
9999 to match the limit imposed by the print dialog.
|
||||
- The scheduler did not reject requests with an empty
|
||||
Content-Length field (STR #2787)
|
||||
- The scheduler did not log the current date and time and
|
||||
did not escape special characters in request URIs when
|
||||
logging bad requests to the access_log file (STR #2788)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.3.7
|
||||
|
||||
- CVE-2008-0047: cgiCompileSearch buffer overflow (STR #2729)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CREDITS.txt - 2007-09-10
|
||||
CREDITS.txt - 2008-06-16
|
||||
------------------------
|
||||
|
||||
Few projects are completed by one person, and CUPS is no exception. We'd
|
||||
@@ -30,6 +30,7 @@ like to thank the following individuals for their contributions:
|
||||
Daniel Nylander - Swedish localization.
|
||||
Giulio Orsero - Bug fixes and testing.
|
||||
Michal Osowiecki - Polish localization.
|
||||
Citra Paska - Indonesian localization.
|
||||
Kurt Pfeifle - Bug fixes, beta testing, evangelism.
|
||||
Vincenzo Reale - Italian localization.
|
||||
Petter Reinholdtsen - HP-UX compiler stuff.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
INSTALL - CUPS v1.3.7 - 2008-04-01
|
||||
INSTALL - CUPS v1.3.9 - 2008-10-09
|
||||
----------------------------------
|
||||
|
||||
This file describes how to compile and install CUPS from source
|
||||
@@ -32,7 +32,7 @@ BEFORE YOU BEGIN
|
||||
many of the features provided by CUPS.
|
||||
|
||||
Kerberos support requires MIT Kerberos 1.6.3 or later or
|
||||
or Heimdal Kerberos, along with the corresponding GSSAPI
|
||||
Heimdal Kerberos, along with the corresponding GSSAPI
|
||||
pieces.
|
||||
|
||||
Also, please note that CUPS no longer includes the
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Top-level Makefile for the Common UNIX Printing System (CUPS).
|
||||
#
|
||||
# Copyright 2007 by Apple Inc.
|
||||
# Copyright 2007-2008 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -84,6 +84,17 @@ depend:
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
# Run the clang.llvm.org static code analysis tool on the C sources.
|
||||
#
|
||||
|
||||
.PHONY: clang
|
||||
clang:
|
||||
$(RM) -r clang
|
||||
scan-build -k -o `pwd`/clang $(MAKE) $(MFLAGS) \
|
||||
CC=ccc-analyzer CXX=ccc-analyzer clean all
|
||||
|
||||
|
||||
#
|
||||
# Generate a ctags file...
|
||||
#
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
README - CUPS v1.3.7 - 2008-04-01
|
||||
README - CUPS v1.3.9 - 2008-10-09
|
||||
---------------------------------
|
||||
|
||||
Looking for compile instructions? Read the file "INSTALL.txt"
|
||||
|
||||
@@ -1,50 +1,44 @@
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
betest.o: betest.c ../cups/string.h ../config.h
|
||||
ipp.o: ipp.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/backend.h \
|
||||
../cups/cups.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/language.h ../cups/i18n.h \
|
||||
../cups/transcode.h ../cups/string.h
|
||||
lpd.o: lpd.c ../cups/backend.h ../cups/http-private.h ../config.h \
|
||||
../cups/http.h ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h \
|
||||
../cups/cups.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h
|
||||
pap.o: pap.c ../config.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
|
||||
../cups/backend.h ../cups/sidechannel.h ../cups/i18n.h \
|
||||
../cups/transcode.h
|
||||
parallel.o: parallel.c backend-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
|
||||
../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
|
||||
../config.h
|
||||
scsi.o: scsi.c ../cups/backend.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
|
||||
../config.h scsi-linux.c
|
||||
serial.o: serial.c backend-private.h ../cups/backend.h \
|
||||
../cups/sidechannel.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
|
||||
../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
|
||||
../config.h
|
||||
snmp.o: snmp.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h backend-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h ../cups/cups.h ../cups/ppd.h \
|
||||
../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../cups/array.h \
|
||||
../cups/file.h
|
||||
socket.o: socket.c ../cups/http-private.h ../config.h ../cups/http.h \
|
||||
../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h backend-private.h \
|
||||
../cups/backend.h ../cups/sidechannel.h ../cups/cups.h ../cups/ppd.h \
|
||||
../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h
|
||||
test1284.o: test1284.c ../cups/string.h ../config.h ieee1284.c \
|
||||
backend-private.h ../cups/backend.h ../cups/sidechannel.h \
|
||||
../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h \
|
||||
../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h
|
||||
usb.o: usb.c ../cups/backend.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/string.h ../config.h ../cups/i18n.h \
|
||||
../cups/transcode.h usb-unix.c ieee1284.c backend-private.h \
|
||||
../cups/sidechannel.h ../cups/debug.h
|
||||
|
||||
betest.o: ../cups/string.h ../config.h
|
||||
ipp.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
|
||||
ipp.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/backend.h ../cups/cups.h
|
||||
ipp.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
ipp.o: ../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h
|
||||
lpd.o: ../cups/backend.h ../cups/http-private.h ../config.h ../cups/http.h
|
||||
lpd.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/cups.h
|
||||
lpd.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
lpd.o: ../cups/i18n.h ../cups/transcode.h ../cups/string.h
|
||||
pap.o: ../config.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
pap.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/backend.h
|
||||
pap.o: ../cups/sidechannel.h ../cups/i18n.h ../cups/transcode.h
|
||||
parallel.o: backend-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
parallel.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
parallel.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h
|
||||
parallel.o: ../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
scsi.o: ../cups/backend.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
scsi.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
scsi.o: ../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
serial.o: backend-private.h ../cups/backend.h ../cups/sidechannel.h
|
||||
serial.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
serial.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h
|
||||
serial.o: ../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
snmp.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
|
||||
snmp.o: ../cups/ipp-private.h ../cups/ipp.h backend-private.h
|
||||
snmp.o: ../cups/backend.h ../cups/sidechannel.h ../cups/cups.h ../cups/ppd.h
|
||||
snmp.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h
|
||||
snmp.o: ../cups/i18n.h ../cups/transcode.h ../cups/string.h ../cups/array.h
|
||||
snmp.o: ../cups/file.h
|
||||
socket.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
|
||||
socket.o: ../cups/ipp-private.h ../cups/ipp.h backend-private.h
|
||||
socket.o: ../cups/backend.h ../cups/sidechannel.h ../cups/cups.h
|
||||
socket.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
socket.o: ../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h
|
||||
test1284.o: ../cups/string.h ../config.h ieee1284.c backend-private.h
|
||||
test1284.o: ../cups/backend.h ../cups/sidechannel.h ../cups/cups.h
|
||||
test1284.o: ../cups/ipp.h ../cups/http.h ../cups/ppd.h ../cups/array.h
|
||||
test1284.o: ../cups/file.h ../cups/language.h ../cups/debug.h ../cups/i18n.h
|
||||
test1284.o: ../cups/transcode.h
|
||||
usb.o: ../cups/backend.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
usb.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
usb.o: ../cups/string.h ../config.h ../cups/i18n.h ../cups/transcode.h
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* compress_files() - Compress print files...
|
||||
* password_cb() - Disable the password prompt for
|
||||
* cupsDoFileRequest().
|
||||
* report_attr() - Report an IPP attribute value.
|
||||
* report_printer_state() - Report the printer state.
|
||||
* run_pictwps_filter() - Convert PICT files to PostScript when printing
|
||||
* remotely.
|
||||
@@ -72,6 +73,7 @@ static void check_printer_state(http_t *http, const char *uri,
|
||||
static void compress_files(int num_files, char **files);
|
||||
#endif /* HAVE_LIBZ */
|
||||
static const char *password_cb(const char *);
|
||||
static void report_attr(ipp_attribute_t *attr);
|
||||
static int report_printer_state(ipp_t *ipp, int job_id);
|
||||
|
||||
#ifdef __APPLE__
|
||||
@@ -142,6 +144,11 @@ main(int argc, /* I - Number of command-line args */
|
||||
{ /* Printer attributes we want */
|
||||
"copies-supported",
|
||||
"document-format-supported",
|
||||
"marker-colors",
|
||||
"marker-levels",
|
||||
"marker-message",
|
||||
"marker-names",
|
||||
"marker-types",
|
||||
"printer-is-accepting-jobs",
|
||||
"printer-state",
|
||||
"printer-state-message",
|
||||
@@ -1054,7 +1061,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
}
|
||||
else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
|
||||
ipp_status == IPP_PRINTER_BUSY)
|
||||
break;
|
||||
continue;
|
||||
else
|
||||
copies_remaining --;
|
||||
|
||||
@@ -1288,6 +1295,11 @@ check_printer_state(
|
||||
*response; /* IPP response */
|
||||
static const char * const attrs[] = /* Attributes we want */
|
||||
{
|
||||
"marker-colors",
|
||||
"marker-levels",
|
||||
"marker-message",
|
||||
"marker-names",
|
||||
"marker-types",
|
||||
"printer-state-message",
|
||||
"printer-state-reasons"
|
||||
};
|
||||
@@ -1410,7 +1422,7 @@ password_cb(const char *prompt) /* I - Prompt (not used) */
|
||||
{
|
||||
(void)prompt;
|
||||
|
||||
if (password && password_tries < 3)
|
||||
if (password && *password && password_tries < 3)
|
||||
{
|
||||
password_tries ++;
|
||||
|
||||
@@ -1440,6 +1452,74 @@ password_cb(const char *prompt) /* I - Prompt (not used) */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'report_attr()' - Report an IPP attribute value.
|
||||
*/
|
||||
|
||||
static void
|
||||
report_attr(ipp_attribute_t *attr) /* I - Attribute */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
char value[1024], /* Value string */
|
||||
*valptr, /* Pointer into value string */
|
||||
*attrptr; /* Pointer into attribute value */
|
||||
|
||||
|
||||
/*
|
||||
* Convert the attribute values into quoted strings...
|
||||
*/
|
||||
|
||||
for (i = 0, valptr = value;
|
||||
i < attr->num_values && valptr < (value + sizeof(value) - 10);
|
||||
i ++)
|
||||
{
|
||||
if (i > 0)
|
||||
*valptr++ = ',';
|
||||
|
||||
switch (attr->value_tag)
|
||||
{
|
||||
case IPP_TAG_INTEGER :
|
||||
case IPP_TAG_ENUM :
|
||||
snprintf(valptr, sizeof(value) - (valptr - value), "%d",
|
||||
attr->values[i].integer);
|
||||
valptr += strlen(valptr);
|
||||
break;
|
||||
|
||||
case IPP_TAG_TEXT :
|
||||
case IPP_TAG_NAME :
|
||||
case IPP_TAG_KEYWORD :
|
||||
*valptr++ = '\"';
|
||||
for (attrptr = attr->values[i].string.text;
|
||||
*attrptr && valptr < (value + sizeof(value) - 10);
|
||||
attrptr ++)
|
||||
{
|
||||
if (*attrptr == '\\' || *attrptr == '\"')
|
||||
*valptr++ = '\\';
|
||||
|
||||
*valptr++ = *attrptr;
|
||||
}
|
||||
*valptr++ = '\"';
|
||||
break;
|
||||
|
||||
default :
|
||||
/*
|
||||
* Unsupported value type...
|
||||
*/
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
*valptr = '\0';
|
||||
|
||||
/*
|
||||
* Tell the scheduler about the new values...
|
||||
*/
|
||||
|
||||
fprintf(stderr, "ATTR: %s=%s\n", attr->name, value);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'report_printer_state()' - Report the printer state.
|
||||
*/
|
||||
@@ -1450,8 +1530,9 @@ report_printer_state(ipp_t *ipp, /* I - IPP response */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
int count; /* Count of reasons shown... */
|
||||
ipp_attribute_t *psm, /* pritner-state-message */
|
||||
*reasons; /* printer-state-reasons */
|
||||
ipp_attribute_t *psm, /* printer-state-message */
|
||||
*reasons, /* printer-state-reasons */
|
||||
*marker; /* marker-* attributes */
|
||||
const char *reason; /* Current reason */
|
||||
const char *message; /* Message to show */
|
||||
char unknown[1024]; /* Unknown message string */
|
||||
@@ -1476,7 +1557,7 @@ report_printer_state(ipp_t *ipp, /* I - IPP response */
|
||||
{
|
||||
reason = reasons->values[i].string.text;
|
||||
|
||||
if (job_id == 0 || strcmp(reason, "paused"))
|
||||
if (strcmp(reason, "paused"))
|
||||
{
|
||||
strlcat(state, prefix, sizeof(state));
|
||||
strlcat(state, reason, sizeof(state));
|
||||
@@ -1558,6 +1639,22 @@ report_printer_state(ipp_t *ipp, /* I - IPP response */
|
||||
|
||||
fprintf(stderr, "%s\n", state);
|
||||
|
||||
/*
|
||||
* Relay the current marker-* attribute values...
|
||||
*/
|
||||
|
||||
if ((marker = ippFindAttribute(ipp, "marker-colors", IPP_TAG_NAME)) != NULL)
|
||||
report_attr(marker);
|
||||
if ((marker = ippFindAttribute(ipp, "marker-levels",
|
||||
IPP_TAG_INTEGER)) != NULL)
|
||||
report_attr(marker);
|
||||
if ((marker = ippFindAttribute(ipp, "marker-message", IPP_TAG_TEXT)) != NULL)
|
||||
report_attr(marker);
|
||||
if ((marker = ippFindAttribute(ipp, "marker-names", IPP_TAG_NAME)) != NULL)
|
||||
report_attr(marker);
|
||||
if ((marker = ippFindAttribute(ipp, "marker-types", IPP_TAG_KEYWORD)) != NULL)
|
||||
report_attr(marker);
|
||||
|
||||
return (count);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Line Printer Daemon backend for the Common UNIX Printing System (CUPS).
|
||||
*
|
||||
* Copyright 2007 by Apple Inc.
|
||||
* Copyright 2007-2008 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -445,8 +445,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
unlink(tmpfilename);
|
||||
return (CUPS_BACKEND_FAILED);
|
||||
}
|
||||
|
||||
filename = tmpfilename;
|
||||
}
|
||||
else if (argc == 6)
|
||||
{
|
||||
|
||||
@@ -280,7 +280,6 @@ int main (int argc, const char * argv[])
|
||||
*/
|
||||
static int listDevices(void)
|
||||
{
|
||||
int err = noErr;
|
||||
int i;
|
||||
int numberFound;
|
||||
|
||||
@@ -300,7 +299,7 @@ static int listDevices(void)
|
||||
return -1; /* Network is down */
|
||||
}
|
||||
|
||||
if ((err = zip_getmyzone(ZIP_DEF_INTERFACE, &at_zone)) != 0)
|
||||
if (zip_getmyzone(ZIP_DEF_INTERFACE, &at_zone))
|
||||
{
|
||||
perror("ERROR: Unable to get default AppleTalk zone");
|
||||
return -2;
|
||||
@@ -409,14 +408,13 @@ static int printFile(char* name, char* type, char* zone, int fdin, int fdout, in
|
||||
at_inet_t sendDataAddr;
|
||||
at_inet_t src;
|
||||
at_resp_t resp;
|
||||
int userdata, xo, reqlen;
|
||||
int userdata, xo = 0, reqlen;
|
||||
u_short tid;
|
||||
u_char bitmap;
|
||||
int maxfdp1,
|
||||
nbp_failures = 0;
|
||||
struct timeval timeout, *timeoutPtr;
|
||||
u_char flowQuantum = 1;
|
||||
u_short recvSequence = 0;
|
||||
time_t now,
|
||||
start_time,
|
||||
elasped_time,
|
||||
@@ -728,7 +726,7 @@ static int printFile(char* name, char* type, char* zone, int fdin, int fdout, in
|
||||
case AT_PAP_TYPE_SEND_DATA: /* Send-Data packet */
|
||||
sendDataAddr.socket = src.socket;
|
||||
gSendDataID = tid;
|
||||
recvSequence = OSReadBigInt16(&SEQUENCE_NUM(userdata), 0);
|
||||
OSReadBigInt16(&SEQUENCE_NUM(userdata), 0);
|
||||
|
||||
if ((fileBufferNbytes > 0 || fileEOFRead) && fileEOFSent == false)
|
||||
{
|
||||
@@ -906,8 +904,7 @@ static int papOpen(at_nbptuple_t* tuple, u_char* connID, int* fd,
|
||||
{
|
||||
int result,
|
||||
open_result,
|
||||
userdata,
|
||||
atp_err;
|
||||
userdata;
|
||||
time_t tm,
|
||||
waitTime;
|
||||
char data[10],
|
||||
@@ -956,8 +953,8 @@ static int papOpen(at_nbptuple_t* tuple, u_char* connID, int* fd,
|
||||
|
||||
fprintf(stderr, "DEBUG: -> %s\n", packet_name(AT_PAP_TYPE_OPEN_CONN));
|
||||
|
||||
if ((atp_err = atp_sendreq(*fd, &tuple->enu_addr, data, 4, userdata, 1, 0,
|
||||
0, &resp, &retry, 0)) < 0)
|
||||
if (atp_sendreq(*fd, &tuple->enu_addr, data, 4, userdata, 1, 0,
|
||||
0, &resp, &retry, 0) < 0)
|
||||
{
|
||||
statusUpdate("Destination unreachable", 23);
|
||||
result = EHOSTUNREACH;
|
||||
@@ -1024,7 +1021,6 @@ static int papClose()
|
||||
{
|
||||
int fd;
|
||||
u_short tmpID;
|
||||
int result;
|
||||
unsigned char rdata[ATP_DATA_SIZE];
|
||||
int userdata;
|
||||
u_char *puserdata = (u_char *)&userdata;
|
||||
@@ -1077,9 +1073,9 @@ static int papClose()
|
||||
resp.resp[0].iov_base = rdata;
|
||||
resp.resp[0].iov_len = sizeof(rdata);
|
||||
|
||||
result = atp_sendreq(fd, &gSessionAddr, 0, 0, userdata, 1, 0, 0, &resp, &retry, 0);
|
||||
atp_sendreq(fd, &gSessionAddr, 0, 0, userdata, 1, 0, 0, &resp, &retry, 0);
|
||||
|
||||
result = close(fd);
|
||||
close(fd);
|
||||
}
|
||||
return noErr;
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ backendRunLoop(
|
||||
FD_SET(print_fd, &input);
|
||||
if (use_bc)
|
||||
FD_SET(device_fd, &input);
|
||||
if (side_cb)
|
||||
if (!print_bytes && side_cb)
|
||||
FD_SET(CUPS_SC_FD, &input);
|
||||
|
||||
FD_ZERO(&output);
|
||||
@@ -250,7 +250,15 @@ backendRunLoop(
|
||||
*/
|
||||
|
||||
if (side_cb && FD_ISSET(CUPS_SC_FD, &input))
|
||||
{
|
||||
/*
|
||||
* Do the side-channel request, then start back over in the select
|
||||
* loop since it may have read from print_fd...
|
||||
*/
|
||||
|
||||
(*side_cb)(print_fd, device_fd, use_bc);
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if we have back-channel data ready...
|
||||
|
||||
@@ -556,7 +556,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
if (!print_bytes)
|
||||
FD_SET(print_fd, &input);
|
||||
FD_SET(device_fd, &input);
|
||||
FD_SET(CUPS_SC_FD, &input);
|
||||
if (!print_bytes)
|
||||
FD_SET(CUPS_SC_FD, &input);
|
||||
|
||||
FD_ZERO(&output);
|
||||
if (print_bytes)
|
||||
@@ -570,7 +571,15 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
if (FD_ISSET(CUPS_SC_FD, &input))
|
||||
{
|
||||
/*
|
||||
* Do the side-channel request, then start back over in the select
|
||||
* loop since it may have read from print_fd...
|
||||
*/
|
||||
|
||||
side_cb(print_fd, device_fd, 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if we have back-channel data ready...
|
||||
|
||||
@@ -73,7 +73,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
sep; /* Option separator */
|
||||
int print_fd; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
time_t start_time; /* Time of first connect */
|
||||
time_t start_time, /* Time of first connect */
|
||||
current_time, /* Current time */
|
||||
wait_time; /* Time to wait before shutting down socket */
|
||||
int recoverable; /* Recoverable error shown? */
|
||||
int contimeout; /* Connection timeout */
|
||||
int waiteof; /* Wait for end-of-file? */
|
||||
@@ -385,10 +387,13 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
}
|
||||
|
||||
/*
|
||||
* Get any pending back-channel data...
|
||||
* Wait up to 5 seconds to get any pending back-channel data...
|
||||
*/
|
||||
|
||||
while (wait_bc(device_fd, 5) > 0);
|
||||
wait_time = time(NULL) + 5;
|
||||
while (wait_time >= time(¤t_time))
|
||||
if (wait_bc(device_fd, wait_time - current_time) <= 0)
|
||||
break;
|
||||
|
||||
if (waiteof)
|
||||
{
|
||||
|
||||
@@ -1018,11 +1018,13 @@ static Boolean list_device_cb(void *refcon,
|
||||
|
||||
modelstr[0] = '/';
|
||||
|
||||
if (!CFStringGetCString(make, makestr, sizeof(makestr),
|
||||
if (!make ||
|
||||
!CFStringGetCString(make, makestr, sizeof(makestr),
|
||||
kCFStringEncodingUTF8))
|
||||
strcpy(makestr, "Unknown");
|
||||
|
||||
if (!CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1,
|
||||
if (!model ||
|
||||
!CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1,
|
||||
kCFStringEncodingUTF8))
|
||||
strcpy(modelstr + 1, "Printer");
|
||||
|
||||
@@ -1175,18 +1177,10 @@ static void copy_deviceinfo(CFStringRef deviceIDString,
|
||||
CFStringRef serialKeys[] = { CFSTR("SN:"), CFSTR("SERN:"), NULL };
|
||||
|
||||
if (make != NULL)
|
||||
{
|
||||
if ((*make = copy_value_for_key(deviceIDString, makeKeys)) == NULL)
|
||||
*make = CFStringCreateWithCString(kCFAllocatorDefault, "Unknown",
|
||||
kCFStringEncodingUTF8);
|
||||
}
|
||||
*make = copy_value_for_key(deviceIDString, makeKeys);
|
||||
|
||||
if (model != NULL)
|
||||
{
|
||||
if ((*model = copy_value_for_key(deviceIDString, modelKeys)) == NULL)
|
||||
*model = CFStringCreateWithCString(kCFAllocatorDefault, "Printer",
|
||||
kCFStringEncodingUTF8);
|
||||
}
|
||||
*model = copy_value_for_key(deviceIDString, modelKeys);
|
||||
|
||||
if (serial != NULL)
|
||||
*serial = copy_value_for_key(deviceIDString, serialKeys);
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
lpc.o: lpc.c ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h \
|
||||
../cups/array.h ../cups/file.h ../cups/language.h ../cups/i18n.h \
|
||||
../cups/transcode.h ../cups/debug.h ../cups/string.h ../config.h
|
||||
lpq.o: lpq.c ../cups/string.h ../config.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
|
||||
lpr.o: lpr.c ../cups/string.h ../config.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/i18n.h ../cups/transcode.h
|
||||
lprm.o: lprm.c ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h \
|
||||
../cups/array.h ../cups/file.h ../cups/language.h ../cups/i18n.h \
|
||||
../cups/transcode.h ../cups/string.h ../config.h
|
||||
|
||||
lpc.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
lpc.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/i18n.h
|
||||
lpc.o: ../cups/transcode.h ../cups/debug.h ../cups/string.h ../config.h
|
||||
lpq.o: ../cups/string.h ../config.h ../cups/cups.h ../cups/ipp.h
|
||||
lpq.o: ../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h
|
||||
lpq.o: ../cups/language.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
|
||||
lpr.o: ../cups/string.h ../config.h ../cups/cups.h ../cups/ipp.h
|
||||
lpr.o: ../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h
|
||||
lpr.o: ../cups/language.h ../cups/i18n.h ../cups/transcode.h
|
||||
lprm.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
lprm.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/i18n.h
|
||||
lprm.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* "lpr" command for the Common UNIX Printing System (CUPS).
|
||||
*
|
||||
* Copyright 2007 by Apple Inc.
|
||||
* Copyright 2007-2008 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -420,8 +420,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
else
|
||||
{
|
||||
num_files = 1;
|
||||
|
||||
#ifndef WIN32
|
||||
# if defined(HAVE_SIGSET)
|
||||
sigset(SIGHUP, sighandler);
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
help-index.o: help-index.c cgi-private.h cgi.h ../cups/cups.h \
|
||||
../cups/ipp.h ../cups/http.h ../cups/ppd.h ../cups/array.h \
|
||||
../cups/file.h ../cups/language.h ../cups/array.h help-index.h \
|
||||
../cups/debug.h ../cups/i18n.h ../cups/transcode.h ../cups/string.h \
|
||||
../config.h ../cups/dir.h
|
||||
html.o: html.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
ipp-var.o: ipp-var.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
search.o: search.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
template.o: template.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
var.o: var.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h \
|
||||
../cups/adminutil.h ../cups/cups.h ../cups/file.h
|
||||
classes.o: classes.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
help.o: help.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
jobs.o: jobs.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
printers.o: printers.c cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h ../cups/debug.h \
|
||||
../cups/i18n.h ../cups/transcode.h ../cups/string.h ../config.h
|
||||
testcgi.o: testcgi.c cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
|
||||
../cups/array.h help-index.h
|
||||
testhi.o: testhi.c cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
|
||||
../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h \
|
||||
../cups/array.h help-index.h
|
||||
testtemplate.o: testtemplate.c cgi.h ../cups/cups.h ../cups/ipp.h \
|
||||
../cups/http.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
|
||||
../cups/language.h ../cups/array.h help-index.h
|
||||
|
||||
help-index.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
help-index.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
help-index.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
help-index.o: ../cups/transcode.h ../cups/string.h ../config.h ../cups/dir.h
|
||||
html.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
html.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
html.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
html.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
ipp-var.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
ipp-var.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
ipp-var.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
ipp-var.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
search.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
search.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
search.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
search.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
template.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
template.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
template.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
template.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
var.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
var.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
var.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
var.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
admin.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
admin.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
admin.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
admin.o: ../cups/transcode.h ../cups/string.h ../config.h ../cups/adminutil.h
|
||||
admin.o: ../cups/cups.h ../cups/file.h
|
||||
classes.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
classes.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
classes.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
classes.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
help.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
help.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
help.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
help.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
jobs.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
jobs.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
jobs.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
jobs.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
printers.o: cgi-private.h cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
printers.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
|
||||
printers.o: ../cups/array.h help-index.h ../cups/debug.h ../cups/i18n.h
|
||||
printers.o: ../cups/transcode.h ../cups/string.h ../config.h
|
||||
testcgi.o: cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
testcgi.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/array.h
|
||||
testcgi.o: help-index.h
|
||||
testhi.o: cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/ppd.h
|
||||
testhi.o: ../cups/array.h ../cups/file.h ../cups/language.h ../cups/array.h
|
||||
testhi.o: help-index.h
|
||||
testtemplate.o: cgi.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
|
||||
testtemplate.o: ../cups/ppd.h ../cups/array.h ../cups/file.h
|
||||
testtemplate.o: ../cups/language.h ../cups/array.h help-index.h
|
||||
|
||||
@@ -308,6 +308,16 @@ do_add_rss_subscription(http_t *http) /* I - HTTP connection */
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Make sure we have a username...
|
||||
*/
|
||||
|
||||
if ((user = getenv("REMOTE_USER")) == NULL)
|
||||
{
|
||||
puts("Status: 401\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Validate the subscription name...
|
||||
*/
|
||||
@@ -352,9 +362,6 @@ do_add_rss_subscription(http_t *http) /* I - HTTP connection */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, printer_uri);
|
||||
|
||||
if ((user = getenv("REMOTE_USER")) == NULL)
|
||||
user = "guest";
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, user);
|
||||
|
||||
@@ -897,7 +904,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
cgiCopyTemplateLang("choose-serial.tmpl");
|
||||
cgiEndHTML();
|
||||
}
|
||||
else if (!file && (var = cgiGetVariable("PPD_NAME")) == NULL)
|
||||
else if (!file && !cgiGetVariable("PPD_NAME"))
|
||||
{
|
||||
if (modify)
|
||||
{
|
||||
@@ -1268,6 +1275,16 @@ do_cancel_subscription(http_t *http)/* I - HTTP connection */
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Require a username...
|
||||
*/
|
||||
|
||||
if ((user = getenv("REMOTE_USER")) == NULL)
|
||||
{
|
||||
puts("Status: 401\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Cancel the subscription...
|
||||
*/
|
||||
@@ -1279,9 +1296,6 @@ do_cancel_subscription(http_t *http)/* I - HTTP connection */
|
||||
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER,
|
||||
"notify-subscription-id", id);
|
||||
|
||||
if ((user = getenv("REMOTE_USER")) == NULL)
|
||||
user = "guest";
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
|
||||
NULL, user);
|
||||
|
||||
@@ -2584,6 +2598,9 @@ do_set_allowed_users(http_t *http) /* I - HTTP connection */
|
||||
while (*ptr == ',' || isspace(*ptr & 255))
|
||||
ptr ++;
|
||||
|
||||
if (!*ptr)
|
||||
break;
|
||||
|
||||
if (*ptr == '\'' || *ptr == '\"')
|
||||
{
|
||||
/*
|
||||
@@ -2649,6 +2666,9 @@ do_set_allowed_users(http_t *http) /* I - HTTP connection */
|
||||
while (*ptr == ',' || isspace(*ptr & 255))
|
||||
ptr ++;
|
||||
|
||||
if (!*ptr)
|
||||
break;
|
||||
|
||||
if (*ptr == '\'' || *ptr == '\"')
|
||||
{
|
||||
/*
|
||||
@@ -2998,15 +3018,15 @@ do_set_options(http_t *http, /* I - HTTP connection */
|
||||
|
||||
cgiSetVariable("KEYWORD", "job_sheets_start");
|
||||
cgiSetVariable("KEYTEXT", cgiText(_("Starting Banner")));
|
||||
cgiSetVariable("DEFCHOICE", attr == NULL ?
|
||||
"" : attr->values[0].string.text);
|
||||
cgiSetVariable("DEFCHOICE", attr != NULL ?
|
||||
attr->values[0].string.text : "");
|
||||
|
||||
cgiCopyTemplateLang("option-pickone.tmpl");
|
||||
|
||||
cgiSetVariable("KEYWORD", "job_sheets_end");
|
||||
cgiSetVariable("KEYTEXT", cgiText(_("Ending Banner")));
|
||||
cgiSetVariable("DEFCHOICE", attr == NULL && attr->num_values > 1 ?
|
||||
"" : attr->values[1].string.text);
|
||||
cgiSetVariable("DEFCHOICE", attr != NULL && attr->num_values > 1 ?
|
||||
attr->values[1].string.text : "");
|
||||
|
||||
cgiCopyTemplateLang("option-pickone.tmpl");
|
||||
|
||||
@@ -3193,7 +3213,7 @@ do_set_options(http_t *http, /* I - HTTP connection */
|
||||
}
|
||||
|
||||
if ((var = cgiGetVariable("protocol")) != NULL)
|
||||
cupsFilePrintf(out, "*cupsProtocol: %s\n", cgiGetVariable("protocol"));
|
||||
cupsFilePrintf(out, "*cupsProtocol: %s\n", var);
|
||||
|
||||
cupsFileClose(in);
|
||||
cupsFileClose(out);
|
||||
@@ -3232,12 +3252,12 @@ do_set_options(http_t *http, /* I - HTTP connection */
|
||||
attr->values[1].string.text = _cupsStrAlloc(cgiGetVariable("job_sheets_end"));
|
||||
|
||||
if ((var = cgiGetVariable("printer_error_policy")) != NULL)
|
||||
attr = ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME,
|
||||
"printer-error-policy", NULL, var);
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME,
|
||||
"printer-error-policy", NULL, var);
|
||||
|
||||
if ((var = cgiGetVariable("printer_op_policy")) != NULL)
|
||||
attr = ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME,
|
||||
"printer-op-policy", NULL, var);
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME,
|
||||
"printer-op-policy", NULL, var);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
|
||||
@@ -474,10 +474,16 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
|
||||
|
||||
if (cupsLastError() <= IPP_OK_CONFLICT)
|
||||
{
|
||||
cgiRewriteURL(job_printer_uri, resource, sizeof(resource), NULL);
|
||||
cgiFormEncode(uri, resource, sizeof(uri));
|
||||
snprintf(refresh, sizeof(refresh), "2;URL=%s", uri);
|
||||
cgiSetVariable("refresh_page", refresh);
|
||||
const char *path = strstr(job_printer_uri, "/printers/");
|
||||
if (!path)
|
||||
path = strstr(job_printer_uri, "/classes/");
|
||||
|
||||
if (path)
|
||||
{
|
||||
cgiFormEncode(uri, path, sizeof(uri));
|
||||
snprintf(refresh, sizeof(refresh), "2;URL=%s", uri);
|
||||
cgiSetVariable("refresh_page", refresh);
|
||||
}
|
||||
}
|
||||
|
||||
if (job_id)
|
||||
|
||||
@@ -49,7 +49,6 @@ depend:
|
||||
#
|
||||
|
||||
install: all
|
||||
$(INSTALL_DIR) -m 755 $(SERVERROOT)
|
||||
for file in $(KEEP); do \
|
||||
if test -r $(SERVERROOT)/$$file ; then \
|
||||
$(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.N ; \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-common.m4 7329 2008-02-20 00:32:58Z mike $"
|
||||
dnl "$Id: cups-common.m4 7778 2008-07-23 00:06:46Z mike $"
|
||||
dnl
|
||||
dnl Common configuration stuff for the Common UNIX Printing System (CUPS).
|
||||
dnl
|
||||
@@ -20,7 +20,7 @@ dnl Set the name of the config header file...
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Version number information...
|
||||
CUPS_VERSION="1.3.7"
|
||||
CUPS_VERSION="1.3.9"
|
||||
CUPS_REVISION=""
|
||||
|
||||
AC_SUBST(CUPS_VERSION)
|
||||
@@ -258,10 +258,31 @@ case $uname in
|
||||
AC_CHECK_FUNCS(notify_post)
|
||||
|
||||
dnl Check for Authorization Services support
|
||||
AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
|
||||
default_adminkey="$withval",
|
||||
default_adminkey="default")
|
||||
AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
|
||||
default_operkey="$withval",
|
||||
default_operkey="default")
|
||||
|
||||
AC_CHECK_HEADER(Security/Authorization.h, [
|
||||
AC_DEFINE(HAVE_AUTHORIZATION_H)
|
||||
CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"])
|
||||
|
||||
if test "x$default_adminkey" != xdefault; then
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
|
||||
elif grep -q system.print.operator /etc/authorization; then
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
|
||||
else
|
||||
CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
|
||||
fi
|
||||
|
||||
if test "x$default_operkey" != xdefault; then
|
||||
CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
|
||||
elif grep -q system.print.operator /etc/authorization; then
|
||||
CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
|
||||
else
|
||||
CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
|
||||
fi])
|
||||
AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
|
||||
;;
|
||||
esac
|
||||
@@ -273,5 +294,5 @@ AC_SUBST(FONTS)
|
||||
AC_SUBST(LEGACY_BACKENDS)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-common.m4 7329 2008-02-20 00:32:58Z mike $".
|
||||
dnl End of "$Id: cups-common.m4 7778 2008-07-23 00:06:46Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-compiler.m4 7353 2008-02-28 00:54:04Z mike $"
|
||||
dnl "$Id: cups-compiler.m4 7648 2008-06-16 17:41:11Z mike $"
|
||||
dnl
|
||||
dnl Compiler stuff for the Common UNIX Printing System (CUPS).
|
||||
dnl
|
||||
@@ -521,6 +521,12 @@ case $uname in
|
||||
OPTIM="$OPTIM -D_HPUX_SOURCE"
|
||||
;;
|
||||
|
||||
Linux*)
|
||||
# glibc 2.8 and higher breaks peer credentials unless you
|
||||
# define _GNU_SOURCE...
|
||||
OPTIM="$OPTIM -D_GNU_SOURCE"
|
||||
;;
|
||||
|
||||
OSF*)
|
||||
# Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
|
||||
# to be POSIX-compliant...
|
||||
@@ -529,5 +535,5 @@ case $uname in
|
||||
esac
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-compiler.m4 7353 2008-02-28 00:54:04Z mike $".
|
||||
dnl End of "$Id: cups-compiler.m4 7648 2008-06-16 17:41:11Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: cups-defaults.m4 7296 2008-02-12 00:20:32Z mike $"
|
||||
dnl "$Id: cups-defaults.m4 7448 2008-04-14 18:10:27Z mike $"
|
||||
dnl
|
||||
dnl Default cupsd configuration settings for the Common UNIX Printing System
|
||||
dnl (CUPS).
|
||||
@@ -290,10 +290,10 @@ fi
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP")
|
||||
|
||||
dnl Default MaxCopies value...
|
||||
AC_ARG_WITH(max-copies, [ --with-max-copies set max copies value, default=100 ],
|
||||
AC_ARG_WITH(max-copies, [ --with-max-copies set default max copies value, default=auto ],
|
||||
CUPS_MAX_COPIES="$withval",
|
||||
if test "x$uname" = xDarwin; then
|
||||
CUPS_MAX_COPIES="999"
|
||||
CUPS_MAX_COPIES="9999"
|
||||
else
|
||||
CUPS_MAX_COPIES="100"
|
||||
fi)
|
||||
@@ -346,5 +346,5 @@ AC_SUBST(DEFAULT_IPP_PORT)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-defaults.m4 7296 2008-02-12 00:20:32Z mike $".
|
||||
dnl End of "$Id: cups-defaults.m4 7448 2008-04-14 18:10:27Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-network.m4 7140 2007-12-19 01:47:57Z mike $"
|
||||
dnl "$Id: cups-network.m4 7919 2008-09-09 22:03:27Z mike $"
|
||||
dnl
|
||||
dnl Networking stuff for the Common UNIX Printing System (CUPS).
|
||||
dnl
|
||||
dnl Copyright 2007 by Apple Inc.
|
||||
dnl Copyright 2007-2008 by Apple Inc.
|
||||
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
@@ -13,11 +13,15 @@ dnl which should have been included with this file. If this file is
|
||||
dnl file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
dnl
|
||||
|
||||
AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H))
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
AC_SEARCH_LIBS(gethostbyaddr, nsl)
|
||||
AC_SEARCH_LIBS(getifaddrs, nsl, AC_DEFINE(HAVE_GETIFADDRS))
|
||||
AC_SEARCH_LIBS(hstrerror, nsl socket resolv, AC_DEFINE(HAVE_HSTRERROR))
|
||||
AC_SEARCH_LIBS(rresvport_af, nsl, AC_DEFINE(HAVE_RRESVPORT_AF))
|
||||
AC_SEARCH_LIBS(__res_init, resolv bind, AC_DEFINE(HAVE_RES_INIT),
|
||||
AC_SEARCH_LIBS(res_9_init, resolv bind, AC_DEFINE(HAVE_RES_INIT),
|
||||
AC_SEARCH_LIBS(res_init, resolv bind, AC_DEFINE(HAVE_RES_INIT))))
|
||||
|
||||
# Tru64 5.1b leaks file descriptors with these functions; disable until
|
||||
# we can come up with a test for this...
|
||||
@@ -66,5 +70,5 @@ AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
|
||||
[#include <netat/appletalk.h>])
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-network.m4 7140 2007-12-19 01:47:57Z mike $".
|
||||
dnl End of "$Id: cups-network.m4 7919 2008-09-09 22:03:27Z mike $".
|
||||
dnl
|
||||
|
||||
@@ -371,6 +371,20 @@
|
||||
#undef HAVE_HSTRERROR
|
||||
|
||||
|
||||
/*
|
||||
* Do we have res_init()?
|
||||
*/
|
||||
|
||||
#undef HAVE_RES_INIT
|
||||
|
||||
|
||||
/*
|
||||
* Do we have <resolv.h>
|
||||
*/
|
||||
|
||||
#undef HAVE_RESOLV_H
|
||||
|
||||
|
||||
/*
|
||||
* Do we have the <sys/sockio.h> header file?
|
||||
*/
|
||||
|
||||
@@ -1,324 +1,303 @@
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
adminutil.o: adminutil.c adminutil.h cups.h ipp.h http.h string.h \
|
||||
../config.h ppd.h array.h file.h language.h globals.h string.h \
|
||||
http-private.h md5.h ipp-private.h i18n.h transcode.h debug.h
|
||||
array.o: array.c array.h string.h ../config.h string.h debug.h
|
||||
attr.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h string.h
|
||||
auth.o: auth.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
backchannel.o: backchannel.c cups.h ipp.h http.h string.h ../config.h \
|
||||
ppd.h array.h file.h language.h
|
||||
backend.o: backend.c backend.h string.h ../config.h string.h
|
||||
custom.o: custom.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
dest.o: dest.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h
|
||||
dir.o: dir.c dir.h string.h ../config.h string.h debug.h
|
||||
emit.o: emit.c ppd.h array.h file.h string.h ../config.h string.h debug.h
|
||||
encode.o: encode.c cups.h ipp.h http.h string.h ../config.h ppd.h array.h \
|
||||
file.h language.h ipp-private.h string.h debug.h
|
||||
file.o: file.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
getifaddrs.o: getifaddrs.c http-private.h ../config.h http.h string.h \
|
||||
md5.h ipp-private.h ipp.h
|
||||
getputfile.o: getputfile.c http-private.h ../config.h http.h string.h \
|
||||
md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
string.h debug.h
|
||||
globals.o: globals.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
http.o: http.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
http-addr.o: http-addr.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
http-addrlist.o: http-addrlist.c http-private.h ../config.h http.h \
|
||||
string.h md5.h ipp-private.h ipp.h globals.h string.h cups.h ppd.h \
|
||||
array.h file.h language.h i18n.h transcode.h debug.h
|
||||
http-support.o: http-support.c debug.h globals.h string.h ../config.h \
|
||||
string.h http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h \
|
||||
array.h file.h language.h i18n.h transcode.h
|
||||
ipp.o: ipp.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
ipp-support.o: ipp-support.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
langprintf.o: langprintf.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h
|
||||
language.o: language.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
localize.o: localize.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
mark.o: mark.c cups.h ipp.h http.h string.h ../config.h ppd.h array.h \
|
||||
file.h language.h string.h debug.h
|
||||
md5.o: md5.c md5.h string.h ../config.h string.h
|
||||
md5passwd.o: md5passwd.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h string.h
|
||||
notify.o: notify.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h
|
||||
options.o: options.c cups.h ipp.h http.h string.h ../config.h ppd.h \
|
||||
array.h file.h language.h string.h debug.h
|
||||
page.o: page.c ppd.h array.h file.h string.h ../config.h string.h
|
||||
ppd.o: ppd.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
request.o: request.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
sidechannel.o: sidechannel.c sidechannel.h string.h ../config.h string.h
|
||||
snprintf.o: snprintf.c string.h ../config.h string.h
|
||||
string.o: string.c array.h debug.h string.h ../config.h string.h
|
||||
tempfile.o: tempfile.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
transcode.o: transcode.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
usersys.o: usersys.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
util.o: util.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
testadmin.o: testadmin.c adminutil.h cups.h ipp.h http.h string.h \
|
||||
../config.h ppd.h array.h file.h language.h string.h
|
||||
testarray.o: testarray.c ../cups/string.h ../config.h string.h array.h \
|
||||
dir.h debug.h
|
||||
testcups.o: testcups.c cups.h ipp.h http.h string.h ../config.h ppd.h \
|
||||
array.h file.h language.h
|
||||
testfile.o: testfile.c string.h ../config.h string.h file.h debug.h
|
||||
testhttp.o: testhttp.c http.h string.h ../config.h string.h
|
||||
testi18n.o: testi18n.c i18n.h transcode.h language.h array.h string.h \
|
||||
../config.h string.h
|
||||
testipp.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h \
|
||||
ipp.h http.h
|
||||
testlang.o: testlang.c i18n.h transcode.h language.h array.h string.h \
|
||||
../config.h string.h
|
||||
testppd.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h \
|
||||
file.h
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
adminutil.32.o: adminutil.c adminutil.c adminutil.h cups.h ipp.h http.h string.h \
|
||||
../config.h ppd.h array.h file.h language.h globals.h string.h \
|
||||
http-private.h md5.h ipp-private.h i18n.h transcode.h debug.h
|
||||
array.32.o: array.c array.c array.h string.h ../config.h string.h debug.h
|
||||
attr.32.o: attr.c attr.c ppd.h array.h file.h debug.h string.h ../config.h string.h
|
||||
auth.32.o: auth.c auth.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
backchannel.32.o: backchannel.c backchannel.c cups.h ipp.h http.h string.h ../config.h \
|
||||
ppd.h array.h file.h language.h
|
||||
backend.32.o: backend.c backend.c backend.h string.h ../config.h string.h
|
||||
custom.32.o: custom.c custom.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
dest.32.o: dest.c dest.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h
|
||||
dir.32.o: dir.c dir.c dir.h string.h ../config.h string.h debug.h
|
||||
emit.32.o: emit.c emit.c ppd.h array.h file.h string.h ../config.h string.h debug.h
|
||||
encode.32.o: encode.c encode.c cups.h ipp.h http.h string.h ../config.h ppd.h array.h \
|
||||
file.h language.h ipp-private.h string.h debug.h
|
||||
file.32.o: file.c file.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
getifaddrs.32.o: getifaddrs.c getifaddrs.c http-private.h ../config.h http.h string.h \
|
||||
md5.h ipp-private.h ipp.h
|
||||
getputfile.32.o: getputfile.c getputfile.c http-private.h ../config.h http.h string.h \
|
||||
md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
string.h debug.h
|
||||
globals.32.o: globals.c globals.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
http.32.o: http.c http.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
http-addr.32.o: http-addr.c http-addr.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
http-addrlist.32.o: http-addrlist.c http-addrlist.c http-private.h ../config.h http.h \
|
||||
string.h md5.h ipp-private.h ipp.h globals.h string.h cups.h ppd.h \
|
||||
array.h file.h language.h i18n.h transcode.h debug.h
|
||||
http-support.32.o: http-support.c http-support.c debug.h globals.h string.h ../config.h \
|
||||
string.h http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h \
|
||||
array.h file.h language.h i18n.h transcode.h
|
||||
ipp.32.o: ipp.c ipp.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
ipp-support.32.o: ipp-support.c ipp-support.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
langprintf.32.o: langprintf.c langprintf.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h
|
||||
language.32.o: language.c language.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
localize.32.o: localize.c localize.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
mark.32.o: mark.c mark.c cups.h ipp.h http.h string.h ../config.h ppd.h array.h \
|
||||
file.h language.h string.h debug.h
|
||||
md5.32.o: md5.c md5.c md5.h string.h ../config.h string.h
|
||||
md5passwd.32.o: md5passwd.c md5passwd.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h string.h
|
||||
notify.32.o: notify.c notify.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h
|
||||
options.32.o: options.c options.c cups.h ipp.h http.h string.h ../config.h ppd.h \
|
||||
array.h file.h language.h string.h debug.h
|
||||
page.32.o: page.c page.c ppd.h array.h file.h string.h ../config.h string.h
|
||||
ppd.32.o: ppd.c ppd.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
request.32.o: request.c request.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
sidechannel.32.o: sidechannel.c sidechannel.c sidechannel.h string.h ../config.h string.h
|
||||
snprintf.32.o: snprintf.c snprintf.c string.h ../config.h string.h
|
||||
string.32.o: string.c string.c array.h debug.h string.h ../config.h string.h
|
||||
tempfile.32.o: tempfile.c tempfile.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
transcode.32.o: transcode.c transcode.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
usersys.32.o: usersys.c usersys.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
util.32.o: util.c util.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
testadmin.32.o: testadmin.c testadmin.c adminutil.h cups.h ipp.h http.h string.h \
|
||||
../config.h ppd.h array.h file.h language.h string.h
|
||||
testarray.32.o: testarray.c testarray.c ../cups/string.h ../config.h string.h array.h \
|
||||
dir.h debug.h
|
||||
testcups.32.o: testcups.c testcups.c cups.h ipp.h http.h string.h ../config.h ppd.h \
|
||||
array.h file.h language.h
|
||||
testfile.32.o: testfile.c testfile.c string.h ../config.h string.h file.h debug.h
|
||||
testhttp.32.o: testhttp.c testhttp.c http.h string.h ../config.h string.h
|
||||
testi18n.32.o: testi18n.c testi18n.c i18n.h transcode.h language.h array.h string.h \
|
||||
../config.h string.h
|
||||
testipp.32.o: testipp.c testipp.c ../cups/string.h ../config.h string.h ipp-private.h \
|
||||
ipp.h http.h
|
||||
testlang.32.o: testlang.c testlang.c i18n.h transcode.h language.h array.h string.h \
|
||||
../config.h string.h
|
||||
testppd.32.o: testppd.c testppd.c ../cups/string.h ../config.h string.h ppd.h array.h \
|
||||
file.h
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
adminutil.64.o: adminutil.c adminutil.c adminutil.h cups.h ipp.h http.h string.h \
|
||||
../config.h ppd.h array.h file.h language.h globals.h string.h \
|
||||
http-private.h md5.h ipp-private.h i18n.h transcode.h debug.h
|
||||
array.64.o: array.c array.c array.h string.h ../config.h string.h debug.h
|
||||
attr.64.o: attr.c attr.c ppd.h array.h file.h debug.h string.h ../config.h string.h
|
||||
auth.64.o: auth.c auth.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
backchannel.64.o: backchannel.c backchannel.c cups.h ipp.h http.h string.h ../config.h \
|
||||
ppd.h array.h file.h language.h
|
||||
backend.64.o: backend.c backend.c backend.h string.h ../config.h string.h
|
||||
custom.64.o: custom.c custom.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
dest.64.o: dest.c dest.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h
|
||||
dir.64.o: dir.c dir.c dir.h string.h ../config.h string.h debug.h
|
||||
emit.64.o: emit.c emit.c ppd.h array.h file.h string.h ../config.h string.h debug.h
|
||||
encode.64.o: encode.c encode.c cups.h ipp.h http.h string.h ../config.h ppd.h array.h \
|
||||
file.h language.h ipp-private.h string.h debug.h
|
||||
file.64.o: file.c file.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
getifaddrs.64.o: getifaddrs.c getifaddrs.c http-private.h ../config.h http.h string.h \
|
||||
md5.h ipp-private.h ipp.h
|
||||
getputfile.64.o: getputfile.c getputfile.c http-private.h ../config.h http.h string.h \
|
||||
md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
string.h debug.h
|
||||
globals.64.o: globals.c globals.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
http.64.o: http.c http.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
http-addr.64.o: http-addr.c http-addr.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
http-addrlist.64.o: http-addrlist.c http-addrlist.c http-private.h ../config.h http.h \
|
||||
string.h md5.h ipp-private.h ipp.h globals.h string.h cups.h ppd.h \
|
||||
array.h file.h language.h i18n.h transcode.h debug.h
|
||||
http-support.64.o: http-support.c http-support.c debug.h globals.h string.h ../config.h \
|
||||
string.h http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h \
|
||||
array.h file.h language.h i18n.h transcode.h
|
||||
ipp.64.o: ipp.c ipp.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
ipp-support.64.o: ipp-support.c ipp-support.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
langprintf.64.o: langprintf.c langprintf.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h
|
||||
language.64.o: language.c language.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
localize.64.o: localize.c localize.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
mark.64.o: mark.c mark.c cups.h ipp.h http.h string.h ../config.h ppd.h array.h \
|
||||
file.h language.h string.h debug.h
|
||||
md5.64.o: md5.c md5.c md5.h string.h ../config.h string.h
|
||||
md5passwd.64.o: md5passwd.c md5passwd.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h string.h
|
||||
notify.64.o: notify.c notify.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h
|
||||
options.64.o: options.c options.c cups.h ipp.h http.h string.h ../config.h ppd.h \
|
||||
array.h file.h language.h string.h debug.h
|
||||
page.64.o: page.c page.c ppd.h array.h file.h string.h ../config.h string.h
|
||||
ppd.64.o: ppd.c ppd.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
request.64.o: request.c request.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
sidechannel.64.o: sidechannel.c sidechannel.c sidechannel.h string.h ../config.h string.h
|
||||
snprintf.64.o: snprintf.c snprintf.c string.h ../config.h string.h
|
||||
string.64.o: string.c string.c array.h debug.h string.h ../config.h string.h
|
||||
tempfile.64.o: tempfile.c tempfile.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
transcode.64.o: transcode.c transcode.c globals.h string.h ../config.h string.h \
|
||||
http-private.h http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h \
|
||||
file.h language.h i18n.h transcode.h debug.h
|
||||
usersys.64.o: usersys.c usersys.c http-private.h ../config.h http.h string.h md5.h \
|
||||
ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h \
|
||||
language.h i18n.h transcode.h debug.h
|
||||
util.64.o: util.c util.c globals.h string.h ../config.h string.h http-private.h \
|
||||
http.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h \
|
||||
i18n.h transcode.h debug.h
|
||||
testadmin.64.o: testadmin.c testadmin.c adminutil.h cups.h ipp.h http.h string.h \
|
||||
../config.h ppd.h array.h file.h language.h string.h
|
||||
testarray.64.o: testarray.c testarray.c ../cups/string.h ../config.h string.h array.h \
|
||||
dir.h debug.h
|
||||
testcups.64.o: testcups.c testcups.c cups.h ipp.h http.h string.h ../config.h ppd.h \
|
||||
array.h file.h language.h
|
||||
testfile.64.o: testfile.c testfile.c string.h ../config.h string.h file.h debug.h
|
||||
testhttp.64.o: testhttp.c testhttp.c http.h string.h ../config.h string.h
|
||||
testi18n.64.o: testi18n.c testi18n.c i18n.h transcode.h language.h array.h string.h \
|
||||
../config.h string.h
|
||||
testipp.64.o: testipp.c testipp.c ../cups/string.h ../config.h string.h ipp-private.h \
|
||||
ipp.h http.h
|
||||
testlang.64.o: testlang.c testlang.c i18n.h transcode.h language.h array.h string.h \
|
||||
../config.h string.h
|
||||
testppd.64.o: testppd.c testppd.c ../cups/string.h ../config.h string.h ppd.h array.h \
|
||||
file.h
|
||||
# DO NOT DELETE
|
||||
|
||||
adminutil.o: adminutil.h cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
adminutil.o: globals.h string.h ../config.h http-private.h md5.h
|
||||
adminutil.o: ipp-private.h i18n.h transcode.h debug.h
|
||||
array.o: array.h string.h ../config.h debug.h
|
||||
attr.o: ppd.h array.h file.h debug.h string.h ../config.h
|
||||
auth.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
auth.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
auth.o: transcode.h debug.h
|
||||
backchannel.o: cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
backend.o: backend.h string.h ../config.h
|
||||
custom.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
custom.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
custom.o: transcode.h debug.h
|
||||
dest.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
dest.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
dest.o: transcode.h
|
||||
dir.o: dir.h string.h ../config.h debug.h
|
||||
emit.o: ppd.h array.h file.h string.h ../config.h debug.h
|
||||
encode.o: cups.h ipp.h http.h ppd.h array.h file.h language.h ipp-private.h
|
||||
encode.o: string.h ../config.h debug.h
|
||||
file.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
file.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
file.o: debug.h
|
||||
getifaddrs.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
getputfile.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
getputfile.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
getputfile.o: i18n.h transcode.h debug.h
|
||||
globals.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
globals.o: globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
globals.o: transcode.h debug.h
|
||||
http.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
http.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
http.o: debug.h
|
||||
http-addr.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
http-addr.o: globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
http-addr.o: transcode.h debug.h
|
||||
http-addrlist.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
http-addrlist.o: globals.h string.h cups.h ppd.h array.h file.h language.h
|
||||
http-addrlist.o: i18n.h transcode.h debug.h
|
||||
http-support.o: debug.h globals.h string.h ../config.h http-private.h http.h
|
||||
http-support.o: md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h
|
||||
http-support.o: language.h i18n.h transcode.h
|
||||
ipp.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
ipp.o: string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
ipp.o: debug.h
|
||||
ipp-support.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
ipp-support.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
ipp-support.o: i18n.h transcode.h debug.h
|
||||
langprintf.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
langprintf.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
langprintf.o: i18n.h transcode.h
|
||||
language.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
language.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
language.o: transcode.h debug.h
|
||||
localize.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
localize.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
localize.o: transcode.h debug.h
|
||||
mark.o: cups.h ipp.h http.h ppd.h array.h file.h language.h string.h
|
||||
mark.o: ../config.h debug.h
|
||||
md5.o: md5.h string.h ../config.h
|
||||
md5passwd.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
md5passwd.o: string.h
|
||||
notify.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
notify.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
notify.o: transcode.h
|
||||
options.o: cups.h ipp.h http.h ppd.h array.h file.h language.h string.h
|
||||
options.o: ../config.h debug.h
|
||||
page.o: ppd.h array.h file.h string.h ../config.h
|
||||
ppd.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
ppd.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
ppd.o: transcode.h debug.h
|
||||
request.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
request.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
request.o: transcode.h debug.h
|
||||
sidechannel.o: sidechannel.h string.h ../config.h
|
||||
snprintf.o: string.h ../config.h
|
||||
string.o: array.h debug.h string.h ../config.h
|
||||
tempfile.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
tempfile.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
tempfile.o: transcode.h debug.h
|
||||
transcode.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
transcode.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
transcode.o: i18n.h transcode.h debug.h
|
||||
usersys.o: http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
usersys.o: globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
usersys.o: transcode.h debug.h
|
||||
util.o: globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
util.o: ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
util.o: transcode.h debug.h
|
||||
testadmin.o: adminutil.h cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
testadmin.o: string.h ../config.h
|
||||
testarray.o: ../cups/string.h ../config.h string.h array.h dir.h debug.h
|
||||
testcups.o: cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
testfile.o: string.h ../config.h file.h debug.h
|
||||
testhttp.o: http.h string.h ../config.h
|
||||
testi18n.o: i18n.h transcode.h language.h array.h string.h ../config.h
|
||||
testipp.o: ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h
|
||||
testlang.o: i18n.h transcode.h language.h array.h string.h ../config.h
|
||||
testppd.o: ../cups/string.h ../config.h string.h ppd.h array.h file.h
|
||||
# DO NOT DELETE
|
||||
|
||||
adminutil.32.o: adminutil.c adminutil.h cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
adminutil.32.o: adminutil.c globals.h string.h ../config.h http-private.h md5.h
|
||||
adminutil.32.o: adminutil.c ipp-private.h i18n.h transcode.h debug.h
|
||||
array.32.o: array.c array.h string.h ../config.h debug.h
|
||||
attr.32.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h
|
||||
auth.32.o: auth.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
auth.32.o: auth.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
auth.32.o: auth.c transcode.h debug.h
|
||||
backchannel.32.o: backchannel.c cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
backend.32.o: backend.c backend.h string.h ../config.h
|
||||
custom.32.o: custom.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
custom.32.o: custom.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
custom.32.o: custom.c transcode.h debug.h
|
||||
dest.32.o: dest.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
dest.32.o: dest.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
dest.32.o: dest.c transcode.h
|
||||
dir.32.o: dir.c dir.h string.h ../config.h debug.h
|
||||
emit.32.o: emit.c ppd.h array.h file.h string.h ../config.h debug.h
|
||||
encode.32.o: encode.c cups.h ipp.h http.h ppd.h array.h file.h language.h ipp-private.h
|
||||
encode.32.o: encode.c string.h ../config.h debug.h
|
||||
file.32.o: file.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
file.32.o: file.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
file.32.o: file.c debug.h
|
||||
getifaddrs.32.o: getifaddrs.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
getputfile.32.o: getputfile.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
getputfile.32.o: getputfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
getputfile.32.o: getputfile.c i18n.h transcode.h debug.h
|
||||
globals.32.o: globals.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
globals.32.o: globals.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
globals.32.o: globals.c transcode.h debug.h
|
||||
http.32.o: http.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
http.32.o: http.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
http.32.o: http.c debug.h
|
||||
http-addr.32.o: http-addr.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
http-addr.32.o: http-addr.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
http-addr.32.o: http-addr.c transcode.h debug.h
|
||||
http-addrlist.32.o: http-addrlist.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
http-addrlist.32.o: http-addrlist.c globals.h string.h cups.h ppd.h array.h file.h language.h
|
||||
http-addrlist.32.o: http-addrlist.c i18n.h transcode.h debug.h
|
||||
http-support.32.o: http-support.c debug.h globals.h string.h ../config.h http-private.h http.h
|
||||
http-support.32.o: http-support.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h
|
||||
http-support.32.o: http-support.c language.h i18n.h transcode.h
|
||||
ipp.32.o: ipp.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
ipp.32.o: ipp.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
ipp.32.o: ipp.c debug.h
|
||||
ipp-support.32.o: ipp-support.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
ipp-support.32.o: ipp-support.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
ipp-support.32.o: ipp-support.c i18n.h transcode.h debug.h
|
||||
langprintf.32.o: langprintf.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
langprintf.32.o: langprintf.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
langprintf.32.o: langprintf.c i18n.h transcode.h
|
||||
language.32.o: language.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
language.32.o: language.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
language.32.o: language.c transcode.h debug.h
|
||||
localize.32.o: localize.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
localize.32.o: localize.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
localize.32.o: localize.c transcode.h debug.h
|
||||
mark.32.o: mark.c cups.h ipp.h http.h ppd.h array.h file.h language.h string.h
|
||||
mark.32.o: mark.c ../config.h debug.h
|
||||
md5.32.o: md5.c md5.h string.h ../config.h
|
||||
md5passwd.32.o: md5passwd.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
md5passwd.32.o: md5passwd.c string.h
|
||||
notify.32.o: notify.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
notify.32.o: notify.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
notify.32.o: notify.c transcode.h
|
||||
options.32.o: options.c cups.h ipp.h http.h ppd.h array.h file.h language.h string.h
|
||||
options.32.o: options.c ../config.h debug.h
|
||||
page.32.o: page.c ppd.h array.h file.h string.h ../config.h
|
||||
ppd.32.o: ppd.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
ppd.32.o: ppd.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
ppd.32.o: ppd.c transcode.h debug.h
|
||||
request.32.o: request.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
request.32.o: request.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
request.32.o: request.c transcode.h debug.h
|
||||
sidechannel.32.o: sidechannel.c sidechannel.h string.h ../config.h
|
||||
snprintf.32.o: snprintf.c string.h ../config.h
|
||||
string.32.o: string.c array.h debug.h string.h ../config.h
|
||||
tempfile.32.o: tempfile.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
tempfile.32.o: tempfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
tempfile.32.o: tempfile.c transcode.h debug.h
|
||||
transcode.32.o: transcode.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
transcode.32.o: transcode.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
transcode.32.o: transcode.c i18n.h transcode.h debug.h
|
||||
usersys.32.o: usersys.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
usersys.32.o: usersys.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
usersys.32.o: usersys.c transcode.h debug.h
|
||||
util.32.o: util.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
util.32.o: util.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
util.32.o: util.c transcode.h debug.h
|
||||
testadmin.32.o: testadmin.c adminutil.h cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
testadmin.32.o: testadmin.c string.h ../config.h
|
||||
testarray.32.o: testarray.c ../cups/string.h ../config.h string.h array.h dir.h debug.h
|
||||
testcups.32.o: testcups.c cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
testfile.32.o: testfile.c string.h ../config.h file.h debug.h
|
||||
testhttp.32.o: testhttp.c http.h string.h ../config.h
|
||||
testi18n.32.o: testi18n.c i18n.h transcode.h language.h array.h string.h ../config.h
|
||||
testipp.32.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h
|
||||
testlang.32.o: testlang.c i18n.h transcode.h language.h array.h string.h ../config.h
|
||||
testppd.32.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h file.h
|
||||
# DO NOT DELETE
|
||||
|
||||
adminutil.64.o: adminutil.c adminutil.h cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
adminutil.64.o: adminutil.c globals.h string.h ../config.h http-private.h md5.h
|
||||
adminutil.64.o: adminutil.c ipp-private.h i18n.h transcode.h debug.h
|
||||
array.64.o: array.c array.h string.h ../config.h debug.h
|
||||
attr.64.o: attr.c ppd.h array.h file.h debug.h string.h ../config.h
|
||||
auth.64.o: auth.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
auth.64.o: auth.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
auth.64.o: auth.c transcode.h debug.h
|
||||
backchannel.64.o: backchannel.c cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
backend.64.o: backend.c backend.h string.h ../config.h
|
||||
custom.64.o: custom.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
custom.64.o: custom.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
custom.64.o: custom.c transcode.h debug.h
|
||||
dest.64.o: dest.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
dest.64.o: dest.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
dest.64.o: dest.c transcode.h
|
||||
dir.64.o: dir.c dir.h string.h ../config.h debug.h
|
||||
emit.64.o: emit.c ppd.h array.h file.h string.h ../config.h debug.h
|
||||
encode.64.o: encode.c cups.h ipp.h http.h ppd.h array.h file.h language.h ipp-private.h
|
||||
encode.64.o: encode.c string.h ../config.h debug.h
|
||||
file.64.o: file.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
file.64.o: file.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
file.64.o: file.c debug.h
|
||||
getifaddrs.64.o: getifaddrs.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
getputfile.64.o: getputfile.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
getputfile.64.o: getputfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
getputfile.64.o: getputfile.c i18n.h transcode.h debug.h
|
||||
globals.64.o: globals.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
globals.64.o: globals.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
globals.64.o: globals.c transcode.h debug.h
|
||||
http.64.o: http.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
http.64.o: http.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
http.64.o: http.c debug.h
|
||||
http-addr.64.o: http-addr.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
http-addr.64.o: http-addr.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
http-addr.64.o: http-addr.c transcode.h debug.h
|
||||
http-addrlist.64.o: http-addrlist.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
http-addrlist.64.o: http-addrlist.c globals.h string.h cups.h ppd.h array.h file.h language.h
|
||||
http-addrlist.64.o: http-addrlist.c i18n.h transcode.h debug.h
|
||||
http-support.64.o: http-support.c debug.h globals.h string.h ../config.h http-private.h http.h
|
||||
http-support.64.o: http-support.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h
|
||||
http-support.64.o: http-support.c language.h i18n.h transcode.h
|
||||
ipp.64.o: ipp.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h globals.h
|
||||
ipp.64.o: ipp.c string.h cups.h ppd.h array.h file.h language.h i18n.h transcode.h
|
||||
ipp.64.o: ipp.c debug.h
|
||||
ipp-support.64.o: ipp-support.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
ipp-support.64.o: ipp-support.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
ipp-support.64.o: ipp-support.c i18n.h transcode.h debug.h
|
||||
langprintf.64.o: langprintf.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
langprintf.64.o: langprintf.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
langprintf.64.o: langprintf.c i18n.h transcode.h
|
||||
language.64.o: language.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
language.64.o: language.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
language.64.o: language.c transcode.h debug.h
|
||||
localize.64.o: localize.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
localize.64.o: localize.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
localize.64.o: localize.c transcode.h debug.h
|
||||
mark.64.o: mark.c cups.h ipp.h http.h ppd.h array.h file.h language.h string.h
|
||||
mark.64.o: mark.c ../config.h debug.h
|
||||
md5.64.o: md5.c md5.h string.h ../config.h
|
||||
md5passwd.64.o: md5passwd.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
md5passwd.64.o: md5passwd.c string.h
|
||||
notify.64.o: notify.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
notify.64.o: notify.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
notify.64.o: notify.c transcode.h
|
||||
options.64.o: options.c cups.h ipp.h http.h ppd.h array.h file.h language.h string.h
|
||||
options.64.o: options.c ../config.h debug.h
|
||||
page.64.o: page.c ppd.h array.h file.h string.h ../config.h
|
||||
ppd.64.o: ppd.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
ppd.64.o: ppd.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
ppd.64.o: ppd.c transcode.h debug.h
|
||||
request.64.o: request.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
request.64.o: request.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
request.64.o: request.c transcode.h debug.h
|
||||
sidechannel.64.o: sidechannel.c sidechannel.h string.h ../config.h
|
||||
snprintf.64.o: snprintf.c string.h ../config.h
|
||||
string.64.o: string.c array.h debug.h string.h ../config.h
|
||||
tempfile.64.o: tempfile.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
tempfile.64.o: tempfile.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
tempfile.64.o: tempfile.c transcode.h debug.h
|
||||
transcode.64.o: transcode.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
transcode.64.o: transcode.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
|
||||
transcode.64.o: transcode.c i18n.h transcode.h debug.h
|
||||
usersys.64.o: usersys.c http-private.h ../config.h http.h md5.h ipp-private.h ipp.h
|
||||
usersys.64.o: usersys.c globals.h string.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
usersys.64.o: usersys.c transcode.h debug.h
|
||||
util.64.o: util.c globals.h string.h ../config.h http-private.h http.h md5.h
|
||||
util.64.o: util.c ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h i18n.h
|
||||
util.64.o: util.c transcode.h debug.h
|
||||
testadmin.64.o: testadmin.c adminutil.h cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
testadmin.64.o: testadmin.c string.h ../config.h
|
||||
testarray.64.o: testarray.c ../cups/string.h ../config.h string.h array.h dir.h debug.h
|
||||
testcups.64.o: testcups.c cups.h ipp.h http.h ppd.h array.h file.h language.h
|
||||
testfile.64.o: testfile.c string.h ../config.h file.h debug.h
|
||||
testhttp.64.o: testhttp.c http.h string.h ../config.h
|
||||
testi18n.64.o: testi18n.c i18n.h transcode.h language.h array.h string.h ../config.h
|
||||
testipp.64.o: testipp.c ../cups/string.h ../config.h string.h ipp-private.h ipp.h http.h
|
||||
testlang.64.o: testlang.c i18n.h transcode.h language.h array.h string.h ../config.h
|
||||
testppd.64.o: testppd.c ../cups/string.h ../config.h string.h ppd.h array.h file.h
|
||||
|
||||
@@ -144,8 +144,8 @@ depend:
|
||||
makedepend -Y -I.. -fDependencies.tmp $(OBJS:.o=.c) >/dev/null 2>&1
|
||||
$(RM) Dependencies
|
||||
cp Dependencies.tmp Dependencies
|
||||
sed -r -e '1,$$s/^([^.]+)\.o:/\1\.32.o: \1\.c /' Dependencies.tmp >>Dependencies
|
||||
sed -r -e '1,$$s/^([^.]+)\.o:/\1\.64.o: \1\.c /' Dependencies.tmp >>Dependencies
|
||||
sed -E -e '1,$$s/^([^.]+)\.o:/\1\.32.o: \1\.c /' Dependencies.tmp >>Dependencies
|
||||
sed -E -e '1,$$s/^([^.]+)\.o:/\1\.64.o: \1\.c /' Dependencies.tmp >>Dependencies
|
||||
$(RM) Dependencies.tmp
|
||||
|
||||
|
||||
|
||||
@@ -386,7 +386,7 @@ cupsAdminCreateWindowsPPD(
|
||||
{
|
||||
write_option(dstfp, jclorder ++, "cupsJobSheetsStart", "Start Banner",
|
||||
"job-sheets", suppattr, defattr, 0, 2);
|
||||
write_option(dstfp, jclorder ++, "cupsJobSheetsEnd", "End Banner",
|
||||
write_option(dstfp, jclorder, "cupsJobSheetsEnd", "End Banner",
|
||||
"job-sheets", suppattr, defattr, 1, 2);
|
||||
}
|
||||
|
||||
@@ -961,7 +961,7 @@ _cupsAdminGetServerSettings(
|
||||
if (!value && strncmp(line, "</", 2))
|
||||
value = line + strlen(line);
|
||||
|
||||
if (!strcasecmp(line, "Port") || !strcasecmp(line, "Listen"))
|
||||
if ((!strcasecmp(line, "Port") || !strcasecmp(line, "Listen")) && value)
|
||||
{
|
||||
char *port; /* Pointer to port number, if any */
|
||||
|
||||
@@ -1017,7 +1017,7 @@ _cupsAdminGetServerSettings(
|
||||
{
|
||||
in_policy = 0;
|
||||
}
|
||||
else if (!strcasecmp(line, "<Limit") && in_policy)
|
||||
else if (!strcasecmp(line, "<Limit") && in_policy && value)
|
||||
{
|
||||
/*
|
||||
* See if the policy limit is for the Cancel-Job operation...
|
||||
@@ -1050,7 +1050,7 @@ _cupsAdminGetServerSettings(
|
||||
{
|
||||
cancel_policy = 0;
|
||||
}
|
||||
else if (!strcasecmp(line, "<Location"))
|
||||
else if (!strcasecmp(line, "<Location") && value)
|
||||
{
|
||||
in_admin_location = !strcasecmp(value, "/admin");
|
||||
in_location = 1;
|
||||
@@ -1060,7 +1060,7 @@ _cupsAdminGetServerSettings(
|
||||
in_admin_location = 0;
|
||||
in_location = 0;
|
||||
}
|
||||
else if (!strcasecmp(line, "Allow") &&
|
||||
else if (!strcasecmp(line, "Allow") && value &&
|
||||
strcasecmp(value, "localhost") && strcasecmp(value, "127.0.0.1")
|
||||
#ifdef AF_LOCAL
|
||||
&& *value != '/'
|
||||
@@ -1224,8 +1224,8 @@ _cupsAdminSetServerSettings(
|
||||
* Get the cupsd.conf file...
|
||||
*/
|
||||
|
||||
if ((status = get_cupsd_conf(http, cg, 0, cupsdconf, sizeof(cupsdconf),
|
||||
&remote)) == HTTP_OK)
|
||||
if (get_cupsd_conf(http, cg, 0, cupsdconf, sizeof(cupsdconf),
|
||||
&remote) == HTTP_OK)
|
||||
{
|
||||
if ((cupsd = cupsFileOpen(cupsdconf, "r")) == NULL)
|
||||
{
|
||||
|
||||
@@ -270,8 +270,7 @@ cupsDoAuthentication(http_t *http, /* I - HTTP connection to server */
|
||||
|
||||
if (http->gssctx != GSS_C_NO_CONTEXT)
|
||||
{
|
||||
major_status = gss_delete_sec_context(&minor_status, &http->gssctx,
|
||||
GSS_C_NO_BUFFER);
|
||||
gss_delete_sec_context(&minor_status, &http->gssctx, GSS_C_NO_BUFFER);
|
||||
http->gssctx = GSS_C_NO_CONTEXT;
|
||||
}
|
||||
|
||||
@@ -323,14 +322,14 @@ cupsDoAuthentication(http_t *http, /* I - HTTP connection to server */
|
||||
httpEncode64_2(http->authstring + 10, authsize - 10, output_token.value,
|
||||
output_token.length);
|
||||
|
||||
major_status = gss_release_buffer(&minor_status, &output_token);
|
||||
gss_release_buffer(&minor_status, &output_token);
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_printf(("cupsDoAuthentication: Kerberos credentials too large - "
|
||||
"%d bytes!\n", output_token.length));
|
||||
|
||||
major_status = gss_release_buffer(&minor_status, &output_token);
|
||||
gss_release_buffer(&minor_status, &output_token);
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -59,10 +59,10 @@ extern "C" {
|
||||
* Constants...
|
||||
*/
|
||||
|
||||
# define CUPS_VERSION 1.0307
|
||||
# define CUPS_VERSION 1.0309
|
||||
# define CUPS_VERSION_MAJOR 1
|
||||
# define CUPS_VERSION_MINOR 3
|
||||
# define CUPS_VERSION_PATCH 7
|
||||
# define CUPS_VERSION_PATCH 9
|
||||
# define CUPS_DATE_ANY -1
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* User-defined destination (and option) support for the Common UNIX
|
||||
* Printing System (CUPS).
|
||||
*
|
||||
* Copyright 2007 by Apple Inc.
|
||||
* Copyright 2007-2008 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -89,7 +89,7 @@ cupsAddDest(const char *name, /* I - Destination name */
|
||||
if (!name || !dests)
|
||||
return (0);
|
||||
|
||||
if ((dest = cupsGetDest(name, instance, num_dests, *dests)) != NULL)
|
||||
if (cupsGetDest(name, instance, num_dests, *dests))
|
||||
return (num_dests);
|
||||
|
||||
/*
|
||||
@@ -331,7 +331,15 @@ cupsGetDests2(http_t *http, /* I - HTTP connection */
|
||||
*/
|
||||
|
||||
num_dests = cups_get_sdests(http, CUPS_GET_PRINTERS, num_dests, dests);
|
||||
num_dests = cups_get_sdests(http, CUPS_GET_CLASSES, num_dests, dests);
|
||||
if (cupsLastError() < IPP_REDIRECTION_OTHER_SITE)
|
||||
num_dests = cups_get_sdests(http, CUPS_GET_CLASSES, num_dests, dests);
|
||||
|
||||
if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE)
|
||||
{
|
||||
cupsFreeDests(num_dests, *dests);
|
||||
*dests = (cups_dest_t *)0;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Make a copy of the "real" queues for a later sanity check...
|
||||
|
||||
@@ -18,19 +18,21 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* ppdCollect() - Collect all marked options that reside in the
|
||||
* specified section.
|
||||
* ppdCollect2() - Collect all marked options that reside in the
|
||||
* specified section and minimum order.
|
||||
* ppdEmit() - Emit code for marked options to a file.
|
||||
* ppdEmitAfterOrder() - Emit a subset of the code for marked options to a
|
||||
* file.
|
||||
* ppdEmitFd() - Emit code for marked options to a file.
|
||||
* ppdEmitJCL() - Emit code for JCL options to a file.
|
||||
* ppdEmitJCLEnd() - Emit JCLEnd code to a file.
|
||||
* ppdEmitString() - Get a string containing the code for marked options.
|
||||
* ppd_handle_media() - Handle media selection...
|
||||
* ppd_sort() - Sort options by ordering numbers...
|
||||
* ppdCollect() - Collect all marked options that reside in the
|
||||
* specified section.
|
||||
* ppdCollect2() - Collect all marked options that reside in the
|
||||
* specified section and minimum order.
|
||||
* ppdEmit() - Emit code for marked options to a file.
|
||||
* ppdEmitAfterOrder() - Emit a subset of the code for marked options to a
|
||||
* file.
|
||||
* ppdEmitFd() - Emit code for marked options to a file.
|
||||
* ppdEmitJCL() - Emit code for JCL options to a file.
|
||||
* ppdEmitJCLEnd() - Emit JCLEnd code to a file.
|
||||
* ppdEmitString() - Get a string containing the code for marked
|
||||
* options.
|
||||
* ppd_compare_cparams() - Compare the order of two custom parameters.
|
||||
* ppd_handle_media() - Handle media selection...
|
||||
* ppd_sort() - Sort options by ordering numbers...
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -54,6 +56,7 @@
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int ppd_compare_cparams(ppd_cparam_t *a, ppd_cparam_t *b);
|
||||
static void ppd_handle_media(ppd_file_t *ppd);
|
||||
static int ppd_sort(ppd_choice_t **c1, ppd_choice_t **c2);
|
||||
|
||||
@@ -475,7 +478,7 @@ ppdEmitJCLEnd(ppd_file_t *ppd, /* I - PPD file record */
|
||||
*/
|
||||
|
||||
fputs("\033%-12345X@PJL\n", fp);
|
||||
fputs("@PJL RDYMSG DISPLAY = \"READY\"\n", fp);
|
||||
fputs("@PJL RDYMSG DISPLAY = \"\"\n", fp);
|
||||
fputs(ppd->jcl_end + 9, fp);
|
||||
}
|
||||
else
|
||||
@@ -547,7 +550,40 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
|
||||
|
||||
for (i = 0, bufsize = 1; i < count; i ++)
|
||||
{
|
||||
if (section != PPD_ORDER_EXIT && section != PPD_ORDER_JCL)
|
||||
if (section == PPD_ORDER_JCL)
|
||||
{
|
||||
if (!strcasecmp(choices[i]->choice, "Custom") &&
|
||||
(coption = ppdFindCustomOption(ppd, choices[i]->option->keyword))
|
||||
!= NULL)
|
||||
{
|
||||
/*
|
||||
* Add space to account for custom parameter substitution...
|
||||
*/
|
||||
|
||||
for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
|
||||
cparam;
|
||||
cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
|
||||
{
|
||||
switch (cparam->type)
|
||||
{
|
||||
case PPD_CUSTOM_CURVE :
|
||||
case PPD_CUSTOM_INVCURVE :
|
||||
case PPD_CUSTOM_POINTS :
|
||||
case PPD_CUSTOM_REAL :
|
||||
case PPD_CUSTOM_INT :
|
||||
bufsize += 10;
|
||||
break;
|
||||
|
||||
case PPD_CUSTOM_PASSCODE :
|
||||
case PPD_CUSTOM_PASSWORD :
|
||||
case PPD_CUSTOM_STRING :
|
||||
bufsize += strlen(cparam->current.custom_string);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (section != PPD_ORDER_EXIT)
|
||||
{
|
||||
bufsize += 3; /* [{\n */
|
||||
|
||||
@@ -626,7 +662,89 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
|
||||
*/
|
||||
|
||||
for (i = 0, bufptr = buffer; i < count; i ++, bufptr += strlen(bufptr))
|
||||
if (section != PPD_ORDER_EXIT && section != PPD_ORDER_JCL)
|
||||
if (section == PPD_ORDER_JCL)
|
||||
{
|
||||
if (!strcasecmp(choices[i]->choice, "Custom") &&
|
||||
(coption = ppdFindCustomOption(ppd, choices[i]->option->keyword))
|
||||
!= NULL)
|
||||
{
|
||||
/*
|
||||
* Handle substitutions in custom JCL options...
|
||||
*/
|
||||
|
||||
char *cptr; /* Pointer into code */
|
||||
int pnum; /* Parameter number */
|
||||
|
||||
|
||||
for (cptr = choices[i]->code; *cptr && bufptr < bufend;)
|
||||
{
|
||||
if (*cptr == '\\')
|
||||
{
|
||||
cptr ++;
|
||||
|
||||
if (isdigit(*cptr & 255))
|
||||
{
|
||||
/*
|
||||
* Substitute parameter...
|
||||
*/
|
||||
|
||||
pnum = *cptr++ - '0';
|
||||
while (isalnum(*cptr & 255))
|
||||
pnum = pnum * 10 + *cptr - '0';
|
||||
|
||||
for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
|
||||
cparam;
|
||||
cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
|
||||
if (cparam->order == pnum)
|
||||
break;
|
||||
|
||||
if (cparam)
|
||||
{
|
||||
switch (cparam->type)
|
||||
{
|
||||
case PPD_CUSTOM_CURVE :
|
||||
case PPD_CUSTOM_INVCURVE :
|
||||
case PPD_CUSTOM_POINTS :
|
||||
case PPD_CUSTOM_REAL :
|
||||
bufptr = _cupsStrFormatd(bufptr, bufend,
|
||||
cparam->current.custom_real,
|
||||
loc);
|
||||
break;
|
||||
|
||||
case PPD_CUSTOM_INT :
|
||||
snprintf(bufptr, bufend - bufptr, "%d",
|
||||
cparam->current.custom_int);
|
||||
bufptr += strlen(bufptr);
|
||||
break;
|
||||
|
||||
case PPD_CUSTOM_PASSCODE :
|
||||
case PPD_CUSTOM_PASSWORD :
|
||||
case PPD_CUSTOM_STRING :
|
||||
strlcpy(bufptr, cparam->current.custom_string,
|
||||
bufend - bufptr);
|
||||
bufptr += strlen(bufptr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (*cptr)
|
||||
*bufptr++ = *cptr++;
|
||||
}
|
||||
else
|
||||
*bufptr++ = *cptr++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Otherwise just copy the option code directly...
|
||||
*/
|
||||
|
||||
strlcpy(bufptr, choices[i]->code, bufend - bufptr + 1);
|
||||
bufptr += strlen(bufptr);
|
||||
}
|
||||
}
|
||||
else if (section != PPD_ORDER_EXIT)
|
||||
{
|
||||
/*
|
||||
* Add wrapper commands to prevent printer errors for unsupported
|
||||
@@ -759,8 +877,7 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
|
||||
}
|
||||
}
|
||||
else if (!strcasecmp(choices[i]->choice, "Custom") &&
|
||||
(coption = ppdFindCustomOption(ppd,
|
||||
choices[i]->option->keyword))
|
||||
(coption = ppdFindCustomOption(ppd, choices[i]->option->keyword))
|
||||
!= NULL)
|
||||
{
|
||||
/*
|
||||
@@ -768,15 +885,23 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
|
||||
*/
|
||||
|
||||
const char *s; /* Pointer into string value */
|
||||
cups_array_t *params; /* Parameters in the correct output order */
|
||||
|
||||
|
||||
params = cupsArrayNew((cups_array_func_t)ppd_compare_cparams, NULL);
|
||||
|
||||
for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
|
||||
cparam;
|
||||
cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
|
||||
cupsArrayAdd(params, cparam);
|
||||
|
||||
snprintf(bufptr, bufend - bufptr + 1,
|
||||
"%%%%BeginFeature: *Custom%s True\n", coption->keyword);
|
||||
bufptr += strlen(bufptr);
|
||||
|
||||
for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
|
||||
for (cparam = (ppd_cparam_t *)cupsArrayFirst(params);
|
||||
cparam;
|
||||
cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
|
||||
cparam = (ppd_cparam_t *)cupsArrayNext(params))
|
||||
{
|
||||
switch (cparam->type)
|
||||
{
|
||||
@@ -814,6 +939,8 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cupsArrayDelete(params);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -857,12 +984,24 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppd_compare_cparams()' - Compare the order of two custom parameters.
|
||||
*/
|
||||
|
||||
static int /* O - Result of comparison */
|
||||
ppd_compare_cparams(ppd_cparam_t *a, /* I - First parameter */
|
||||
ppd_cparam_t *b) /* I - Second parameter */
|
||||
{
|
||||
return (a->order - b->order);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppd_handle_media()' - Handle media selection...
|
||||
*/
|
||||
|
||||
static void
|
||||
ppd_handle_media(ppd_file_t *ppd)
|
||||
ppd_handle_media(ppd_file_t *ppd) /* I - PPD file */
|
||||
{
|
||||
ppd_choice_t *manual_feed, /* ManualFeed choice, if any */
|
||||
*input_slot, /* InputSlot choice, if any */
|
||||
|
||||
@@ -110,7 +110,8 @@ struct _cups_file_s /**** CUPS file structure... ****/
|
||||
buf[4096], /* Buffer */
|
||||
*ptr, /* Pointer into buffer */
|
||||
*end; /* End of buffer data */
|
||||
off_t pos; /* File position for start of buffer */
|
||||
off_t pos, /* Position in file */
|
||||
bufpos; /* File position for start of buffer */
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
z_stream stream; /* (De)compression stream */
|
||||
@@ -402,13 +403,14 @@ cupsFileFlush(cups_file_t *fp) /* I - CUPS file */
|
||||
|
||||
if (!fp || fp->mode != 'w')
|
||||
{
|
||||
DEBUG_puts(" Attempt to flush a read-only file...");
|
||||
DEBUG_puts("cupsFileFlush: Attempt to flush a read-only file...");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
bytes = (ssize_t)(fp->ptr - fp->buf);
|
||||
|
||||
DEBUG_printf((" Flushing %ld bytes...\n", (long)bytes));
|
||||
DEBUG_printf(("cupsFileFlush: Flushing " CUPS_LLFMT " bytes...\n",
|
||||
CUPS_LLCAST bytes));
|
||||
|
||||
if (bytes > 0)
|
||||
{
|
||||
@@ -440,6 +442,8 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileGetChar(fp=%p)\n", fp));
|
||||
|
||||
if (!fp || (fp->mode != 'r' && fp->mode != 's'))
|
||||
{
|
||||
DEBUG_puts("cupsFileGetChar: Bad arguments!");
|
||||
@@ -463,6 +467,10 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */
|
||||
|
||||
DEBUG_printf(("cupsFileGetChar: Returning %d...\n", *(fp->ptr) & 255));
|
||||
|
||||
fp->pos ++;
|
||||
|
||||
DEBUG_printf(("cupsFileGetChar: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (*(fp->ptr)++ & 255);
|
||||
}
|
||||
|
||||
@@ -485,6 +493,10 @@ cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileGetConf(fp=%p, buf=%p, buflen=" CUPS_LLFMT
|
||||
", value=%p, linenum=%p)\n", fp, buf, CUPS_LLCAST buflen,
|
||||
value, linenum));
|
||||
|
||||
if (!fp || (fp->mode != 'r' && fp->mode != 's') ||
|
||||
!buf || buflen < 2 || !value)
|
||||
{
|
||||
@@ -623,6 +635,9 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileGetLine(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")\n",
|
||||
fp, buf, CUPS_LLCAST buflen));
|
||||
|
||||
if (!fp || (fp->mode != 'r' && fp->mode != 's') || !buf || buflen < 3)
|
||||
return (0);
|
||||
|
||||
@@ -637,6 +652,7 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */
|
||||
break;
|
||||
|
||||
*ptr++ = ch = *(fp->ptr)++;
|
||||
fp->pos ++;
|
||||
|
||||
if (ch == '\r')
|
||||
{
|
||||
@@ -649,7 +665,10 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */
|
||||
break;
|
||||
|
||||
if (*(fp->ptr) == '\n')
|
||||
{
|
||||
*ptr++ = *(fp->ptr)++;
|
||||
fp->pos ++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -665,6 +684,8 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */
|
||||
|
||||
*ptr = '\0';
|
||||
|
||||
DEBUG_printf(("cupsFileGetLine: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (ptr - buf);
|
||||
}
|
||||
|
||||
@@ -687,6 +708,9 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileGets(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")\n", fp, buf,
|
||||
CUPS_LLCAST buflen));
|
||||
|
||||
if (!fp || (fp->mode != 'r' && fp->mode != 's') || !buf || buflen < 2)
|
||||
return (NULL);
|
||||
|
||||
@@ -706,6 +730,7 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */
|
||||
}
|
||||
|
||||
ch = *(fp->ptr)++;
|
||||
fp->pos ++;
|
||||
|
||||
if (ch == '\r')
|
||||
{
|
||||
@@ -718,7 +743,10 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */
|
||||
break;
|
||||
|
||||
if (*(fp->ptr) == '\n')
|
||||
fp->ptr ++;
|
||||
{
|
||||
fp->ptr ++;
|
||||
fp->pos ++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -736,6 +764,8 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
*ptr = '\0';
|
||||
|
||||
DEBUG_printf(("cupsFileGets: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (buf);
|
||||
}
|
||||
|
||||
@@ -801,7 +831,8 @@ cupsFileOpen(const char *filename, /* I - Name of file */
|
||||
*/
|
||||
|
||||
if (!filename || !mode ||
|
||||
(*mode != 'r' && *mode != 'w' && *mode != 'a' && *mode != 's'))
|
||||
(*mode != 'r' && *mode != 'w' && *mode != 'a' && *mode != 's') ||
|
||||
(*mode == 'a' && isdigit(mode[1] & 255)))
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
@@ -893,7 +924,8 @@ cupsFileOpenFd(int fd, /* I - File descriptor */
|
||||
*/
|
||||
|
||||
if (fd < 0 || !mode ||
|
||||
(*mode != 'r' && *mode != 'w' && *mode != 'a' && *mode != 's'))
|
||||
(*mode != 'r' && *mode != 'w' && *mode != 'a' && *mode != 's') ||
|
||||
(*mode == 'a' && isdigit(mode[1] & 255)))
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
@@ -911,8 +943,10 @@ cupsFileOpenFd(int fd, /* I - File descriptor */
|
||||
|
||||
switch (*mode)
|
||||
{
|
||||
case 'w' :
|
||||
case 'a' :
|
||||
fp->pos = lseek(fd, 0, SEEK_END);
|
||||
|
||||
case 'w' :
|
||||
fp->mode = 'w';
|
||||
fp->ptr = fp->buf;
|
||||
fp->end = fp->buf + sizeof(fp->buf);
|
||||
@@ -1039,7 +1073,16 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */
|
||||
return (-1);
|
||||
|
||||
if (fp->mode == 's')
|
||||
return (cups_write(fp, buf, bytes));
|
||||
{
|
||||
if (cups_write(fp, buf, bytes) < 0)
|
||||
return (-1);
|
||||
|
||||
fp->pos += bytes;
|
||||
|
||||
DEBUG_printf(("cupsFilePrintf: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (bytes);
|
||||
}
|
||||
|
||||
if ((fp->ptr + bytes) > fp->end)
|
||||
if (cupsFileFlush(fp))
|
||||
@@ -1047,6 +1090,8 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
fp->pos += bytes;
|
||||
|
||||
DEBUG_printf(("cupsFilePrintf: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
if (bytes > sizeof(fp->buf))
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
@@ -1109,6 +1154,8 @@ cupsFilePutChar(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
fp->pos ++;
|
||||
|
||||
DEBUG_printf(("cupsFilePutChar: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -1144,6 +1191,8 @@ cupsFilePuts(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
fp->pos += bytes;
|
||||
|
||||
DEBUG_printf(("cupsFilePuts: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (bytes);
|
||||
}
|
||||
|
||||
@@ -1153,6 +1202,8 @@ cupsFilePuts(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
fp->pos += bytes;
|
||||
|
||||
DEBUG_printf(("cupsFilePuts: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
if (bytes > sizeof(fp->buf))
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
@@ -1184,8 +1235,8 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */
|
||||
ssize_t count; /* Bytes read */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsFileRead(fp=%p, buf=%p, bytes=%ld)\n", fp, buf,
|
||||
(long)bytes));
|
||||
DEBUG_printf(("cupsFileRead(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", fp, buf,
|
||||
CUPS_LLCAST bytes));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
@@ -1207,7 +1258,8 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */
|
||||
if (fp->ptr >= fp->end)
|
||||
if (cups_fill(fp) <= 0)
|
||||
{
|
||||
DEBUG_printf((" cups_fill() returned -1, total=%d\n", (int)total));
|
||||
DEBUG_printf(("cupsFileRead: cups_fill() returned -1, total=" CUPS_LLFMT "\n",
|
||||
CUPS_LLCAST total));
|
||||
|
||||
if (total > 0)
|
||||
return ((ssize_t)total);
|
||||
@@ -1221,6 +1273,9 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
memcpy(buf, fp->ptr, count);
|
||||
fp->ptr += count;
|
||||
fp->pos += count;
|
||||
|
||||
DEBUG_printf(("cupsFileRead: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
/*
|
||||
* Update the counts for the last read...
|
||||
@@ -1235,7 +1290,7 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */
|
||||
* Return the total number of bytes read...
|
||||
*/
|
||||
|
||||
DEBUG_printf((" total=%d\n", (int)total));
|
||||
DEBUG_printf(("cupsFileRead: total=%d\n", (int)total));
|
||||
|
||||
return ((ssize_t)total);
|
||||
}
|
||||
@@ -1252,6 +1307,9 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileRewind(fp=%p)\n", fp));
|
||||
DEBUG_printf(("cupsFileRewind: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
if (!fp || fp->mode != 'r')
|
||||
return (-1);
|
||||
|
||||
@@ -1259,18 +1317,22 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */
|
||||
* Handle special cases...
|
||||
*/
|
||||
|
||||
if (fp->pos == 0)
|
||||
if (fp->bufpos == 0)
|
||||
{
|
||||
/*
|
||||
* No seeking necessary...
|
||||
*/
|
||||
|
||||
fp->pos = 0;
|
||||
|
||||
if (fp->ptr)
|
||||
{
|
||||
fp->ptr = fp->buf;
|
||||
fp->eof = 0;
|
||||
}
|
||||
|
||||
DEBUG_printf(("cupsFileRewind: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -1288,10 +1350,13 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */
|
||||
|
||||
lseek(fp->fd, 0, SEEK_SET);
|
||||
|
||||
fp->pos = 0;
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
fp->eof = 0;
|
||||
fp->bufpos = 0;
|
||||
fp->pos = 0;
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
fp->eof = 0;
|
||||
|
||||
DEBUG_printf(("cupsFileRewind: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -1308,9 +1373,10 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */
|
||||
ssize_t bytes; /* Number bytes in buffer */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsFileSeek(fp=%p, pos=" CUPS_LLFMT ")\n", fp, pos));
|
||||
DEBUG_printf((" fp->pos=" CUPS_LLFMT "\n", fp->pos));
|
||||
DEBUG_printf((" fp->ptr=%p, fp->end=%p\n", fp->ptr, fp->end));
|
||||
DEBUG_printf(("cupsFileSeek(fp=%p, pos=" CUPS_LLFMT ")\n", fp,
|
||||
CUPS_LLCAST pos));
|
||||
DEBUG_printf(("cupsFileSeek: fp->pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
DEBUG_printf(("cupsFileSeek: fp->ptr=%p, fp->end=%p\n", fp->ptr, fp->end));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
@@ -1326,19 +1392,22 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */
|
||||
if (pos == 0)
|
||||
return (cupsFileRewind(fp));
|
||||
|
||||
if (fp->pos == pos)
|
||||
if (fp->ptr)
|
||||
{
|
||||
/*
|
||||
* No seeking necessary...
|
||||
*/
|
||||
bytes = (ssize_t)(fp->end - fp->buf);
|
||||
|
||||
if (fp->ptr)
|
||||
if (pos >= fp->bufpos && pos < (fp->bufpos + bytes))
|
||||
{
|
||||
fp->ptr = fp->buf;
|
||||
fp->eof = 0;
|
||||
}
|
||||
/*
|
||||
* No seeking necessary...
|
||||
*/
|
||||
|
||||
return (pos);
|
||||
fp->pos = pos;
|
||||
fp->ptr = fp->buf + pos - fp->bufpos;
|
||||
fp->eof = 0;
|
||||
|
||||
return (pos);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
@@ -1354,26 +1423,20 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */
|
||||
#endif /* HAVE_LIBZ */
|
||||
|
||||
/*
|
||||
* Figure out the number of bytes in the current buffer, and then
|
||||
* see if we are outside of it...
|
||||
* Seek forwards or backwards...
|
||||
*/
|
||||
|
||||
if (fp->ptr)
|
||||
bytes = (ssize_t)(fp->end - fp->buf);
|
||||
else
|
||||
bytes = 0;
|
||||
|
||||
fp->eof = 0;
|
||||
|
||||
DEBUG_printf((" bytes=" CUPS_LLFMT "\n", CUPS_LLCAST bytes));
|
||||
DEBUG_printf(("cupsFileSeek: bytes=" CUPS_LLFMT "\n", CUPS_LLCAST bytes));
|
||||
|
||||
if (pos < fp->pos)
|
||||
if (pos < fp->bufpos)
|
||||
{
|
||||
/*
|
||||
* Need to seek backwards...
|
||||
*/
|
||||
|
||||
DEBUG_puts(" SEEK BACKWARDS");
|
||||
DEBUG_puts("cupsFileSeek: SEEK BACKWARDS");
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
if (fp->compressed)
|
||||
@@ -1381,72 +1444,70 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */
|
||||
inflateEnd(&fp->stream);
|
||||
|
||||
lseek(fp->fd, 0, SEEK_SET);
|
||||
fp->pos = 0;
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
fp->bufpos = 0;
|
||||
fp->pos = 0;
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
|
||||
while ((bytes = cups_fill(fp)) > 0)
|
||||
if (pos >= fp->pos && pos < (fp->pos + bytes))
|
||||
if (pos >= fp->bufpos && pos < (fp->bufpos + bytes))
|
||||
break;
|
||||
|
||||
if (bytes <= 0)
|
||||
return (-1);
|
||||
|
||||
fp->ptr = fp->buf + pos - fp->pos;
|
||||
fp->ptr = fp->buf + pos - fp->bufpos;
|
||||
fp->pos = pos;
|
||||
}
|
||||
else
|
||||
#endif /* HAVE_LIBZ */
|
||||
{
|
||||
fp->pos = lseek(fp->fd, pos, SEEK_SET);
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
fp->bufpos = lseek(fp->fd, pos, SEEK_SET);
|
||||
fp->pos = fp->bufpos;
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
|
||||
DEBUG_printf((" lseek() returned %ld...\n", (long)fp->pos));
|
||||
DEBUG_printf(("cupsFileSeek: lseek() returned " CUPS_LLFMT "...\n",
|
||||
CUPS_LLCAST fp->pos));
|
||||
}
|
||||
}
|
||||
else if (pos >= (fp->pos + bytes))
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Need to seek forwards...
|
||||
*/
|
||||
|
||||
DEBUG_puts(" SEEK FORWARDS");
|
||||
DEBUG_puts("cupsFileSeek: SEEK FORWARDS");
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
if (fp->compressed)
|
||||
{
|
||||
while ((bytes = cups_fill(fp)) > 0)
|
||||
{
|
||||
if (pos >= fp->pos && pos < (fp->pos + bytes))
|
||||
if (pos >= fp->bufpos && pos < (fp->bufpos + bytes))
|
||||
break;
|
||||
}
|
||||
|
||||
if (bytes <= 0)
|
||||
return (-1);
|
||||
|
||||
fp->ptr = fp->buf + pos - fp->pos;
|
||||
fp->ptr = fp->buf + pos - fp->bufpos;
|
||||
fp->pos = pos;
|
||||
}
|
||||
else
|
||||
#endif /* HAVE_LIBZ */
|
||||
{
|
||||
fp->pos = lseek(fp->fd, pos, SEEK_SET);
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
fp->bufpos = lseek(fp->fd, pos, SEEK_SET);
|
||||
fp->pos = fp->bufpos;
|
||||
fp->ptr = NULL;
|
||||
fp->end = NULL;
|
||||
|
||||
DEBUG_printf((" lseek() returned " CUPS_LLFMT "...\n", fp->pos));
|
||||
DEBUG_printf(("cupsFileSeek: lseek() returned " CUPS_LLFMT "...\n",
|
||||
CUPS_LLCAST fp->pos));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Just reposition the current pointer, since we have the right
|
||||
* range...
|
||||
*/
|
||||
|
||||
DEBUG_puts(" SEEK INSIDE BUFFER");
|
||||
|
||||
fp->ptr = fp->buf + pos - fp->pos;
|
||||
}
|
||||
DEBUG_printf(("cupsFileSeek: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (fp->pos);
|
||||
}
|
||||
@@ -1555,6 +1616,9 @@ cupsFileStdout(void)
|
||||
off_t /* O - File position */
|
||||
cupsFileTell(cups_file_t *fp) /* I - CUPS file */
|
||||
{
|
||||
DEBUG_printf(("cupsFileTell(fp=%p)\n", fp));
|
||||
DEBUG_printf(("cupsFileTell: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return (fp ? fp->pos : 0);
|
||||
}
|
||||
|
||||
@@ -1570,6 +1634,8 @@ cupsFileUnlock(cups_file_t *fp) /* I - File to lock */
|
||||
* Range check...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileUnlock(fp=%p)\n", fp));
|
||||
|
||||
if (!fp || fp->mode == 's')
|
||||
return (-1);
|
||||
|
||||
@@ -1598,6 +1664,9 @@ cupsFileWrite(cups_file_t *fp, /* I - CUPS file */
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsFileWrite(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")\n",
|
||||
fp, buf, CUPS_LLCAST bytes));
|
||||
|
||||
if (!fp || !buf || bytes < 0 || (fp->mode != 'w' && fp->mode != 's'))
|
||||
return (-1);
|
||||
|
||||
@@ -1615,6 +1684,8 @@ cupsFileWrite(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
fp->pos += (off_t)bytes;
|
||||
|
||||
DEBUG_printf(("cupsFileWrite: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
return ((ssize_t)bytes);
|
||||
}
|
||||
|
||||
@@ -1624,6 +1695,8 @@ cupsFileWrite(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
fp->pos += (off_t)bytes;
|
||||
|
||||
DEBUG_printf(("cupsFileWrite: pos=" CUPS_LLFMT "\n", CUPS_LLCAST fp->pos));
|
||||
|
||||
if (bytes > sizeof(fp->buf))
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
@@ -1652,8 +1725,8 @@ cups_compress(cups_file_t *fp, /* I - CUPS file */
|
||||
const char *buf, /* I - Buffer */
|
||||
size_t bytes) /* I - Number bytes */
|
||||
{
|
||||
DEBUG_printf(("cups_compress(fp=%p, buf=%p, bytes=%ld)\n", fp, buf,
|
||||
(long)bytes));
|
||||
DEBUG_printf(("cups_compress(fp=%p, buf=%p, bytes=" CUPS_LLFMT "\n", fp, buf,
|
||||
CUPS_LLCAST bytes));
|
||||
|
||||
/*
|
||||
* Update the CRC...
|
||||
@@ -1674,8 +1747,8 @@ cups_compress(cups_file_t *fp, /* I - CUPS file */
|
||||
* Flush the current buffer...
|
||||
*/
|
||||
|
||||
DEBUG_printf((" avail_in=%d, avail_out=%d\n", fp->stream.avail_in,
|
||||
fp->stream.avail_out));
|
||||
DEBUG_printf(("cups_compress: avail_in=%d, avail_out=%d\n",
|
||||
fp->stream.avail_in, fp->stream.avail_out));
|
||||
|
||||
if (fp->stream.avail_out < (int)(sizeof(fp->cbuf) / 8))
|
||||
{
|
||||
@@ -1710,19 +1783,15 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
|
||||
|
||||
|
||||
DEBUG_printf(("cups_fill(fp=%p)\n", fp));
|
||||
DEBUG_printf((" fp->ptr=%p, fp->end=%p, fp->buf=%p, "
|
||||
"fp->pos=" CUPS_LLFMT ", fp->eof=%d\n",
|
||||
fp->ptr, fp->end, fp->buf, fp->pos, fp->eof));
|
||||
|
||||
/*
|
||||
* Update the "pos" element as needed...
|
||||
*/
|
||||
DEBUG_printf(("cups_fill: fp->ptr=%p, fp->end=%p, fp->buf=%p, "
|
||||
"fp->bufpos=" CUPS_LLFMT ", fp->eof=%d\n",
|
||||
fp->ptr, fp->end, fp->buf, CUPS_LLCAST fp->bufpos, fp->eof));
|
||||
|
||||
if (fp->ptr && fp->end)
|
||||
fp->pos += (off_t)(fp->end - fp->buf);
|
||||
fp->bufpos += fp->end - fp->buf;
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
DEBUG_printf((" fp->compressed=%d\n", fp->compressed));
|
||||
DEBUG_printf(("cups_fill: fp->compressed=%d\n", fp->compressed));
|
||||
|
||||
while (!fp->ptr || fp->compressed)
|
||||
{
|
||||
@@ -1750,7 +1819,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
|
||||
* Can't read from file!
|
||||
*/
|
||||
|
||||
DEBUG_printf((" cups_read() returned " CUPS_LLFMT "!\n",
|
||||
DEBUG_printf(("cups_fill: cups_read() returned " CUPS_LLFMT "!\n",
|
||||
CUPS_LLCAST bytes));
|
||||
|
||||
return (-1);
|
||||
@@ -2030,6 +2099,9 @@ cups_read(cups_file_t *fp, /* I - CUPS file */
|
||||
ssize_t total; /* Total bytes read */
|
||||
|
||||
|
||||
DEBUG_printf(("cups_read(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", fp, buf,
|
||||
CUPS_LLCAST bytes));
|
||||
|
||||
/*
|
||||
* Loop until we read at least 0 bytes...
|
||||
*/
|
||||
@@ -2048,6 +2120,8 @@ cups_read(cups_file_t *fp, /* I - CUPS file */
|
||||
total = read(fp->fd, buf, bytes);
|
||||
#endif /* WIN32 */
|
||||
|
||||
DEBUG_printf(("cups_read: total=" CUPS_LLFMT "\n", CUPS_LLCAST total));
|
||||
|
||||
if (total >= 0)
|
||||
break;
|
||||
|
||||
@@ -2082,8 +2156,8 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
|
||||
ssize_t count; /* Count this time */
|
||||
|
||||
|
||||
DEBUG_printf(("cups_write(fp=%p, buf=%p, bytes=%ld)\n", fp, buf,
|
||||
(long)bytes));
|
||||
DEBUG_printf(("cups_write(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", fp, buf,
|
||||
CUPS_LLCAST bytes));
|
||||
|
||||
/*
|
||||
* Loop until all bytes are written...
|
||||
@@ -2104,6 +2178,8 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
|
||||
count = write(fp->fd, buf, bytes);
|
||||
#endif /* WIN32 */
|
||||
|
||||
DEBUG_printf(("cups_write: count=" CUPS_LLFMT "\n", CUPS_LLCAST count));
|
||||
|
||||
if (count < 0)
|
||||
{
|
||||
/*
|
||||
@@ -2116,8 +2192,6 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
|
||||
return (-1);
|
||||
}
|
||||
|
||||
DEBUG_printf((" count=%ld\n", (long)count));
|
||||
|
||||
/*
|
||||
* Update the counts for the last write call...
|
||||
*/
|
||||
|
||||
@@ -77,6 +77,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
|
||||
# ifdef HAVE_GETADDRINFO
|
||||
char hostname[1024]; /* Hostname */
|
||||
# endif /* HAVE_GETADDRINFO */
|
||||
int need_res_init; /* Need to reinitialize resolver? */
|
||||
|
||||
/* ipp.c */
|
||||
ipp_uchar_t ipp_date[11]; /* RFC-1903 date/time data */
|
||||
|
||||
@@ -28,10 +28,14 @@
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "http-private.h"
|
||||
#include "globals.h"
|
||||
#include "debug.h"
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#ifdef HAVE_RESOLV_H
|
||||
# include <resolv.h>
|
||||
#endif /* HAVE_RESOLV_H */
|
||||
|
||||
|
||||
/*
|
||||
@@ -175,6 +179,10 @@ httpAddrLookup(
|
||||
char *name, /* I - Host name buffer */
|
||||
int namelen) /* I - Size of name buffer */
|
||||
{
|
||||
_cups_globals_t *cg = _cupsGlobals();
|
||||
/* Global data */
|
||||
|
||||
|
||||
DEBUG_printf(("httpAddrLookup(addr=%p, name=%p, namelen=%d)\n",
|
||||
addr, name, namelen));
|
||||
|
||||
@@ -192,9 +200,33 @@ httpAddrLookup(
|
||||
|
||||
#ifdef AF_LOCAL
|
||||
if (addr->addr.sa_family == AF_LOCAL)
|
||||
{
|
||||
strlcpy(name, addr->un.sun_path, namelen);
|
||||
else
|
||||
return (name);
|
||||
}
|
||||
#endif /* AF_LOCAL */
|
||||
|
||||
#ifdef HAVE_RES_INIT
|
||||
/*
|
||||
* STR #2920: Initialize resolver after failure in cups-polld
|
||||
*
|
||||
* If the previous lookup failed, re-initialize the resolver to prevent
|
||||
* temporary network errors from persisting. This *should* be handled by
|
||||
* the resolver libraries, but apparently the glibc folks do not agree.
|
||||
*
|
||||
* We set a flag at the end of this function if we encounter an error that
|
||||
* requires reinitialization of the resolver functions. We then call
|
||||
* res_init() if the flag is set on the next call here or in httpAddrLookup().
|
||||
*/
|
||||
|
||||
if (cg->need_res_init)
|
||||
{
|
||||
res_init();
|
||||
|
||||
cg->need_res_init = 0;
|
||||
}
|
||||
#endif /* HAVE_RES_INIT */
|
||||
|
||||
#ifdef HAVE_GETNAMEINFO
|
||||
{
|
||||
/*
|
||||
@@ -205,9 +237,16 @@ httpAddrLookup(
|
||||
* do...
|
||||
*/
|
||||
|
||||
if (getnameinfo(&addr->addr, httpAddrLength(addr), name, namelen,
|
||||
NULL, 0, 0))
|
||||
int error = getnameinfo(&addr->addr, httpAddrLength(addr), name, namelen,
|
||||
NULL, 0, 0);
|
||||
|
||||
if (error)
|
||||
{
|
||||
if (error == EAI_FAIL)
|
||||
cg->need_res_init = 1;
|
||||
|
||||
return (httpAddrString(addr, name, namelen));
|
||||
}
|
||||
}
|
||||
#else
|
||||
{
|
||||
@@ -229,8 +268,10 @@ httpAddrLookup(
|
||||
* No hostname, so return the raw address...
|
||||
*/
|
||||
|
||||
httpAddrString(addr, name, namelen);
|
||||
return (NULL);
|
||||
if (h_errno == NO_RECOVERY)
|
||||
cg->need_res_init = 1;
|
||||
|
||||
return (httpAddrString(addr, name, namelen));
|
||||
}
|
||||
|
||||
strlcpy(name, host->h_name, namelen);
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
#include "globals.h"
|
||||
#include "debug.h"
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#ifdef HAVE_RESOLV_H
|
||||
# include <resolv.h>
|
||||
#endif /* HAVE_RESOLV_H */
|
||||
|
||||
|
||||
/*
|
||||
@@ -174,6 +178,8 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
http_addrlist_t *first, /* First address in list */
|
||||
*addr, /* Current address in list */
|
||||
*temp; /* New address */
|
||||
_cups_globals_t *cg = _cupsGlobals();
|
||||
/* Global data */
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
@@ -189,6 +195,28 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
family == AF_INET ? "INET" : "???", service);
|
||||
#endif /* DEBUG */
|
||||
|
||||
#ifdef HAVE_RES_INIT
|
||||
/*
|
||||
* STR #2920: Initialize resolver after failure in cups-polld
|
||||
*
|
||||
* If the previous lookup failed, re-initialize the resolver to prevent
|
||||
* temporary network errors from persisting. This *should* be handled by
|
||||
* the resolver libraries, but apparently the glibc folks do not agree.
|
||||
*
|
||||
* We set a flag at the end of this function if we encounter an error that
|
||||
* requires reinitialization of the resolver functions. We then call
|
||||
* res_init() if the flag is set on the next call here or in httpAddrLookup().
|
||||
*/
|
||||
|
||||
if (cg->need_res_init)
|
||||
{
|
||||
res_init();
|
||||
|
||||
cg->need_res_init = 0;
|
||||
}
|
||||
#endif /* HAVE_RES_INIT */
|
||||
|
||||
|
||||
/*
|
||||
* Lookup the address the best way we can...
|
||||
*/
|
||||
@@ -218,6 +246,8 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
char ipv6[1024], /* IPv6 address */
|
||||
*ipv6zone; /* Pointer to zone separator */
|
||||
int ipv6len; /* Length of IPv6 address */
|
||||
int error; /* getaddrinfo() error */
|
||||
|
||||
|
||||
/*
|
||||
* Lookup the address as needed...
|
||||
@@ -269,7 +299,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
}
|
||||
}
|
||||
|
||||
if (!getaddrinfo(hostname, service, &hints, &results))
|
||||
if ((error = getaddrinfo(hostname, service, &hints, &results)) == 0)
|
||||
{
|
||||
/*
|
||||
* Copy the results to our own address list structure...
|
||||
@@ -315,6 +345,9 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
|
||||
freeaddrinfo(results);
|
||||
}
|
||||
else if (error == EAI_FAIL)
|
||||
cg->need_res_init = 1;
|
||||
|
||||
#else
|
||||
if (hostname)
|
||||
{
|
||||
@@ -431,6 +464,8 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
addr = temp;
|
||||
}
|
||||
}
|
||||
else if (h_errno == NO_RECOVERY)
|
||||
cg->need_res_init = 1;
|
||||
}
|
||||
#endif /* HAVE_GETADDRINFO */
|
||||
}
|
||||
@@ -528,8 +563,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
|
||||
if (addr)
|
||||
addr->next = temp;
|
||||
else
|
||||
addr = temp;
|
||||
}
|
||||
}
|
||||
else if (!hostname)
|
||||
@@ -583,8 +616,6 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
|
||||
if (addr)
|
||||
addr->next = temp;
|
||||
else
|
||||
addr = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,6 +257,12 @@ extern void _cups_freeifaddrs(struct ifaddrs *addrs);
|
||||
# endif /* HAVE_GETIFADDRS */
|
||||
# endif /* !WIN32 */
|
||||
|
||||
/*
|
||||
* Common URI encoding function...
|
||||
*/
|
||||
|
||||
extern char *_httpEncodeURI(char *dst, const char *src, size_t dstsize);
|
||||
|
||||
#endif /* !_CUPS_HTTP_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
* httpStatus() - Return a short string describing a HTTP status code.
|
||||
* _cups_hstrerror() - hstrerror() emulation function for Solaris and
|
||||
* others...
|
||||
* _httpEncodeURI() - Percent-encode a HTTP request URI.
|
||||
* http_copy_decode() - Copy and decode a URI.
|
||||
* http_copy_encode() - Copy and encode a URI.
|
||||
*/
|
||||
@@ -1203,6 +1204,20 @@ _cups_hstrerror(int error) /* I - Error number */
|
||||
#endif /* !HAVE_HSTRERROR */
|
||||
|
||||
|
||||
/*
|
||||
* '_httpEncodeURI()' - Percent-encode a HTTP request URI.
|
||||
*/
|
||||
|
||||
char * /* O - Encoded URI */
|
||||
_httpEncodeURI(char *dst, /* I - Destination buffer */
|
||||
const char *src, /* I - Source URI */
|
||||
size_t dstsize) /* I - Size of destination buffer */
|
||||
{
|
||||
http_copy_encode(dst, src, dst + dstsize - 1, NULL, NULL, 1);
|
||||
return (dst);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'http_copy_decode()' - Copy and decode a URI.
|
||||
*/
|
||||
@@ -1311,6 +1326,8 @@ http_copy_encode(char *dst, /* O - Destination buffer */
|
||||
*dst++ = *src++;
|
||||
}
|
||||
|
||||
*dst = '\0';
|
||||
|
||||
if (*src)
|
||||
return (NULL);
|
||||
else
|
||||
|
||||
@@ -293,8 +293,7 @@ void
|
||||
httpClose(http_t *http) /* I - HTTP connection */
|
||||
{
|
||||
#ifdef HAVE_GSSAPI
|
||||
OM_uint32 minor_status, /* Minor status code */
|
||||
major_status; /* Major status code */
|
||||
OM_uint32 minor_status; /* Minor status code */
|
||||
#endif /* HAVE_GSSAPI */
|
||||
|
||||
|
||||
@@ -321,11 +320,10 @@ httpClose(http_t *http) /* I - HTTP connection */
|
||||
|
||||
#ifdef HAVE_GSSAPI
|
||||
if (http->gssctx != GSS_C_NO_CONTEXT)
|
||||
major_status = gss_delete_sec_context(&minor_status, &http->gssctx,
|
||||
GSS_C_NO_BUFFER);
|
||||
gss_delete_sec_context(&minor_status, &http->gssctx, GSS_C_NO_BUFFER);
|
||||
|
||||
if (http->gssname != GSS_C_NO_NAME)
|
||||
major_status = gss_release_name(&minor_status, &http->gssname);
|
||||
gss_release_name(&minor_status, &http->gssname);
|
||||
#endif /* HAVE_GSSAPI */
|
||||
|
||||
#ifdef HAVE_AUTHORIZATION_H
|
||||
@@ -2522,8 +2520,7 @@ http_send(http_t *http, /* I - HTTP connection */
|
||||
const char *uri) /* I - URI */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
char *ptr, /* Pointer in buffer */
|
||||
buf[1024]; /* Encoded URI buffer */
|
||||
char buf[1024]; /* Encoded URI buffer */
|
||||
static const char * const codes[] =
|
||||
{ /* Request code strings */
|
||||
NULL,
|
||||
@@ -2540,8 +2537,6 @@ http_send(http_t *http, /* I - HTTP connection */
|
||||
"TRACE",
|
||||
"CLOSE"
|
||||
};
|
||||
static const char hex[] = "0123456789ABCDEF";
|
||||
/* Hex digits */
|
||||
|
||||
|
||||
DEBUG_printf(("http_send(http=%p, request=HTTP_%s, uri=\"%s\")\n",
|
||||
@@ -2561,20 +2556,7 @@ http_send(http_t *http, /* I - HTTP connection */
|
||||
* Encode the URI as needed...
|
||||
*/
|
||||
|
||||
for (ptr = buf; *uri != '\0' && ptr < (buf + sizeof(buf) - 1); uri ++)
|
||||
if (*uri <= ' ' || *uri >= 127)
|
||||
{
|
||||
if (ptr < (buf + sizeof(buf) - 1))
|
||||
*ptr ++ = '%';
|
||||
if (ptr < (buf + sizeof(buf) - 1))
|
||||
*ptr ++ = hex[(*uri >> 4) & 15];
|
||||
if (ptr < (buf + sizeof(buf) - 1))
|
||||
*ptr ++ = hex[*uri & 15];
|
||||
}
|
||||
else
|
||||
*ptr ++ = *uri;
|
||||
|
||||
*ptr = '\0';
|
||||
_httpEncodeURI(buf, uri, sizeof(buf));
|
||||
|
||||
/*
|
||||
* See if we had an error the last time around; if so, reconnect...
|
||||
@@ -3009,7 +2991,8 @@ http_wait(http_t *http, /* I - HTTP connection */
|
||||
# elif defined(HAVE_CDSASSL)
|
||||
size_t bytes; /* Bytes that are available */
|
||||
|
||||
if (!SSLGetBufferedReadSize(((http_tls_t *)http->tls)->session, &bytes) && bytes > 0)
|
||||
if (!SSLGetBufferedReadSize(((http_tls_t *)(http->tls))->session, &bytes) &&
|
||||
bytes > 0)
|
||||
return (1);
|
||||
# endif /* HAVE_LIBSSL */
|
||||
}
|
||||
|
||||
@@ -1049,7 +1049,7 @@ ippReadIO(void *src, /* I - Data source */
|
||||
* Get the request header...
|
||||
*/
|
||||
|
||||
if ((n = (*cb)(src, buffer, 8)) < 8)
|
||||
if ((*cb)(src, buffer, 8) < 8)
|
||||
{
|
||||
DEBUG_printf(("ippReadIO: Unable to read header (%d bytes read)!\n", n));
|
||||
return (IPP_ERROR);
|
||||
@@ -1556,6 +1556,12 @@ ippReadIO(void *src, /* I - Data source */
|
||||
return (IPP_ERROR);
|
||||
}
|
||||
|
||||
if (!value)
|
||||
{
|
||||
DEBUG_puts("ippReadIO: NULL value!");
|
||||
return (IPP_ERROR);
|
||||
}
|
||||
|
||||
value->unknown.length = n;
|
||||
if (n > 0)
|
||||
{
|
||||
|
||||
@@ -63,8 +63,8 @@ _cupsLangPrintf(FILE *fp, /* I - File to write to */
|
||||
*/
|
||||
|
||||
va_start(ap, message);
|
||||
bytes = vsnprintf(buffer, sizeof(buffer),
|
||||
_cupsLangString(cg->lang_default, message), ap);
|
||||
vsnprintf(buffer, sizeof(buffer),
|
||||
_cupsLangString(cg->lang_default, message), ap);
|
||||
va_end(ap);
|
||||
|
||||
/*
|
||||
|
||||
@@ -25,6 +25,7 @@ __cupsStrFormatd
|
||||
__cupsStrFree
|
||||
__cupsStrScand
|
||||
__cupsStrStatistics
|
||||
__httpEncodeURI
|
||||
__httpReadCDSA
|
||||
__httpWriteCDSA
|
||||
__ippAddAttr
|
||||
|
||||
@@ -29,6 +29,7 @@ _cups_strcpy
|
||||
_cups_strlcat
|
||||
_cups_strlcpy
|
||||
_httpBIOMethods
|
||||
_httpEncodeURI
|
||||
_ippAddAttr
|
||||
_ippFreeAttr
|
||||
_ppdGetEncoding
|
||||
|
||||
@@ -436,13 +436,6 @@ ppd_ll_CC(char *ll_CC, /* O - Country-specific locale name */
|
||||
strlcpy(ll_CC, "sv_SE", ll_CC_size);
|
||||
else if (!strcmp(ll_CC, "zh")) /* Simplified Chinese */
|
||||
strlcpy(ll_CC, "zh_CN", ll_CC_size);
|
||||
else if (ll_CC_size >= 6)
|
||||
{
|
||||
ll_CC[2] = '_';
|
||||
ll_CC[3] = toupper(ll_CC[0] & 255);
|
||||
ll_CC[4] = toupper(ll_CC[1] & 255);
|
||||
ll_CC[5] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_printf(("ppd_ll_CC: lang->language=\"%s\", ll=\"%s\", ll_CC=\"%s\"...\n",
|
||||
|
||||
@@ -197,11 +197,14 @@ ppdFindChoice(ppd_option_t *o, /* I - Pointer to option */
|
||||
ppd_choice_t *c; /* Current choice */
|
||||
|
||||
|
||||
if (o == NULL || choice == NULL)
|
||||
if (!o || !choice)
|
||||
return (NULL);
|
||||
|
||||
if (choice[0] == '{' || !strncasecmp(choice, "Custom.", 7))
|
||||
choice = "Custom";
|
||||
|
||||
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
|
||||
if (strcasecmp(c->choice, choice) == 0)
|
||||
if (!strcasecmp(c->choice, choice))
|
||||
return (c);
|
||||
|
||||
return (NULL);
|
||||
@@ -498,7 +501,7 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
|
||||
|
||||
if ((coption = ppdFindCustomOption(ppd, option)) != NULL)
|
||||
{
|
||||
num_vals = cupsParseOptions(choice + 1, 0, &vals);
|
||||
num_vals = cupsParseOptions(choice, 0, &vals);
|
||||
|
||||
for (i = 0, val = vals; i < num_vals; i ++, val ++)
|
||||
{
|
||||
|
||||
@@ -63,9 +63,14 @@ cupsAddOption(const char *name, /* I - Name of option */
|
||||
cups_option_t *temp; /* Pointer to new option */
|
||||
|
||||
|
||||
if (name == NULL || !name[0] || value == NULL ||
|
||||
options == NULL || num_options < 0)
|
||||
DEBUG_printf(("cupsAddOption(name=\"%s\", value=\"%s\", num_options=%d, "
|
||||
"options=%p)\n", name, value, num_options, options));
|
||||
|
||||
if (!name || !name[0] || !value || !options || num_options < 0)
|
||||
{
|
||||
DEBUG_printf(("cupsAddOption: Returning %d\n", num_options));
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
/*
|
||||
* Look for an existing option with the same name...
|
||||
@@ -81,6 +86,8 @@ cupsAddOption(const char *name, /* I - Name of option */
|
||||
* No matching option name...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsAddOption: New option...");
|
||||
|
||||
if (num_options == 0)
|
||||
temp = (cups_option_t *)malloc(sizeof(cups_option_t));
|
||||
else
|
||||
@@ -88,7 +95,10 @@ cupsAddOption(const char *name, /* I - Name of option */
|
||||
(num_options + 1));
|
||||
|
||||
if (temp == NULL)
|
||||
{
|
||||
DEBUG_puts("cupsAddOption: Unable to expand option array, returning 0");
|
||||
return (0);
|
||||
}
|
||||
|
||||
*options = temp;
|
||||
temp += num_options;
|
||||
@@ -122,7 +132,10 @@ cupsFreeOptions(
|
||||
int i; /* Looping var */
|
||||
|
||||
|
||||
if (num_options <= 0 || options == NULL)
|
||||
DEBUG_printf(("cupsFreeOptions(num_options=%d, options=%p)\n", num_options,
|
||||
options));
|
||||
|
||||
if (num_options <= 0 || !options)
|
||||
return;
|
||||
|
||||
for (i = 0; i < num_options; i ++)
|
||||
@@ -147,13 +160,23 @@ cupsGetOption(const char *name, /* I - Name of option */
|
||||
int i; /* Looping var */
|
||||
|
||||
|
||||
if (name == NULL || num_options <= 0 || options == NULL)
|
||||
DEBUG_printf(("cupsGetOption(name=\"%s\", num_options=%d, options=%p)\n",
|
||||
name, num_options, options));
|
||||
|
||||
if (!name || num_options <= 0 || !options)
|
||||
{
|
||||
DEBUG_puts("cupsGetOption: Returning NULL");
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
for (i = 0; i < num_options; i ++)
|
||||
if (strcasecmp(options[i].name, name) == 0)
|
||||
if (!strcasecmp(options[i].name, name))
|
||||
{
|
||||
DEBUG_printf(("cupsGetOption: Returning \"%s\"\n", options[i].value));
|
||||
return (options[i].value);
|
||||
}
|
||||
|
||||
DEBUG_puts("cupsGetOption: Returning NULL");
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -474,24 +497,52 @@ cupsParseOptions(
|
||||
quote; /* Quote character */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsParseOptions(arg=\"%s\", num_options=%d, options=%p)\n",
|
||||
arg, num_options, options));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!arg)
|
||||
{
|
||||
DEBUG_printf(("cupsParseOptions: Returning %d\n", num_options));
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
if (!options || num_options < 0)
|
||||
{
|
||||
DEBUG_puts("cupsParseOptions: Returning 0");
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Make a copy of the argument string and then divide it up...
|
||||
*/
|
||||
|
||||
if ((copyarg = strdup(arg)) == NULL)
|
||||
{
|
||||
DEBUG_puts("cupsParseOptions: Unable to copy arg string");
|
||||
DEBUG_printf(("cupsParseOptions: Returning %d\n", num_options));
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
ptr = copyarg;
|
||||
if (*copyarg == '{')
|
||||
{
|
||||
/*
|
||||
* Remove surrounding {} so we can parse "{name=value ... name=value}"...
|
||||
*/
|
||||
|
||||
if ((ptr = copyarg + strlen(copyarg) - 1) > copyarg && *ptr == '}')
|
||||
{
|
||||
*ptr = '\0';
|
||||
ptr = copyarg + 1;
|
||||
}
|
||||
else
|
||||
ptr = copyarg;
|
||||
}
|
||||
else
|
||||
ptr = copyarg;
|
||||
|
||||
/*
|
||||
* Skip leading spaces...
|
||||
@@ -528,6 +579,8 @@ cupsParseOptions(
|
||||
while (isspace(*ptr & 255))
|
||||
*ptr++ = '\0';
|
||||
|
||||
DEBUG_printf(("cupsParseOptions: name=\"%s\"\n", name));
|
||||
|
||||
if (*ptr != '=')
|
||||
{
|
||||
/*
|
||||
@@ -548,80 +601,84 @@ cupsParseOptions(
|
||||
*/
|
||||
|
||||
*ptr++ = '\0';
|
||||
value = ptr;
|
||||
|
||||
if (*ptr == '\'' || *ptr == '\"')
|
||||
while (*ptr && !isspace(*ptr & 255))
|
||||
{
|
||||
/*
|
||||
* Quoted string constant...
|
||||
*/
|
||||
|
||||
quote = *ptr++;
|
||||
value = ptr;
|
||||
|
||||
while (*ptr != quote && *ptr)
|
||||
{
|
||||
if (*ptr == '\\' && ptr[1])
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
|
||||
if (*ptr == ',')
|
||||
ptr ++;
|
||||
}
|
||||
else if (*ptr == '\'' || *ptr == '\"')
|
||||
{
|
||||
/*
|
||||
* Quoted string constant...
|
||||
*/
|
||||
|
||||
if (*ptr != '\0')
|
||||
*ptr++ = '\0';
|
||||
}
|
||||
else if (*ptr == '{')
|
||||
{
|
||||
/*
|
||||
* Collection value...
|
||||
*/
|
||||
quote = *ptr;
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
|
||||
int depth;
|
||||
|
||||
value = ptr;
|
||||
|
||||
for (depth = 1; *ptr; ptr ++)
|
||||
if (*ptr == '{')
|
||||
depth ++;
|
||||
else if (*ptr == '}')
|
||||
while (*ptr != quote && *ptr)
|
||||
{
|
||||
depth --;
|
||||
if (!depth)
|
||||
{
|
||||
ptr ++;
|
||||
if (*ptr == '\\' && ptr[1])
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
|
||||
if (*ptr != ',')
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (*ptr == '\\' && ptr[1])
|
||||
ptr ++;
|
||||
}
|
||||
|
||||
if (*ptr)
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
|
||||
if (*ptr != '\0')
|
||||
*ptr++ = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Normal space-delimited string...
|
||||
*/
|
||||
|
||||
value = ptr;
|
||||
|
||||
while (!isspace(*ptr & 255) && *ptr)
|
||||
}
|
||||
else if (*ptr == '{')
|
||||
{
|
||||
if (*ptr == '\\' && ptr[1])
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
/*
|
||||
* Collection value...
|
||||
*/
|
||||
|
||||
ptr ++;
|
||||
int depth;
|
||||
|
||||
for (depth = 0; *ptr; ptr ++)
|
||||
{
|
||||
if (*ptr == '{')
|
||||
depth ++;
|
||||
else if (*ptr == '}')
|
||||
{
|
||||
depth --;
|
||||
if (!depth)
|
||||
{
|
||||
ptr ++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (*ptr == '\\' && ptr[1])
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Normal space-delimited string...
|
||||
*/
|
||||
|
||||
while (!isspace(*ptr & 255) && *ptr)
|
||||
{
|
||||
if (*ptr == '\\' && ptr[1])
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
|
||||
ptr ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (*ptr != '\0')
|
||||
*ptr++ = '\0';
|
||||
|
||||
DEBUG_printf(("cupsParseOptions: value=\"%s\"\n", value));
|
||||
|
||||
/*
|
||||
* Skip trailing whitespace...
|
||||
*/
|
||||
|
||||
while (isspace(*ptr & 255))
|
||||
*ptr++ = '\0';
|
||||
ptr ++;
|
||||
|
||||
/*
|
||||
* Add the string value...
|
||||
@@ -637,6 +694,8 @@ cupsParseOptions(
|
||||
|
||||
free(copyarg);
|
||||
|
||||
DEBUG_printf(("cupsParseOptions: Returning %d\n", num_options));
|
||||
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
@@ -657,12 +716,18 @@ cupsRemoveOption(
|
||||
cups_option_t *option; /* Current option */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsRemoveOption(name=\"%s\", num_options=%d, options=%p)\n",
|
||||
name, num_options, options));
|
||||
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!name || num_options < 1 || !options)
|
||||
{
|
||||
DEBUG_printf(("cupsRemoveOption: Returning %d\n", num_options));
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
/*
|
||||
* Loop for the option...
|
||||
@@ -678,6 +743,8 @@ cupsRemoveOption(
|
||||
* Remove this option from the array...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsRemoveOption: Found option, removing it...");
|
||||
|
||||
num_options --;
|
||||
i --;
|
||||
|
||||
@@ -693,6 +760,7 @@ cupsRemoveOption(
|
||||
* Return the new number of options...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("cupsRemoveOption: Returning %d\n", num_options));
|
||||
return (num_options);
|
||||
}
|
||||
|
||||
|
||||
@@ -623,11 +623,8 @@ ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
puts("");
|
||||
#endif /* DEBUG */
|
||||
|
||||
if (strcmp(keyword, "CloseUI") && strcmp(keyword, "CloseGroup") &&
|
||||
strcmp(keyword, "CloseSubGroup") && strncmp(keyword, "Default", 7) &&
|
||||
strcmp(keyword, "JCLCloseUI") && strcmp(keyword, "JCLOpenUI") &&
|
||||
strcmp(keyword, "OpenUI") && strcmp(keyword, "OpenGroup") &&
|
||||
strcmp(keyword, "OpenSubGroup") && string == NULL)
|
||||
if (strncmp(keyword, "Default", 7) && !string &&
|
||||
cg->ppd_conform != PPD_CONFORM_RELAXED)
|
||||
{
|
||||
/*
|
||||
* Need a string value!
|
||||
@@ -1041,19 +1038,23 @@ ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
* Add the "custom" option...
|
||||
*/
|
||||
|
||||
if ((choice = ppd_add_choice(custom_option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("Unable to add Custom choice!");
|
||||
if ((choice = ppdFindChoice(custom_option, "Custom")) == NULL)
|
||||
if ((choice = ppd_add_choice(custom_option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
goto error;
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
|
||||
strlcpy(choice->text, text[0] ? text : _("Custom"),
|
||||
sizeof(choice->text));
|
||||
|
||||
choice->code = strdup(string);
|
||||
|
||||
if (custom_option->section == PPD_ORDER_JCL)
|
||||
ppd_decode(choice->code);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1077,14 +1078,15 @@ ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
|
||||
if (custom_option)
|
||||
{
|
||||
if ((choice = ppd_add_choice(custom_option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("Unable to add Custom choice!");
|
||||
if ((choice = ppdFindChoice(custom_option, "Custom")) == NULL)
|
||||
if ((choice = ppd_add_choice(custom_option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
goto error;
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
|
||||
strlcpy(choice->text, text[0] ? text : _("Custom"),
|
||||
sizeof(choice->text));
|
||||
@@ -1098,7 +1100,7 @@ ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
else if (!strcmp(string, "Plus90"))
|
||||
ppd->landscape = 90;
|
||||
}
|
||||
else if (!strcmp(keyword, "Emulators"))
|
||||
else if (!strcmp(keyword, "Emulators") && string)
|
||||
{
|
||||
for (count = 1, sptr = string; sptr != NULL;)
|
||||
if ((sptr = strchr(sptr, ' ')) != NULL)
|
||||
@@ -1289,14 +1291,15 @@ ppdOpen2(cups_file_t *fp) /* I - File to read from */
|
||||
|
||||
if ((custom_attr = ppdFindAttr(ppd, custom_name, "True")) != NULL)
|
||||
{
|
||||
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("Unable to add Custom choice!");
|
||||
if ((choice = ppdFindChoice(option, "Custom")) == NULL)
|
||||
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
|
||||
{
|
||||
DEBUG_puts("Unable to add Custom choice!");
|
||||
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
cg->ppd_status = PPD_ALLOC_ERROR;
|
||||
|
||||
goto error;
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
|
||||
strlcpy(choice->text,
|
||||
custom_attr->text[0] ? custom_attr->text : _("Custom"),
|
||||
@@ -2865,8 +2868,6 @@ ppd_read(cups_file_t *fp, /* I - File to read from */
|
||||
if (ch == 0x0a)
|
||||
cupsFileGetChar(fp);
|
||||
}
|
||||
|
||||
ch = '\n';
|
||||
}
|
||||
else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
|
||||
{
|
||||
|
||||
@@ -123,9 +123,9 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
http_status_t expect; /* Expect: header to use */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsDoFileRequest(%p, %p, \'%s\', \'%s\')\n",
|
||||
http, request, resource ? resource : "(null)",
|
||||
filename ? filename : "(null)"));
|
||||
DEBUG_printf(("cupsDoFileRequest(%p, %p, \'%s\', %d, %d)\n",
|
||||
http, request, resource ? resource : "(null)", infile,
|
||||
outfile));
|
||||
|
||||
if (http == NULL || request == NULL || resource == NULL)
|
||||
{
|
||||
@@ -198,7 +198,7 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
|
||||
while (response == NULL)
|
||||
{
|
||||
DEBUG_puts("cupsDoFileRequest: setup...");
|
||||
DEBUG_puts("cupsDoIORequest: setup...");
|
||||
|
||||
/*
|
||||
* Setup the HTTP variables needed...
|
||||
@@ -221,13 +221,13 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring);
|
||||
httpSetExpect(http, expect);
|
||||
|
||||
DEBUG_printf(("cupsDoFileRequest: authstring=\"%s\"\n", http->authstring));
|
||||
DEBUG_printf(("cupsDoIORequest: authstring=\"%s\"\n", http->authstring));
|
||||
|
||||
/*
|
||||
* Try the request...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: post...");
|
||||
DEBUG_puts("cupsDoIORequest: post...");
|
||||
|
||||
if (httpPost(http, resource))
|
||||
{
|
||||
@@ -244,7 +244,7 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
* Send the IPP data...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: ipp write...");
|
||||
DEBUG_puts("cupsDoIORequest: ipp write...");
|
||||
|
||||
request->state = IPP_IDLE;
|
||||
status = HTTP_CONTINUE;
|
||||
@@ -275,7 +275,7 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
|
||||
if (status == HTTP_CONTINUE && state == IPP_DATA && infile >= 0)
|
||||
{
|
||||
DEBUG_puts("cupsDoFileRequest: file write...");
|
||||
DEBUG_puts("cupsDoIORequest: file write...");
|
||||
|
||||
/*
|
||||
* Send the file...
|
||||
@@ -303,16 +303,16 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
* Get the server's return status...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: update...");
|
||||
DEBUG_puts("cupsDoIORequest: update...");
|
||||
|
||||
while (status == HTTP_CONTINUE)
|
||||
status = httpUpdate(http);
|
||||
|
||||
DEBUG_printf(("cupsDoFileRequest: status = %d\n", status));
|
||||
DEBUG_printf(("cupsDoIORequest: status = %d\n", status));
|
||||
|
||||
if (status == HTTP_UNAUTHORIZED)
|
||||
{
|
||||
DEBUG_puts("cupsDoFileRequest: unauthorized...");
|
||||
DEBUG_puts("cupsDoIORequest: unauthorized...");
|
||||
|
||||
/*
|
||||
* Flush any error message...
|
||||
@@ -337,7 +337,7 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
}
|
||||
else if (status == HTTP_ERROR)
|
||||
{
|
||||
DEBUG_printf(("cupsDoFileRequest: http->error=%d (%s)\n", http->error,
|
||||
DEBUG_printf(("cupsDoIORequest: http->error=%d (%s)\n", http->error,
|
||||
strerror(http->error)));
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -381,7 +381,7 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
}
|
||||
else if (status != HTTP_OK)
|
||||
{
|
||||
DEBUG_printf(("cupsDoFileRequest: error %d...\n", status));
|
||||
DEBUG_printf(("cupsDoIORequest: error %d...\n", status));
|
||||
|
||||
/*
|
||||
* Flush any error message...
|
||||
@@ -396,7 +396,7 @@ cupsDoIORequest(http_t *http, /* I - HTTP connection to server */
|
||||
* Read the response...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: response...");
|
||||
DEBUG_puts("cupsDoIORequest: response...");
|
||||
|
||||
response = ippNew();
|
||||
|
||||
@@ -476,7 +476,7 @@ cupsDoRequest(http_t *http, /* I - HTTP connection to server */
|
||||
ipp_t *request, /* I - IPP request */
|
||||
const char *resource) /* I - HTTP resource for POST */
|
||||
{
|
||||
return (cupsDoFileRequest(http, request, resource, NULL));
|
||||
return (cupsDoIORequest(http, request, resource, -1, -1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -134,7 +134,8 @@
|
||||
*CloseUI: *StringOption
|
||||
|
||||
*CustomStringOption True/Custom String: "StringOption=Custom"
|
||||
*ParamCustomStringOption String: 1 string 1 10
|
||||
*ParamCustomStringOption String1: 2 string 1 10
|
||||
*ParamCustomStringOption String2: 1 string 1 10
|
||||
|
||||
*CloseGroup: Extended
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
if (argc > 1)
|
||||
{
|
||||
for (i = 1, num_settings = 0; i < argc; i ++)
|
||||
for (i = 1, num_settings = 0, settings = NULL; i < argc; i ++)
|
||||
num_settings = cupsParseOptions(argv[i], num_settings, &settings);
|
||||
|
||||
if (cupsAdminSetServerSettings(http, num_settings, settings))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* CUPS API test program for the Common UNIX Printing System (CUPS).
|
||||
*
|
||||
* Copyright 2007 by Apple Inc.
|
||||
* Copyright 2007-2008 by Apple Inc.
|
||||
* Copyright 2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -70,8 +70,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
printf("cupsGetDest(\"%s\"): ", dests[num_dests / 2].name);
|
||||
fflush(stdout);
|
||||
|
||||
if ((dest = cupsGetDest(dests[num_dests / 2].name, NULL, num_dests,
|
||||
dests)) == NULL)
|
||||
if (!cupsGetDest(dests[num_dests / 2].name, NULL, num_dests, dests))
|
||||
{
|
||||
status = 1;
|
||||
puts("FAIL");
|
||||
@@ -88,8 +87,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
|
||||
{
|
||||
status = 1;
|
||||
puts("FAIL");
|
||||
return (1);
|
||||
}
|
||||
else
|
||||
puts("PASS");
|
||||
@@ -104,7 +103,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
if (cupsPrintFile(dest->name, "../data/testprint.ps", "Test Page",
|
||||
dest->num_options, dest->options) <= 0)
|
||||
{
|
||||
status = 1;
|
||||
puts("FAIL");
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* File test program for the Common UNIX Printing System (CUPS).
|
||||
*
|
||||
* Copyright 2007 by Apple Inc.
|
||||
* Copyright 2007-2008 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -34,12 +34,14 @@
|
||||
#ifdef HAVE_LIBZ
|
||||
# include <zlib.h>
|
||||
#endif /* HAVE_LIBZ */
|
||||
#include <fcntl.h>
|
||||
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static int random_tests(void);
|
||||
static int read_write_tests(int compression);
|
||||
|
||||
|
||||
@@ -51,8 +53,10 @@ int /* O - Exit status */
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
{
|
||||
int status; /* Exit status */
|
||||
char filename[1024]; /* Filename buffer */
|
||||
int status; /* Exit status */
|
||||
char filename[1024]; /* Filename buffer */
|
||||
int fds[2]; /* Open file descriptors */
|
||||
cups_file_t *fdfile; /* File opened with cupsFileOpenFd() */
|
||||
|
||||
|
||||
if (argc == 1)
|
||||
@@ -73,11 +77,51 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
status += read_write_tests(1);
|
||||
#endif /* HAVE_LIBZ */
|
||||
|
||||
/*
|
||||
* Do uncompressed random I/O tests...
|
||||
*/
|
||||
|
||||
status += random_tests();
|
||||
|
||||
/*
|
||||
* Test fdopen and close without reading...
|
||||
*/
|
||||
|
||||
pipe(fds);
|
||||
close(fds[1]);
|
||||
|
||||
fputs("\ncupsFileOpenFd(fd, \"r\"): ", stdout);
|
||||
fflush(stdout);
|
||||
|
||||
if ((fdfile = cupsFileOpenFd(fds[0], "r")) == NULL)
|
||||
{
|
||||
puts("FAIL");
|
||||
status ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Able to open file, now close without reading. If we don't return
|
||||
* before the alarm fires, that is a failure and we will crash on the
|
||||
* alarm signal...
|
||||
*/
|
||||
|
||||
puts("PASS");
|
||||
fputs("cupsFileClose(no read): ", stdout);
|
||||
fflush(stdout);
|
||||
|
||||
alarm(5);
|
||||
cupsFileClose(fdfile);
|
||||
alarm(0);
|
||||
|
||||
puts("PASS");
|
||||
}
|
||||
|
||||
/*
|
||||
* Test path functions...
|
||||
*/
|
||||
|
||||
fputs("cupsFileFind: ", stdout);
|
||||
fputs("\ncupsFileFind: ", stdout);
|
||||
#ifdef WIN32
|
||||
if (cupsFileFind("notepad.exe", "C:/WINDOWS", 1, filename, sizeof(filename)) &&
|
||||
cupsFileFind("notepad.exe", "C:/WINDOWS;C:/WINDOWS/SYSTEM32", 1, filename, sizeof(filename)))
|
||||
@@ -134,6 +178,190 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'random_tests()' - Do random access tests.
|
||||
*/
|
||||
|
||||
static int /* O - Status */
|
||||
random_tests(void)
|
||||
{
|
||||
int status, /* Status of tests */
|
||||
pass, /* Current pass */
|
||||
count, /* Number of records read */
|
||||
record, /* Current record */
|
||||
num_records; /* Number of records */
|
||||
ssize_t pos, /* Position in file */
|
||||
expected; /* Expected position in file */
|
||||
cups_file_t *fp; /* File */
|
||||
char buffer[512]; /* Data buffer */
|
||||
|
||||
|
||||
/*
|
||||
* Run 4 passes, each time appending to a data file and then reopening the
|
||||
* file for reading to validate random records in the file.
|
||||
*/
|
||||
|
||||
for (status = 0, pass = 0; pass < 4; pass ++)
|
||||
{
|
||||
/*
|
||||
* cupsFileOpen(append)
|
||||
*/
|
||||
|
||||
printf("\ncupsFileOpen(append %d): ", pass);
|
||||
|
||||
if ((fp = cupsFileOpen("testfile.dat", "a")) == NULL)
|
||||
{
|
||||
printf("FAIL (%s)\n", strerror(errno));
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
puts("PASS");
|
||||
|
||||
/*
|
||||
* cupsFileTell()
|
||||
*/
|
||||
|
||||
expected = 256 * sizeof(buffer) * pass;
|
||||
|
||||
fputs("cupsFileTell(): ", stdout);
|
||||
if ((pos = cupsFileTell(fp)) != expected)
|
||||
{
|
||||
printf("FAIL (" CUPS_LLFMT " instead of " CUPS_LLFMT ")\n",
|
||||
CUPS_LLCAST pos, CUPS_LLCAST expected);
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
puts("PASS");
|
||||
|
||||
/*
|
||||
* cupsFileWrite()
|
||||
*/
|
||||
|
||||
fputs("cupsFileWrite(256 512-byte records): ", stdout);
|
||||
for (record = 0; record < 256; record ++)
|
||||
{
|
||||
memset(buffer, record, sizeof(buffer));
|
||||
if (cupsFileWrite(fp, buffer, sizeof(buffer)) < sizeof(buffer))
|
||||
break;
|
||||
}
|
||||
|
||||
if (record < 256)
|
||||
{
|
||||
printf("FAIL (%d: %s)\n", record, strerror(errno));
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
puts("PASS");
|
||||
|
||||
/*
|
||||
* cupsFileTell()
|
||||
*/
|
||||
|
||||
expected += 256 * sizeof(buffer);
|
||||
|
||||
fputs("cupsFileTell(): ", stdout);
|
||||
if ((pos = cupsFileTell(fp)) != expected)
|
||||
{
|
||||
printf("FAIL (" CUPS_LLFMT " instead of " CUPS_LLFMT ")\n",
|
||||
CUPS_LLCAST pos, CUPS_LLCAST expected);
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
puts("PASS");
|
||||
|
||||
cupsFileClose(fp);
|
||||
|
||||
/*
|
||||
* cupsFileOpen(read)
|
||||
*/
|
||||
|
||||
printf("\ncupsFileOpen(read %d): ", pass);
|
||||
|
||||
if ((fp = cupsFileOpen("testfile.dat", "r")) == NULL)
|
||||
{
|
||||
printf("FAIL (%s)\n", strerror(errno));
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
puts("PASS");
|
||||
|
||||
/*
|
||||
* cupsFileSeek, cupsFileRead
|
||||
*/
|
||||
|
||||
fputs("cupsFileSeek(), cupsFileRead(): ", stdout);
|
||||
|
||||
for (num_records = (pass + 1) * 256, count = (pass + 1) * 256,
|
||||
record = rand() % num_records;
|
||||
count > 0;
|
||||
count --, record = (record + (rand() & 31) - 16 + num_records) %
|
||||
num_records)
|
||||
{
|
||||
/*
|
||||
* The last record is always the first...
|
||||
*/
|
||||
|
||||
if (count == 1)
|
||||
record = 0;
|
||||
|
||||
/*
|
||||
* Try reading the data for the specified record, and validate the
|
||||
* contents...
|
||||
*/
|
||||
|
||||
expected = sizeof(buffer) * record;
|
||||
|
||||
if ((pos = cupsFileSeek(fp, expected)) != expected)
|
||||
{
|
||||
printf("FAIL (" CUPS_LLFMT " instead of " CUPS_LLFMT ")\n",
|
||||
CUPS_LLCAST pos, CUPS_LLCAST expected);
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cupsFileRead(fp, buffer, sizeof(buffer)) != sizeof(buffer))
|
||||
{
|
||||
printf("FAIL (%s)\n", strerror(errno));
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
else if ((buffer[0] & 255) != (record & 255) ||
|
||||
memcmp(buffer, buffer + 1, sizeof(buffer) - 1))
|
||||
{
|
||||
printf("FAIL (Bad Data - %d instead of %d)\n", buffer[0] & 255,
|
||||
record & 255);
|
||||
status ++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count == 0)
|
||||
puts("PASS");
|
||||
|
||||
cupsFileClose(fp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove the test file...
|
||||
*/
|
||||
|
||||
unlink("testfile.dat");
|
||||
|
||||
/*
|
||||
* Return the test status...
|
||||
*/
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'read_write_tests()' - Perform read/write tests.
|
||||
*/
|
||||
@@ -142,7 +370,7 @@ static int /* O - Status */
|
||||
read_write_tests(int compression) /* I - Use compression? */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
cups_file_t *fp; /* First file */
|
||||
cups_file_t *fp; /* File */
|
||||
int status; /* Exit status */
|
||||
char line[1024], /* Line from file */
|
||||
*value; /* Directive value from line */
|
||||
@@ -150,6 +378,7 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
unsigned char readbuf[8192], /* Read buffer */
|
||||
writebuf[8192]; /* Write buffer */
|
||||
int byte; /* Byte from file */
|
||||
off_t length; /* Length of file */
|
||||
static const char *partial_line = "partial line";
|
||||
/* Partial line */
|
||||
|
||||
@@ -221,7 +450,7 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
fputs("cupsFilePrintf(): ", stdout);
|
||||
|
||||
for (i = 0; i < 1000; i ++)
|
||||
if (cupsFilePrintf(fp, "TestLine %d\n", i) < 0)
|
||||
if (cupsFilePrintf(fp, "TestLine %03d\n", i) < 0)
|
||||
break;
|
||||
|
||||
if (i >= 1000)
|
||||
@@ -282,6 +511,20 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
status ++;
|
||||
}
|
||||
|
||||
/*
|
||||
* cupsFileTell()
|
||||
*/
|
||||
|
||||
fputs("cupsFileTell(): ", stdout);
|
||||
|
||||
if ((length = cupsFileTell(fp)) == 81933283)
|
||||
puts("PASS");
|
||||
else
|
||||
{
|
||||
printf("FAIL (" CUPS_LLFMT " instead of 81933283)\n", CUPS_LLCAST length);
|
||||
status ++;
|
||||
}
|
||||
|
||||
/*
|
||||
* cupsFileClose()
|
||||
*/
|
||||
@@ -306,7 +549,7 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
* cupsFileOpen(read)
|
||||
*/
|
||||
|
||||
fputs("cupsFileOpen(read): ", stdout);
|
||||
fputs("\ncupsFileOpen(read): ", stdout);
|
||||
|
||||
fp = cupsFileOpen(compression ? "testfile.dat.gz" : "testfile.dat", "r");
|
||||
if (fp)
|
||||
@@ -385,23 +628,9 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
|
||||
fputs("cupsFileGetChar(): ", stdout);
|
||||
|
||||
#ifdef DEBUG
|
||||
puts("\ni byte\n----- -----");
|
||||
|
||||
for (i = 0; i < 256; i ++)
|
||||
{
|
||||
byte = cupsFileGetChar(fp);
|
||||
|
||||
printf("%-5d %-5d\n", i, byte);
|
||||
|
||||
if (byte != i)
|
||||
break;
|
||||
}
|
||||
#else
|
||||
for (i = 0; i < 256; i ++)
|
||||
if ((byte = cupsFileGetChar(fp)) != i)
|
||||
break;
|
||||
#endif /* DEBUG */
|
||||
|
||||
if (i >= 256)
|
||||
puts("PASS");
|
||||
@@ -467,6 +696,20 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
status ++;
|
||||
}
|
||||
|
||||
/*
|
||||
* cupsFileTell()
|
||||
*/
|
||||
|
||||
fputs("cupsFileTell(): ", stdout);
|
||||
|
||||
if ((length = cupsFileTell(fp)) == 81933283)
|
||||
puts("PASS");
|
||||
else
|
||||
{
|
||||
printf("FAIL (" CUPS_LLFMT " instead of 81933283)\n", CUPS_LLCAST length);
|
||||
status ++;
|
||||
}
|
||||
|
||||
/*
|
||||
* cupsFileClose()
|
||||
*/
|
||||
@@ -487,6 +730,12 @@ read_write_tests(int compression) /* I - Use compression? */
|
||||
status ++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove the test file...
|
||||
*/
|
||||
|
||||
unlink(compression ? "testfile.dat.gz" : "testfile.dat");
|
||||
|
||||
/*
|
||||
* Return the test status...
|
||||
*/
|
||||
|
||||
@@ -299,7 +299,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* httpAddrGetList()
|
||||
*/
|
||||
|
||||
fputs("httpAddrGetList(): ", stdout);
|
||||
printf("httpAddrGetList(%s): ", hostname);
|
||||
|
||||
addrlist = httpAddrGetList(hostname, AF_UNSPEC, NULL);
|
||||
if (addrlist)
|
||||
|
||||
@@ -81,7 +81,10 @@ static const char *custom_code =
|
||||
"%%EndFeature\n"
|
||||
"} stopped cleartomark\n"
|
||||
"[{\n"
|
||||
"%%BeginFeature: *StringOption None\n"
|
||||
"%%BeginFeature: *CustomStringOption True\n"
|
||||
"(value\\0502\\051)\n"
|
||||
"(value 1)\n"
|
||||
"StringOption=Custom\n"
|
||||
"%%EndFeature\n"
|
||||
"} stopped cleartomark\n";
|
||||
|
||||
@@ -149,8 +152,9 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
if (s)
|
||||
free(s);
|
||||
|
||||
fputs("ppdEmitString (custom size): ", stdout);
|
||||
fputs("ppdEmitString (custom size and string): ", stdout);
|
||||
ppdMarkOption(ppd, "PageSize", "Custom.400x500");
|
||||
ppdMarkOption(ppd, "StringOption", "{String1=\"value 1\" String2=value(2)}");
|
||||
|
||||
if ((s = ppdEmitString(ppd, PPD_ORDER_ANY, 0.0)) != NULL &&
|
||||
!strcmp(s, custom_code))
|
||||
|
||||
@@ -772,7 +772,7 @@ cupsGetPPD2(http_t *http, /* I - HTTP connection */
|
||||
resource, sizeof(resource), 0))
|
||||
return (NULL);
|
||||
|
||||
DEBUG_printf(("Printer hostname=\"%s\", port=%d\n", hostname, port));
|
||||
DEBUG_printf(("cupsGetPPD3: Printer hostname=\"%s\", port=%d\n", hostname, port));
|
||||
|
||||
/*
|
||||
* Remap local hostname to localhost...
|
||||
@@ -1611,6 +1611,16 @@ cups_get_printer_uri(
|
||||
host, hostsize, port, resource, resourcesize);
|
||||
ippDelete(response);
|
||||
|
||||
if (!strncmp(resource, "/classes/", 9))
|
||||
{
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, _("No printer-uri found for class!"));
|
||||
|
||||
*host = '\0';
|
||||
*resource = '\0';
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -1618,7 +1628,7 @@ cups_get_printer_uri(
|
||||
}
|
||||
|
||||
if (cupsLastError() != IPP_NOT_FOUND)
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, "No printer-uri found!");
|
||||
_cupsSetError(IPP_INTERNAL_ERROR, _("No printer-uri found!"));
|
||||
|
||||
*host = '\0';
|
||||
*resource = '\0';
|
||||
|
||||
@@ -1,36 +1,33 @@
|
||||
[Desktop Entry]
|
||||
Categories=Application;System;X-Red-Hat-Base;
|
||||
Encoding=UTF-8
|
||||
Categories=System;Printing;HardwareSettings;X-Red-Hat-Base;
|
||||
Exec=htmlview http://localhost:631/
|
||||
GenericName=
|
||||
Icon=cups
|
||||
MimeType=
|
||||
Path=
|
||||
StartupNotify=false
|
||||
Terminal=false
|
||||
TerminalOptions=
|
||||
Type=Application
|
||||
X-DCOP-ServiceType=
|
||||
X-KDE-SubstituteUID=false
|
||||
X-KDE-Username=
|
||||
Name=Manage Printing
|
||||
Comment=CUPS Web Interface
|
||||
Name[en_US]=Manage Printing
|
||||
Comment[en_US]=CUPS Web Interface
|
||||
Name[es]=Administrar impresión
|
||||
Comment[es]=Interfaz Web de CUPS
|
||||
Name[et]=Trükkimise haldur
|
||||
Comment[et]=CUPS-i veebiliides
|
||||
Name[fr]=Gestionnaire d'impression
|
||||
Comment[fr]=Interface Web de CUPS
|
||||
Name[pl]=Zarządzanie drukowaniem
|
||||
Comment[pl]=Interfejs WWW CUPS
|
||||
Name[it]=Gestione stampa
|
||||
Comment[it]=Interfaccia web di CUPS
|
||||
Name[he]=נהל הדפסות
|
||||
Comment[he]=ממשק דפדפן של CUPS
|
||||
Name[zh_TW]=印表管理
|
||||
Comment[zh_TW]=CUPS 網頁介面
|
||||
Name[de]=Druckerverwaltung
|
||||
Comment[de]=CUPS Webinterface
|
||||
|
||||
Name[de.UTF-8]=Druckerverwaltung
|
||||
Comment[de.UTF-8]=CUPS Webinterface
|
||||
Name[en_US.UTF-8]=Manage Printing
|
||||
Comment[en_US.UTF-8]=CUPS Web Interface
|
||||
Name[es.UTF-8]=Administrar impresión
|
||||
Comment[es.UTF-8]=Interfaz Web de CUPS
|
||||
Name[et.UTF-8]=Trükkimise haldur
|
||||
Comment[et.UTF-8]=CUPS-i veebiliides
|
||||
Name[fr.UTF-8]=Gestionnaire d'impression
|
||||
Comment[fr.UTF-8]=Interface Web de CUPS
|
||||
Name[he.UTF-8]=נהל הדפסות
|
||||
Comment[he.UTF-8]=ממשק דפדפן של CUPS
|
||||
Name[id.UTF-8]=Manajemen Pencetakan
|
||||
Comment[id.UTF-8]=Antarmuka Web CUPS
|
||||
Name[it.UTF-8]=Gestione stampa
|
||||
Comment[it.UTF-8]=Interfaccia web di CUPS
|
||||
Name[ja.UTF-8]=印刷の管理
|
||||
Comment[ja.UTF-8]=CUPS Web インタフェース
|
||||
Name[pl.UTF-8]=Zarządzanie drukowaniem
|
||||
Comment[pl.UTF-8]=Interfejs WWW CUPS
|
||||
Name[zh.UTF-8]=打印机管理
|
||||
Comment[zh.UTF-8]=CUPS网页界面
|
||||
Name[zh_TW.UTF-8]=印表管理
|
||||
Comment[zh_TW.UTF-8]=CUPS 網頁介面
|
||||
|
||||
|
Depois Largura: | Altura: | Tamanho: 1.2 KiB |
@@ -988,7 +988,7 @@ printers are shared (published) by default. The default is
|
||||
<H3>Description</H3>
|
||||
|
||||
<P>The <CODE>Deny</CODE> directive specifies a hostname, IP
|
||||
address, or network that is allowed access to the server.
|
||||
address, or network that is denied access to the server.
|
||||
<CODE>Deny</CODE> directives are cummulative, so multiple
|
||||
<CODE>Deny</CODE> directives can be used to allow access for
|
||||
multiple hosts or networks. The <CODE>/mm</CODE> notation
|
||||
|
||||
@@ -16,20 +16,10 @@
|
||||
Copyright 1997-2006 by Easy Software Products.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Easy Software Products and are protected by Federal
|
||||
copyright law. Distribution and use rights are outlined in the file
|
||||
"LICENSE.txt" which should have been included with this file. If this
|
||||
file is missing or damaged please contact Easy Software Products
|
||||
at:
|
||||
|
||||
Attn: CUPS Licensing Information
|
||||
Easy Software Products
|
||||
44141 Airport View Drive, Suite 204
|
||||
Hollywood, Maryland 20636 USA
|
||||
|
||||
Voice: (301) 373-9600
|
||||
EMail: cups-info@cups.org
|
||||
WWW: http://www.cups.org
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
which should have been included with this file. If this file is
|
||||
file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
-->
|
||||
|
||||
<h2 class='title'><a name='INTRODUCTION'>Introduction</a></h2>
|
||||
|
||||
@@ -15,20 +15,10 @@
|
||||
Copyright 1997-2007 by Easy Software Products.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Easy Software Products and are protected by Federal
|
||||
copyright law. Distribution and use rights are outlined in the file
|
||||
"LICENSE.txt" which should have been included with this file. If this
|
||||
file is missing or damaged please contact Easy Software Products
|
||||
at:
|
||||
|
||||
Attn: CUPS Licensing Information
|
||||
Easy Software Products
|
||||
44141 Airport View Drive, Suite 204
|
||||
Hollywood, Maryland 20636 USA
|
||||
|
||||
Voice: (301) 373-9600
|
||||
EMail: cups-info@cups.org
|
||||
WWW: http://www.cups.org
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
which should have been included with this file. If this file is
|
||||
file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
-->
|
||||
|
||||
<h2 class='title'><a name='INTRODUCTION'>Introduction</a></h2>
|
||||
@@ -803,16 +793,16 @@ CUPS-Get-Printers request:
|
||||
attributes as described in section 3.1.4.1 of the IPP Model and
|
||||
Semantics document.
|
||||
|
||||
<dt>"first-printer-name" (name(127)):<span class='info'>CUPS 1.2</span>
|
||||
|
||||
<dd>The client OPTIONALLY supplies this attribute to
|
||||
select the first printer that is returned.
|
||||
|
||||
<dt>"limit" (integer (1:MAX)):
|
||||
|
||||
<dd>The client OPTIONALLY supplies this attribute limiting the
|
||||
number of printers that are returned.
|
||||
|
||||
<dt>"printer-info" (text(127)):<span class='info'>CUPS 1.1</span>
|
||||
|
||||
<dd>The client OPTIONALLY supplies this attribute to
|
||||
select which printers are returned.
|
||||
|
||||
<dt>"printer-location" (text(127)): <span class='info'>CUPS 1.1.7</span>
|
||||
|
||||
<dd>The client OPTIONALLY supplies this attribute to
|
||||
@@ -837,6 +827,11 @@ CUPS-Get-Printers request:
|
||||
responds as if this attribute had been supplied with a value of
|
||||
'all'.
|
||||
|
||||
<dt>"requested-user-name" (name(127)) : <span class='info'>CUPS 1.2</span>
|
||||
|
||||
<dd>The client OPTIONALLY supplies a user name that is used to filter
|
||||
the returned printers.
|
||||
|
||||
</dl>
|
||||
|
||||
<h4>CUPS-Get-Printers Response</h4>
|
||||
@@ -1062,15 +1057,16 @@ CUPS-Get-Classes request:
|
||||
attributes as described in section 3.1.4.1 of the IPP Model and
|
||||
Semantics document.
|
||||
|
||||
<dt>"first-printer-name" (name(127)):<span class='info'>CUPS 1.2</span>
|
||||
|
||||
<dd>The client OPTIONALLY supplies this attribute to
|
||||
select the first printer that is returned.
|
||||
|
||||
<dt>"limit" (integer (1:MAX)):
|
||||
|
||||
<dd>The client OPTIONALLY supplies this attribute limiting the
|
||||
number of printer classes that are returned.
|
||||
|
||||
<dt>"printer-info" (text(127)): <span class='info'>CUPS 1.1.7</span>
|
||||
<dd>The client OPTIONALLY supplies this attribute to
|
||||
select which printer classes are returned.
|
||||
|
||||
<dt>"printer-location" (text(127)): <span class='info'>CUPS 1.1.7</span>
|
||||
<dd>The client OPTIONALLY supplies this attribute to
|
||||
select which printer classes are returned.
|
||||
@@ -1091,6 +1087,11 @@ CUPS-Get-Classes request:
|
||||
interested. If the client omits this attribute, the server responds as
|
||||
if this attribute had been supplied with a value of 'all'.
|
||||
|
||||
<dt>"requested-user-name" (name(127)) : <span class='info'>CUPS 1.2</span>
|
||||
|
||||
<dd>The client OPTIONALLY supplies a user name that is used to filter
|
||||
the returned printers.
|
||||
|
||||
</dl>
|
||||
|
||||
<h4>CUPS-Get-Classes Response</h4>
|
||||
|
||||
@@ -12,23 +12,14 @@
|
||||
|
||||
CUPS PostScript file specification for the Common UNIX Printing System (CUPS).
|
||||
|
||||
Copyright 2007-2008 by Apple Inc.
|
||||
Copyright 2006 by Easy Software Products.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Easy Software Products and are protected by Federal
|
||||
copyright law. Distribution and use rights are outlined in the file
|
||||
"LICENSE.txt" which should have been included with this file. If this
|
||||
file is missing or damaged please contact Easy Software Products
|
||||
at:
|
||||
|
||||
Attn: CUPS Licensing Information
|
||||
Easy Software Products
|
||||
44141 Airport View Drive, Suite 204
|
||||
Hollywood, Maryland 20636 USA
|
||||
|
||||
Voice: (301) 373-9600
|
||||
EMail: cups-info@cups.org
|
||||
WWW: http://www.cups.org
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
which should have been included with this file. If this file is
|
||||
file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
-->
|
||||
|
||||
<h2 class='title'><a name='INTRODUCTION'>Introduction</a></h2>
|
||||
@@ -46,16 +37,16 @@ output will work reliably.</p>
|
||||
defacto-standard print job file format/language for UNIX-based
|
||||
applications, it is slowly being phased out in favor of Adobe's
|
||||
Portable Document Format ("PDF") which offers many advantages
|
||||
over PostScript. MacOS X uses PDF as the primary print job file
|
||||
format, and we expect Linux to soon follow. Both PostScript and
|
||||
over PostScript. Mac OS X uses PDF as the primary print job file
|
||||
format and Linux is making the transition. Both PostScript and
|
||||
PDF are complex formats, and we highly recommend using high-level
|
||||
toolkits whenever possible.</blockquote>
|
||||
toolkits whenever possible to create your print jobs.</blockquote>
|
||||
|
||||
<h3>Anatomy of a PostScript File</h3>
|
||||
|
||||
<p>PostScript files are ASCII text files starting with a header
|
||||
line (<tt>%!PS-Adobe-3.0</tt>) followed by a combination of
|
||||
comment lines starting with two percent signs (<tt>%%</tt>) and
|
||||
comment lines starting with the percent sign (<tt>%</tt>) and
|
||||
PostScript code lines. The lines themselves should not exceed 255
|
||||
characters to conform to the DSC. The following short PostScript
|
||||
file produces a box with a smiley face in it:</p>
|
||||
@@ -66,7 +57,13 @@ file produces a box with a smiley face in it:</p>
|
||||
%%Pages: 1
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginSetup
|
||||
% this is where fonts would be embedded
|
||||
%%EndSetup
|
||||
%%Page: (1) 1
|
||||
%%BeginPageSetup
|
||||
% this is where page-specific features would be specified
|
||||
%%EndPageSetup
|
||||
% Draw a black box around the page
|
||||
0 setgray
|
||||
1 setlinewidth
|
||||
@@ -98,23 +95,52 @@ width="445" height="570" alt="Sample PostScript File Output"></td></tr>
|
||||
</table></div>
|
||||
|
||||
|
||||
<h2>Embedding Printer Options</h2>
|
||||
<h2><a name='OPTIONS'>Embedding Printer Options</a></h2>
|
||||
|
||||
<p>There are two main strategies for embedding printer options in PostScript
|
||||
files. The first is to list CUPS options using the <code>%cupsJobTicket</code>
|
||||
comment:</p>
|
||||
|
||||
<pre>
|
||||
%!PS-Adobe-3.0
|
||||
%cupsJobTicket: media=A4 sides=two-sided-long-edge
|
||||
%cupsJobTicket: PrinterOption=foo PrinterOption2=bar
|
||||
...
|
||||
%%EndComments
|
||||
</pre>
|
||||
|
||||
<p>CUPS options apply to the entire job. To apply options to individual pages,
|
||||
use the <code>%%IncludeFeature</code> comment instead:</p>
|
||||
|
||||
<pre>
|
||||
%%Page: label 123
|
||||
%%BeginPageSetup
|
||||
%%IncludeFeature: *PageSize A4
|
||||
%%IncludeFeature: *PrinterOption Foo
|
||||
%%IncludeFeature: *PrinterOption2 Bar
|
||||
%%EndPageSetup
|
||||
...
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>Embedding Fonts and Text</h2>
|
||||
<h2><a name='FONTS'>Embedding Fonts and Text</a></h2>
|
||||
|
||||
<p>Always embed the fonts used by your print job, and for best performance
|
||||
embed the fonts and character encodings in the setup section of the PostScript
|
||||
file. Type 1 and Type 3 fonts are supported by all PostScript printers, while
|
||||
Type 42 (TrueType) and CID fonts are supported by most level 2 and all level 3
|
||||
PostScript printers. Binary font files should always be converted to the
|
||||
corresponding ASCII (hex) encoding to avoid problems when printing over
|
||||
interfaces that do not support binary PostScript.</p>
|
||||
|
||||
|
||||
<h2>Embedding Images</h2>
|
||||
|
||||
|
||||
<blockquote><b>Note:</b> While some printers support arbitrary
|
||||
binary data in PostScript files, we do not recommend this
|
||||
practice because it does not work with all printers or
|
||||
interfaces. In most cases, the Base-85 encoding and compression
|
||||
filters can be used to embed images with very little, if any,
|
||||
increase in data size.</blockquote>
|
||||
|
||||
<h2><a name='IMAGES'>Embedding Images</a></h2>
|
||||
|
||||
<p>The <code>image</code> operator should be used to embed images in PostScript
|
||||
files. Always use ASCII hex or Base-85 encoding for the image data to avoid
|
||||
problems when printing over interfaces that do not support binary PostScript.
|
||||
In most cases, the Base-85 encoding and compression filters can be used to
|
||||
embed images with very little, if any, increase in data size.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
"$Id: spec-ppd.html 7273 2008-01-30 19:21:55Z mike $"
|
||||
"$Id: spec-ppd.html 7444 2008-04-09 22:41:03Z mike $"
|
||||
|
||||
CUPS PPD extensions specification for the Common UNIX Printing System (CUPS).
|
||||
|
||||
Copyright 2007 by Apple Inc.
|
||||
Copyright 2007-2008 by Apple Inc.
|
||||
Copyright 1997-2007 by Easy Software Products.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
@@ -1185,13 +1185,27 @@ text:for%20all%20good%20men%20to%20come%20to%20the%20aid%20of%20their%20country.
|
||||
*cupsIPPReason com.vendor-error/A serious error occurred: "http://www.vendor.com/help"
|
||||
|
||||
<em>*% Map com.vendor-error to text and a local, Apple help book, and remote page</em>
|
||||
*APHelpBook: "file:///Library/Printers/vendor/Help/filename"
|
||||
*APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
|
||||
*cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html
|
||||
help:anchor='com.vendor-error'%20bookID=Vendor%20Help
|
||||
http://www.vendor.com/help"
|
||||
*End
|
||||
</pre>
|
||||
|
||||
<h3><span class='info'>CUPS 1.4</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
|
||||
|
||||
<p class='summary'>*cupsMarkerName/Name Text: ""</p>
|
||||
|
||||
<p>This optional attribute maps <code>marker-names</code> strings that are
|
||||
generated by the driver to human readable text.</p>
|
||||
|
||||
<p>Examples:</p>
|
||||
|
||||
<pre class='command'>
|
||||
<em>*% Map cyanToner to "Cyan Toner"</em>
|
||||
*cupsMarkerName cyanToner/Cyan Toner: ""
|
||||
</pre>
|
||||
|
||||
<h3><span class='info'>CUPS 1.2</span><a name='cupsLanguages'>cupsLanguages</a></h3>
|
||||
|
||||
<p class='summary'>*cupsLanguages: "locale list"</p>
|
||||
@@ -1322,21 +1336,6 @@ PPD file extensions was used. Currently it must be the string
|
||||
|
||||
<h2 class='title'><a name='MACOSX'>Mac OS X Attributes</a></h2>
|
||||
|
||||
<h3><a name='APBookFile'>APBookFile</a></h3>
|
||||
|
||||
<p class='summary'>*APBookFile: "file URL"</p>
|
||||
|
||||
<p>This string attribute specifies the Apple help book file to use when
|
||||
looking up IPP reason codes for this printer driver. The
|
||||
<a href='#cupsIPPReason'><tt>cupsIPPReason</tt></a> attribute maps
|
||||
"help" URIs to this file.</p>
|
||||
|
||||
<p>Example:</p>
|
||||
|
||||
<pre class='command'>
|
||||
*APBookFile: "file:///Library/Printers/vendor/Help/filename"
|
||||
</pre>
|
||||
|
||||
<h3><span class='info'>Mac OS X 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3>
|
||||
|
||||
<p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p>
|
||||
@@ -1445,6 +1444,21 @@ and the <tt>Tumble</tt> page attribute.</p>
|
||||
<p>Also see the related <a href='#cupsBackSide'><tt>cupsBackSide</tt></a>
|
||||
attribute.</p>
|
||||
|
||||
<h3><a name='APHelpBook'>APHelpBook</a></h3>
|
||||
|
||||
<p class='summary'>*APHelpBook: "bundle URL"</p>
|
||||
|
||||
<p>This string attribute specifies the Apple help book bundle to use when
|
||||
looking up IPP reason codes for this printer driver. The
|
||||
<a href='#cupsIPPReason'><tt>cupsIPPReason</tt></a> attribute maps
|
||||
"help" URIs to this file.</p>
|
||||
|
||||
<p>Example:</p>
|
||||
|
||||
<pre class='command'>
|
||||
*APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
|
||||
</pre>
|
||||
|
||||
<h3><span class='info'>Mac OS X 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
|
||||
|
||||
<p class='summary'>*APPrinterIconPath: "/Library/Printers/vendor/filename"</p>
|
||||
@@ -1620,7 +1634,7 @@ the device.</p>
|
||||
|
||||
<li>Added custom option values support</li>
|
||||
|
||||
<li>Added <tt>APBookFile</tt> attribute</li>
|
||||
<li>Added <tt>APHelpBook</tt> attribute</li>
|
||||
|
||||
<li>Added <tt>APDuplexRequiresFlippedMargin</tt> attribute</li>
|
||||
|
||||
|
||||
|
Depois Largura: | Altura: | Tamanho: 1.6 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.3 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.2 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.0 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.8 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.0 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.8 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.3 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.2 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.3 KiB |
|
Depois Largura: | Altura: | Tamanho: 904 B |
|
Depois Largura: | Altura: | Tamanho: 1.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 1018 B |
|
Depois Largura: | Altura: | Tamanho: 1.5 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.0 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.6 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.7 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 2.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.7 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.7 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.5 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.4 KiB |
|
Depois Largura: | Altura: | Tamanho: 686 B |
|
Depois Largura: | Altura: | Tamanho: 2.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.9 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.9 KiB |
|
Depois Largura: | Altura: | Tamanho: 1.9 KiB |