Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 77f938f75e |
@@ -1,25 +1,6 @@
|
||||
CHANGES-1.6.txt
|
||||
---------------
|
||||
|
||||
CHANGES IN CUPS V1.6.4
|
||||
|
||||
- Removed some duplicate size definitions for some ISO sizes that were
|
||||
causing problems (<rdar://problem/14722721>)
|
||||
- The IPP backend did not add the "last-document" attribute
|
||||
(<rdar://problem/114660379>)
|
||||
- Added a SyncOnClose directive to cups-files.conf to force cupsd to
|
||||
call fsync before closing any configuration/state files it writes
|
||||
(<rdar://problem/14523043>)
|
||||
- Added USB quirk rule for Lexmark E238 (<rdar://problem/14493054>)
|
||||
- Closed server connections were still not always detected
|
||||
(<rdar://problem/14484313>)
|
||||
- The libusb-based USB backend now loads its list of quirks from files
|
||||
in /usr/share/cups/usb instead of using a hardcoded table
|
||||
(<rdar://problem/14442769>)
|
||||
- The scheduler did not properly register ICC color profiles with
|
||||
colord (<rdar://problem/14455625>)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.6.3
|
||||
|
||||
- The configure script now prefers Clang over GCC.
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
CHANGES-IPPTOOL.txt - 2014-03-28
|
||||
CHANGES-IPPTOOL.txt - 2013-07-08
|
||||
--------------------------------
|
||||
|
||||
This file provides a list of changes to the ipptool binary distribution posted
|
||||
on cups.org.
|
||||
|
||||
2014-03-28
|
||||
|
||||
- Fixed SSL support on Windows (STR #4358)
|
||||
|
||||
|
||||
2013-07-15
|
||||
2013-07-08
|
||||
|
||||
- New ippfind tool now included with ipptool.
|
||||
- Added support for automatically extending the timeout when all of the
|
||||
|
||||
+2
-156
@@ -1,159 +1,5 @@
|
||||
CHANGES.txt - 1.7.3 - 2014-05-27
|
||||
--------------------------------
|
||||
|
||||
CHANGES IN CUPS V1.7.3
|
||||
|
||||
- Added Brazilian Portuguese translation (STR #4409)
|
||||
- Fixed mapping of OutputBin values such as "Tray1"
|
||||
(<rdar://problem/16685606>)
|
||||
- Several ippGet* functions incorrectly returned -1 instead of 0 on
|
||||
error.
|
||||
- The cupsGetResponse function did not work properly with
|
||||
CUPS_HTTP_DEFAULT (<rdar://problem/16762593>)
|
||||
- The IPP backend did not abort a job when the printer did not validate
|
||||
the supplied options (<rdar://problem/16836752>)
|
||||
- Fixed an authentication race condition in cupsSendRequest (STR #4403)
|
||||
- The scheduler did not add the "job-hold-until-specified" reason when
|
||||
holding a job using the lp command (STR #4405)
|
||||
- The CUPS headers incorrectly needed libdispatch for blocks support
|
||||
(STR #4397)
|
||||
- The configure script incorrectly added libgcrypt as a GNU TLS
|
||||
dependency (STR #4399)
|
||||
- CUPS did not compile when Avahi or mDNSResponder was not present
|
||||
(STR #4402)
|
||||
- cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
|
||||
(STR #4414)
|
||||
- Auto-typing of PWG Raster files did not work (STR #4417)
|
||||
- IPP queues using hardcoded credentials would ask for credentials
|
||||
(STR #4371)
|
||||
- Dates in non-UTF-8 locales did not display correctly (STR #4388)
|
||||
- The RPM spec file now looks for libusb-devel 1.0 or later.
|
||||
- Fixed the "create-printer-subscription.test" file for IPPTOOL
|
||||
(STR #4420)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.7.2
|
||||
|
||||
- Security: The scheduler now blocks URLs containing embedded HTML
|
||||
(STR #4356)
|
||||
- Documentation fixes (STR #3259, STR #4346, STR #4355)
|
||||
- Fixed the Japanese localization (STR #4385)
|
||||
- Added a German localization (STR #4363)
|
||||
- The cupsfilter command incorrectly read the cupsd.conf file; it now
|
||||
reads the cups-files.conf file instead.
|
||||
- Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
|
||||
- Fixed SSL support on Windows (STR #4358)
|
||||
- Fixed documentation and naming of Create-Job/Printer-Subscriptions
|
||||
operations (STR #4389)
|
||||
- Phone numbers in fax jobs were not properly filtered for IPP FaxOut
|
||||
(<rdar://problem/16351701>)
|
||||
- Fixed a memory leak in the label printer driver (STR #4393)
|
||||
- Updated Linux "relro" support (STR #4349)
|
||||
- cupsEnumDests did not set the "is_default" field (STR #4332)
|
||||
- cupsDoIORequest could miss the server status, causing failed lpadmin
|
||||
and other administrative commands (STR #4386)
|
||||
- cupsEnumDests didn't always call the callback function (STR #4380)
|
||||
- "lp -i job-id -H hold" did not work (STR #4401)
|
||||
- CUPS didn't compile on older platforms (STR #4338)
|
||||
- Several libcups files did not have the Apple license exception
|
||||
notice (STR #4361)
|
||||
- Fixed a D-BUS threading issue that caused the scheduler to crash
|
||||
(STR #4347)
|
||||
- The scheduler now automatically reconnects to Avahi as needed
|
||||
(STR #4370, STR #4373)
|
||||
- The scheduler did not handle GET requests for the log files properly
|
||||
(STR #3265)
|
||||
- The dnssd backend did not always report all discovered printers using
|
||||
Avahi (STR #4365)
|
||||
- The Zebra printer driver did not properly handle negative "label top"
|
||||
values (STR #4354)
|
||||
- The scheduler did not always update the MakeModel value in
|
||||
printers.conf after updating the driver (STR #4264)
|
||||
- The LPD mini daemon did not support print jobs larger than 2GB
|
||||
(STR #4351)
|
||||
- Fixed a bug in the status reading code when sending a compressed data
|
||||
stream to an IPP printer/server (<rdar://problem/16019623>)
|
||||
- The IPP backend might not include all job attributes in Validate-Job
|
||||
operations (<rdar://problem/16025435>)
|
||||
- Fixed some clang-reported issues (<rdar://problem/15936066>)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.7.1
|
||||
|
||||
- Security: the lppasswd program incorrectly used settings from
|
||||
~/.cups/client.conf (STR #4319)
|
||||
- Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
|
||||
- Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
|
||||
- Cleaned up some job logging in the scheduler
|
||||
(<rdar://problem/15332672>)
|
||||
- ATTR messages could cause string pool memory corruption in the
|
||||
scheduler (<rdar://problem/15382819>)
|
||||
- The RPM spec file did not list the build requirements; this was on
|
||||
purpose, but now we are listing the Red Hat package names
|
||||
(<rdar://problem/15375760>, STR #4322)
|
||||
- Printing to a raw queue could result in corrupt output due to
|
||||
opportunistic compression (<rdar://problem/15008524>)
|
||||
- The GNU TLS support code triggered many compiler warnings due to the
|
||||
use of old GNU TLS compatibility type names
|
||||
(<rdar://problem/15392966>)
|
||||
- The "make check" test suite did not work on Linux without the
|
||||
cups-filters package installed (<rdar://problem/14292998>)
|
||||
- Japanese PPDs using with the Shift-JIS encoding did not work
|
||||
(<rdar://problem/15427759>)
|
||||
- "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
|
||||
- The libusb-based USB backend incorrectly used write timeouts
|
||||
(<rdar://problem/15564888>)
|
||||
- Shared printers could become inaccessible after a few days on OS X
|
||||
(<rdar://problem/15426838>)
|
||||
- The IPP backend did not wait for a busy printer to become available
|
||||
before attempting to print (<rdar://problem/15465667>)
|
||||
- CUPS did not support "auto-monochrome" or "process-monochrome" for the
|
||||
"print-color-mode" option (<rdar://problem/15482520>)
|
||||
- Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
|
||||
- lpq and lpstat did not list jobs in the correct order when priorities
|
||||
were specified (STR #4326)
|
||||
- The D-BUS notifier did not remove its lockfile (STR #4314)
|
||||
- CUPS incorrectly used the USER environment variable when the name did
|
||||
not match the user ID (STR #4327)
|
||||
|
||||
|
||||
CHANGES IN CUPS V1.7.0
|
||||
|
||||
- Updated Japanese localization.
|
||||
- The lpadmin command did not send the PPD name from the "-m" option
|
||||
(<rdar://problem/15264697>)
|
||||
- Network backends now use the prtMarkerSuppliesClass property to
|
||||
determine the direction of supply level values
|
||||
(<rdar://problem/14302628>)
|
||||
- The scheduler did not remove backup PPD files when a printer was
|
||||
deleted (<rdar://problem/15065555>)
|
||||
- The scheduler incorrectly responded to HEAD requests when the web
|
||||
interface was disabled (<rdar://problem/15090332>)
|
||||
- The scheduler did not respond using the hostname specified by the
|
||||
client (<rdar://problem/14583574>)
|
||||
- Fax queues did not work when shared via Bonjour
|
||||
(<rdar://problem/14498310>)
|
||||
- Error messages from the scheduler were not localized using the
|
||||
language specified in the client's IPP request
|
||||
(<rdar://problem/14128011>)
|
||||
- Added an Italian localization (<rdar://problem/14481578>)
|
||||
- Fixed a couple memory leaks in ippfind that were reported by Clang.
|
||||
- Fixed a compile issue on 64-bit Linux with Clang - need to use the
|
||||
-pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
|
||||
- The ippfind utility reported the wrong port numbers when compiled
|
||||
against Avahi (<rdar://problem/14508324>)
|
||||
- httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
|
||||
automatically reconnect if the server closed the connecion after the
|
||||
previous response.
|
||||
- Fixed a compile error in libcups (<rdar://problem/14467141>)
|
||||
- The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
|
||||
environment variable to the filters or backend
|
||||
(<rdar://problem/14355011>)
|
||||
- The cups-exec helper program could fail randomly on OS X due to
|
||||
sandbox violations when closing excess file descriptors
|
||||
(<rdar://problem/14421943>)
|
||||
- The scheduler incorrectly did not use the kqueue interface on OS X.
|
||||
|
||||
CHANGES.txt - 1.7rc1 - 2013-07-10
|
||||
---------------------------------
|
||||
|
||||
CHANGES IN CUPS V1.7rc1
|
||||
|
||||
|
||||
+1
-2
@@ -1,4 +1,4 @@
|
||||
CREDITS.txt - 2013-07-23
|
||||
CREDITS.txt - 2012-07-16
|
||||
------------------------
|
||||
|
||||
Few projects are completed by one person, and CUPS is no exception. We'd
|
||||
@@ -39,7 +39,6 @@ like to thank the following individuals for their contributions:
|
||||
Vincenzo Reale - Italian localization.
|
||||
Petter Reinholdtsen - HP-UX compiler stuff.
|
||||
Juan Pablo González Riopedre - Spanish localization.
|
||||
Giovanni Scafora - Italian localization.
|
||||
Opher Shachar - Hebrew localization.
|
||||
Stuart Stevens - HP JetDirect IPP information.
|
||||
Andrea Suatoni - IRIX desktop integration and testing.
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
INSTALL - CUPS v1.7.3 - 2014-05-27
|
||||
----------------------------------
|
||||
INSTALL - CUPS v1.7rc1 - 2013-07-08
|
||||
-----------------------------------
|
||||
|
||||
This file describes how to compile and install CUPS from source code. For more
|
||||
information on CUPS see the file called "README.txt". A complete change log can
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
IPPTOOL.txt - 2014-04-10
|
||||
IPPTOOL.txt - 2013-07-08
|
||||
------------------------
|
||||
|
||||
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
|
||||
@@ -220,7 +220,7 @@ REPORTING BUGS
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2014 by Apple Inc. CUPS and the CUPS logo are
|
||||
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
+3
-4
@@ -1,9 +1,9 @@
|
||||
#
|
||||
# "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Common makefile definitions for CUPS.
|
||||
#
|
||||
# Copyright 2007-2013 by Apple Inc.
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -218,7 +218,6 @@ SERVERBIN = $(BUILDROOT)@CUPS_SERVERBIN@
|
||||
SERVERROOT = $(BUILDROOT)@CUPS_SERVERROOT@
|
||||
SMFMANIFESTDIR = @SMFMANIFESTDIR@
|
||||
STATEDIR = $(BUILDROOT)@CUPS_STATEDIR@
|
||||
USBQUIRKS = @USBQUIRKS@
|
||||
XINETD = @XINETD@
|
||||
|
||||
MAN1EXT = @MAN1EXT@
|
||||
@@ -261,5 +260,5 @@ DBUSDIR = @DBUSDIR@
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
|
||||
# End of "$Id$"
|
||||
#
|
||||
|
||||
+4
-27
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Top-level Makefile for CUPS.
|
||||
#
|
||||
@@ -128,11 +128,8 @@ depend:
|
||||
|
||||
|
||||
#
|
||||
# Run the Clang static code analysis tool on the sources, available here:
|
||||
#
|
||||
# http://clang-analyzer.llvm.org
|
||||
#
|
||||
# At least checker-231 is required.
|
||||
# Run the clang.llvm.org static code analysis tool on the C sources.
|
||||
# (at least checker-231 is required for scan-build to work this way)
|
||||
#
|
||||
|
||||
.PHONY: clang clang-changes
|
||||
@@ -143,26 +140,6 @@ clang-changes:
|
||||
scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all
|
||||
|
||||
|
||||
#
|
||||
# Run the STACK tool on the sources, available here:
|
||||
#
|
||||
# http://css.csail.mit.edu/stack/
|
||||
#
|
||||
# Do the following to pass options to configure:
|
||||
#
|
||||
# make CONFIGFLAGS="--foo --bar" stack
|
||||
#
|
||||
|
||||
.PHONY: stack
|
||||
stack:
|
||||
stack-build ./configure $(CONFIGFLAGS)
|
||||
stack-build $(MAKE) $(MFLAGS) clean all
|
||||
poptck
|
||||
$(MAKE) $(MFLAGS) distclean
|
||||
$(RM) */*.ll
|
||||
$(RM) */*.ll.out
|
||||
|
||||
|
||||
#
|
||||
# Generate a ctags file...
|
||||
#
|
||||
@@ -352,5 +329,5 @@ dist: all
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+11
-3
@@ -1,5 +1,13 @@
|
||||
README - CUPS v1.7.3 - 2014-05-27
|
||||
---------------------------------
|
||||
README - CUPS v1.7rc1 - 2013-07-08
|
||||
----------------------------------
|
||||
|
||||
*******************************************************
|
||||
*******************************************************
|
||||
**** ****
|
||||
**** PRE-RELEASE SOFTWARE - USE AT YOUR OWN RISK ****
|
||||
**** ****
|
||||
*******************************************************
|
||||
*******************************************************
|
||||
|
||||
Looking for compile instructions? Read the file "INSTALL.txt" instead...
|
||||
|
||||
@@ -149,7 +157,7 @@ PRINTING FILES
|
||||
|
||||
LEGAL STUFF
|
||||
|
||||
CUPS is Copyright 2007-2014 by Apple Inc. CUPS and the CUPS logo are
|
||||
CUPS is Copyright 2007-2013 by Apple Inc. CUPS and the CUPS logo are
|
||||
trademarks of Apple Inc.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
+3
-8
@@ -1,9 +1,9 @@
|
||||
#
|
||||
# "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Backend makefile for CUPS.
|
||||
#
|
||||
# Copyright 2007-2013 by Apple Inc.
|
||||
# Copyright 2007-2012 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
@@ -109,11 +109,6 @@ install: all install-data install-headers install-libs install-exec
|
||||
#
|
||||
|
||||
install-data:
|
||||
if test "x$(USBQUIRKS)" != x; then \
|
||||
echo Installing USB quirks in $(USBQUIRKS); \
|
||||
$(INSTALL_DIR) -m 755 $(USBQUIRKS); \
|
||||
$(INSTALL_DATA) org.cups.usb-quirks $(USBQUIRKS); \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
@@ -301,5 +296,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Backend support definitions for CUPS.
|
||||
*
|
||||
@@ -334,5 +334,5 @@ extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+3
-12
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* DNS-SD discovery backend for CUPS.
|
||||
*
|
||||
@@ -95,7 +95,6 @@ static int job_canceled = 0;
|
||||
static AvahiSimplePoll *simple_poll = NULL;
|
||||
/* Poll information */
|
||||
static int got_data = 0; /* Got data from poll? */
|
||||
static int browsers = 0; /* Number of running browsers */
|
||||
#endif /* HAVE_AVAHI */
|
||||
|
||||
|
||||
@@ -346,7 +345,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
return (1);
|
||||
}
|
||||
|
||||
browsers = 6;
|
||||
avahi_service_browser_new(client, AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC,
|
||||
"_fax-ipp._tcp", NULL, 0,
|
||||
@@ -560,11 +558,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
fprintf(stderr, "DEBUG: sent=%d, count=%d\n", sent, count);
|
||||
|
||||
#ifdef HAVE_AVAHI
|
||||
if (sent == cupsArrayCount(devices) && browsers == 0)
|
||||
#else
|
||||
if (sent == cupsArrayCount(devices))
|
||||
#endif /* HAVE_AVAHI */
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -716,12 +710,9 @@ browse_callback(
|
||||
break;
|
||||
|
||||
case AVAHI_BROWSER_REMOVE:
|
||||
case AVAHI_BROWSER_ALL_FOR_NOW:
|
||||
case AVAHI_BROWSER_CACHE_EXHAUSTED:
|
||||
break;
|
||||
|
||||
case AVAHI_BROWSER_ALL_FOR_NOW:
|
||||
browsers--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1329,5 +1320,5 @@ unquote(char *dst, /* I - Destination buffer */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* IEEE-1284 support functions for CUPS.
|
||||
*
|
||||
@@ -487,5 +487,5 @@ backendGetMakeModel(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+73
-103
@@ -1,18 +1,36 @@
|
||||
/*
|
||||
* "$Id: ipp.c 11890 2014-05-22 13:59:21Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* IPP backend for CUPS.
|
||||
* IPP backend for CUPS.
|
||||
*
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
* "LICENSE" which should have been included with this file. If this
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Send a file to the printer or server.
|
||||
* cancel_job() - Cancel a print job.
|
||||
* check_printer_state() - Check the printer state.
|
||||
* monitor_printer() - Monitor the printer state.
|
||||
* new_request() - Create a new print creation or validation
|
||||
* request.
|
||||
* password_cb() - Disable the password prompt for
|
||||
* cupsDoFileRequest().
|
||||
* quote_string() - Quote a string value.
|
||||
* report_attr() - Report an IPP attribute value.
|
||||
* report_printer_state() - Report the printer state.
|
||||
* run_as_user() - Run the IPP backend as the printing user.
|
||||
* sigterm_handler() - Handle 'terminate' signals that stop the backend.
|
||||
* timeout_cb() - Handle HTTP timeouts.
|
||||
* update_reasons() - Update the printer-state-reasons values.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -91,10 +109,8 @@ static const char * const jattrs[] = /* Job attributes we want */
|
||||
"job-state",
|
||||
"job-state-reasons"
|
||||
};
|
||||
static int job_canceled = 0,
|
||||
static int job_canceled = 0;
|
||||
/* Job cancelled? */
|
||||
uri_credentials = 0;
|
||||
/* Credentials supplied in URI? */
|
||||
static char username[256] = "",
|
||||
/* Username for device URI */
|
||||
*password = NULL;
|
||||
@@ -117,7 +133,6 @@ static const char * const pattrs[] = /* Printer attributes we want */
|
||||
"media-col-supported",
|
||||
"multiple-document-handling-supported",
|
||||
"operations-supported",
|
||||
"print-color-mode-supported",
|
||||
"printer-alert",
|
||||
"printer-alert-description",
|
||||
"printer-is-accepting-jobs",
|
||||
@@ -165,7 +180,7 @@ static ipp_t *new_request(ipp_op_t op, int version, const char *uri,
|
||||
ppd_file_t *ppd,
|
||||
ipp_attribute_t *media_col_sup,
|
||||
ipp_attribute_t *doc_handling_sup,
|
||||
ipp_attribute_t *print_color_mode_sup);
|
||||
int print_color_mode);
|
||||
static const char *password_cb(const char *prompt, http_t *http,
|
||||
const char *method, const char *resource,
|
||||
int *user_data);
|
||||
@@ -252,12 +267,12 @@ main(int argc, /* I - Number of command-line args */
|
||||
ipp_attribute_t *doc_handling_sup; /* multiple-document-handling-supported */
|
||||
ipp_attribute_t *printer_state; /* printer-state attribute */
|
||||
ipp_attribute_t *printer_accepting; /* printer-is-accepting-jobs */
|
||||
ipp_attribute_t *print_color_mode_sup;/* Does printer support print-color-mode? */
|
||||
int create_job = 0, /* Does printer support Create-Job? */
|
||||
get_job_attrs = 0, /* Does printer support Get-Job-Attributes? */
|
||||
send_document = 0, /* Does printer support Send-Document? */
|
||||
validate_job = 0, /* Does printer support Validate-Job? */
|
||||
copies, /* Number of copies for job */
|
||||
print_color_mode = 0; /* Does printer support print-color-mode? */
|
||||
int copies, /* Number of copies for job */
|
||||
copies_remaining; /* Number of copies remaining */
|
||||
const char *content_type, /* CONTENT_TYPE environment variable */
|
||||
*final_content_type, /* FINAL_CONTENT_TYPE environment var */
|
||||
@@ -632,7 +647,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
*password++ = '\0';
|
||||
|
||||
cupsSetUser(username);
|
||||
uri_credentials = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1027,8 +1041,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
delay = _cupsNextDelay(delay, &prev_delay);
|
||||
|
||||
ippDelete(supported);
|
||||
supported = NULL;
|
||||
ipp_status = IPP_STATUS_ERROR_BUSY;
|
||||
supported = NULL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -1104,7 +1117,9 @@ main(int argc, /* I - Number of command-line args */
|
||||
media_col_sup->values[i].string.text);
|
||||
}
|
||||
|
||||
print_color_mode_sup = ippFindAttribute(supported, "print-color-mode-supported", IPP_TAG_KEYWORD);
|
||||
print_color_mode = ippFindAttribute(supported,
|
||||
"print-color-mode-supported",
|
||||
IPP_TAG_KEYWORD) != NULL;
|
||||
|
||||
if ((operations_sup = ippFindAttribute(supported, "operations-supported",
|
||||
IPP_TAG_ENUM)) != NULL)
|
||||
@@ -1386,7 +1401,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
request = new_request(IPP_VALIDATE_JOB, version, uri, argv[2],
|
||||
monitor.job_name, num_options, options, compression,
|
||||
copies_sup ? copies : 1, document_format, pc, ppd,
|
||||
media_col_sup, doc_handling_sup, print_color_mode_sup);
|
||||
media_col_sup, doc_handling_sup, print_color_mode);
|
||||
|
||||
response = cupsDoRequest(http, request, resource);
|
||||
|
||||
@@ -1413,7 +1428,6 @@ main(int argc, /* I - Number of command-line args */
|
||||
sleep(10);
|
||||
}
|
||||
else if (ipp_status == IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED ||
|
||||
ipp_status == IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES ||
|
||||
ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED ||
|
||||
ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED ||
|
||||
ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED ||
|
||||
@@ -1473,7 +1487,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
version, uri, argv[2], monitor.job_name, num_options,
|
||||
options, compression, copies_sup ? copies : 1,
|
||||
document_format, pc, ppd, media_col_sup,
|
||||
doc_handling_sup, print_color_mode_sup);
|
||||
doc_handling_sup, print_color_mode);
|
||||
|
||||
/*
|
||||
* Do the request...
|
||||
@@ -1685,8 +1699,8 @@ main(int argc, /* I - Number of command-line args */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
|
||||
"requesting-user-name", NULL, argv[2]);
|
||||
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
|
||||
(i + 1) >= num_files);
|
||||
if ((i + 1) >= num_files)
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
|
||||
|
||||
if (document_format)
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
|
||||
@@ -2486,8 +2500,7 @@ new_request(
|
||||
ppd_file_t *ppd, /* I - PPD file data */
|
||||
ipp_attribute_t *media_col_sup, /* I - media-col-supported values */
|
||||
ipp_attribute_t *doc_handling_sup, /* I - multiple-document-handling-supported values */
|
||||
ipp_attribute_t *print_color_mode_sup)
|
||||
/* I - Printer supports print-color-mode */
|
||||
int print_color_mode) /* I - Printer supports print-color-mode */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
ipp_t *request; /* Request data */
|
||||
@@ -2662,14 +2675,6 @@ new_request(
|
||||
strlen(keyword));
|
||||
break;
|
||||
default :
|
||||
if (!strcmp(mandatory, "print-color-mode") && !strcmp(keyword, "monochrome"))
|
||||
{
|
||||
if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
|
||||
keyword = "auto-monochrome";
|
||||
else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
|
||||
keyword = "process-monochrome";
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_JOB, value_tag, mandatory,
|
||||
NULL, keyword);
|
||||
break;
|
||||
@@ -2744,31 +2749,21 @@ new_request(
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "output-bin",
|
||||
NULL, keyword);
|
||||
|
||||
color_attr_name = print_color_mode_sup ? "print-color-mode" : "output-mode";
|
||||
color_attr_name = print_color_mode ? "print-color-mode" : "output-mode";
|
||||
|
||||
if ((keyword = cupsGetOption("print-color-mode", num_options,
|
||||
options)) == NULL)
|
||||
{
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
|
||||
{
|
||||
if (!_cups_strcasecmp(choice->choice, "Gray"))
|
||||
keyword = "monochrome";
|
||||
else
|
||||
keyword = "color";
|
||||
}
|
||||
}
|
||||
|
||||
if (keyword && !strcmp(keyword, "monochrome"))
|
||||
{
|
||||
if (ippContainsString(print_color_mode_sup, "auto-monochrome"))
|
||||
keyword = "auto-monochrome";
|
||||
else if (ippContainsString(print_color_mode_sup, "process-monochrome") && !ippContainsString(print_color_mode_sup, "monochrome"))
|
||||
keyword = "process-monochrome";
|
||||
}
|
||||
|
||||
if (keyword)
|
||||
options)) != NULL)
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, color_attr_name,
|
||||
NULL, keyword);
|
||||
else if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
|
||||
{
|
||||
if (!_cups_strcasecmp(choice->choice, "Gray"))
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
|
||||
color_attr_name, NULL, "monochrome");
|
||||
else
|
||||
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD,
|
||||
color_attr_name, NULL, "color");
|
||||
}
|
||||
|
||||
if ((keyword = cupsGetOption("print-quality", num_options,
|
||||
options)) != NULL)
|
||||
@@ -2881,39 +2876,19 @@ new_request(
|
||||
if ((keyword = cupsGetOption("phone", num_options, options)) != NULL)
|
||||
{
|
||||
ipp_t *destination; /* destination collection */
|
||||
char phone[1024], /* Phone number string */
|
||||
*ptr, /* Pointer into string */
|
||||
tel_uri[1024]; /* tel: URI */
|
||||
static const char * const allowed = "0123456789#*-+.()";
|
||||
/* Allowed characters */
|
||||
char tel_uri[1024]; /* tel: URI */
|
||||
|
||||
destination = ippNew();
|
||||
|
||||
/*
|
||||
* Unescape and filter out spaces and other characters that are not
|
||||
* allowed in a tel: URI.
|
||||
*/
|
||||
|
||||
_httpDecodeURI(phone, keyword, sizeof(phone));
|
||||
for (ptr = phone; *ptr;)
|
||||
{
|
||||
if (!strchr(allowed, *ptr))
|
||||
_cups_strcpy(ptr, ptr + 1);
|
||||
else
|
||||
ptr ++;
|
||||
}
|
||||
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel", NULL, NULL, 0, phone);
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri", NULL, tel_uri);
|
||||
httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel",
|
||||
NULL, NULL, 0, keyword);
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri",
|
||||
NULL, tel_uri);
|
||||
|
||||
if ((keyword = cupsGetOption("faxPrefix", num_options,
|
||||
options)) != NULL && *keyword)
|
||||
{
|
||||
char predial[1024]; /* Pre-dial string */
|
||||
|
||||
_httpDecodeURI(predial, keyword, sizeof(predial));
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT, "pre-dial-string", NULL, predial);
|
||||
}
|
||||
ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT,
|
||||
"pre-dial-string", NULL, keyword);
|
||||
|
||||
ippAddCollection(request, IPP_TAG_JOB, "destination-uris", destination);
|
||||
ippDelete(destination);
|
||||
@@ -2989,31 +2964,26 @@ password_cb(const char *prompt, /* I - Prompt (not used) */
|
||||
(void)method;
|
||||
(void)resource;
|
||||
|
||||
if (!uri_credentials)
|
||||
/*
|
||||
* Remember that we need to authenticate...
|
||||
*/
|
||||
|
||||
auth_info_required = "username,password";
|
||||
|
||||
if (httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "username",
|
||||
def_username))
|
||||
{
|
||||
/*
|
||||
* Remember that we need to authenticate...
|
||||
*/
|
||||
char quoted[HTTP_MAX_VALUE * 2 + 4];
|
||||
/* Quoted string */
|
||||
|
||||
auth_info_required = "username,password";
|
||||
|
||||
if (httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "username",
|
||||
def_username))
|
||||
{
|
||||
char quoted[HTTP_MAX_VALUE * 2 + 4];
|
||||
/* Quoted string */
|
||||
|
||||
fprintf(stderr, "ATTR: auth-info-default=%s,\n",
|
||||
quote_string(def_username, quoted, sizeof(quoted)));
|
||||
}
|
||||
fprintf(stderr, "ATTR: auth-info-default=%s,\n",
|
||||
quote_string(def_username, quoted, sizeof(quoted)));
|
||||
}
|
||||
|
||||
if (password && *password && *password_tries < 3)
|
||||
{
|
||||
(*password_tries) ++;
|
||||
|
||||
cupsSetUser(username);
|
||||
|
||||
return (password);
|
||||
}
|
||||
else
|
||||
@@ -3056,7 +3026,7 @@ quote_string(const char *s, /* I - String */
|
||||
{
|
||||
if (*s == '\\' || *s == '\"' || *s == '\'')
|
||||
{
|
||||
if (qptr < (qend - 4))
|
||||
if (q < (qend - 3))
|
||||
{
|
||||
*qptr++ = '\\';
|
||||
*qptr++ = '\\';
|
||||
@@ -3709,5 +3679,5 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
|
||||
}
|
||||
|
||||
/*
|
||||
* End of "$Id: ipp.c 11890 2014-05-22 13:59:21Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Line Printer Daemon backend for CUPS.
|
||||
*
|
||||
@@ -1331,5 +1331,5 @@ sigterm_handler(int sig) /* I - Signal */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Common backend network APIs for CUPS.
|
||||
*
|
||||
@@ -322,5 +322,5 @@ backendNetworkSideCB(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,214 +0,0 @@
|
||||
# USB backend 'quirks' file.
|
||||
#
|
||||
# This file lists known issues with various vendors or printers. Each
|
||||
# line contains either a comment (starting with #) or the USB vendor ID,
|
||||
# product ID (omit for all vendor products), and a list of known issues:
|
||||
#
|
||||
# blacklist The printer is not functional with the USB backend.
|
||||
# no-reattach Do no re-attach usblp kernel module after printing.
|
||||
# soft-reset Do a soft reset after printing for cleanup.
|
||||
# unidir Only supported unidirectional I/O
|
||||
# usb-init Needs vendor USB initialization string.
|
||||
# vendor-class Uses vendor-specific class or subclass.
|
||||
# whitelist The printer is functional with the USB backend.
|
||||
|
||||
# HP DeskJet 895C
|
||||
0x03f0 0x0004 unidir
|
||||
|
||||
# HP DeskJet 880C
|
||||
0x03f0 0x0104 unidir
|
||||
|
||||
# HP DeskJet 815C
|
||||
0x03f0 0x0204 unidir
|
||||
|
||||
# HP DeskJet 810C/812C
|
||||
0x03f0 0x0304 unidir
|
||||
|
||||
# HP DeskJet 830C
|
||||
0x03f0 0x0404 unidir
|
||||
|
||||
# HP DeskJet 885C
|
||||
0x03f0 0x0504 unidir
|
||||
|
||||
# HP DeskJet 840C
|
||||
0x03f0 0x0604 unidir
|
||||
|
||||
# HP DeskJet 816C
|
||||
0x03f0 0x0804 unidir
|
||||
|
||||
# HP Deskjet 959C
|
||||
0x03f0 0x1104 unidir
|
||||
|
||||
# NEC Picty900 (HP OEM)
|
||||
0x0409 0xefbe unidir
|
||||
|
||||
# NEC Picty760 (HP OEM)
|
||||
0x0409 0xbef4 unidir
|
||||
|
||||
# NEC Picty920 (HP OEM)
|
||||
0x0409 0xf0be unidir
|
||||
|
||||
# NEC Picty800 (HP OEM)
|
||||
0x0409 0xf1be unidir
|
||||
|
||||
# Lexmark International, Inc. (e250d), https://bugs.launchpad.net/bugs/1084164
|
||||
0x043d 0x00f3 no-reattach
|
||||
|
||||
# Kyocera Mita FS 820, by zut <kernel@zut.de>
|
||||
0x0482 0x0010 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP6000D Printer, https://bugs.launchpad.net/bugs/1160638
|
||||
0x04a9 0x1095 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP4200 Printer, http://www.cups.org/str.php?L4155
|
||||
0x04a9 0x10a2 unidir
|
||||
|
||||
# Canon, Inc. PIXMA iP4300 Printer, https://bugs.launchpad.net/bugs/1032385
|
||||
0x04a9 0x10b6 unidir
|
||||
|
||||
# Canon, Inc. MP210 https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53
|
||||
0x04a9 0x1721 unidir
|
||||
|
||||
# Canon, Inc. MP500 Printer, https://bugs.launchpad.net/bugs/1032456
|
||||
0x04a9 0x170c unidir
|
||||
|
||||
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
|
||||
0x04a9 0x1717 unidir
|
||||
|
||||
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
|
||||
0x04a9 0x173d unidir
|
||||
|
||||
# Canon, Inc. MP560 Printer, http://www.cups.org/str.php?L4155
|
||||
0x04a9 0x173e unidir
|
||||
|
||||
# Canon, Inc. MF4150 Printer, https://bugs.launchpad.net/bugs/1160638
|
||||
0x04a9 0x26a3 no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1430 Laser Printer, https://bugs.launchpad.net/bugs/1038695
|
||||
0x04f9 0x001a no-reattach
|
||||
|
||||
# Brother Industries, Ltd HL-1440 Laser Printer, https://bugs.launchpad.net/bugs/1000253
|
||||
0x04f9 0x000d no-reattach unidir
|
||||
|
||||
# Brother Industries, Ltd HL-1450 Laser Printer, https://bugs.launchpad.net/bugs/1000253
|
||||
0x04f9 0x000e no-reattach unidir
|
||||
|
||||
# Oki Data Corp. Okipage 14ex Printer, https://bugs.launchpad.net/bugs/872483
|
||||
0x06bc 0x000b no-reattach
|
||||
|
||||
# Oki Data Corp. B410d, https://bugs.launchpad.net/bugs/872483
|
||||
0x06bc 0x01c7 no-reattach
|
||||
|
||||
# Seiko Epson Corp. Stylus Color 740 / Photo 750, http://bugs.debian.org/697970
|
||||
0x04b8 0x0001 no-reattach unidir
|
||||
|
||||
# Seiko Epson Corp. Stylus Color 670, https://bugs.launchpad.net/bugs/872483
|
||||
0x04b8 0x0005 no-reattach
|
||||
|
||||
# Seiko Epson Receipt Printer M129C
|
||||
0x04b8 0x0202 vendor-class
|
||||
|
||||
# Prolific Technology, Inc. PL2305 Parallel Port (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485
|
||||
0x067b 0x2305 no-reattach soft-reset unidir
|
||||
|
||||
# Xerox Phaser 3124 https://bugzilla.redhat.com/show_bug.cgi?id=867392
|
||||
0x0924 0x3ce9 no-reattach
|
||||
|
||||
# Xerox WorkCentre 3210 https://bugs.launchpad.net/bugs/1102470
|
||||
0x0924 0x4293 no-reattach
|
||||
|
||||
# QinHeng Electronics CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253
|
||||
0x1a86 0x7584 no-reattach
|
||||
|
||||
# All Samsung devices, https://bugs.launchpad.net/bugs/1032456
|
||||
0x04e8 soft-reset
|
||||
|
||||
# All Zebra devices, https://bugs.launchpad.net/bugs/1001028
|
||||
0x0a5f unidir
|
||||
|
||||
# Canon CP-10
|
||||
0x04a9 0x304a blacklist
|
||||
|
||||
# Canon CP-100
|
||||
0x04a9 0x3063 blacklist
|
||||
|
||||
# Canon CP-200
|
||||
0x04a9 0x307c blacklist
|
||||
|
||||
# Canon CP-300
|
||||
0x04a9 0x307d blacklist
|
||||
|
||||
# Canon CP-220
|
||||
0x04a9 0x30bd blacklist
|
||||
|
||||
# Canon CP-330
|
||||
0x04a9 0x30be blacklist
|
||||
|
||||
# Canon SELPHY CP400
|
||||
0x04a9 0x30f6 blacklist
|
||||
|
||||
# Canon SELPHY CP600
|
||||
0x04a9 0x310b blacklist
|
||||
|
||||
# Canon SELPHY CP710
|
||||
0x04a9 0x3127 blacklist
|
||||
|
||||
# Canon SELPHY CP510
|
||||
0x04a9 0x3128 blacklist
|
||||
|
||||
# Canon SELPHY ES1
|
||||
0x04a9 0x3141 blacklist
|
||||
|
||||
# Canon SELPHY CP730
|
||||
0x04a9 0x3142 blacklist
|
||||
|
||||
# Canon SELPHY CP720
|
||||
0x04a9 0x3143 blacklist
|
||||
|
||||
# Canon SELPHY CP750
|
||||
0x04a9 0x3170 blacklist
|
||||
|
||||
# Canon SELPHY CP740
|
||||
0x04a9 0x3171 blacklist
|
||||
|
||||
# Canon SELPHY ES2
|
||||
0x04a9 0x3185 blacklist
|
||||
|
||||
# Canon SELPHY ES20
|
||||
0x04a9 0x3186 blacklist
|
||||
|
||||
# Canon SELPHY CP770
|
||||
0x04a9 0x31aa blacklist
|
||||
|
||||
# Canon SELPHY CP760
|
||||
0x04a9 0x31ab blacklist
|
||||
|
||||
# Canon SELPHY ES30
|
||||
0x04a9 0x31b0 blacklist
|
||||
|
||||
# Canon SELPHY CP780
|
||||
0x04a9 0x31dd blacklist
|
||||
|
||||
# Canon SELPHY ES40
|
||||
0x04a9 0x31ee blacklist
|
||||
|
||||
# Canon SELPHY CP800
|
||||
0x04a9 0x3214 blacklist
|
||||
|
||||
# Canon SELPHY CP900
|
||||
0x04a9 0x3255 blacklist
|
||||
|
||||
# Canon SELPHY CP810
|
||||
0x04a9 0x3256 blacklist
|
||||
|
||||
# Canon SELPHY CP500
|
||||
0x04a9 0x30f5 blacklist
|
||||
|
||||
# Canon SELPHY ES3
|
||||
0x04a9 0x31af blacklist
|
||||
|
||||
# Canon SELPHY CP780
|
||||
0x04a9 0x31dd blacklist
|
||||
|
||||
# Lexmark E238 (<rdar://problem/14493054>)
|
||||
0x043d 0x00d7 no-reattach
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Common run loop APIs for CUPS backends.
|
||||
*
|
||||
@@ -539,5 +539,5 @@ backendWaitLoop(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* SNMP supplies functions for CUPS.
|
||||
*
|
||||
* Copyright 2008-2013 by Apple Inc.
|
||||
* Copyright 2008-2012 by Apple Inc.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Apple Inc. and are protected by Federal copyright
|
||||
@@ -62,7 +62,6 @@ typedef struct /**** Printer supply data ****/
|
||||
char name[CUPS_SNMP_MAX_STRING], /* Name of supply */
|
||||
color[8]; /* Color: "#RRGGBB" or "none" */
|
||||
int colorant, /* Colorant index */
|
||||
sclass, /* Supply class */
|
||||
type, /* Supply type */
|
||||
max_capacity, /* Maximum capacity */
|
||||
level; /* Current level value */
|
||||
@@ -149,13 +148,6 @@ static const int prtMarkerSuppliesMaxCapacity[] =
|
||||
(sizeof(prtMarkerSuppliesMaxCapacity) /
|
||||
sizeof(prtMarkerSuppliesMaxCapacity[0]));
|
||||
/* Offset to supply index */
|
||||
static const int prtMarkerSuppliesClass[] =
|
||||
{ CUPS_OID_prtMarkerSuppliesClass, -1 },
|
||||
/* Class OID */
|
||||
prtMarkerSuppliesClassOffset =
|
||||
(sizeof(prtMarkerSuppliesClass) /
|
||||
sizeof(prtMarkerSuppliesClass[0]));
|
||||
/* Offset to supply index */
|
||||
static const int prtMarkerSuppliesType[] =
|
||||
{ CUPS_OID_prtMarkerSuppliesType, -1 },
|
||||
/* Type OID */
|
||||
@@ -265,9 +257,6 @@ backendSNMPSupplies(
|
||||
else
|
||||
percent = 50;
|
||||
|
||||
if (supplies[i].sclass == CUPS_TC_receptacleThatIsFilled)
|
||||
percent = 100 - percent;
|
||||
|
||||
if (percent <= 5)
|
||||
{
|
||||
switch (supplies[i].type)
|
||||
@@ -572,14 +561,14 @@ backend_init_supplies(
|
||||
/*
|
||||
* Yes, read the cache file:
|
||||
*
|
||||
* 3 num_supplies charset
|
||||
* 2 num_supplies charset
|
||||
* device description
|
||||
* supply structures...
|
||||
*/
|
||||
|
||||
if (cupsFileGets(cachefile, value, sizeof(value)))
|
||||
{
|
||||
if (sscanf(value, "3 %d%d", &num_supplies, &charset) == 2 &&
|
||||
if (sscanf(value, "2 %d%d", &num_supplies, &charset) == 2 &&
|
||||
num_supplies <= CUPS_MAX_SUPPLIES &&
|
||||
cupsFileGets(cachefile, value, sizeof(value)))
|
||||
{
|
||||
@@ -675,7 +664,7 @@ backend_init_supplies(
|
||||
|
||||
if ((cachefile = cupsFileOpen(cachefilename, "w")) != NULL)
|
||||
{
|
||||
cupsFilePrintf(cachefile, "3 %d %d\n", num_supplies, charset);
|
||||
cupsFilePrintf(cachefile, "2 %d %d\n", num_supplies, charset);
|
||||
cupsFilePrintf(cachefile, "%s\n", description);
|
||||
|
||||
if (num_supplies > 0)
|
||||
@@ -980,25 +969,6 @@ backend_walk_cb(cups_snmp_t *packet, /* I - SNMP packet */
|
||||
packet->object_value.integer > 0)
|
||||
supplies[i - 1].max_capacity = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesClass))
|
||||
{
|
||||
/*
|
||||
* Get marker class...
|
||||
*/
|
||||
|
||||
i = packet->object_name[prtMarkerSuppliesClassOffset];
|
||||
if (i < 1 || i > CUPS_MAX_SUPPLIES ||
|
||||
packet->object_type != CUPS_ASN1_INTEGER)
|
||||
return;
|
||||
|
||||
fprintf(stderr, "DEBUG2: prtMarkerSuppliesClass.1.%d = %d\n", i,
|
||||
packet->object_value.integer);
|
||||
|
||||
if (i > num_supplies)
|
||||
num_supplies = i;
|
||||
|
||||
supplies[i - 1].sclass = packet->object_value.integer;
|
||||
}
|
||||
else if (_cupsSNMPIsOIDPrefixed(packet, prtMarkerSuppliesType))
|
||||
{
|
||||
/*
|
||||
@@ -1103,5 +1073,5 @@ utf16_to_utf8(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* SNMP discovery backend for CUPS.
|
||||
*
|
||||
@@ -1391,5 +1391,5 @@ update_cache(snmp_cache_t *device, /* I - Device */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* AppSocket backend for CUPS.
|
||||
*
|
||||
@@ -520,5 +520,5 @@ wait_bc(int device_fd, /* I - Socket */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* IEEE-1284 support functions test program for CUPS.
|
||||
*
|
||||
@@ -80,5 +80,5 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Backend test program for CUPS.
|
||||
*
|
||||
@@ -684,5 +684,5 @@ walk_cb(const char *oid, /* I - OID */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* SNMP supplies test program for CUPS.
|
||||
*
|
||||
@@ -79,5 +79,5 @@ main(int argc, /* I - Number of command-line args */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+36
-43
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Copyright 2005-2014 Apple Inc. All rights reserved.
|
||||
* Copyright 2005-2013 Apple Inc. All rights reserved.
|
||||
*
|
||||
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
|
||||
* Inc. ("Apple") in consideration of your agreement to the following
|
||||
@@ -40,6 +40,35 @@
|
||||
* AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
|
||||
* STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* list_devices() - List all USB devices.
|
||||
* print_device() - Print a file to a USB device.
|
||||
* read_thread() - Thread to read the backchannel data on.
|
||||
* sidechannel_thread() - Handle side-channel requests.
|
||||
* iterate_printers() - Iterate over all the printers.
|
||||
* device_added() - Device added notifier.
|
||||
* list_device_cb() - list_device iterator callback.
|
||||
* find_device_cb() - print_device iterator callback.
|
||||
* status_timer_cb() - Status timer callback.
|
||||
* copy_deviceinfo() - Copy strings from the 1284 device ID.
|
||||
* release_deviceinfo() - Release deviceinfo strings.
|
||||
* load_classdriver() - Load a classdriver.
|
||||
* unload_classdriver() - Unload a classdriver.
|
||||
* load_printerdriver() - Load vendor's classdriver.
|
||||
* registry_open() - Open a connection to the printer.
|
||||
* registry_close() - Close the connection to the printer.
|
||||
* copy_deviceid() - Copy the 1284 device id string.
|
||||
* copy_devicestring() - Copy the 1284 device id string.
|
||||
* copy_value_for_key() - Copy value string associated with a key.
|
||||
* cfstr_create_trim() - Create CFString and trim whitespace characters.
|
||||
* parse_options() - Parse URI options.
|
||||
* sigterm_handler() - SIGTERM handler.
|
||||
* next_line() - Find the next line in a buffer.
|
||||
* parse_pserror() - Scan the backchannel data for postscript errors.
|
||||
* soft_reset() - Send a soft reset to the device.
|
||||
* get_device_id() - Return IEEE-1284 device ID.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -68,7 +97,7 @@
|
||||
#include <IOKit/usb/IOUSBLib.h>
|
||||
#include <IOKit/IOCFPlugIn.h>
|
||||
#include <libproc.h>
|
||||
#include <asl.h>
|
||||
|
||||
#include <spawn.h>
|
||||
#include <pthread.h>
|
||||
|
||||
@@ -280,9 +309,6 @@ static void release_deviceinfo(CFStringRef *make, CFStringRef *model, CFStringRe
|
||||
static void setup_cfLanguage(void);
|
||||
static void soft_reset(void);
|
||||
static void status_timer_cb(CFRunLoopTimerRef timer, void *info);
|
||||
static void log_usb_class_driver(int is_64bit);
|
||||
#define IS_64BIT 1
|
||||
#define IS_NOT_64BIT 0
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
static pid_t child_pid; /* Child PID */
|
||||
@@ -451,11 +477,6 @@ print_device(const char *uri, /* I - Device URI */
|
||||
return (CUPS_BACKEND_STOP);
|
||||
}
|
||||
|
||||
#ifdef __x86_64__
|
||||
if (status == noErr && driverBundlePath != NULL && CFStringCompare(driverBundlePath, kUSBGenericTOPrinterClassDriver, 0) != kCFCompareEqualTo)
|
||||
log_usb_class_driver(IS_64BIT);
|
||||
#endif /* __x86_64__ */
|
||||
|
||||
if (driverBundlePath)
|
||||
CFRelease(driverBundlePath);
|
||||
|
||||
@@ -1586,7 +1607,7 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
|
||||
CFStringRef deviceMake = NULL;
|
||||
CFStringRef deviceModel = NULL;
|
||||
CFStringRef deviceSerial = NULL;
|
||||
|
||||
|
||||
*deviceID = NULL;
|
||||
|
||||
OSStatus err = (*classdriver)->GetDeviceID(classdriver, &devID, DEFAULT_TIMEOUT);
|
||||
@@ -1661,13 +1682,13 @@ static OSStatus copy_deviceid(classdriver_t **classdriver,
|
||||
CFRange range = (deviceSerial != NULL ? CFStringFind(deviceSerial, CFSTR("+"), 0) : CFRangeMake(0, 0));
|
||||
if (range.length == 1) {
|
||||
range = CFStringFind(*deviceID, deviceSerial, 0);
|
||||
|
||||
|
||||
CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, *deviceID);
|
||||
CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
|
||||
CFRelease(*deviceID);
|
||||
*deviceID = deviceIDString;
|
||||
}
|
||||
|
||||
|
||||
release_deviceinfo(&deviceMake, &deviceModel, &deviceSerial);
|
||||
|
||||
return err;
|
||||
@@ -1955,8 +1976,6 @@ static void run_legacy_backend(int argc,
|
||||
|
||||
if (!usb_legacy_status)
|
||||
{
|
||||
log_usb_class_driver(IS_NOT_64BIT);
|
||||
|
||||
/*
|
||||
* Setup a SIGTERM handler then block it before forking...
|
||||
*/
|
||||
@@ -2319,32 +2338,6 @@ static void get_device_id(cups_sc_status_t *status,
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
log_usb_class_driver(int is_64bit) /* I - Is the USB class driver 64-bit? */
|
||||
{
|
||||
/*
|
||||
* Report the usage of legacy USB class drivers to Apple if the user opts into providing
|
||||
* feedback to Apple...
|
||||
*/
|
||||
|
||||
aslmsg aslm = asl_new(ASL_TYPE_MSG);
|
||||
if (aslm)
|
||||
{
|
||||
ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
|
||||
const char *make_model = ppd ? ppd->nickname : NULL;
|
||||
ppd_attr_t *version = ppdFindAttr(ppd, "FileVersion", "");
|
||||
|
||||
asl_set(aslm, "com.apple.message.domain", "com.apple.printing.usb.64bit");
|
||||
asl_set(aslm, "com.apple.message.result", is_64bit ? "yes" : "no");
|
||||
asl_set(aslm, "com.apple.message.signature", make_model ? make_model : "Unknown");
|
||||
asl_set(aslm, "com.apple.message.signature2", version ? version->value : "?.?");
|
||||
asl_set(aslm, "com.apple.message.summarize", "YES");
|
||||
asl_log(NULL, aslm, ASL_LEVEL_NOTICE, "");
|
||||
asl_free(aslm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+209
-248
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* LIBUSB interface code for CUPS.
|
||||
*
|
||||
@@ -16,20 +16,18 @@
|
||||
* list_devices() - List the available printers.
|
||||
* print_device() - Print a file to a USB device.
|
||||
* close_device() - Close the connection to the USB printer.
|
||||
* compare_quirks() - Compare two quirks entries.
|
||||
* find_device() - Find or enumerate USB printers.
|
||||
* find_quirks() - Find the quirks for the given printer, if any.
|
||||
* get_device_id() - Get the IEEE-1284 device ID for the printer.
|
||||
* list_cb() - List USB printers for discovery.
|
||||
* load_quirks() - Load all quirks files in the /usr/share/cups/usb
|
||||
* directory.
|
||||
* make_device_uri() - Create a device URI for a USB printer.
|
||||
* open_device() - Open a connection to the USB printer.
|
||||
* print_cb() - Find a USB printer for printing.
|
||||
* printer_class_soft_reset()' - Do the soft reset request specific to
|
||||
* printers
|
||||
* quirks() - Get the known quirks of a given printer model
|
||||
* read_thread() - Thread to read the backchannel data on.
|
||||
* sidechannel_thread() - Handle side-channel requests.
|
||||
* soft_reset() - Send a soft reset to the device.
|
||||
* soft_reset_printer() - Do the soft reset request specific to printers
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -38,7 +36,6 @@
|
||||
|
||||
#include <libusb.h>
|
||||
#include <cups/cups-private.h>
|
||||
#include <cups/dir.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/types.h>
|
||||
@@ -73,15 +70,15 @@ typedef struct usb_printer_s /**** USB Printer Data ****/
|
||||
read_endp, /* Read endpoint */
|
||||
protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */
|
||||
usblp_attached, /* "usblp" kernel module attached? */
|
||||
reset_after_job;/* Set to 1 by print_device() */
|
||||
unsigned quirks; /* Quirks flags */
|
||||
reset_after_job; /* Set to 1 by print_device() */
|
||||
unsigned int quirks; /* Quirks flags */
|
||||
struct libusb_device_handle *handle; /* Open handle to device */
|
||||
} usb_printer_t;
|
||||
|
||||
typedef int (*usb_cb_t)(usb_printer_t *, const char *, const char *,
|
||||
const void *);
|
||||
|
||||
typedef struct usb_globals_s /* Global USB printer information */
|
||||
typedef struct usb_globals_s
|
||||
{
|
||||
usb_printer_t *printer; /* Printer */
|
||||
|
||||
@@ -108,41 +105,143 @@ typedef struct usb_globals_s /* Global USB printer information */
|
||||
} usb_globals_t;
|
||||
|
||||
/*
|
||||
* Quirks: various printer quirks are handled by this structure and its flags.
|
||||
* Quirks: various printer quirks are handled by this table & its flags.
|
||||
*
|
||||
* The quirks table used to be compiled into the backend but is now loaded from
|
||||
* one or more files in the /usr/share/cups/usb directory.
|
||||
* This is copied from the usblp kernel module. So we can easily copy and paste
|
||||
* new quirks from the module.
|
||||
*/
|
||||
|
||||
#define USB_QUIRK_BLACKLIST 0x0001 /* Does not conform to the spec */
|
||||
#define USB_QUIRK_NO_REATTACH 0x0002 /* After printing we cannot re-attach
|
||||
the usblp kernel module */
|
||||
#define USB_QUIRK_SOFT_RESET 0x0004 /* After printing do a soft reset
|
||||
for clean-up */
|
||||
#define USB_QUIRK_UNIDIR 0x0008 /* Requires unidirectional mode */
|
||||
#define USB_QUIRK_USB_INIT 0x0010 /* Needs vendor USB init string */
|
||||
#define USB_QUIRK_VENDOR_CLASS 0x0020 /* Descriptor uses vendor-specific
|
||||
struct quirk_printer_struct {
|
||||
int vendorId;
|
||||
int productId;
|
||||
unsigned int quirks;
|
||||
};
|
||||
|
||||
#define USBLP_QUIRK_BIDIR 0x1 /* reports bidir but requires
|
||||
unidirectional mode (no INs/reads) */
|
||||
#define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */
|
||||
#define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific
|
||||
Class or SubClass */
|
||||
#define USB_QUIRK_WHITELIST 0x0000 /* no quirks */
|
||||
|
||||
|
||||
typedef struct usb_quirk_s /* USB "quirk" information */
|
||||
{
|
||||
int vendor_id, /* Affected vendor ID */
|
||||
product_id; /* Affected product ID or 0 for all */
|
||||
unsigned quirks; /* Quirks bitfield */
|
||||
} usb_quirk_t;
|
||||
|
||||
#define USBLP_QUIRK_BLACKLIST 0x8 /* these printers do not conform to the USB print spec */
|
||||
#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset
|
||||
for clean-up */
|
||||
#define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach
|
||||
the usblp kernel module */
|
||||
|
||||
static const struct quirk_printer_struct quirk_printers[] = {
|
||||
{ 0x03f0, 0x0004, USBLP_QUIRK_BIDIR }, /* HP DeskJet 895C */
|
||||
{ 0x03f0, 0x0104, USBLP_QUIRK_BIDIR }, /* HP DeskJet 880C */
|
||||
{ 0x03f0, 0x0204, USBLP_QUIRK_BIDIR }, /* HP DeskJet 815C */
|
||||
{ 0x03f0, 0x0304, USBLP_QUIRK_BIDIR }, /* HP DeskJet 810C/812C */
|
||||
{ 0x03f0, 0x0404, USBLP_QUIRK_BIDIR }, /* HP DeskJet 830C */
|
||||
{ 0x03f0, 0x0504, USBLP_QUIRK_BIDIR }, /* HP DeskJet 885C */
|
||||
{ 0x03f0, 0x0604, USBLP_QUIRK_BIDIR }, /* HP DeskJet 840C */
|
||||
{ 0x03f0, 0x0804, USBLP_QUIRK_BIDIR }, /* HP DeskJet 816C */
|
||||
{ 0x03f0, 0x1104, USBLP_QUIRK_BIDIR }, /* HP Deskjet 959C */
|
||||
{ 0x0409, 0xefbe, USBLP_QUIRK_BIDIR }, /* NEC Picty900 (HP OEM) */
|
||||
{ 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
|
||||
{ 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
|
||||
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
|
||||
{ 0x043d, 0x00f3, USBLP_QUIRK_NO_REATTACH }, /* Lexmark International,
|
||||
Inc. (e250d), https://bugs.launchpad.net/bugs/1084164 */
|
||||
{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820,
|
||||
by zut <kernel@zut.de> */
|
||||
{ 0x04a9, 0x1095, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP6000D
|
||||
Printer, https://bugs.launchpad.net/bugs/1160638 */
|
||||
{ 0x04a9, 0x10a2, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4200
|
||||
Printer, http://www.cups.org/str.php?L4155 */
|
||||
{ 0x04a9, 0x10b6, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4300
|
||||
Printer, https://bugs.launchpad.net/bugs/1032385 */
|
||||
{ 0x04a9, 0x1721, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP210
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=847923#c53 */
|
||||
{ 0x04a9, 0x170c, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP500
|
||||
Printer, https://bugs.launchpad.net/bugs/1032456 */
|
||||
{ 0x04a9, 0x1717, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP510
|
||||
Printer, https://bugs.launchpad.net/bugs/1050009 */
|
||||
{ 0x04a9, 0x173d, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP550
|
||||
Printer, http://www.cups.org/str.php?L4155 */
|
||||
{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560
|
||||
Printer, http://www.cups.org/str.php?L4155 */
|
||||
{ 0x04a9, 0x26a3, USBLP_QUIRK_NO_REATTACH }, /* Canon, Inc. MF4150
|
||||
Printer, https://bugs.launchpad.net/bugs/1160638 */
|
||||
{ 0x04f9, 0x001a, USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1430 Laser Printer,
|
||||
https://bugs.launchpad.net/bugs/1038695 */
|
||||
{ 0x04f9, 0x000d, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1440 Laser Printer,
|
||||
https://bugs.launchpad.net/bugs/1000253 */
|
||||
{ 0x04f9, 0x000e, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1450 Laser Printer,
|
||||
https://bugs.launchpad.net/bugs/1000253 */
|
||||
{ 0x06bc, 0x000b, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp.
|
||||
Okipage 14ex Printer,
|
||||
https://bugs.launchpad.net/bugs/872483 */
|
||||
{ 0x06bc, 0x01c7, USBLP_QUIRK_NO_REATTACH }, /* Oki Data Corp. B410d,
|
||||
https://bugs.launchpad.net/bugs/872483 */
|
||||
{ 0x04b8, 0x0001, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Seiko Epson Corp. Stylus Color 740 / Photo 750,
|
||||
http://bugs.debian.org/697970 */
|
||||
{ 0x04b8, 0x0005, USBLP_QUIRK_NO_REATTACH }, /* Seiko Epson Corp. Stylus Color 670,
|
||||
https://bugs.launchpad.net/bugs/872483 */
|
||||
{ 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
|
||||
Printer M129C */
|
||||
{ 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH |
|
||||
USBLP_QUIRK_RESET },
|
||||
/* Prolific Technology, Inc. PL2305 Parallel Port
|
||||
(USB -> Parallel adapter), https://bugs.launchpad.net/bugs/987485 */
|
||||
{ 0x0924, 0x3ce9, USBLP_QUIRK_NO_REATTACH }, /* Xerox Phaser 3124
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=867392 */
|
||||
{ 0x0924, 0x4293, USBLP_QUIRK_NO_REATTACH }, /* Xerox WorkCentre 3210
|
||||
https://bugs.launchpad.net/bugs/1102470 */
|
||||
{ 0x1a86, 0x7584, USBLP_QUIRK_NO_REATTACH }, /* QinHeng Electronics
|
||||
CH340S (USB -> Parallel adapter), https://bugs.launchpad.net/bugs/1000253 */
|
||||
{ 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices,
|
||||
https://bugs.launchpad.net/bugs/1032456 */
|
||||
{ 0x0a5f, 0x0000, USBLP_QUIRK_BIDIR }, /* All Zebra devices,
|
||||
https://bugs.launchpad.net/bugs/1001028 */
|
||||
/* Canon */
|
||||
{ 0x04a9, 0x304a, USBLP_QUIRK_BLACKLIST }, /* Canon CP-10 */
|
||||
{ 0x04a9, 0x3063, USBLP_QUIRK_BLACKLIST }, /* Canon CP-100 */
|
||||
{ 0x04a9, 0x307c, USBLP_QUIRK_BLACKLIST }, /* Canon CP-200 */
|
||||
{ 0x04a9, 0x307d, USBLP_QUIRK_BLACKLIST }, /* Canon CP-300 */
|
||||
{ 0x04a9, 0x30bd, USBLP_QUIRK_BLACKLIST }, /* Canon CP-220 */
|
||||
{ 0x04a9, 0x30be, USBLP_QUIRK_BLACKLIST }, /* Canon CP-330 */
|
||||
{ 0x04a9, 0x30f6, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP400 */
|
||||
{ 0x04a9, 0x310b, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP600 */
|
||||
{ 0x04a9, 0x3127, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP710 */
|
||||
{ 0x04a9, 0x3128, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP510 */
|
||||
{ 0x04a9, 0x3141, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES1 */
|
||||
{ 0x04a9, 0x3142, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP730 */
|
||||
{ 0x04a9, 0x3143, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP720 */
|
||||
{ 0x04a9, 0x3170, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP750 */
|
||||
{ 0x04a9, 0x3171, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP740 */
|
||||
{ 0x04a9, 0x3185, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES2 */
|
||||
{ 0x04a9, 0x3186, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES20 */
|
||||
{ 0x04a9, 0x31aa, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP770 */
|
||||
{ 0x04a9, 0x31ab, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP760 */
|
||||
{ 0x04a9, 0x31b0, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES30 */
|
||||
{ 0x04a9, 0x31dd, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP780 */
|
||||
{ 0x04a9, 0x31ee, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES40 */
|
||||
{ 0x04a9, 0x3214, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP800 */
|
||||
{ 0x04a9, 0x3255, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP900 */
|
||||
{ 0x04a9, 0x3256, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP810 */
|
||||
{ 0x04a9, 0x30F5, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP500 */
|
||||
{ 0x04a9, 0x31AF, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY ES3 */
|
||||
{ 0x04a9, 0x31DD, USBLP_QUIRK_BLACKLIST }, /* Canon SELPHY CP780 */
|
||||
/* MISSING PIDs: CP520, CP530, CP790 */
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Globals...
|
||||
*/
|
||||
|
||||
cups_array_t *all_quirks; /* Array of printer quirks */
|
||||
usb_globals_t g = { 0 }; /* Globals */
|
||||
libusb_device **all_list; /* List of connected USB devices */
|
||||
libusb_device **list; /* List of connected USB devices */
|
||||
|
||||
|
||||
/*
|
||||
@@ -150,24 +249,22 @@ libusb_device **all_list; /* List of connected USB devices */
|
||||
*/
|
||||
|
||||
static int close_device(usb_printer_t *printer);
|
||||
static int compare_quirks(usb_quirk_t *a, usb_quirk_t *b);
|
||||
static usb_printer_t *find_device(usb_cb_t cb, const void *data);
|
||||
static unsigned find_quirks(int vendor_id, int product_id);
|
||||
static int get_device_id(usb_printer_t *printer, char *buffer,
|
||||
size_t bufsize);
|
||||
static int list_cb(usb_printer_t *printer, const char *device_uri,
|
||||
const char *device_id, const void *data);
|
||||
static void load_quirks(void);
|
||||
static char *make_device_uri(usb_printer_t *printer,
|
||||
const char *device_id,
|
||||
char *uri, size_t uri_size);
|
||||
static int open_device(usb_printer_t *printer, int verbose);
|
||||
static int print_cb(usb_printer_t *printer, const char *device_uri,
|
||||
const char *device_id, const void *data);
|
||||
static int printer_class_soft_reset(usb_printer_t *printer);
|
||||
static unsigned int quirks(int vendor, int product);
|
||||
static void *read_thread(void *reference);
|
||||
static void *sidechannel_thread(void *reference);
|
||||
static void soft_reset(void);
|
||||
static int soft_reset_printer(usb_printer_t *printer);
|
||||
|
||||
|
||||
/*
|
||||
@@ -177,8 +274,6 @@ static int soft_reset_printer(usb_printer_t *printer);
|
||||
void
|
||||
list_devices(void)
|
||||
{
|
||||
load_quirks();
|
||||
|
||||
fputs("DEBUG: list_devices\n", stderr);
|
||||
find_device(list_cb, NULL);
|
||||
}
|
||||
@@ -221,8 +316,6 @@ print_device(const char *uri, /* I - Device URI */
|
||||
const char *val; /* Option value */
|
||||
|
||||
|
||||
load_quirks();
|
||||
|
||||
/*
|
||||
* See if the side-channel descriptor is valid...
|
||||
*/
|
||||
@@ -248,9 +341,9 @@ print_device(const char *uri, /* I - Device URI */
|
||||
|
||||
/*
|
||||
* Some devices need a reset after finishing a job, these devices are
|
||||
* marked with the USB_QUIRK_SOFT_RESET quirk.
|
||||
* marked with the USBLP_QUIRK_RESET quirk.
|
||||
*/
|
||||
g.printer->reset_after_job = (g.printer->quirks & USB_QUIRK_SOFT_RESET ? 1 : 0);
|
||||
g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0);
|
||||
|
||||
/*
|
||||
* If we are printing data from a print driver on stdin, ignore SIGTERM
|
||||
@@ -496,7 +589,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
iostatus = libusb_bulk_transfer(g.printer->handle,
|
||||
g.printer->write_endp,
|
||||
print_buffer, g.print_bytes,
|
||||
&bytes, 0);
|
||||
&bytes, 60000);
|
||||
/*
|
||||
* Ignore timeout errors, but retain the number of bytes written to
|
||||
* avoid sending duplicate data...
|
||||
@@ -519,7 +612,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
iostatus = libusb_bulk_transfer(g.printer->handle,
|
||||
g.printer->write_endp,
|
||||
print_buffer, g.print_bytes,
|
||||
&bytes, 0);
|
||||
&bytes, 60000);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -534,7 +627,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
iostatus = libusb_bulk_transfer(g.printer->handle,
|
||||
g.printer->write_endp,
|
||||
print_buffer, g.print_bytes,
|
||||
&bytes, 0);
|
||||
&bytes, 60000);
|
||||
}
|
||||
|
||||
if (iostatus)
|
||||
@@ -667,7 +760,7 @@ print_device(const char *uri, /* I - Device URI */
|
||||
* Clean up ....
|
||||
*/
|
||||
|
||||
libusb_free_device_list(all_list, 1);
|
||||
libusb_free_device_list(list, 1);
|
||||
libusb_exit(NULL);
|
||||
|
||||
return (status);
|
||||
@@ -786,23 +879,6 @@ close_device(usb_printer_t *printer) /* I - Printer */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'compare_quirks()' - Compare two quirks entries.
|
||||
*/
|
||||
|
||||
static int /* O - Result of comparison */
|
||||
compare_quirks(usb_quirk_t *a, /* I - First quirk entry */
|
||||
usb_quirk_t *b) /* I - Second quirk entry */
|
||||
{
|
||||
int result; /* Result of comparison */
|
||||
|
||||
if ((result = b->vendor_id - a->vendor_id) == 0)
|
||||
result = b->product_id - a->product_id;
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'find_device()' - Find or enumerate USB printers.
|
||||
*/
|
||||
@@ -847,7 +923,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Unable to initialize USB access via libusb, "
|
||||
"libusb error %i\n", (int)err);
|
||||
"libusb error %i\n", err);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -875,13 +951,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
!devdesc.idProduct)
|
||||
continue;
|
||||
|
||||
printer.quirks = find_quirks(devdesc.idVendor, devdesc.idProduct);
|
||||
printer.quirks = quirks(devdesc.idVendor, devdesc.idProduct);
|
||||
|
||||
/*
|
||||
* Ignore blacklisted printers...
|
||||
*/
|
||||
|
||||
if (printer.quirks & USB_QUIRK_BLACKLIST)
|
||||
if (printer.quirks & USBLP_QUIRK_BLACKLIST)
|
||||
continue;
|
||||
|
||||
for (conf = 0; conf < devdesc.bNumConfigurations; conf ++)
|
||||
@@ -910,13 +986,13 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
|
||||
if (((altptr->bInterfaceClass != LIBUSB_CLASS_PRINTER ||
|
||||
altptr->bInterfaceSubClass != 1) &&
|
||||
((printer.quirks & USB_QUIRK_VENDOR_CLASS) == 0)) ||
|
||||
((printer.quirks & USBLP_QUIRK_BAD_CLASS) == 0)) ||
|
||||
(altptr->bInterfaceProtocol != 1 && /* Unidirectional */
|
||||
altptr->bInterfaceProtocol != 2) || /* Bidirectional */
|
||||
altptr->bInterfaceProtocol < protocol)
|
||||
continue;
|
||||
|
||||
if (printer.quirks & USB_QUIRK_VENDOR_CLASS)
|
||||
if (printer.quirks & USBLP_QUIRK_BAD_CLASS)
|
||||
fprintf(stderr, "DEBUG: Printer does not report class 7 and/or "
|
||||
"subclass 1 but works as a printer anyway\n");
|
||||
|
||||
@@ -973,7 +1049,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Device protocol: %d\n",
|
||||
printer.protocol);
|
||||
if (printer.quirks & USB_QUIRK_UNIDIR)
|
||||
if (printer.quirks & USBLP_QUIRK_BIDIR)
|
||||
{
|
||||
printer.read_endp = -1;
|
||||
fprintf(stderr, "DEBUG: Printer reports bi-di support "
|
||||
@@ -993,7 +1069,7 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
altsetting[printer.altset].
|
||||
endpoint[printer.write_endp].
|
||||
bEndpointAddress;
|
||||
if (printer.quirks & USB_QUIRK_NO_REATTACH)
|
||||
if (printer.quirks & USBLP_QUIRK_NO_REATTACH)
|
||||
{
|
||||
printer.usblp_attached = 0;
|
||||
fprintf(stderr, "DEBUG: Printer does not like usblp "
|
||||
@@ -1028,35 +1104,6 @@ find_device(usb_cb_t cb, /* I - Callback function */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'find_quirks()' - Find the quirks for the given printer, if any.
|
||||
*
|
||||
* First looks for an exact match, then looks for the vendor ID wildcard match.
|
||||
*/
|
||||
|
||||
static unsigned /* O - Quirks flags */
|
||||
find_quirks(int vendor_id, /* I - Vendor ID */
|
||||
int product_id) /* I - Product ID */
|
||||
{
|
||||
usb_quirk_t key, /* Search key */
|
||||
*match; /* Matching quirk entry */
|
||||
|
||||
|
||||
key.vendor_id = vendor_id;
|
||||
key.product_id = product_id;
|
||||
|
||||
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
|
||||
return (match->quirks);
|
||||
|
||||
key.product_id = 0;
|
||||
|
||||
if ((match = cupsArrayFind(all_quirks, &key)) != NULL)
|
||||
return (match->quirks);
|
||||
|
||||
return (USB_QUIRK_WHITELIST);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'get_device_id()' - Get the IEEE-1284 device ID for the printer.
|
||||
*/
|
||||
@@ -1162,104 +1209,6 @@ list_cb(usb_printer_t *printer, /* I - Printer */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'load_quirks()' - Load all quirks files in the /usr/share/cups/usb directory.
|
||||
*/
|
||||
|
||||
static void
|
||||
load_quirks(void)
|
||||
{
|
||||
const char *datadir; /* CUPS_DATADIR environment variable */
|
||||
char filename[1024], /* Filename */
|
||||
line[1024]; /* Line from file */
|
||||
cups_dir_t *dir; /* Directory */
|
||||
cups_dentry_t *dent; /* Directory entry */
|
||||
cups_file_t *fp; /* Quirks file */
|
||||
usb_quirk_t *quirk; /* New quirk */
|
||||
|
||||
|
||||
all_quirks = cupsArrayNew((cups_array_func_t)compare_quirks, NULL);
|
||||
|
||||
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
|
||||
datadir = CUPS_DATADIR;
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/usb", datadir);
|
||||
if ((dir = cupsDirOpen(filename)) == NULL)
|
||||
{
|
||||
perror(filename);
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: Loading USB quirks from \"%s\".\n", filename);
|
||||
|
||||
while ((dent = cupsDirRead(dir)) != NULL)
|
||||
{
|
||||
if (!S_ISREG(dent->fileinfo.st_mode))
|
||||
continue;
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/usb/%s", datadir, dent->filename);
|
||||
if ((fp = cupsFileOpen(filename, "r")) == NULL)
|
||||
{
|
||||
perror(filename);
|
||||
continue;
|
||||
}
|
||||
|
||||
while (cupsFileGets(fp, line, sizeof(line)))
|
||||
{
|
||||
/*
|
||||
* Skip blank and comment lines...
|
||||
*/
|
||||
|
||||
if (line[0] == '#' || !line[0])
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Add a quirk...
|
||||
*/
|
||||
|
||||
if ((quirk = calloc(1, sizeof(usb_quirk_t))) == NULL)
|
||||
{
|
||||
perror("DEBUG: Unable to allocate memory for quirk");
|
||||
break;
|
||||
}
|
||||
|
||||
if (sscanf(line, "%x%x", &quirk->vendor_id, &quirk->product_id) < 1)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: Bad line: %s\n", line);
|
||||
free(quirk);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strstr(line, " blacklist"))
|
||||
quirk->quirks |= USB_QUIRK_BLACKLIST;
|
||||
|
||||
if (strstr(line, " no-reattach"))
|
||||
quirk->quirks |= USB_QUIRK_NO_REATTACH;
|
||||
|
||||
if (strstr(line, " soft-reset"))
|
||||
quirk->quirks |= USB_QUIRK_SOFT_RESET;
|
||||
|
||||
if (strstr(line, " unidir"))
|
||||
quirk->quirks |= USB_QUIRK_UNIDIR;
|
||||
|
||||
if (strstr(line, " usb-init"))
|
||||
quirk->quirks |= USB_QUIRK_USB_INIT;
|
||||
|
||||
if (strstr(line, " vendor-class"))
|
||||
quirk->quirks |= USB_QUIRK_VENDOR_CLASS;
|
||||
|
||||
cupsArrayAdd(all_quirks, quirk);
|
||||
}
|
||||
|
||||
cupsFileClose(fp);
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: Loaded %d quirks.\n", cupsArrayCount(all_quirks));
|
||||
|
||||
cupsDirClose(dir);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'make_device_uri()' - Create a device URI for a USB printer.
|
||||
*/
|
||||
@@ -1686,6 +1635,65 @@ print_cb(usb_printer_t *printer, /* I - Printer */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'printer_class_soft_reset()' - Do the soft reset request specific to printers
|
||||
*
|
||||
* This soft reset is specific to the printer device class and is much less
|
||||
* invasive than the general USB reset libusb_reset_device(). Especially it
|
||||
* does never happen that the USB addressing and configuration changes. What
|
||||
* is actually done is that all buffers get flushed and the bulk IN and OUT
|
||||
* pipes get reset to their default states. This clears all stall conditions.
|
||||
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
|
||||
*/
|
||||
|
||||
static int /* O - 0 on success, < 0 on error */
|
||||
printer_class_soft_reset(usb_printer_t *printer) /* I - Printer */
|
||||
{
|
||||
struct libusb_config_descriptor *confptr = NULL;
|
||||
/* Pointer to current configuration */
|
||||
int interface,
|
||||
errcode;
|
||||
|
||||
if (libusb_get_config_descriptor(printer->device, printer->conf, &confptr)
|
||||
< 0)
|
||||
interface = printer->iface;
|
||||
else
|
||||
interface = confptr->interface[printer->iface].
|
||||
altsetting[printer->altset].bInterfaceNumber;
|
||||
libusb_free_config_descriptor(confptr);
|
||||
if ((errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_OTHER,
|
||||
2, 0, interface, NULL, 0, 5000)) < 0)
|
||||
errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_INTERFACE,
|
||||
2, 0, interface, NULL, 0, 5000);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'quirks()' - Get the known quirks of a given printer model
|
||||
*/
|
||||
|
||||
static unsigned int quirks(int vendor, int product)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; quirk_printers[i].vendorId; i++)
|
||||
{
|
||||
if (vendor == quirk_printers[i].vendorId &&
|
||||
(quirk_printers[i].productId == 0x0000 ||
|
||||
product == quirk_printers[i].productId))
|
||||
return quirk_printers[i].quirks;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'read_thread()' - Thread to read the backchannel data on.
|
||||
*/
|
||||
@@ -1909,15 +1917,13 @@ sidechannel_thread(void *reference)
|
||||
* 'soft_reset()' - Send a soft reset to the device.
|
||||
*/
|
||||
|
||||
static void
|
||||
soft_reset(void)
|
||||
static void soft_reset(void)
|
||||
{
|
||||
fd_set input_set; /* Input set for select() */
|
||||
struct timeval tv; /* Time value */
|
||||
char buffer[2048]; /* Buffer */
|
||||
struct timespec cond_timeout; /* pthread condition timeout */
|
||||
|
||||
|
||||
/*
|
||||
* Send an abort once a second until the I/O lock is released by the main
|
||||
* thread...
|
||||
@@ -1962,7 +1968,7 @@ soft_reset(void)
|
||||
* Send the reset...
|
||||
*/
|
||||
|
||||
soft_reset_printer(g.printer);
|
||||
printer_class_soft_reset(g.printer);
|
||||
|
||||
/*
|
||||
* Release the I/O lock...
|
||||
@@ -1976,51 +1982,6 @@ soft_reset(void)
|
||||
|
||||
|
||||
/*
|
||||
* 'soft_reset_printer()' - Do the soft reset request specific to printers
|
||||
*
|
||||
* This soft reset is specific to the printer device class and is much less
|
||||
* invasive than the general USB reset libusb_reset_device(). Especially it
|
||||
* does never happen that the USB addressing and configuration changes. What
|
||||
* is actually done is that all buffers get flushed and the bulk IN and OUT
|
||||
* pipes get reset to their default states. This clears all stall conditions.
|
||||
* See http://cholla.mmto.org/computers/linux/usb/usbprint11.pdf
|
||||
*/
|
||||
|
||||
static int /* O - 0 on success, < 0 on error */
|
||||
soft_reset_printer(
|
||||
usb_printer_t *printer) /* I - Printer */
|
||||
{
|
||||
struct libusb_config_descriptor *confptr = NULL;
|
||||
/* Pointer to current configuration */
|
||||
int interface, /* Interface to reset */
|
||||
errcode; /* Error code */
|
||||
|
||||
|
||||
if (libusb_get_config_descriptor(printer->device, printer->conf,
|
||||
&confptr) < 0)
|
||||
interface = printer->iface;
|
||||
else
|
||||
interface = confptr->interface[printer->iface].
|
||||
altsetting[printer->altset].bInterfaceNumber;
|
||||
|
||||
libusb_free_config_descriptor(confptr);
|
||||
|
||||
if ((errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_OTHER,
|
||||
2, 0, interface, NULL, 0, 5000)) < 0)
|
||||
errcode = libusb_control_transfer(printer->handle,
|
||||
LIBUSB_REQUEST_TYPE_CLASS |
|
||||
LIBUSB_ENDPOINT_OUT |
|
||||
LIBUSB_RECIPIENT_INTERFACE,
|
||||
2, 0, interface, NULL, 0, 5000);
|
||||
|
||||
return (errcode);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* USB port backend for CUPS.
|
||||
*
|
||||
@@ -612,5 +612,5 @@ side_cb(int print_fd, /* I - Print file */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* USB port backend for CUPS.
|
||||
*
|
||||
@@ -260,5 +260,5 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Berkeley commands makefile for CUPS.
|
||||
#
|
||||
@@ -164,5 +164,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* "lpc" command for CUPS.
|
||||
*
|
||||
@@ -446,5 +446,5 @@ show_status(http_t *http, /* I - HTTP connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* "lpq" command for CUPS.
|
||||
*
|
||||
@@ -679,5 +679,5 @@ usage(void)
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* "lpr" command for CUPS.
|
||||
*
|
||||
@@ -436,5 +436,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* "lprm" command for CUPS.
|
||||
*
|
||||
@@ -213,5 +213,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# CGI makefile for CUPS.
|
||||
#
|
||||
@@ -380,5 +380,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+10
-10
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Administration CGI for CUPS.
|
||||
*
|
||||
@@ -1348,20 +1348,20 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
if (!file)
|
||||
{
|
||||
var = cgiGetVariable("PPD_NAME");
|
||||
if (strcmp(var, "__no_change__"))
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
|
||||
NULL, var);
|
||||
}
|
||||
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-location",
|
||||
NULL, cgiGetVariable("PRINTER_LOCATION"));
|
||||
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info",
|
||||
NULL, cgiGetVariable("PRINTER_INFO"));
|
||||
|
||||
if (!file)
|
||||
{
|
||||
var = cgiGetVariable("PPD_NAME");
|
||||
if (strcmp(var, "__no_change__"))
|
||||
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name",
|
||||
NULL, var);
|
||||
}
|
||||
|
||||
strlcpy(uri, cgiGetVariable("DEVICE_URI"), sizeof(uri));
|
||||
|
||||
/*
|
||||
@@ -4218,5 +4218,5 @@ get_points(double number, /* I - Original number */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Private CGI definitions for CUPS.
|
||||
*
|
||||
@@ -32,5 +32,5 @@
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* CGI support library definitions for CUPS.
|
||||
*
|
||||
@@ -115,5 +115,5 @@ extern const char *cgiText(const char *message);
|
||||
#endif /* !_CUPS_CGI_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Class status CGI for CUPS.
|
||||
*
|
||||
@@ -554,5 +554,5 @@ show_class(http_t *http, /* I - Connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Online help index routines for CUPS.
|
||||
*
|
||||
@@ -1324,5 +1324,5 @@ help_sort_words(help_word_t *w1, /* I - Second word */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Online help index definitions for CUPS.
|
||||
*
|
||||
@@ -83,5 +83,5 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
|
||||
#endif /* !_CUPS_HELP_INDEX_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Online help CGI for CUPS.
|
||||
*
|
||||
@@ -393,5 +393,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* HTML support functions for CUPS.
|
||||
*
|
||||
@@ -235,5 +235,5 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+36
-12
@@ -1,16 +1,31 @@
|
||||
/*
|
||||
* "$Id: ipp-var.c 11890 2014-05-22 13:59:21Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* CGI <-> IPP variable routines for CUPS.
|
||||
* CGI <-> IPP variable routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cgiGetAttributes() - Get the list of attributes that are needed by the
|
||||
* template file.
|
||||
* cgiGetIPPObjects() - Get the objects in an IPP response.
|
||||
* cgiMoveJobs() - Move one or more jobs.
|
||||
* cgiPrintCommand() - Print a CUPS command job.
|
||||
* cgiPrintTestPage() - Print a test page.
|
||||
* cgiRewriteURL() - Rewrite a printer URI into a web browser URL...
|
||||
* cgiSetIPPObjectVars() - Set CGI variables from an IPP object.
|
||||
* cgiSetIPPVars() - Set CGI variables from an IPP response.
|
||||
* cgiShowIPPError() - Show the last IPP error message.
|
||||
* cgiShowJobs() - Show print jobs.
|
||||
* cgiText() - Return localized text.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -943,6 +958,7 @@ cgiSetIPPObjectVars(
|
||||
*nameptr, /* Pointer into name */
|
||||
value[16384], /* Value(s) */
|
||||
*valptr; /* Pointer into value */
|
||||
struct tm *date; /* Date information */
|
||||
|
||||
|
||||
fprintf(stderr, "DEBUG2: cgiSetIPPObjectVars(obj=%p, prefix=\"%s\", "
|
||||
@@ -1170,9 +1186,17 @@ cgiSetIPPObjectVars(
|
||||
case IPP_TAG_INTEGER :
|
||||
case IPP_TAG_ENUM :
|
||||
if (strncmp(name, "time_at_", 8) == 0)
|
||||
_cupsStrDate(valptr, sizeof(value) - (size_t)(valptr - value), (time_t)ippGetInteger(attr, i));
|
||||
{
|
||||
time_t t; /* Temporary time value */
|
||||
|
||||
t = (time_t)attr->values[i].integer;
|
||||
date = localtime(&t);
|
||||
|
||||
strftime(valptr, sizeof(value) - (valptr - value), "%c", date);
|
||||
}
|
||||
else
|
||||
snprintf(valptr, sizeof(value) - (size_t)(valptr - value), "%d", ippGetInteger(attr, i));
|
||||
snprintf(valptr, sizeof(value) - (valptr - value),
|
||||
"%d", attr->values[i].integer);
|
||||
break;
|
||||
|
||||
case IPP_TAG_BOOLEAN :
|
||||
@@ -1565,5 +1589,5 @@ cgiText(const char *message) /* I - Message */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: ipp-var.c 11890 2014-05-22 13:59:21Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Job status CGI for CUPS.
|
||||
*
|
||||
@@ -210,5 +210,5 @@ do_job_op(http_t *http, /* I - HTTP connection */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Xcode documentation set generator.
|
||||
*
|
||||
@@ -482,5 +482,5 @@ write_nodes(const char *path, /* I - File to write */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Printer status CGI for CUPS.
|
||||
*
|
||||
@@ -574,5 +574,5 @@ show_printer(http_t *http, /* I - Connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Search routines for CUPS.
|
||||
*
|
||||
@@ -377,5 +377,5 @@ cgiFreeSearch(void *search) /* I - Search context */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* CGI template function.
|
||||
*
|
||||
@@ -553,7 +553,7 @@ cgi_copy(FILE *out, /* I - Output file */
|
||||
if (regcomp(&re, compare, REG_EXTENDED | REG_ICASE))
|
||||
{
|
||||
fprintf(stderr,
|
||||
"ERROR: Unable to compile regular expression \"%s\"!\n",
|
||||
"ERROR: Unable to compile regular expresion \"%s\"!\n",
|
||||
compare);
|
||||
result = 0;
|
||||
}
|
||||
@@ -729,5 +729,5 @@ cgi_puturi(const char *s, /* I - String to output */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* CGI test program for CUPS.
|
||||
*
|
||||
@@ -71,5 +71,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Help index test program for CUPS.
|
||||
*
|
||||
@@ -109,5 +109,5 @@ list_nodes(const char *title, /* I - Title string */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* CGI template test program for CUPS.
|
||||
*
|
||||
@@ -99,5 +99,5 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* CGI form variable and array functions for CUPS.
|
||||
*
|
||||
@@ -1307,5 +1307,5 @@ cgi_unlink_file(void)
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Web search program for www.cups.org.
|
||||
*
|
||||
@@ -112,5 +112,5 @@ list_nodes(help_index_t *hi, /* I - Help index */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Configuration file makefile for CUPS.
|
||||
#
|
||||
@@ -139,5 +139,5 @@ uninstall:
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Sample file/directory/user/group configuration file for the CUPS scheduler.
|
||||
# See "man cups-files.conf" for a complete description of this file.
|
||||
@@ -8,9 +8,6 @@
|
||||
# List of events that are considered fatal errors for the scheduler...
|
||||
#FatalErrors @CUPS_FATAL_ERRORS@
|
||||
|
||||
# Do we call fsync() after writing configuration or status files?
|
||||
#SyncOnClose No
|
||||
|
||||
# Default user and group for filters/backends/helper programs; this cannot be
|
||||
# any user or group that resolves to ID 0 for security reasons...
|
||||
#User @CUPS_USER@
|
||||
@@ -97,5 +94,5 @@ PageLog @CUPS_LOGDIR@/page_log
|
||||
#TempDir @CUPS_REQUESTS@/tmp
|
||||
|
||||
#
|
||||
# End of "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Sample configuration file for the CUPS scheduler. See "man cupsd.conf" for a
|
||||
# complete description of this file.
|
||||
@@ -130,5 +130,5 @@ WebInterface @CUPS_WEBIF@
|
||||
</Policy>
|
||||
|
||||
#
|
||||
# End of "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.convs" file that
|
||||
@@ -59,5 +59,5 @@ application/vnd.cups-raster image/pwg-raster 100 rastertopwg
|
||||
@DEFAULT_RAW_PRINTING@application/octet-stream application/vnd.cups-raw 0 -
|
||||
|
||||
#
|
||||
# End of "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+13
-13
@@ -1,20 +1,20 @@
|
||||
#
|
||||
# "$Id: mime.types 7670 2008-06-17 22:42:08Z mike $"
|
||||
#
|
||||
# Base MIME types file for CUPS.
|
||||
# Base MIME types file for CUPS.
|
||||
#
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.types" file that
|
||||
# reflects your local configuration changes.
|
||||
# DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
|
||||
# VERSIONS OF CUPS. Instead, create a "local.types" file that
|
||||
# reflects your local configuration changes.
|
||||
#
|
||||
# Copyright 2007-2014 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products.
|
||||
# Copyright 2007-2011 by Apple Inc.
|
||||
# Copyright 1997-2007 by Easy Software Products.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# 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/".
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# 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/".
|
||||
#
|
||||
|
||||
########################################################################
|
||||
@@ -92,7 +92,7 @@ image/jpeg jpeg jpg jpe string(0,<FFD8FF>) +\
|
||||
char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
|
||||
char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
|
||||
char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
|
||||
image/pwg-raster string(0,"RaS2") + string(4,PwgRaster<00>) priority(150)
|
||||
image/pwg-raster string(0,"RaS2") + string(4,PwgRaster<00>) priority(100)
|
||||
image/tiff tiff tif string(0,MM<002A>) string(0,II<2A00>)
|
||||
image/x-photocd pcd string(2048,PCD_IPI)
|
||||
image/x-portable-anymap pnm
|
||||
@@ -152,7 +152,7 @@ application/vnd.cups-pdf
|
||||
application/vnd.cups-postscript
|
||||
application/vnd.cups-ppd ppd string(0,"*PPD-Adobe:")
|
||||
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR") \
|
||||
(string(0,"RaS2") + !string(4,PwgRaster<00>)) string(0,"2SaR") \
|
||||
string(0,"RaS2") string(0,"2SaR") \
|
||||
string(0,"RaS3") string(0,"3SaR")
|
||||
application/vnd.cups-raw (string(0,<1B>E) + !string(2,<1B>%0B)) \
|
||||
string(0,<1B>@) \
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# Sample SNMP configuration file for CUPS. See "man cups-snmp.conf" for a
|
||||
# complete description of this file.
|
||||
@@ -9,5 +9,5 @@
|
||||
@CUPS_SNMP_COMMUNITY@
|
||||
|
||||
#
|
||||
# End of "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
dnl
|
||||
dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
|
||||
dnl
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl Common configuration stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2014 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
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 These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
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
|
||||
|
||||
dnl We need at least autoconf 2.60...
|
||||
@@ -20,8 +20,8 @@ dnl Set the name of the config header file...
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl Version number information...
|
||||
CUPS_VERSION=1.7.3
|
||||
CUPS_REVISION=
|
||||
CUPS_VERSION="1.7rc1"
|
||||
CUPS_REVISION=""
|
||||
#if test -z "$CUPS_REVISION" -a -d .svn; then
|
||||
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
|
||||
#fi
|
||||
@@ -225,9 +225,7 @@ dnl See if we have libusb...
|
||||
AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
|
||||
|
||||
LIBUSB=""
|
||||
USBQUIRKS=""
|
||||
AC_SUBST(LIBUSB)
|
||||
AC_SUBST(USBQUIRKS)
|
||||
|
||||
if test "x$PKGCONFIG" != x; then
|
||||
if test x$enable_libusb = xyes -o $uname != Darwin; then
|
||||
@@ -237,7 +235,6 @@ if test "x$PKGCONFIG" != x; then
|
||||
AC_DEFINE(HAVE_LIBUSB)
|
||||
CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
|
||||
LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
|
||||
USBQUIRKS="\$(DATADIR)/usb"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
@@ -303,11 +300,16 @@ fi
|
||||
LIBS="$SAVELIBS"
|
||||
|
||||
dnl Check for DBUS support
|
||||
if test -d /etc/dbus-1; then
|
||||
DBUSDIR="/etc/dbus-1"
|
||||
else
|
||||
DBUSDIR=""
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
|
||||
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
|
||||
DBUSDIR="$withval")
|
||||
|
||||
DBUSDIR=""
|
||||
DBUS_NOTIFIER=""
|
||||
DBUS_NOTIFIERLIBS=""
|
||||
|
||||
@@ -324,12 +326,7 @@ if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
|
||||
LIBS="$LIBS $DBUS_NOTIFIERLIBS"
|
||||
AC_CHECK_FUNC(dbus_message_iter_init_append,
|
||||
AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
|
||||
AC_CHECK_FUNC(dbus_threads_init,
|
||||
AC_DEFINE(HAVE_DBUS_THREADS_INIT))
|
||||
LIBS="$SAVELIBS"
|
||||
if test -d /etc/dbus-1; then
|
||||
DBUSDIR="/etc/dbus-1"
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
dnl
|
||||
dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
|
||||
dnl
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl Compiler stuff for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2014 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
dnl
|
||||
dnl These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
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 These coded instructions, statements, and computer programs are the
|
||||
dnl property of Apple Inc. and are protected by Federal copyright
|
||||
dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
|
||||
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
|
||||
|
||||
dnl Clear the debugging and non-shared library options unless the user asks
|
||||
@@ -132,23 +132,18 @@ if test -n "$GCC"; then
|
||||
# Not available to LSB binaries...
|
||||
AC_MSG_CHECKING(if GCC supports -fPIE)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
case "$uname" in
|
||||
Darwin*)
|
||||
CFLAGS="$CFLAGS -fPIE -Wl,-pie"
|
||||
AC_TRY_COMPILE(,,[
|
||||
CFLAGS="$CFLAGS -fPIE"
|
||||
AC_TRY_COMPILE(,,
|
||||
[case "$CC" in
|
||||
*clang)
|
||||
PIEFLAGS="-fPIE -Wl,-pie"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
;;
|
||||
|
||||
*)
|
||||
CFLAGS="$CFLAGS -fPIE -pie"
|
||||
AC_TRY_COMPILE(,,[
|
||||
;;
|
||||
*)
|
||||
PIEFLAGS="-fPIE -pie"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
CFLAGS="$OLDCFLAGS"
|
||||
fi
|
||||
|
||||
@@ -185,7 +180,7 @@ if test -n "$GCC"; then
|
||||
# The -z relro option is provided by the Linux linker command to
|
||||
# make relocatable data read-only.
|
||||
if test x$enable_relro = xyes; then
|
||||
RELROFLAGS="-Wl,-z,relro,-z,now"
|
||||
RELROFLAGS="-Wl,-z,relro"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
dnl
|
||||
dnl "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $"
|
||||
dnl "$Id$"
|
||||
dnl
|
||||
dnl GSSAPI/Kerberos library detection for CUPS.
|
||||
dnl
|
||||
dnl Copyright 2007-2013 by Apple Inc.
|
||||
dnl Copyright 2007-2012 by Apple Inc.
|
||||
dnl Copyright 2006-2007 by Easy Software Products.
|
||||
dnl
|
||||
dnl This file contains Kerberos support code, copyright 2006 by
|
||||
@@ -71,9 +71,38 @@ if test x$enable_gssapi != xno; then
|
||||
if test "x$LIBGSSAPI" != x; then
|
||||
AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
|
||||
if test -d /System/Library/Frameworks/GSS.framework; then
|
||||
AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H))
|
||||
AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSS_GSSAPI_GENERIC_H))
|
||||
AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H))
|
||||
gssdir="/System/Library/Frameworks/GSS.framework"
|
||||
AC_MSG_CHECKING(for GSS/gssapi.h presence)
|
||||
if test -f $gssdir/Headers/gssapi.h; then
|
||||
AC_DEFINE(HAVE_GSS_GSSAPI_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_generic.h presence)
|
||||
if test -f $gssdir/Headers/gssapi_generic.h; then
|
||||
AC_DEFINE(HAVE_GSSAPI_GENERIC_H)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_MSG_CHECKING(for GSS/gssapi_spi.h presence)
|
||||
if test -f $gssdir/PrivateHeaders/gssapi_spi.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(for GSS/gssapi_spi.h usability)
|
||||
if test -s $gssdir/PrivateHeaders/gssapi_spi.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test $uversion -ge 110 -a $uversion -lt 120; then
|
||||
# Broken public headers in 10.7.x...
|
||||
AC_MSG_ERROR(Run 'sudo mkdir -p $gssdir/PrivateHeaders' and 'sudo touch $gssdir/PrivateHeaders/gssapi_spi.h' to build CUPS.)
|
||||
fi
|
||||
fi
|
||||
else
|
||||
AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
|
||||
AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
|
||||
@@ -129,5 +158,5 @@ AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
|
||||
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $".
|
||||
dnl End of "$Id$".
|
||||
dnl
|
||||
|
||||
+2
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Configuration file for CUPS.
|
||||
*
|
||||
@@ -535,7 +535,6 @@
|
||||
|
||||
#undef HAVE_DBUS
|
||||
#undef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND
|
||||
#undef HAVE_DBUS_THREADS_INIT
|
||||
|
||||
|
||||
/*
|
||||
@@ -707,5 +706,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
|
||||
#endif /* !_CUPS_CONFIG_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
externo
-11405
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+2
-2
@@ -1,5 +1,5 @@
|
||||
dnl
|
||||
dnl "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $"
|
||||
dnl "$Id$"
|
||||
dnl
|
||||
dnl Configuration script for CUPS.
|
||||
dnl
|
||||
@@ -92,5 +92,5 @@ AC_OUTPUT(Makedefs
|
||||
chmod +x cups-config
|
||||
|
||||
dnl
|
||||
dnl End of "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $".
|
||||
dnl End of "$Id$".
|
||||
dnl
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# CUPS configuration utility.
|
||||
#
|
||||
@@ -142,5 +142,5 @@ while test $# -gt 0; do
|
||||
done
|
||||
|
||||
#
|
||||
# End of "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
|
||||
# "$Id$"
|
||||
#
|
||||
# API library Makefile for CUPS.
|
||||
#
|
||||
@@ -639,5 +639,5 @@ include Dependencies
|
||||
|
||||
|
||||
#
|
||||
# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
|
||||
# End of "$Id$".
|
||||
#
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Administration utility API definitions for CUPS.
|
||||
*
|
||||
@@ -2337,5 +2337,5 @@ write_option(cups_file_t *dstfp, /* I - PPD file */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Administration utility API definitions for CUPS.
|
||||
*
|
||||
@@ -77,5 +77,5 @@ extern int cupsAdminSetServerSettings(http_t *http,
|
||||
#endif /* !_CUPS_ADMINUTIL_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
Filter and backend programming header for CUPS.
|
||||
|
||||
Copyright 2008-2014 by Apple Inc.
|
||||
Copyright 2008-2011 by Apple Inc.
|
||||
|
||||
These coded instructions, statements, and computer programs are the
|
||||
property of Apple Inc. and are protected by Federal copyright
|
||||
|
||||
+8
-97
@@ -237,7 +237,7 @@ prefix strings:</p>
|
||||
<code>marker-types</code>, <code>printer-alert</code>, and
|
||||
<code>printer-alert-description</code> printer attributes. Standard
|
||||
<code>marker-types</code> values are listed in <a href='#TABLE1'>Table
|
||||
1</a>. String values need special handling - see <a href="#ATTR_STRINGS">Reporting Attribute String Values</a> below.</dd>
|
||||
1</a>.</dd>
|
||||
|
||||
<dt>CRIT: message</dt>
|
||||
<dd>Sets the printer-state-message attribute and adds the specified
|
||||
@@ -320,11 +320,11 @@ the "DEBUG:" prefix string.</p>
|
||||
<td>Fuser unit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>fuser-cleaning-pad</td>
|
||||
<td>fuserCleaningPad</td>
|
||||
<td>Fuser cleaning pad</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>fuser-oil</td>
|
||||
<td>fuserOil</td>
|
||||
<td>Fuser oil</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -336,7 +336,7 @@ the "DEBUG:" prefix string.</p>
|
||||
<td>Photo conductor</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>solid-wax</td>
|
||||
<td>solidWax</td>
|
||||
<td>Wax supply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -348,19 +348,19 @@ the "DEBUG:" prefix string.</p>
|
||||
<td>Toner supply</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>transfer-unit</td>
|
||||
<td>transferUnit</td>
|
||||
<td>Transfer unit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>waste-ink</td>
|
||||
<td>wasteInk</td>
|
||||
<td>Waste ink tank</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>waste-toner</td>
|
||||
<td>wasteToner</td>
|
||||
<td>Waste toner tank</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>waste-wax</td>
|
||||
<td>wasteWax</td>
|
||||
<td>Waste wax tank</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -440,95 +440,6 @@ the "DEBUG:" prefix string.</p>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
||||
|
||||
<h4><a name="ATTR_STRINGS">Reporting Attribute String Values</a></h4>
|
||||
|
||||
<p>When reporting string values using "ATTR:" messages, a filter or backend must take special care to appropriately quote those values. The scheduler uses the CUPS option parsing code for attributes, so the general syntax is:</p>
|
||||
|
||||
<pre class="example">
|
||||
name=simple
|
||||
name=simple,simple,...
|
||||
name='complex value'
|
||||
name="complex value"
|
||||
name='"complex value"','"complex value"',...
|
||||
</pre>
|
||||
|
||||
<p>Simple values are strings that do not contain spaces, quotes, backslashes, or the comma and can be placed verbatim in the "ATTR:" message, for example:</p>
|
||||
|
||||
<pre class="example">
|
||||
int levels[4] = { 40, 50, 60, 70 }; /* CMYK */
|
||||
|
||||
fputs("ATTR: marker-colors=#00FFFF,#FF00FF,#FFFF00,#000000\n", stderr);
|
||||
fputs("ATTR: marker-high-levels=100,100,100,100\n", stderr);
|
||||
fprintf(stderr, "ATTR: marker-levels=%d,%d,%d,%d\n", levels[0], levels[1],
|
||||
levels[2], levels[3], levels[4]);
|
||||
fputs("ATTR: marker-low-levels=5,5,5,5\n", stderr);
|
||||
fputs("ATTR: marker-types=toner,toner,toner,toner\n", stderr);
|
||||
</pre>
|
||||
|
||||
<p>Complex values that contains spaces, quotes, backslashes, or the comma must be quoted. For a single value a single set of quotes is sufficient:</p>
|
||||
|
||||
<pre class="example">
|
||||
fputs("ATTR: marker-message='Levels shown are approximate.'\n", stderr);
|
||||
</pre>
|
||||
|
||||
<p>When multiple values are reported, each value must be enclosed by a set of single and double quotes:</p>
|
||||
|
||||
<pre class="example">
|
||||
fputs("ATTR: marker-names='\"Cyan Toner\"','\"Magenta Toner\"',"
|
||||
"'\"Yellow Toner\"','\"Black Toner\"'\n", stderr);
|
||||
</pre>
|
||||
|
||||
<p>The IPP backend includes a <var>quote_string</var> function that may be used to properly quote a complex value in an "ATTR:" message:</p>
|
||||
|
||||
<pre class="example">
|
||||
static const char * /* O - Quoted string */
|
||||
quote_string(const char *s, /* I - String */
|
||||
char *q, /* I - Quoted string buffer */
|
||||
size_t qsize) /* I - Size of quoted string buffer */
|
||||
{
|
||||
char *qptr, /* Pointer into string buffer */
|
||||
*qend; /* End of string buffer */
|
||||
|
||||
|
||||
qptr = q;
|
||||
qend = q + qsize - 5;
|
||||
|
||||
if (qend < q)
|
||||
{
|
||||
*q = '\0';
|
||||
return (q);
|
||||
}
|
||||
|
||||
*qptr++ = '\'';
|
||||
*qptr++ = '\"';
|
||||
|
||||
while (*s && qptr < qend)
|
||||
{
|
||||
if (*s == '\\' || *s == '\"' || *s == '\'')
|
||||
{
|
||||
if (qptr < (qend - 4))
|
||||
{
|
||||
*qptr++ = '\\';
|
||||
*qptr++ = '\\';
|
||||
*qptr++ = '\\';
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
*qptr++ = *s++;
|
||||
}
|
||||
|
||||
*qptr++ = '\"';
|
||||
*qptr++ = '\'';
|
||||
*qptr = '\0';
|
||||
|
||||
return (q);
|
||||
}
|
||||
</pre>
|
||||
|
||||
|
||||
<h4><a name="MANAGING_STATE">Managing Printer State in a Filter</a></h4>
|
||||
|
||||
<p>Filters are responsible for managing the state keywords they set using
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Private array definitions for CUPS.
|
||||
*
|
||||
@@ -48,5 +48,5 @@ extern cups_array_t *_cupsArrayNewStrings(const char *s, char delim)
|
||||
#endif /* !_CUPS_ARRAY_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Sorted array routines for CUPS.
|
||||
*
|
||||
@@ -1362,5 +1362,5 @@ cups_array_find(cups_array_t *a, /* I - Array */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Sorted array definitions for CUPS.
|
||||
*
|
||||
@@ -88,5 +88,5 @@ extern void *cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2;
|
||||
#endif /* !_CUPS_ARRAY_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: attr.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* PPD model-specific attribute routines for CUPS.
|
||||
*
|
||||
@@ -331,5 +331,5 @@ _ppdNormalizeMakeAndModel(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: attr.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: auth.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Authentication functions for CUPS.
|
||||
*
|
||||
@@ -888,5 +888,5 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: auth.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: backchannel.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Backchannel functions for CUPS.
|
||||
*
|
||||
@@ -195,5 +195,5 @@ cups_setup(fd_set *set, /* I - Set for select() */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: backchannel.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: backend.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Backend functions for CUPS.
|
||||
*
|
||||
@@ -150,5 +150,5 @@ quote_string(const char *s) /* I - String to write */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: backend.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: backend.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Backend definitions for CUPS.
|
||||
*
|
||||
@@ -74,5 +74,5 @@ extern void cupsBackendReport(const char *device_scheme,
|
||||
#endif /* !_CUPS_BACKEND_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: backend.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: conflicts.c 3933 2012-10-01 03:01:10Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Option marking routines for CUPS.
|
||||
*
|
||||
@@ -1210,5 +1210,5 @@ ppd_test_constraints(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: conflicts.c 3933 2012-10-01 03:01:10Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: cups-private.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Private definitions for CUPS.
|
||||
*
|
||||
@@ -281,5 +281,5 @@ extern char *_cupsUserDefault(char *name, size_t namesize);
|
||||
#endif /* !_CUPS_CUPS_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: cups-private.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+13
-13
@@ -1,18 +1,18 @@
|
||||
/*
|
||||
* "$Id: cups.h 11812 2014-04-10 15:47:53Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* API definitions for CUPS.
|
||||
* API definitions for CUPS.
|
||||
*
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_CUPS_H_
|
||||
@@ -53,10 +53,10 @@ extern "C" {
|
||||
* Constants...
|
||||
*/
|
||||
|
||||
# define CUPS_VERSION 1.0703
|
||||
# define CUPS_VERSION 1.0700
|
||||
# define CUPS_VERSION_MAJOR 1
|
||||
# define CUPS_VERSION_MINOR 7
|
||||
# define CUPS_VERSION_PATCH 3
|
||||
# define CUPS_VERSION_PATCH 0
|
||||
|
||||
# define CUPS_BC_FD 3
|
||||
/* Back-channel file descriptor for
|
||||
@@ -627,5 +627,5 @@ extern const char *cupsUserAgent(void) _CUPS_API_1_7;
|
||||
#endif /* !_CUPS_CUPS_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: cups.h 11812 2014-04-10 15:47:53Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: custom.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* PPD custom option routines for CUPS.
|
||||
*
|
||||
@@ -118,5 +118,5 @@ ppdNextCustomParam(ppd_coption_t *opt) /* I - Custom option */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: custom.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: debug-private.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Private debugging macros for CUPS.
|
||||
*
|
||||
@@ -113,5 +113,5 @@ extern int _cups_gettimeofday(struct timeval *tv, void *tz);
|
||||
#endif /* !_CUPS_DEBUG_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: debug-private.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: debug.c 4027 2012-11-16 01:00:05Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Debugging functions for CUPS.
|
||||
*
|
||||
@@ -650,5 +650,5 @@ _cups_debug_set(const char *logfile, /* I - Log file or NULL */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: debug.c 4027 2012-11-16 01:00:05Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dest-job.c 4274 2013-04-09 20:10:23Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Destination job support for CUPS.
|
||||
*
|
||||
@@ -362,5 +362,5 @@ cupsStartDestDocument(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: dest-job.c 4274 2013-04-09 20:10:23Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dest-localization.c 4216 2013-03-11 13:57:36Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Destination localization support for CUPS.
|
||||
*
|
||||
@@ -383,5 +383,5 @@ cups_scan_strings(char *buffer) /* I - Start of string */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: dest-localization.c 4216 2013-03-11 13:57:36Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+17
-57
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dest-options.c 11883 2014-05-16 21:04:07Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Destination option/media support for CUPS.
|
||||
*
|
||||
@@ -886,8 +886,7 @@ cupsGetDestMediaByIndex(
|
||||
unsigned flags, /* I - Media flags */
|
||||
cups_size_t *size) /* O - Media size information */
|
||||
{
|
||||
_cups_media_db_t *nsize; /* Size for N */
|
||||
pwg_media_t *pwg; /* PWG media name for size */
|
||||
cups_size_t *nsize; /* Size for N */
|
||||
|
||||
|
||||
/*
|
||||
@@ -917,30 +916,13 @@ cupsGetDestMediaByIndex(
|
||||
* Copy the size over and return...
|
||||
*/
|
||||
|
||||
if ((nsize = (_cups_media_db_t *)cupsArrayIndex(dinfo->cached_db, n)) == NULL)
|
||||
{
|
||||
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (nsize->size_name)
|
||||
strlcpy(size->media, nsize->size_name, sizeof(size->media));
|
||||
else if (nsize->key)
|
||||
strlcpy(size->media, nsize->key, sizeof(size->media));
|
||||
else if ((pwg = pwgMediaForSize(nsize->width, nsize->length)) != NULL)
|
||||
strlcpy(size->media, pwg->pwg, sizeof(size->media));
|
||||
else
|
||||
if ((nsize = (cups_size_t *)cupsArrayIndex(dinfo->cached_db, n)) == NULL)
|
||||
{
|
||||
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
size->width = nsize->width;
|
||||
size->length = nsize->length;
|
||||
size->bottom = nsize->bottom;
|
||||
size->left = nsize->left;
|
||||
size->right = nsize->right;
|
||||
size->top = nsize->top;
|
||||
memcpy(size, nsize, sizeof(cups_size_t));
|
||||
|
||||
return (1);
|
||||
}
|
||||
@@ -1299,8 +1281,6 @@ cups_create_cached(http_t *http, /* I - Connection to destination */
|
||||
*first; /* First entry this size */
|
||||
|
||||
|
||||
DEBUG_printf(("3cups_create_cached(http=%p, dinfo=%p, flags=%u)", http, dinfo, flags));
|
||||
|
||||
if (dinfo->cached_db)
|
||||
cupsArrayDelete(dinfo->cached_db);
|
||||
|
||||
@@ -1309,15 +1289,11 @@ cups_create_cached(http_t *http, /* I - Connection to destination */
|
||||
|
||||
if (flags & CUPS_MEDIA_FLAGS_READY)
|
||||
{
|
||||
DEBUG_puts("4cups_create_cached: ready media");
|
||||
|
||||
cups_update_ready(http, dinfo);
|
||||
db = dinfo->ready_db;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_puts("4cups_create_cached: supported media");
|
||||
|
||||
if (!dinfo->media_db)
|
||||
cups_create_media_db(dinfo, CUPS_MEDIA_FLAGS_DEFAULT);
|
||||
|
||||
@@ -1328,40 +1304,26 @@ cups_create_cached(http_t *http, /* I - Connection to destination */
|
||||
mdb;
|
||||
mdb = (_cups_media_db_t *)cupsArrayNext(db))
|
||||
{
|
||||
DEBUG_printf(("4cups_create_cached: %p key=\"%s\", type=\"%s\", %dx%d, B%d L%d R%d T%d", mdb, mdb->key, mdb->type, mdb->width, mdb->length, mdb->bottom, mdb->left, mdb->right, mdb->top));
|
||||
|
||||
if (flags & CUPS_MEDIA_FLAGS_BORDERLESS)
|
||||
{
|
||||
if (!mdb->left && !mdb->right && !mdb->top && !mdb->bottom)
|
||||
{
|
||||
DEBUG_printf(("4cups_create_cached: add %p", mdb));
|
||||
cupsArrayAdd(dinfo->cached_db, mdb);
|
||||
}
|
||||
}
|
||||
else if (flags & CUPS_MEDIA_FLAGS_DUPLEX)
|
||||
{
|
||||
if (first->width != mdb->width || first->length != mdb->length)
|
||||
{
|
||||
DEBUG_printf(("4cups_create_cached: add %p", first));
|
||||
cupsArrayAdd(dinfo->cached_db, first);
|
||||
first = mdb;
|
||||
}
|
||||
else if (mdb->left >= first->left && mdb->right >= first->right && mdb->top >= first->top && mdb->bottom >= first->bottom &&
|
||||
(mdb->left != first->left || mdb->right != first->right || mdb->top != first->top || mdb->bottom != first->bottom))
|
||||
else if (mdb->left >= first->left && mdb->right >= first->right &&
|
||||
mdb->top >= first->top && mdb->bottom >= first->bottom)
|
||||
first = mdb;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_printf(("4cups_create_cached: add %p", mdb));
|
||||
cupsArrayAdd(dinfo->cached_db, mdb);
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & CUPS_MEDIA_FLAGS_DUPLEX)
|
||||
{
|
||||
DEBUG_printf(("4cups_create_cached: add %p", first));
|
||||
cupsArrayAdd(dinfo->cached_db, first);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1795,7 +1757,8 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
|
||||
* Look for the smallest margins...
|
||||
*/
|
||||
|
||||
if (best->left != 0 || best->right != 0 || best->top != 0 || best->bottom != 0)
|
||||
if (best->left != 0 || best->right != 0 || best->top != 0 ||
|
||||
best->bottom != 0)
|
||||
{
|
||||
for (mdb = (_cups_media_db_t *)cupsArrayNext(db);
|
||||
mdb && !cups_compare_media_db(mdb, &key);
|
||||
@@ -1832,8 +1795,7 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
|
||||
mdb = (_cups_media_db_t *)cupsArrayNext(db))
|
||||
{
|
||||
if (mdb->left >= best->left && mdb->right >= best->right &&
|
||||
mdb->top >= best->top && mdb->bottom >= best->bottom &&
|
||||
(mdb->bottom != best->bottom || mdb->left != best->left || mdb->right != best->right || mdb->top != best->top))
|
||||
mdb->top >= best->top && mdb->bottom >= best->bottom)
|
||||
best = mdb;
|
||||
}
|
||||
}
|
||||
@@ -1848,10 +1810,11 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
|
||||
mdb = (_cups_media_db_t *)cupsArrayNext(db))
|
||||
{
|
||||
if (((mdb->left > 0 && mdb->left <= best->left) || best->left == 0) &&
|
||||
((mdb->right > 0 && mdb->right <= best->right) || best->right == 0) &&
|
||||
((mdb->right > 0 && mdb->right <= best->right) ||
|
||||
best->right == 0) &&
|
||||
((mdb->top > 0 && mdb->top <= best->top) || best->top == 0) &&
|
||||
((mdb->bottom > 0 && mdb->bottom <= best->bottom) || best->bottom == 0) &&
|
||||
(mdb->bottom != best->bottom || mdb->left != best->left || mdb->right != best->right || mdb->top != best->top))
|
||||
((mdb->bottom > 0 && mdb->bottom <= best->bottom) ||
|
||||
best->bottom == 0))
|
||||
best = mdb;
|
||||
}
|
||||
}
|
||||
@@ -1929,8 +1892,7 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
|
||||
mdb = (_cups_media_db_t *)cupsArrayNext(db))
|
||||
{
|
||||
if (mdb->left <= best->left && mdb->right <= best->right &&
|
||||
mdb->top <= best->top && mdb->bottom <= best->bottom &&
|
||||
(mdb->bottom != best->bottom || mdb->left != best->left || mdb->right != best->right || mdb->top != best->top))
|
||||
mdb->top <= best->top && mdb->bottom <= best->bottom)
|
||||
{
|
||||
best = mdb;
|
||||
if (mdb->left == 0 && mdb->right == 0 && mdb->bottom == 0 &&
|
||||
@@ -1951,8 +1913,7 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
|
||||
mdb = (_cups_media_db_t *)cupsArrayNext(db))
|
||||
{
|
||||
if (mdb->left >= best->left && mdb->right >= best->right &&
|
||||
mdb->top >= best->top && mdb->bottom >= best->bottom &&
|
||||
(mdb->bottom != best->bottom || mdb->left != best->left || mdb->right != best->right || mdb->top != best->top))
|
||||
mdb->top >= best->top && mdb->bottom >= best->bottom)
|
||||
best = mdb;
|
||||
}
|
||||
}
|
||||
@@ -1971,8 +1932,7 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */
|
||||
best->right == 0) &&
|
||||
((mdb->top > 0 && mdb->top <= best->top) || best->top == 0) &&
|
||||
((mdb->bottom > 0 && mdb->bottom <= best->bottom) ||
|
||||
best->bottom == 0) &&
|
||||
(mdb->bottom != best->bottom || mdb->left != best->left || mdb->right != best->right || mdb->top != best->top))
|
||||
best->bottom == 0))
|
||||
best = mdb;
|
||||
}
|
||||
}
|
||||
@@ -2307,5 +2267,5 @@ cups_update_ready(http_t *http, /* I - Connection to destination */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: dest-options.c 11883 2014-05-16 21:04:07Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+7
-36
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dest.c 11688 2014-03-05 21:11:32Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* User-defined destination (and option) support for CUPS.
|
||||
*
|
||||
@@ -891,10 +891,6 @@ cupsEnumDests(
|
||||
num_dests; /* Number of destinations */
|
||||
cups_dest_t *dests = NULL, /* Destinations */
|
||||
*dest; /* Current destination */
|
||||
const char *defprinter; /* Default printer */
|
||||
char name[1024], /* Copy of printer name */
|
||||
*instance, /* Pointer to instance name */
|
||||
*user_default; /* User default printer */
|
||||
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
|
||||
int count, /* Number of queries started */
|
||||
remaining; /* Remainder of timeout */
|
||||
@@ -940,31 +936,6 @@ cupsEnumDests(
|
||||
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, IPP_OP_CUPS_GET_PRINTERS, NULL,
|
||||
&dests, type, mask);
|
||||
|
||||
if ((user_default = _cupsUserDefault(name, sizeof(name))) != NULL)
|
||||
defprinter = name;
|
||||
else if ((defprinter = cupsGetDefault2(CUPS_HTTP_DEFAULT)) != NULL)
|
||||
{
|
||||
strlcpy(name, defprinter, sizeof(name));
|
||||
defprinter = name;
|
||||
}
|
||||
|
||||
if (defprinter)
|
||||
{
|
||||
/*
|
||||
* Separate printer and instance name...
|
||||
*/
|
||||
|
||||
if ((instance = strchr(name, '/')) != NULL)
|
||||
*instance++ = '\0';
|
||||
|
||||
/*
|
||||
* Lookup the printer and instance and make it the default...
|
||||
*/
|
||||
|
||||
if ((dest = cupsGetDest(name, instance, num_dests, dests)) != NULL)
|
||||
dest->is_default = 1;
|
||||
}
|
||||
|
||||
for (i = num_dests, dest = dests;
|
||||
i > 0 && (!cancel || !*cancel);
|
||||
i --, dest ++)
|
||||
@@ -982,11 +953,11 @@ cupsEnumDests(
|
||||
* Get Bonjour-shared printers...
|
||||
*/
|
||||
|
||||
data.type = type;
|
||||
data.mask = mask;
|
||||
data.cb = cb;
|
||||
data.user_data = user_data;
|
||||
data.devices = cupsArrayNew3((cups_array_func_t)cups_dnssd_compare_devices, NULL, NULL, 0, NULL, (cups_afree_func_t)cups_dnssd_free_device);
|
||||
data.type = type;
|
||||
data.mask = mask;
|
||||
data.devices = cupsArrayNew3((cups_array_func_t)cups_dnssd_compare_devices,
|
||||
NULL, NULL, 0, NULL,
|
||||
(cups_afree_func_t)cups_dnssd_free_device);
|
||||
|
||||
# ifdef HAVE_DNSSD
|
||||
if (DNSServiceCreateConnection(&data.main_ref) != kDNSServiceErr_NoError)
|
||||
@@ -3920,5 +3891,5 @@ cups_make_string(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: dest.c 11688 2014-03-05 21:11:32Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dir.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Directory routines for CUPS.
|
||||
*
|
||||
@@ -468,5 +468,5 @@ cupsDirRewind(cups_dir_t *dp) /* I - Directory pointer */
|
||||
#endif /* WIN32 */
|
||||
|
||||
/*
|
||||
* End of "$Id: dir.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: dir.h 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Public directory definitions for CUPS.
|
||||
*
|
||||
@@ -65,5 +65,5 @@ extern void cupsDirRewind(cups_dir_t *dp) _CUPS_API_1_2;
|
||||
#endif /* !_CUPS_DIR_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: dir.h 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: emit.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* PPD code emission routines for CUPS.
|
||||
*
|
||||
@@ -1225,5 +1225,5 @@ ppd_handle_media(ppd_file_t *ppd) /* I - PPD file */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: emit.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+44
-19
@@ -1,18 +1,26 @@
|
||||
/*
|
||||
* "$Id: encode.c 11867 2014-05-09 20:33:08Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Option encoding routines for CUPS.
|
||||
* Option encoding routines for CUPS.
|
||||
*
|
||||
* Copyright 2007-2014 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cupsEncodeOptions() - Encode printer options into IPP attributes.
|
||||
* cupsEncodeOptions2() - Encode printer options into IPP attributes for
|
||||
* a group.
|
||||
* _ippFindOption() - Find the attribute information for an option.
|
||||
* compare_ipp_options() - Compare two IPP options.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -33,10 +41,7 @@ static const ipp_op_t ipp_job_creation[] =
|
||||
{
|
||||
IPP_OP_PRINT_JOB,
|
||||
IPP_OP_PRINT_URI,
|
||||
IPP_OP_VALIDATE_JOB,
|
||||
IPP_OP_CREATE_JOB,
|
||||
IPP_OP_HOLD_JOB,
|
||||
IPP_OP_SET_JOB_ATTRIBUTES,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
@@ -46,8 +51,6 @@ static const ipp_op_t ipp_doc_creation[] =
|
||||
IPP_OP_PRINT_URI,
|
||||
IPP_OP_SEND_DOCUMENT,
|
||||
IPP_OP_SEND_URI,
|
||||
IPP_OP_SET_JOB_ATTRIBUTES,
|
||||
IPP_OP_SET_DOCUMENT_ATTRIBUTES,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
@@ -56,8 +59,8 @@ static const ipp_op_t ipp_sub_creation[] =
|
||||
IPP_OP_PRINT_JOB,
|
||||
IPP_OP_PRINT_URI,
|
||||
IPP_OP_CREATE_JOB,
|
||||
IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS,
|
||||
IPP_OP_CREATE_JOB_SUBSCRIPTIONS,
|
||||
IPP_OP_CREATE_PRINTER_SUBSCRIPTION,
|
||||
IPP_OP_CREATE_JOB_SUBSCRIPTION,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
@@ -65,13 +68,23 @@ static const ipp_op_t ipp_all_print[] =
|
||||
{
|
||||
IPP_OP_PRINT_JOB,
|
||||
IPP_OP_PRINT_URI,
|
||||
IPP_OP_VALIDATE_JOB,
|
||||
IPP_OP_CREATE_JOB,
|
||||
IPP_OP_SEND_DOCUMENT,
|
||||
IPP_OP_SEND_URI,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
static const ipp_op_t ipp_all_limit[] =
|
||||
{
|
||||
IPP_OP_GET_JOBS,
|
||||
IPP_OP_GET_PRINTER_ATTRIBUTES,
|
||||
IPP_OP_CUPS_GET_PRINTERS,
|
||||
IPP_OP_CUPS_GET_CLASSES,
|
||||
IPP_OP_CUPS_GET_DEVICES,
|
||||
IPP_OP_CUPS_GET_PPDS,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
static const ipp_op_t ipp_set_printer[] =
|
||||
{
|
||||
IPP_OP_SET_PRINTER_ATTRIBUTES,
|
||||
@@ -80,6 +93,18 @@ static const ipp_op_t ipp_set_printer[] =
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
static const ipp_op_t cups_am_class[] =
|
||||
{
|
||||
IPP_OP_CUPS_ADD_MODIFY_CLASS,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
static const ipp_op_t cups_am_printer[] =
|
||||
{
|
||||
IPP_OP_CUPS_ADD_MODIFY_PRINTER,
|
||||
IPP_OP_CUPS_NONE
|
||||
};
|
||||
|
||||
static const ipp_op_t cups_schemes[] =
|
||||
{
|
||||
IPP_OP_CUPS_GET_DEVICES,
|
||||
@@ -847,5 +872,5 @@ compare_ipp_options(_ipp_option_t *a, /* I - First option */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: encode.c 11867 2014-05-09 20:33:08Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: file-private.h 11642 2014-02-27 15:57:59Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Private file definitions for CUPS.
|
||||
*
|
||||
@@ -16,8 +16,6 @@
|
||||
* 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/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_FILE_PRIVATE_H_
|
||||
@@ -135,5 +133,5 @@ extern void _cupsFileCheckFilter(void *context,
|
||||
#endif /* !_CUPS_FILE_PRIVATE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: file-private.h 11642 2014-02-27 15:57:59Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+56
-18
@@ -1,23 +1,61 @@
|
||||
/*
|
||||
* "$Id: file.c 11642 2014-02-27 15:57:59Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* File functions for CUPS.
|
||||
* File functions for CUPS.
|
||||
*
|
||||
* Since stdio files max out at 256 files on many systems, we have to
|
||||
* write similar functions without this limit. At the same time, using
|
||||
* our own file functions allows us to provide transparent support of
|
||||
* gzip'd print files, PPD files, etc.
|
||||
* Since stdio files max out at 256 files on many systems, we have to
|
||||
* write similar functions without this limit. At the same time, using
|
||||
* our own file functions allows us to provide transparent support of
|
||||
* gzip'd print files, PPD files, etc.
|
||||
*
|
||||
* Copyright 2007-2013 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
* Copyright 2007-2012 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* 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/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
* Contents:
|
||||
*
|
||||
* _cupsFileCheck() - Check the permissions of the given filename.
|
||||
* _cupsFileCheckFilter() - Report file check results as CUPS filter messages.
|
||||
* cupsFileClose() - Close a CUPS file.
|
||||
* cupsFileCompression() - Return whether a file is compressed.
|
||||
* cupsFileEOF() - Return the end-of-file status.
|
||||
* cupsFileFind() - Find a file using the specified path.
|
||||
* cupsFileFlush() - Flush pending output.
|
||||
* cupsFileGetChar() - Get a single character from a file.
|
||||
* cupsFileGetConf() - Get a line from a configuration file.
|
||||
* cupsFileGetLine() - Get a CR and/or LF-terminated line that may
|
||||
* contain binary data.
|
||||
* cupsFileGets() - Get a CR and/or LF-terminated line.
|
||||
* cupsFileLock() - Temporarily lock access to a file.
|
||||
* cupsFileNumber() - Return the file descriptor associated with a CUPS
|
||||
* file.
|
||||
* cupsFileOpen() - Open a CUPS file.
|
||||
* cupsFileOpenFd() - Open a CUPS file using a file descriptor.
|
||||
* cupsFilePeekChar() - Peek at the next character from a file.
|
||||
* cupsFilePrintf() - Write a formatted string.
|
||||
* cupsFilePutChar() - Write a character.
|
||||
* cupsFilePutConf() - Write a configuration line.
|
||||
* cupsFilePuts() - Write a string.
|
||||
* cupsFileRead() - Read from a file.
|
||||
* cupsFileRewind() - Set the current file position to the beginning of
|
||||
* the file.
|
||||
* cupsFileSeek() - Seek in a file.
|
||||
* cupsFileStderr() - Return a CUPS file associated with stderr.
|
||||
* cupsFileStdin() - Return a CUPS file associated with stdin.
|
||||
* cupsFileStdout() - Return a CUPS file associated with stdout.
|
||||
* cupsFileTell() - Return the current file position.
|
||||
* cupsFileUnlock() - Unlock access to a file.
|
||||
* cupsFileWrite() - Write to a file.
|
||||
* cups_compress() - Compress a buffer of data.
|
||||
* cups_fill() - Fill the input buffer.
|
||||
* cups_open() - Safely open a file for writing.
|
||||
* cups_read() - Read from a file descriptor.
|
||||
* cups_write() - Write to a file descriptor.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -2391,8 +2429,8 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
|
||||
}
|
||||
else
|
||||
{
|
||||
tcrc = ((((((uLong)trailer[3] << 8) | (uLong)trailer[2]) << 8) |
|
||||
(uLong)trailer[1]) << 8) | (uLong)trailer[0];
|
||||
tcrc = (((((trailer[3] << 8) | trailer[2]) << 8) | trailer[1]) << 8) |
|
||||
trailer[0];
|
||||
|
||||
if (tcrc != fp->crc)
|
||||
{
|
||||
@@ -2400,7 +2438,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
|
||||
* Bad CRC, mark end-of-file...
|
||||
*/
|
||||
|
||||
DEBUG_printf(("9cups_fill: tcrc=%08x != fp->crc=%08x",
|
||||
DEBUG_printf(("9cups_fill: tcrc=%08x, fp->crc=%08x",
|
||||
(unsigned int)tcrc, (unsigned int)fp->crc));
|
||||
|
||||
fp->eof = 1;
|
||||
@@ -2672,5 +2710,5 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: file.c 11642 2014-02-27 15:57:59Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-4
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: file.h 11642 2014-02-27 15:57:59Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Public file definitions for CUPS.
|
||||
*
|
||||
@@ -16,8 +16,6 @@
|
||||
* 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/".
|
||||
*
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*/
|
||||
|
||||
#ifndef _CUPS_FILE_H_
|
||||
@@ -114,5 +112,5 @@ extern ssize_t cupsFileWrite(cups_file_t *fp, const char *buf,
|
||||
#endif /* !_CUPS_FILE_H_ */
|
||||
|
||||
/*
|
||||
* End of "$Id: file.h 11642 2014-02-27 15:57:59Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: getdevices.c 4216 2013-03-11 13:57:36Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* cupsGetDevices implementation for CUPS.
|
||||
*
|
||||
@@ -280,5 +280,5 @@ cupsGetDevices(
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: getdevices.c 4216 2013-03-11 13:57:36Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: getifaddrs.c 10996 2013-05-29 11:51:34Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Network interface functions for CUPS.
|
||||
*
|
||||
@@ -262,5 +262,5 @@ _cups_freeifaddrs(struct ifaddrs *addrs)/* I - Interface list to free */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: getifaddrs.c 10996 2013-05-29 11:51:34Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-22
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: getputfile.c 11153 2013-07-17 14:10:21Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Get/put file functions for CUPS.
|
||||
*
|
||||
@@ -84,16 +84,6 @@ cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
|
||||
|
||||
do
|
||||
{
|
||||
if (!_cups_strcasecmp(httpGetField(http, HTTP_FIELD_CONNECTION), "close"))
|
||||
{
|
||||
httpClearFields(http);
|
||||
if (httpReconnect2(http, 30000, NULL))
|
||||
{
|
||||
status = HTTP_STATUS_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring);
|
||||
httpSetField(http, HTTP_FIELD_IF_MODIFIED_SINCE, if_modified_since);
|
||||
@@ -306,16 +296,6 @@ cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFA
|
||||
|
||||
do
|
||||
{
|
||||
if (!_cups_strcasecmp(httpGetField(http, HTTP_FIELD_CONNECTION), "close"))
|
||||
{
|
||||
httpClearFields(http);
|
||||
if (httpReconnect2(http, 30000, NULL))
|
||||
{
|
||||
status = HTTP_STATUS_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_printf(("2cupsPutFd: starting attempt, authstring=\"%s\"...",
|
||||
http->authstring));
|
||||
|
||||
@@ -518,5 +498,5 @@ cupsPutFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DE
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: getputfile.c 11153 2013-07-17 14:10:21Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* "$Id: globals.c 11113 2013-07-10 14:08:39Z msweet $"
|
||||
* "$Id$"
|
||||
*
|
||||
* Global variable access routines for CUPS.
|
||||
*
|
||||
@@ -392,5 +392,5 @@ cups_globals_init(void)
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: globals.c 11113 2013-07-10 14:08:39Z msweet $".
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário