From f301802fc285c5ec9effadfbf13de653822dddd8 Mon Sep 17 00:00:00 2001 From: jlovell Date: Mon, 22 May 2006 21:33:05 +0000 Subject: [PATCH] Load cups into easysw/current. git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@158 a1ca3aef-8c08-0410-bb20-df032aa958be --- CHANGES-1.2.txt | 622 ++++ CHANGES.txt | 567 +--- Makedefs.in | 6 +- Makefile | 9 +- backend/ipp.c | 6 +- backend/serial.c | 6 +- backend/usb-unix.c | 17 +- cgi-bin/admin.c | 31 +- cgi-bin/classes.c | 16 +- cgi-bin/help.c | 3 +- cgi-bin/html.c | 7 +- cgi-bin/ipp-var.c | 14 +- cgi-bin/printers.c | 20 +- cgi-bin/template.c | 11 +- cgi-bin/var.c | 7 +- config-scripts/cups-common.m4 | 6 +- config-scripts/cups-compiler.m4 | 89 +- config-scripts/cups-directories.m4 | 12 +- config-scripts/cups-ldap.m4 | 6 +- config-scripts/cups-sharedlibs.m4 | 85 +- config-scripts/cups-ssl.m4 | 29 +- cups-config.in | 33 +- cups/Makefile | 29 +- cups/auth.c | 8 +- cups/backchannel.c | 6 +- cups/cups.h | 8 +- cups/encode.c | 8 +- cups/getifaddrs.c | 9 +- cups/http-private.h | 20 +- cups/mark.c | 43 +- cups/page.c | 6 +- cups/request.c | 16 +- cups/snprintf.c | 14 +- doc/help/spec-pdf.html | 21 + doc/help/spec-raster.html | 248 +- doc/pl/images/button-accept-jobs.gif | Bin 627 -> 691 bytes doc/pl/images/button-add-class.gif | Bin 536 -> 528 bytes doc/pl/images/button-add-printer.gif | Bin 571 -> 579 bytes doc/pl/images/button-add-this-printer.gif | Bin 608 -> 648 bytes doc/pl/images/button-cancel-all-jobs.gif | Bin 797 -> 768 bytes doc/pl/images/button-cancel-job.gif | Bin 531 -> 524 bytes doc/pl/images/button-change-settings.gif | Bin 580 -> 624 bytes doc/pl/images/button-clean-print-heads.gif | Bin 878 -> 943 bytes doc/pl/images/button-clear.gif | Bin 469 -> 480 bytes doc/pl/images/button-continue.gif | Bin 339 -> 447 bytes doc/pl/images/button-delete-class.gif | Bin 463 -> 477 bytes doc/pl/images/button-delete-printer.gif | Bin 513 -> 533 bytes .../images/button-edit-configuration-file.gif | Bin 673 -> 734 bytes doc/pl/images/button-export-samba.gif | Bin 657 -> 977 bytes doc/pl/images/button-help.gif | Bin 363 -> 380 bytes doc/pl/images/button-hold-job.gif | Bin 649 -> 709 bytes doc/pl/images/button-manage-classes.gif | Bin 605 -> 640 bytes doc/pl/images/button-manage-jobs.gif | Bin 697 -> 669 bytes doc/pl/images/button-manage-printers.gif | Bin 643 -> 717 bytes doc/pl/images/button-manage-server.gif | Bin 669 -> 689 bytes doc/pl/images/button-modify-class.gif | Bin 592 -> 647 bytes doc/pl/images/button-modify-printer.gif | Bin 659 -> 702 bytes doc/pl/images/button-move-job.gif | Bin 608 -> 604 bytes doc/pl/images/button-move-jobs.gif | Bin 843 -> 837 bytes doc/pl/images/button-print-self-test-page.gif | Bin 711 -> 1074 bytes doc/pl/images/button-print-test-page.gif | Bin 709 -> 788 bytes doc/pl/images/button-publish-printer.gif | Bin 579 -> 662 bytes doc/pl/images/button-reject-jobs.gif | Bin 638 -> 582 bytes doc/pl/images/button-release-job.gif | Bin 613 -> 605 bytes doc/pl/images/button-restart-job.gif | Bin 653 -> 827 bytes doc/pl/images/button-save-changes.gif | Bin 536 -> 565 bytes doc/pl/images/button-search.gif | Bin 381 -> 505 bytes doc/pl/images/button-set-allowed-users.gif | Bin 909 -> 985 bytes doc/pl/images/button-set-as-default.gif | Bin 706 -> 729 bytes doc/pl/images/button-set-printer-options.gif | Bin 691 -> 709 bytes doc/pl/images/button-show-active.gif | Bin 764 -> 866 bytes doc/pl/images/button-show-all.gif | Bin 813 -> 891 bytes doc/pl/images/button-show-completed.gif | Bin 809 -> 923 bytes doc/pl/images/button-show-next.gif | Bin 605 -> 702 bytes doc/pl/images/button-show-previous.gif | Bin 568 -> 742 bytes doc/pl/images/button-sort-ascending.gif | Bin 648 -> 576 bytes doc/pl/images/button-sort-descending.gif | Bin 673 -> 627 bytes doc/pl/images/button-start-class.gif | Bin 544 -> 579 bytes doc/pl/images/button-start-printer.gif | Bin 606 -> 636 bytes doc/pl/images/button-stop-class.gif | Bin 573 -> 624 bytes doc/pl/images/button-stop-printer.gif | Bin 638 -> 696 bytes doc/pl/images/button-unpublish-printer.gif | Bin 613 -> 694 bytes doc/pl/images/button-use-default-config.gif | Bin 930 -> 1007 bytes doc/pl/images/button-view-access-log.gif | Bin 711 -> 888 bytes doc/pl/images/button-view-error-log.gif | Bin 717 -> 893 bytes doc/pl/images/button-view-page-log.gif | Bin 793 -> 812 bytes .../images/button-view-printable-version.gif | Bin 819 -> 939 bytes doc/pl/index.html.in | 68 +- filter/Makefile | 28 +- filter/image-bmp.c | 67 +- filter/image-colorspace.c | 78 +- filter/image-gif.c | 8 +- filter/image-jpeg.c | 10 +- filter/image-photocd.c | 54 +- filter/image-pix.c | 60 +- filter/image-png.c | 6 +- filter/image-pnm.c | 57 +- filter/image-sgi.c | 66 +- filter/image-sun.c | 63 +- filter/image-tiff.c | 314 +- filter/imagetoraster.c | 1065 +++--- filter/interpret.c | 6 +- filter/pstops.c | 53 +- filter/raster.c | 130 +- filter/raster.h | 19 +- filter/rastertolabel.c | 300 +- locale/cups.pot | 11 +- locale/cups_es.po | 14 +- locale/cups_ja.po | 14 +- locale/cups_pl.po | 2949 +++++++++++++++++ locale/cups_sv.po | 233 +- ppd/intelbar.ppd | 219 ++ ppd/zebra.ppd | 6 +- ppd/zebracpl.ppd | 2 +- ppd/zebraep1.ppd | 2 +- ppd/zebraep2.ppd | 4 +- scheduler/auth.c | 9 +- scheduler/client.c | 9 +- scheduler/dirsvc.c | 12 +- scheduler/ipp.c | 529 ++- scheduler/job.c | 38 +- scheduler/printers.c | 82 +- scheduler/printers.h | 7 +- scheduler/testmime.c | 12 +- systemv/cupstestppd.c | 7 +- systemv/lpadmin.c | 23 +- systemv/lpstat.c | 12 +- templates/es/jobs.tmpl | 2 +- templates/ja/jobs.tmpl | 2 +- templates/jobs.tmpl | 2 +- templates/pl/add-class.tmpl | 6 +- templates/pl/add-printer.tmpl | 10 +- templates/pl/admin.tmpl | 50 +- templates/pl/choose-device.tmpl | 6 +- templates/pl/choose-make.tmpl | 8 +- templates/pl/choose-model.tmpl | 8 +- templates/pl/choose-serial.tmpl | 18 +- templates/pl/choose-uri.tmpl | 18 +- templates/pl/class-added.tmpl | 2 +- templates/pl/class-confirm.tmpl | 4 +- templates/pl/class-deleted.tmpl | 2 +- templates/pl/class-jobs-header.tmpl | 2 +- templates/pl/class-modified.tmpl | 2 +- templates/pl/classes-header.tmpl | 2 +- templates/pl/classes.tmpl | 54 +- templates/pl/help-header.tmpl | 39 +- templates/pl/job-cancel.tmpl | 2 +- templates/pl/job-hold.tmpl | 2 +- templates/pl/job-move.tmpl | 6 +- templates/pl/job-moved.tmpl | 2 +- templates/pl/job-release.tmpl | 2 +- templates/pl/job-restart.tmpl | 2 +- templates/pl/jobs-header.tmpl | 26 +- templates/pl/jobs.tmpl | 34 +- templates/pl/maintenance.tmpl | 2 +- templates/pl/modify-class.tmpl | 6 +- templates/pl/modify-printer.tmpl | 10 +- templates/pl/option-conflict.tmpl | 4 +- templates/pl/option-trailer.tmpl | 2 +- templates/pl/pager.tmpl | 8 +- templates/pl/printer-accept.tmpl | 6 +- templates/pl/printer-confirm.tmpl | 4 +- templates/pl/printer-default.tmpl | 10 +- templates/pl/printer-jobs-header.tmpl | 2 +- templates/pl/printer-modified.tmpl | 3 +- templates/pl/printer-purge.tmpl | 6 +- templates/pl/printer-reject.tmpl | 6 +- templates/pl/printer-start.tmpl | 4 +- templates/pl/printer-stop.tmpl | 4 +- templates/pl/printers-header.tmpl | 2 +- templates/pl/printers.tmpl | 70 +- templates/pl/restart.tmpl | 2 +- templates/pl/samba-export.tmpl | 30 +- templates/pl/samba-exported.tmpl | 2 +- templates/pl/search.tmpl | 6 +- templates/pl/test-page.tmpl | 2 +- templates/pl/trailer.tmpl | 8 +- templates/pl/users.tmpl | 8 +- templates/sv/jobs.tmpl | 2 +- tools/makesrcdist | 8 +- tools/testosx | 4 +- 181 files changed, 6599 insertions(+), 2619 deletions(-) create mode 100644 CHANGES-1.2.txt create mode 100644 doc/help/spec-pdf.html create mode 100644 locale/cups_pl.po create mode 100644 ppd/intelbar.ppd diff --git a/CHANGES-1.2.txt b/CHANGES-1.2.txt new file mode 100644 index 000000000..5195095c0 --- /dev/null +++ b/CHANGES-1.2.txt @@ -0,0 +1,622 @@ +CHANGES-1.2.txt +--------------- + +CHANGES IN CUPS V1.2.1 + + - The web interface support programs crashed on Solaris + (STR #1699) + - cupstestppd incorrectly reported problems with + *1284DeviceID attributes (STR #1710) + - Browsing could get disabled after a restart (STR #1670) + - Custom page sizes were not parsed properly (STR #1709) + - The -U option wasn't supported by lpadmin (STR #1702) + - The -u option didn't work with lpadmin (STR #1703) + - The scheduler did not create non-blocking back-channel + pipes, which caused problems when the printer driver + did not read the back-channel data (STR #1705) + - The scheduler no longer uses chunking in responses to + clients - this caused problems with older versions of + CUPS like 1.1.17 (PR #6143) + - Automatic raw printing was broken (STR #1667) + - 6-up printing was broken (STR #1697) + - The pstops filter did not disable CTRL-D processing on + the printer/RIP. + - ppdOpen*() did not load custom options properly (STR + #1680) + - "Set Printer Options" in the web interface did not + update the DefaultImageableArea or + DefaultPaperDimension attributes in the PPD file (STR + #1689) + - Fixed compile errors (STR #1682, STR #1684, STR #1685, + STR #1690) + - The lpstat command displayed the wrong error message + for a missing destination (STR #1683) + - Revised and completed the Polish translation (STR + #1669) + - Stopped jobs did not show up in the list of active jobs + (STR #1676) + - The configure script did not use the GNU TLS + "libgnutls-config" script to find the proper compiler + and linker options. + - The imagetoraster filter did not correctly generate + several 1, 2, and 4-bit color modes. + - cupsRasterWritePixels() could lose track of the current + output row. + - cupsRasterReadPixels() did not automatically swap + 12/16-bit chunked pixel data. + - Moved the private _cups_raster_s structure out of the + public header. + - Updated the CUPS raster format specification to include + encoding rules and colorspace definitions. + - The Zebra PPD files had the wrong PostScript code for + the "default" option choices. + - The imagetoraster filter did not generate correct CIE + XYZ or Lab color data. + - The cups-config script did not work when invoked from a + source directory (STR #1673) + - The SNMP backend did not compile on systems that used + the getifaddrs emulation functions (STR #1668) + + +CHANGES IN CUPS V1.2 + + - Documentation updates (STR #1618, STR #1620, STR #1622, + STR #1637) + - Static file copy buffers reduced from 64k to 32k to + work around bogus MallocDebug library assumptions (STR + #1660) + - The scheduler did not decode the backend exit code + properly (STR #1648) + - The MacOS X USB backend did not report the 1284 device ID, + nor did it fix device IDs returned by HP printers. + - The scheduler started more slowly than 1.1.x with large + numbers of printers (STR #1653) + - cupsRasterInterpretPPD() didn't support the + cupsPreferredBitsPerColor attribute, and imagetoraster + didn't use the new API. + - The "make test" script did not create all of the necessary + subdirectories for testing (STR #1638) + - The scheduler did not prevent rotation of logs + redirected to /dev/null (STR #1651) + - "make test" did not include the SNMP backend in the + test environment (STR #1625) + - The EPM packaging files did not work (STR #1621) + - "Use Default Configuration" inserted a broken + configuration file (STR #1624) + - Redirects in the web interface did not always preserve + the encrypted status of a connection (STR #1603) + - Added the Apple "pap" backend. + - Added CUPS library to CUPS Image shared library + linkage to support Linux --as-needed linker option + (STR #1606) + - Fixed support for --enable-pie (STR #1609) + - The pdftops filter did not validate the length of the + encryption key (STR #1608) + - Updated the Polish localization. + - "Encryption Required" in the cupsd.conf file now only + requires encryption when the connection is not over the + loopback interface or domain socket. + - Printer names containing "+" were not quoted properly in + the web interface (STR #1600) + - The SNMP backend now reports the make and model in the + information string so that the auto-generated printer + name is more useful than just an IP address. + + +CHANGES IN CUPS V1.2rc3 + + - The cups-lpd program always did reverse lookups on the + client address, which could be a performance problem. + Added a "-n" option to disable lookups. + - When configured with SSL support, require encryption by + default when displaying the /admin location (STR #1592) + - The next job ID was not computed correctly if the job + cache file got out of sync with the spool directory + (STR #1582) + - The PNG image handling code used deprecated functions + from libpng (STR #1587) + - Added a Polish translation (STR #1584, STR #1586) + - More changes to the scheduler to improve battery life + on portable devices (STR #1583) + - Changed the default log level for status messages back + to "DEBUG" to be consistent with CUPS 1.1.x (STR #1579) + - The error string was not set properly when + cupsDoFileRequest() was given the name of a directory + (STR #1578) + - Fixed handling of job-hold-until (STR #1581) + - Added explicit notes to the cupsaddsmb man page + explaining that the driver filenames are case-sensitive + under UNIX and that they must be all lowercase (Windows + 2000) or all UPPERCASE (Windows 95/98/Me) to work (STR + #1568) + - The USB backend incorrectly split the manufacturer name + if it contained spaces (STR #1566) + - The scheduler would hang when listing PPD files for a + manufacturer whose name contained spaces (STR #1567) + - Added the SNMP backend for network printer discovery + (STR #1555) + - cupstestppd now fails PPD files with 1284DeviceId + instead of 1284DeviceID, and cups-driverd uses a + case-insensitive comparison when looking for it (STR + #1573) + - cupsDoFileRequest() and cupsDoRequest() now work + properly with non-blocking HTTP connections. + - Added Swedish translation (STR #1569) + - "make install" now installs the MIME files with world + read permissions (STR #1565) + - More CDSA encryption support fixes (STR #1563) + - Updated the default mime.types file to support printing + of files that do not have a locally-recognized MIME + media type to raw or System V queues. + - Updated the serial port detection code on Linux (STR + #1562) + - Added some more error checking to httpGetHostname() + (STR #1561) + - The title of some administration pages was not + localized (STR #1548) + - The edit-config.tmpl file was not generated or + installed for the Spanish or Japanese localizations + (STR #1547) + - The mimeDelete() function freed the types before the + filters, but the filters needed the type data (STR #1558) + - The scheduler didn't keep track of the status pipes + properly, leading to a bad select() for multi-file jobs + (STR #1559) + - The cupstestdsc program didn't validate the ordinal + page number value for %%Page: comments. + + +CHANGES IN CUPS V1.2rc2 + + - The scheduler was not always using the string pool, + causing random crashes. + - The lpmove and the web interface's Move Job button did + not work with stopped jobs (STR #1534) + - The PostScript filter did not handle the page-set + option properly with number-up printing (STR #1543) + - The scheduler now only warns about unsupported ACLs + once (STR #1532) + - The "fitplot" option did not work with output from + Mozilla (STR #1542) + - The imagetops filter did not work with Level 2 or 3 + printers (STR #1533) + - The scheduler now recognizes PostScript files with PJL + commands that do not include an ENTER LANGUAGE command. + - Added --with-printcap configure option. + - 64-bit SSL fixes for MacOS X. + - The scheduler didn't send some printer state change + events. + - The scheduler didn't send jobs to busy remote printers. + - Fixed some problems with the launchd support. + - Added new USB printer backend for MacOS X. + - The PostScript filter now handles files that start with + an incomplete PJL header (PR #6076) + - The web interface language selection code did not try + the generic language localization (STR #1531) + - The language cache, string pool, and transcoding caches + are now process global instead of per-thread to avoid + problems with GNOME and to allow for data sharing + between threads (STR #1530) + - Fixed a CUPS 1.1.x compatibility bug (STR #1528) + - The web interface redirection after certain printer + administration tasks was broken (STR #1516) + - Web interface authorization could get stuck (STR #1512) + - Localization updates (STR #1513, STR #1518, STR #1520) + - The pstops filter didn't work with some files (STR + #1523) + - "./configure --enable-static" didn't work (STR #1522) + - The scheduler was not using the configured default + Group (STR #1521) + - The web interface still did not show the localized time + and date for some locales and systems (STR #1509) + - httpAddrGetList() would crash on systems without + getaddrinfo(). + - Socket URIs without a trailing slash would cause the + port number to not be accepted (STR #1519) + - Local raw and System V printers were not advertised as + such for printer browsing (STR #1502) + - The RPM spec file incorrectly put duplicate copies of + the Japanese and Spanish web interface templates in the + main cups package (STR #1517) + - cupsSetDests() did not explicitly set the permissions + of the /etc/cups/lpoptions file (STR #1508) + - The lpq command crashed with the -h option (STR #1515) + + +CHANGES IN CUPS V1.2rc1 + + - Documentation updates (STR #1497, STR #1498) + - The scheduler now redirects browsers to https: URLs + when encryption is required. + - The scheduler would crash when printing with a banner + (STR #1500) + - cups-driverd did not use the LanguageEncoding attribute + in PPD files to convert the NickName to UTF-8 (STR + #1503) + - The lpadmin command could not set the + printer-error-policy attribute (STR #1504) + - The web interface did not show the time and date in the + correct format for the locale (STR #1505) + - CUPS no longer accepts print jobs if a printer does not + support the file format (STR #1501) + - Cleaned up the PostScript filter (pstops) so that it + properly supports %%IncludeFeature and page scaling + (STR #1453) + - Fixed the cupsFileRewind() and cupsFileSeek() functions + to work properly with uncompressed files. + - Added cupsFileGetLine(), cupsFileStderr(), + cupsFileStdin(), and cupsFileStdout() functions to the + CUPS library. + - Added a new cupstestdsc program to test the DSC + conformance of PostScript files. + - Added KDE/GNOME icons and a Manage Printers menu item. + - Added --enable-image and --enable-pdftops configure + options to control whether the image and PDF filters + are built and installed (default = yes for all + platforms but MacOS X) + - Fixed a minor memory leak in the PPD API. + - Fixed transcoding issues (STR #1493) + - The scheduler now enforces a minimum job cost of 100 + when doing FilterLimit checks. + - The scheduler would leak file descriptors when printing + to raw queues (STR #1491) + - The IPv6 support did not compile on Tru64 UNIX (STR + #1488) + - ppdOpen2() now converts the NickName and all UI text to + UTF-8 (STR #1475) + - The Set Allowed Users web page did not work (STR #1486) + - When the default policy was not set or set to a non- + existing policy, the scheduler did not set the default + policy name to "default" (STR #1484) + - The Zebra CPCL driver did not use the correct righthand + margin for the 4" wide label sizes. + - Fixed a problem with the parsing of fractional real + numbers in PPD files. + - Added Spanish localization files (STR #1480) + - Fixed localization of a few scheduler messages (STR + #1478) + - Fixed support for HEAD requests in the scheduler (STR + #1481) + + +CHANGES IN CUPS V1.2b2 + + - Updated the CUPS design description. + - Added --enable-32bit and --enable-64bit configure + options to allow building of separate 32/64-bit + libraries on systems that support both environments + (STR #1472) + - Various compiler warning fixes. + - Fixes for Solaris 10 builds against old GNU TLS and + LDAP libraries. + - Added a cupsArrayUserData() function to retrieve the + user data pointer for an array (useful for typing + arrays) + - The ppdEmitString() function did not compute the + required buffer size properly, leading to dropped + characters on the end of the printer commands in pstops + and imagetops (STR #1470) + + +CHANGES IN CUPS V1.2b1 + + - The serial backend now supports Equinox 8-port serial + hubs (STR #526) + - The IPP backend now supports a compression option to + compress print files as they are sent to the remote + server (STR #956) + - The CUPS browse protocol now supports passing of + default options and browse timeout values from the + server to the clients (STR #800) + - Implicit classes that timed out could cause the + scheduler to crash (STR #1439) + - Added DragonFly support in local device backends (STR + #1362) + - Added LDAP printer browsing support (STR #338) + - Added official support for printer maintenance commands + via the CUPS Command file format and hooks in the + printer-type and web interfaces (STR #932) + - The HP-GL/2 filter could get in an infinite loop trying + to convert HP-PCL files (STR #1415) + - CUPS now implements the HTTP/1.1 Expect header (STR + #1407) + - Options in PPD files are no longer automatically put in + an "Extra" group; rather, all options that are not + inside an Open/CloseGroup will be placed in the + "General" group (STR #1385) + - The scheduler now creates a job-uuid attribute that + uniquely identifies a job on a network (STR #1410) + - The init script now unsets the TMPDIR environment + variable to prevent user temporary directories from + being used by cupsd accidentally (STR #1424) + - Added support for launchd on MacOS X. + - Added support for notify_post on MacOS X. + - Added support for DBUS on Linux. + - All of the Berkeley (except for lpc) and System V + commands now support specification of user, host, and + port (STR #1028, STR #1029, STR #1087) + - The lpmove command now allows you to move all jobs for + a given queue (STR #56) + - The web interface now supports moving of a job or jobs + to another queue (STR #56) + - The web interface now provides searching, paging, and + changing of the sort/display order of classes, jobs, + and printers. + - cupsaddsmb now accepts a password on the command-line + and supports passwords with special characters (STR + #822, STR #1236) + - ppdLoad*() no longer tries to "fix" bad characters in + UI text (STR #1101) + - Printer names can now (reliably) contain Unicode + characters (STR #896) + - The lpstat command now shows the time and date of the + last printer state change instead of the hardcoded "Jan + 01 00:00" (STR #659) + - The scheduler now adds a job-actual-printer-uri + attribute to job objects when printing to a class (STR + #116) + - The scheduler now logs log file open errors to the + system log (STR #1289) + - The scheduler now sets the job-originating-user-name to + the authenticated username, if available (STR #1318) + - The scheduler now only updates the permissions of SSL + keys and certificates when they are under the + ServerRoot directory (STR #1324) + - The rastertodymo driver has been renamed to + rastertolabel (a symlink is installed so that existing + queues continue to work) and now also supports Zebra's + CPCL language. + - The lpstat command could show the wrong active job for + a printer (STR #1301) + - Fixed a potential crash problem in the scheduler when + aborting a CGI program (STR #1290) + - Added a "cancel all jobs" button to the class and + printer web interfaces (STR #1140) + - The add-printer web page now shows the + set-printer-options page after the printer has been + added (STR #690) + - The classes web page now provides links to each of the + member printers (STR #307) + - CUPS now handles HTTP request/response lines up to 32k + in length; this is mainly for better cookie support + (STR #1274) + - Added support for the Apache PassEnv and SetEnv + directives to cupsd.conf (STR #853) + - Added large file (64-bit) support (STR #541) + - Fixed a performance issue with the ippReadIO() + implementation (STR #1284) + - Fixed a performance issue with the scheduler's implicit + class implementation (STR #1283) + - The pdftops filter now adds the Title and Creator + fields from the PDF file to the PostScript document + comments section (STR #539, STR #830) + - Added a new cups_array_t and cupsArray*() functions to + the CUPS API to support sorted lists of data. + - Made the CUPS API library thread-safe (STR #1276) + - Added "media" option support for EFI EFMediaType option + (STR #902) + - Added write buffering to the HTTP code to improve + performance (STR #547) + - The scheduler now uses the attributes-natural-language + attribute to localize banner pages (STR #386) + - The scheduler now returns the address that was used to + connect to it (STR #1076) + - Fixed a problem with N-up printing and OpenOffice (STR + #576) + - Added support for the GCC position independent + executable options (STR #1209) + - Added new BrowseLocalProtocols and + BrowseRemoteProtocols directives to cupsd.conf, + allowing for different browse protocols for local and + remote printers (STR #877) + - PPD files can now contain strings up to 256k in length + (STR #1215) + - The pstops filter now supports the IncludeFeature DSC + comment (STR #1212) + - The pstops filter now disables the setpagedevice + procedure when doing N-up printing (STR #1161) + - The serial backend now supports "stop=1", "stop=2", + "parity=space", and "parity=mark" options (STR #1155) + - "make install" no longer overwrites an existing PAM + configuration file (STR #1064) + - The scheduler now closes all files on startup when run + in daemon mode (STR #1009) + - Added a new RGBW colorspace to the CUPS raster format + (STR #1071) + - The pdftops filter now sets the page size based on the + media box when not scaling the output (STR #912) + - The pdftops filter now supports masked images (STR + #281) + - The pdftops filter produced large output when rendering + PDF files containing lot of repeated images (STR #327) + - The pdftops filter now minimizes print processing of + PDF files when using the page-ranges option (STR #273) + - Updated pdftops filter to Xpdf 3.01. + - Added new cupsBackchannelRead() and + cupsBackchannelWrite() functions, as well as + backchannel support to the parallel, serial, socket, + and USB backends (STR #1252) + - The parallel and USB backends now treat a "no space + available" error as an out-of-paper condition (STR + #1225) + - The "lpc" command now supports the "status all" command + (STR #1004) + - ippReadIO() did not read collections properly (STR + #1249) + - The "make test" script now creates the test files in + "/tmp/cups-$USER" instead of "/tmp/$USER" (STR #981) + - All backends now abort on error when printing a job to + a class - this allows the next printer in the class to + print the job (STR #1084) + - The scheduler now verifies that a printer supports + Letter or A4 media sizes before setting them as the + initial default (STR #1250) + - The cupstestppd program now flags bad Resolution + options (STR #1269) + - The USB backend now retries printing when the printer + is disconnected or turned off (STR #1267) + - Added new httpGetHostname() function to CUPS API, and + use it instead of gethostname() so that the web + interface will work correctly on systems whose hostname + is not the FQDN (STR #1266) + - The scheduler now stops printers if the backend for the + queue is missing on startup (STR #1265) + - The configure script now supports "--disable-library" + to disable particular image file format support + libraries, even if they are available on the build + system (STR #1248) + - The IPP backend did not always report on the total + number of pages that were printed (STR #1251) + - The lpstat program could display garbage date and time + values for locales whose date format exceeded 31 + characters (STR #1263) + - The cupstestppd program would segfault when testing + certain broken PPD files (STR #1268) + - Dramatically reduced the overhead of implicit classes. + - Added new cupsDir*() functions to CUPS API. + - Printers can now be published individually for sharing. + - Fixed a bug in the scheduler's startup signalling code + which caused cupsd to send the SIGUSR1 signal to the + init process instead of the original parent process + (STR #1258) + - Added new on-line help CGI to web interface to provide + searchable help. + - Devices are now tracked dynamically, with each query + doing a new device scan. This eliminates a previous + startup delay caused by slow backends and allows new + printers to be seen without restarting the server, + however it limits the amount of device URI checking + that can be done (basically now the scheduler only + requires a URI with a method that is a listed backend) + - Added new printer auto-detection, server configuration, + and log file viewing to the administration web page. + - Added new "set allowed users" web interface to set the + list of allowed users for a printer or class. + - The scheduler, command-line, and web interfaces now + limit the list of printers and classes to those + accessible by a user. + - cupsMarkOptions() now handles more non-standard + duplexing options and choices (STR #915) + - cups-lpd now honors remote banner requests with the + "standard" banner whenever a printer does not have one + defined (STR #1220) + - The scheduler's denial-of-service checks did not work + properly with IPv6 addresses (STR #1134) + - The lp and lpr commands did not error out properly when + they were unable to write to a temporary file (STR + #1129) + - The pstops filter did not handle Adobe-specific + comments in Windows NT driver output (STR #1085) + - "lpstat -l -p" incorrectly reported the printer + interface (STR #936) + - The web interface now operates exclusively with the + UTF-8 encoding, and sends the appropriate character set + and header information to the web browser (STR #919, + STR #1007) + - Added a "set allowed users" interface to the web + interface so that you can set the list of allowed or + denied users/groups for a printer or class. + - Disallow the "#" character in printer names, since it + has special meaning in the shell, config files, and in + URIs (STR #917, STR #1202) + - Added a new application/x-csource MIME type, and + support for it to the texttops filter so that you can + pretty print plain text files without the C/C++ + keywords being highlighted. + - The pdftops filter did not compile with GCC 4.0 (STR + #1226) + - The texttops filter did not highlight preprocessor + directives followed by a tab properly. + - HP PJL output now uses both JOB DISPLAY and RDYMSG + commands to show the current job on the printer's + display (STR #1218) + - Local authentication certificates are now stored in + /var/run/cups/certs by default instead of + /etc/cups/certs (STR #1211) + - Backends now use "&" to separate options in device + URIs; "+" is still recognized but is deprecated (STR + #842) + - The USB backend no longer supports the usb:/dev/foo + format on systems that support device ID queries. + - Forced classification markings did not work when the + job-sheets parameters were "none,none". + - "lpstat -l -p" incorrectly showed all users as allowed, + even if the queue was restricted to certain users (STR + #801) + - The scheduler now automatically detects SSL/TLS clients + without using the SSLPort/SSLListen directives. + - The CUPS API and scheduler no longer support SSLv2- + encrypted connections. + - Updated the cupsaddsmb utility to correctly export the + CUPS driver for Windows. + - Fixed a signal-handling bug in httpRead() which + ultimately caused the server to print multiple copies + when it was busy (STR #1184) + - The cupsFile API now uses the O_APPEND option when + opening files in append mode (STR #990) + - The md5.h header and md5_* functions are now officially + private and have been renamed to avoid conflicts with + other implementations with the same name. + - The pdftops filter incorrectly embedded some Type1 + fonts (STR #1093) + - The scheduler didn't detect a closed connection in the + middle of an IPP request (STR #1153) + - The scheduler could block trying to read the job status + if there was input pending and the job was cancelled in + the same input cycle (STR #1157) + - The scheduler could crash when deleting a class due to + infinite recursion. + - Updated the Zebra ZPL label printer driver to use the + run-length encoding and support more options. + - Updated serial backend to scan for /dev/ttyC* as well + as /dev/ttyc* for Cyclades serial ports (STR #1049) + - The scheduler could hang reading the job status under + certain circumstances (STR #1068) + - The USB backend termination signal code was inverted + (STR #1046) + - Moved enable and disable commands to sbindir to be + consistent. + - Added new cupsRasterInterpretPPD() function for RIP + filters to setup the raster page header from + PostScript commands in a PPD file. + - The CUPS browsing protocol now offers a "delete" bit + to remove printers as soon as they are deleted on the + server or as soon as the server shuts down gracefully + (STR #793) + - The CUPS_SERVER and ServerName directives (client.conf + and ~/.cupsrc) may now contain names of the form + "server:port" and "/path/to/domain/socket". + - The "cancel -u user" command now works for ordinary + users (STR #751) + - Added test run support to "make test" target (STR #64) + - Added domain socket support (STR #656) + - Added BrowseLocalOptions directive to allow the + administrator to add printer URI options to the browse + URI, e.g. "encryption=required" (STR #732) + - Added BrowseRemoteOptions directive to allow the + administrator to add standard URI options to the + remote printer URI, e.g. "encryption=required" (STR + #732) + - Now put "-I.." compiler option in front of all others + to ensure that local CUPS headers are used before + installed headers (STR #437) + - New cupsLangPrintf() and cupsLangPuts() for localized + interfaces. + - Now support custom attributes and extended options in + PPD files. + - Now provide functions to save PPD files. + - New policy mechanism allows per-operation and + per-printer control over what users and groups are + allowed to do various IPP operations. + - New error policy mechanism to control how aborted + backend errors are handled by the scheduler + (abort-job, retry-job, requeue-job, stop-printer) + - Updated the printer test page with a better color + wheel and a separate grayscale ramp. + - A single backend process is now run to send all print + data for a job. + - Backends and filters can now send and receive + backchannel data over file descriptor 3. + - Updated the raster stream format to support more + user-defined attributes and to do compression of the + page data. diff --git a/CHANGES.txt b/CHANGES.txt index 017c0de68..2791e5865 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,565 +1,8 @@ -CHANGES.txt - 2006-05-05 +CHANGES.txt - 2006-05-16 ------------------------ -CHANGES IN CUPS V1.2 +CHANGES IN CUPS V1.3 - - Documentation updates (STR #1618, STR #1620, STR #1622, - STR #1637) - - Static file copy buffers reduced from 64k to 32k to - work around bogus MallocDebug library assumptions (STR - #1660) - - The scheduler did not decode the backend exit code - properly (STR #1648) - - The MacOS X USB backend did not report the 1284 device ID, - nor did it fix device IDs returned by HP printers. - - The scheduler started more slowly than 1.1.x with large - numbers of printers (STR #1653) - - cupsRasterInterpretPPD() didn't support the - cupsPreferredBitsPerColor attribute, and imagetoraster - didn't use the new API. - - The "make test" script did not create all of the necessary - subdirectories for testing (STR #1638) - - The scheduler did not prevent rotation of logs - redirected to /dev/null (STR #1651) - - "make test" did not include the SNMP backend in the - test environment (STR #1625) - - The EPM packaging files did not work (STR #1621) - - "Use Default Configuration" inserted a broken - configuration file (STR #1624) - - Redirects in the web interface did not always preserve - the encrypted status of a connection (STR #1603) - - Added the Apple "pap" backend. - - Added CUPS library to CUPS Image shared library - linkage to support Linux --as-needed linker option - (STR #1606) - - Fixed support for --enable-pie (STR #1609) - - The pdftops filter did not validate the length of the - encryption key (STR #1608) - - Updated the Polish localization. - - "Encryption Required" in the cupsd.conf file now only - requires encryption when the connection is not over the - loopback interface or domain socket. - - Printer names containing "+" were not quoted properly in - the web interface (STR #1600) - - The SNMP backend now reports the make and model in the - information string so that the auto-generated printer - name is more useful than just an IP address. - - -CHANGES IN CUPS V1.2rc3 - - - The cups-lpd program always did reverse lookups on the - client address, which could be a performance problem. - Added a "-n" option to disable lookups. - - When configured with SSL support, require encryption by - default when displaying the /admin location (STR #1592) - - The next job ID was not computed correctly if the job - cache file got out of sync with the spool directory - (STR #1582) - - The PNG image handling code used deprecated functions - from libpng (STR #1587) - - Added a Polish translation (STR #1584, STR #1586) - - More changes to the scheduler to improve battery life - on portable devices (STR #1583) - - Changed the default log level for status messages back - to "DEBUG" to be consistent with CUPS 1.1.x (STR #1579) - - The error string was not set properly when - cupsDoFileRequest() was given the name of a directory - (STR #1578) - - Fixed handling of job-hold-until (STR #1581) - - Added explicit notes to the cupsaddsmb man page - explaining that the driver filenames are case-sensitive - under UNIX and that they must be all lowercase (Windows - 2000) or all UPPERCASE (Windows 95/98/Me) to work (STR - #1568) - - The USB backend incorrectly split the manufacturer name - if it contained spaces (STR #1566) - - The scheduler would hang when listing PPD files for a - manufacturer whose name contained spaces (STR #1567) - - Added the SNMP backend for network printer discovery - (STR #1555) - - cupstestppd now fails PPD files with 1284DeviceId - instead of 1284DeviceID, and cups-driverd uses a - case-insensitive comparison when looking for it (STR - #1573) - - cupsDoFileRequest() and cupsDoRequest() now work - properly with non-blocking HTTP connections. - - Added Swedish translation (STR #1569) - - "make install" now installs the MIME files with world - read permissions (STR #1565) - - More CDSA encryption support fixes (STR #1563) - - Updated the default mime.types file to support printing - of files that do not have a locally-recognized MIME - media type to raw or System V queues. - - Updated the serial port detection code on Linux (STR - #1562) - - Added some more error checking to httpGetHostname() - (STR #1561) - - The title of some administration pages was not - localized (STR #1548) - - The edit-config.tmpl file was not generated or - installed for the Spanish or Japanese localizations - (STR #1547) - - The mimeDelete() function freed the types before the - filters, but the filters needed the type data (STR #1558) - - The scheduler didn't keep track of the status pipes - properly, leading to a bad select() for multi-file jobs - (STR #1559) - - The cupstestdsc program didn't validate the ordinal - page number value for %%Page: comments. - - -CHANGES IN CUPS V1.2rc2 - - - The scheduler was not always using the string pool, - causing random crashes. - - The lpmove and the web interface's Move Job button did - not work with stopped jobs (STR #1534) - - The PostScript filter did not handle the page-set - option properly with number-up printing (STR #1543) - - The scheduler now only warns about unsupported ACLs - once (STR #1532) - - The "fitplot" option did not work with output from - Mozilla (STR #1542) - - The imagetops filter did not work with Level 2 or 3 - printers (STR #1533) - - The scheduler now recognizes PostScript files with PJL - commands that do not include an ENTER LANGUAGE command. - - Added --with-printcap configure option. - - 64-bit SSL fixes for MacOS X. - - The scheduler didn't send some printer state change - events. - - The scheduler didn't send jobs to busy remote printers. - - Fixed some problems with the launchd support. - - Added new USB printer backend for MacOS X. - - The PostScript filter now handles files that start with - an incomplete PJL header (PR #6076) - - The web interface language selection code did not try - the generic language localization (STR #1531) - - The language cache, string pool, and transcoding caches - are now process global instead of per-thread to avoid - problems with GNOME and to allow for data sharing - between threads (STR #1530) - - Fixed a CUPS 1.1.x compatibility bug (STR #1528) - - The web interface redirection after certain printer - administration tasks was broken (STR #1516) - - Web interface authorization could get stuck (STR #1512) - - Localization updates (STR #1513, STR #1518, STR #1520) - - The pstops filter didn't work with some files (STR - #1523) - - "./configure --enable-static" didn't work (STR #1522) - - The scheduler was not using the configured default - Group (STR #1521) - - The web interface still did not show the localized time - and date for some locales and systems (STR #1509) - - httpAddrGetList() would crash on systems without - getaddrinfo(). - - Socket URIs without a trailing slash would cause the - port number to not be accepted (STR #1519) - - Local raw and System V printers were not advertised as - such for printer browsing (STR #1502) - - The RPM spec file incorrectly put duplicate copies of - the Japanese and Spanish web interface templates in the - main cups package (STR #1517) - - cupsSetDests() did not explicitly set the permissions - of the /etc/cups/lpoptions file (STR #1508) - - The lpq command crashed with the -h option (STR #1515) - - -CHANGES IN CUPS V1.2rc1 - - - Documentation updates (STR #1497, STR #1498) - - The scheduler now redirects browsers to https: URLs - when encryption is required. - - The scheduler would crash when printing with a banner - (STR #1500) - - cups-driverd did not use the LanguageEncoding attribute - in PPD files to convert the NickName to UTF-8 (STR - #1503) - - The lpadmin command could not set the - printer-error-policy attribute (STR #1504) - - The web interface did not show the time and date in the - correct format for the locale (STR #1505) - - CUPS no longer accepts print jobs if a printer does not - support the file format (STR #1501) - - Cleaned up the PostScript filter (pstops) so that it - properly supports %%IncludeFeature and page scaling - (STR #1453) - - Fixed the cupsFileRewind() and cupsFileSeek() functions - to work properly with uncompressed files. - - Added cupsFileGetLine(), cupsFileStderr(), - cupsFileStdin(), and cupsFileStdout() functions to the - CUPS library. - - Added a new cupstestdsc program to test the DSC - conformance of PostScript files. - - Added KDE/GNOME icons and a Manage Printers menu item. - - Added --enable-image and --enable-pdftops configure - options to control whether the image and PDF filters - are built and installed (default = yes for all - platforms but MacOS X) - - Fixed a minor memory leak in the PPD API. - - Fixed transcoding issues (STR #1493) - - The scheduler now enforces a minimum job cost of 100 - when doing FilterLimit checks. - - The scheduler would leak file descriptors when printing - to raw queues (STR #1491) - - The IPv6 support did not compile on Tru64 UNIX (STR - #1488) - - ppdOpen2() now converts the NickName and all UI text to - UTF-8 (STR #1475) - - The Set Allowed Users web page did not work (STR #1486) - - When the default policy was not set or set to a non- - existing policy, the scheduler did not set the default - policy name to "default" (STR #1484) - - The Zebra CPCL driver did not use the correct righthand - margin for the 4" wide label sizes. - - Fixed a problem with the parsing of fractional real - numbers in PPD files. - - Added Spanish localization files (STR #1480) - - Fixed localization of a few scheduler messages (STR - #1478) - - Fixed support for HEAD requests in the scheduler (STR - #1481) - - -CHANGES IN CUPS V1.2b2 - - - Updated the CUPS design description. - - Added --enable-32bit and --enable-64bit configure - options to allow building of separate 32/64-bit - libraries on systems that support both environments - (STR #1472) - - Various compiler warning fixes. - - Fixes for Solaris 10 builds against old GNU TLS and - LDAP libraries. - - Added a cupsArrayUserData() function to retrieve the - user data pointer for an array (useful for typing - arrays) - - The ppdEmitString() function did not compute the - required buffer size properly, leading to dropped - characters on the end of the printer commands in pstops - and imagetops (STR #1470) - - -CHANGES IN CUPS V1.2b1 - - - The serial backend now supports Equinox 8-port serial - hubs (STR #526) - - The IPP backend now supports a compression option to - compress print files as they are sent to the remote - server (STR #956) - - The CUPS browse protocol now supports passing of - default options and browse timeout values from the - server to the clients (STR #800) - - Implicit classes that timed out could cause the - scheduler to crash (STR #1439) - - Added DragonFly support in local device backends (STR - #1362) - - Added LDAP printer browsing support (STR #338) - - Added official support for printer maintenance commands - via the CUPS Command file format and hooks in the - printer-type and web interfaces (STR #932) - - The HP-GL/2 filter could get in an infinite loop trying - to convert HP-PCL files (STR #1415) - - CUPS now implements the HTTP/1.1 Expect header (STR - #1407) - - Options in PPD files are no longer automatically put in - an "Extra" group; rather, all options that are not - inside an Open/CloseGroup will be placed in the - "General" group (STR #1385) - - The scheduler now creates a job-uuid attribute that - uniquely identifies a job on a network (STR #1410) - - The init script now unsets the TMPDIR environment - variable to prevent user temporary directories from - being used by cupsd accidentally (STR #1424) - - Added support for launchd on MacOS X. - - Added support for notify_post on MacOS X. - - Added support for DBUS on Linux. - - All of the Berkeley (except for lpc) and System V - commands now support specification of user, host, and - port (STR #1028, STR #1029, STR #1087) - - The lpmove command now allows you to move all jobs for - a given queue (STR #56) - - The web interface now supports moving of a job or jobs - to another queue (STR #56) - - The web interface now provides searching, paging, and - changing of the sort/display order of classes, jobs, - and printers. - - cupsaddsmb now accepts a password on the command-line - and supports passwords with special characters (STR - #822, STR #1236) - - ppdLoad*() no longer tries to "fix" bad characters in - UI text (STR #1101) - - Printer names can now (reliably) contain Unicode - characters (STR #896) - - The lpstat command now shows the time and date of the - last printer state change instead of the hardcoded "Jan - 01 00:00" (STR #659) - - The scheduler now adds a job-actual-printer-uri - attribute to job objects when printing to a class (STR - #116) - - The scheduler now logs log file open errors to the - system log (STR #1289) - - The scheduler now sets the job-originating-user-name to - the authenticated username, if available (STR #1318) - - The scheduler now only updates the permissions of SSL - keys and certificates when they are under the - ServerRoot directory (STR #1324) - - The rastertodymo driver has been renamed to - rastertolabel (a symlink is installed so that existing - queues continue to work) and now also supports Zebra's - CPCL language. - - The lpstat command could show the wrong active job for - a printer (STR #1301) - - Fixed a potential crash problem in the scheduler when - aborting a CGI program (STR #1290) - - Added a "cancel all jobs" button to the class and - printer web interfaces (STR #1140) - - The add-printer web page now shows the - set-printer-options page after the printer has been - added (STR #690) - - The classes web page now provides links to each of the - member printers (STR #307) - - CUPS now handles HTTP request/response lines up to 32k - in length; this is mainly for better cookie support - (STR #1274) - - Added support for the Apache PassEnv and SetEnv - directives to cupsd.conf (STR #853) - - Added large file (64-bit) support (STR #541) - - Fixed a performance issue with the ippReadIO() - implementation (STR #1284) - - Fixed a performance issue with the scheduler's implicit - class implementation (STR #1283) - - The pdftops filter now adds the Title and Creator - fields from the PDF file to the PostScript document - comments section (STR #539, STR #830) - - Added a new cups_array_t and cupsArray*() functions to - the CUPS API to support sorted lists of data. - - Made the CUPS API library thread-safe (STR #1276) - - Added "media" option support for EFI EFMediaType option - (STR #902) - - Added write buffering to the HTTP code to improve - performance (STR #547) - - The scheduler now uses the attributes-natural-language - attribute to localize banner pages (STR #386) - - The scheduler now returns the address that was used to - connect to it (STR #1076) - - Fixed a problem with N-up printing and OpenOffice (STR - #576) - - Added support for the GCC position independent - executable options (STR #1209) - - Added new BrowseLocalProtocols and - BrowseRemoteProtocols directives to cupsd.conf, - allowing for different browse protocols for local and - remote printers (STR #877) - - PPD files can now contain strings up to 256k in length - (STR #1215) - - The pstops filter now supports the IncludeFeature DSC - comment (STR #1212) - - The pstops filter now disables the setpagedevice - procedure when doing N-up printing (STR #1161) - - The serial backend now supports "stop=1", "stop=2", - "parity=space", and "parity=mark" options (STR #1155) - - "make install" no longer overwrites an existing PAM - configuration file (STR #1064) - - The scheduler now closes all files on startup when run - in daemon mode (STR #1009) - - Added a new RGBW colorspace to the CUPS raster format - (STR #1071) - - The pdftops filter now sets the page size based on the - media box when not scaling the output (STR #912) - - The pdftops filter now supports masked images (STR - #281) - - The pdftops filter produced large output when rendering - PDF files containing lot of repeated images (STR #327) - - The pdftops filter now minimizes print processing of - PDF files when using the page-ranges option (STR #273) - - Updated pdftops filter to Xpdf 3.01. - - Added new cupsBackchannelRead() and - cupsBackchannelWrite() functions, as well as - backchannel support to the parallel, serial, socket, - and USB backends (STR #1252) - - The parallel and USB backends now treat a "no space - available" error as an out-of-paper condition (STR - #1225) - - The "lpc" command now supports the "status all" command - (STR #1004) - - ippReadIO() did not read collections properly (STR - #1249) - - The "make test" script now creates the test files in - "/tmp/cups-$USER" instead of "/tmp/$USER" (STR #981) - - All backends now abort on error when printing a job to - a class - this allows the next printer in the class to - print the job (STR #1084) - - The scheduler now verifies that a printer supports - Letter or A4 media sizes before setting them as the - initial default (STR #1250) - - The cupstestppd program now flags bad Resolution - options (STR #1269) - - The USB backend now retries printing when the printer - is disconnected or turned off (STR #1267) - - Added new httpGetHostname() function to CUPS API, and - use it instead of gethostname() so that the web - interface will work correctly on systems whose hostname - is not the FQDN (STR #1266) - - The scheduler now stops printers if the backend for the - queue is missing on startup (STR #1265) - - The configure script now supports "--disable-library" - to disable particular image file format support - libraries, even if they are available on the build - system (STR #1248) - - The IPP backend did not always report on the total - number of pages that were printed (STR #1251) - - The lpstat program could display garbage date and time - values for locales whose date format exceeded 31 - characters (STR #1263) - - The cupstestppd program would segfault when testing - certain broken PPD files (STR #1268) - - Dramatically reduced the overhead of implicit classes. - - Added new cupsDir*() functions to CUPS API. - - Printers can now be published individually for sharing. - - Fixed a bug in the scheduler's startup signalling code - which caused cupsd to send the SIGUSR1 signal to the - init process instead of the original parent process - (STR #1258) - - Added new on-line help CGI to web interface to provide - searchable help. - - Devices are now tracked dynamically, with each query - doing a new device scan. This eliminates a previous - startup delay caused by slow backends and allows new - printers to be seen without restarting the server, - however it limits the amount of device URI checking - that can be done (basically now the scheduler only - requires a URI with a method that is a listed backend) - - Added new printer auto-detection, server configuration, - and log file viewing to the administration web page. - - Added new "set allowed users" web interface to set the - list of allowed users for a printer or class. - - The scheduler, command-line, and web interfaces now - limit the list of printers and classes to those - accessible by a user. - - cupsMarkOptions() now handles more non-standard - duplexing options and choices (STR #915) - - cups-lpd now honors remote banner requests with the - "standard" banner whenever a printer does not have one - defined (STR #1220) - - The scheduler's denial-of-service checks did not work - properly with IPv6 addresses (STR #1134) - - The lp and lpr commands did not error out properly when - they were unable to write to a temporary file (STR - #1129) - - The pstops filter did not handle Adobe-specific - comments in Windows NT driver output (STR #1085) - - "lpstat -l -p" incorrectly reported the printer - interface (STR #936) - - The web interface now operates exclusively with the - UTF-8 encoding, and sends the appropriate character set - and header information to the web browser (STR #919, - STR #1007) - - Added a "set allowed users" interface to the web - interface so that you can set the list of allowed or - denied users/groups for a printer or class. - - Disallow the "#" character in printer names, since it - has special meaning in the shell, config files, and in - URIs (STR #917, STR #1202) - - Added a new application/x-csource MIME type, and - support for it to the texttops filter so that you can - pretty print plain text files without the C/C++ - keywords being highlighted. - - The pdftops filter did not compile with GCC 4.0 (STR - #1226) - - The texttops filter did not highlight preprocessor - directives followed by a tab properly. - - HP PJL output now uses both JOB DISPLAY and RDYMSG - commands to show the current job on the printer's - display (STR #1218) - - Local authentication certificates are now stored in - /var/run/cups/certs by default instead of - /etc/cups/certs (STR #1211) - - Backends now use "&" to separate options in device - URIs; "+" is still recognized but is deprecated (STR - #842) - - The USB backend no longer supports the usb:/dev/foo - format on systems that support device ID queries. - - Forced classification markings did not work when the - job-sheets parameters were "none,none". - - "lpstat -l -p" incorrectly showed all users as allowed, - even if the queue was restricted to certain users (STR - #801) - - The scheduler now automatically detects SSL/TLS clients - without using the SSLPort/SSLListen directives. - - The CUPS API and scheduler no longer support SSLv2- - encrypted connections. - - Updated the cupsaddsmb utility to correctly export the - CUPS driver for Windows. - - Fixed a signal-handling bug in httpRead() which - ultimately caused the server to print multiple copies - when it was busy (STR #1184) - - The cupsFile API now uses the O_APPEND option when - opening files in append mode (STR #990) - - The md5.h header and md5_* functions are now officially - private and have been renamed to avoid conflicts with - other implementations with the same name. - - The pdftops filter incorrectly embedded some Type1 - fonts (STR #1093) - - The scheduler didn't detect a closed connection in the - middle of an IPP request (STR #1153) - - The scheduler could block trying to read the job status - if there was input pending and the job was cancelled in - the same input cycle (STR #1157) - - The scheduler could crash when deleting a class due to - infinite recursion. - - Updated the Zebra ZPL label printer driver to use the - run-length encoding and support more options. - - Updated serial backend to scan for /dev/ttyC* as well - as /dev/ttyc* for Cyclades serial ports (STR #1049) - - The scheduler could hang reading the job status under - certain circumstances (STR #1068) - - The USB backend termination signal code was inverted - (STR #1046) - - Moved enable and disable commands to sbindir to be - consistent. - - Added new cupsRasterInterpretPPD() function for RIP - filters to setup the raster page header from - PostScript commands in a PPD file. - - The CUPS browsing protocol now offers a "delete" bit - to remove printers as soon as they are deleted on the - server or as soon as the server shuts down gracefully - (STR #793) - - The CUPS_SERVER and ServerName directives (client.conf - and ~/.cupsrc) may now contain names of the form - "server:port" and "/path/to/domain/socket". - - The "cancel -u user" command now works for ordinary - users (STR #751) - - Added test run support to "make test" target (STR #64) - - Added domain socket support (STR #656) - - Added BrowseLocalOptions directive to allow the - administrator to add printer URI options to the browse - URI, e.g. "encryption=required" (STR #732) - - Added BrowseRemoteOptions directive to allow the - administrator to add standard URI options to the - remote printer URI, e.g. "encryption=required" (STR - #732) - - Now put "-I.." compiler option in front of all others - to ensure that local CUPS headers are used before - installed headers (STR #437) - - New cupsLangPrintf() and cupsLangPuts() for localized - interfaces. - - Now support custom attributes and extended options in - PPD files. - - Now provide functions to save PPD files. - - New policy mechanism allows per-operation and - per-printer control over what users and groups are - allowed to do various IPP operations. - - New error policy mechanism to control how aborted - backend errors are handled by the scheduler - (abort-job, retry-job, requeue-job, stop-printer) - - Updated the printer test page with a better color - wheel and a separate grayscale ramp. - - A single backend process is now run to send all print - data for a job. - - Backends and filters can now send and receive - backchannel data over file descriptor 3. - - Updated the raster stream format to support more - user-defined attributes and to do compression of the - page data. + - Added support for setting the document-format-default + attribute on a per-printer basis. + - Added support for IntelliBar label printers. diff --git a/Makedefs.in b/Makedefs.in index 29d2de84a..8629f6a57 100644 --- a/Makedefs.in +++ b/Makedefs.in @@ -1,5 +1,5 @@ # -# "$Id: Makedefs.in 5468 2006-04-27 13:40:30Z mike $" +# "$Id: Makedefs.in 5563 2006-05-21 17:18:40Z mike $" # # Common makefile definitions for the Common UNIX Printing System (CUPS). # @@ -149,6 +149,7 @@ LAUNCHDLIBS = @LAUNCHDLIBS@ # ARCH32FLAGS = @ARCH32FLAGS@ +DSO32FLAGS = @DSO32FLAGS@ INSTALL32 = @INSTALL32@ LIB32CUPS = @LIB32CUPS@ LIB32CUPSIMAGE = @LIB32CUPSIMAGE@ @@ -156,6 +157,7 @@ LIB32DIR = $(BUILDROOT)@LIB32DIR@ UNINSTALL32 = @UNINSTALL32@ ARCH64FLAGS = @ARCH64FLAGS@ +DSO64FLAGS = @DSO64FLAGS@ INSTALL64 = @INSTALL64@ LIB64CUPS = @LIB64CUPS@ LIB64CUPSIMAGE = @LIB64CUPSIMAGE@ @@ -261,5 +263,5 @@ DBUSDIR = @DBUSDIR@ # -# End of "$Id: Makedefs.in 5468 2006-04-27 13:40:30Z mike $" +# End of "$Id: Makedefs.in 5563 2006-05-21 17:18:40Z mike $" # diff --git a/Makefile b/Makefile index 7dae65d0d..e9a1f6d92 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5498 2006-05-07 16:52:14Z mike $" +# "$Id: Makefile 5546 2006-05-19 12:44:15Z mike $" # # Top-level Makefile for the Common UNIX Printing System (CUPS). # @@ -99,8 +99,8 @@ install: installhdrs echo Installing cups-config script... $(INSTALL_DIR) -m 755 $(BINDIR) $(INSTALL_SCRIPT) cups-config $(BINDIR)/cups-config - echo Installing startup script... if test "x$(INITDIR)" != x; then \ + echo Installing init scripts...; \ $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \ $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDIR)/init.d/cups; \ $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc0.d; \ @@ -115,13 +115,16 @@ install: installhdrs if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \ $(INSTALL_DIR) $(BUILDROOT)$(INITDDIR); \ if test "$(INITDDIR)" = "/System/Library/StartupItems/PrintingServices"; then \ + echo Installing StartupItems files...; \ $(INSTALL_SCRIPT) init/PrintingServices $(BUILDROOT)$(INITDDIR)/PrintingServices; \ $(INSTALL_DATA) init/StartupParameters.plist $(BUILDROOT)$(INITDDIR)/StartupParameters.plist; \ $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \ $(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \ elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \ + echo Installing LaunchDaemons configuration file...; \ $(INSTALL_DATA) init/org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \ else \ + echo Installing RC script...; \ $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \ fi \ fi @@ -236,5 +239,5 @@ epm: # -# End of "$Id: Makefile 5498 2006-05-07 16:52:14Z mike $". +# End of "$Id: Makefile 5546 2006-05-19 12:44:15Z mike $". # diff --git a/backend/ipp.c b/backend/ipp.c index a2ca39e32..8061d42cb 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -1,5 +1,5 @@ /* - * "$Id: ipp.c 5495 2006-05-05 17:58:07Z mike $" + * "$Id: ipp.c 5553 2006-05-20 12:22:27Z mike $" * * IPP backend for the Common UNIX Printing System (CUPS). * @@ -276,7 +276,7 @@ main(int argc, /* I - Number of command-line args */ *ptr++ = *optptr++; *ptr = '\0'; - if (*optptr == '+') + if (*optptr == '+' || *optptr == '&') optptr ++; } else @@ -1619,5 +1619,5 @@ sigterm_handler(int sig) /* I - Signal */ /* - * End of "$Id: ipp.c 5495 2006-05-05 17:58:07Z mike $". + * End of "$Id: ipp.c 5553 2006-05-20 12:22:27Z mike $". */ diff --git a/backend/serial.c b/backend/serial.c index 86093682c..0442c2926 100644 --- a/backend/serial.c +++ b/backend/serial.c @@ -1,5 +1,5 @@ /* - * "$Id: serial.c 5400 2006-04-14 19:04:02Z mike $" + * "$Id: serial.c 5553 2006-05-20 12:22:27Z mike $" * * Serial port backend for the Common UNIX Printing System (CUPS). * @@ -310,7 +310,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */ *ptr++ = *options++; *ptr = '\0'; - if (*options == '+') + if (*options == '+' || *options == '&') options ++; } else @@ -1169,5 +1169,5 @@ list_devices(void) /* - * End of "$Id: serial.c 5400 2006-04-14 19:04:02Z mike $". + * End of "$Id: serial.c 5553 2006-05-20 12:22:27Z mike $". */ diff --git a/backend/usb-unix.c b/backend/usb-unix.c index f3d1c3d51..39df2e67d 100644 --- a/backend/usb-unix.c +++ b/backend/usb-unix.c @@ -1,5 +1,5 @@ /* - * "$Id: usb-unix.c 5373 2006-04-06 20:03:32Z mike $" + * "$Id: usb-unix.c 5553 2006-05-20 12:22:27Z mike $" * * USB port backend for the Common UNIX Printing System (CUPS). * @@ -60,6 +60,7 @@ print_device(const char *uri, /* I - Device URI */ int argc, /* I - Number of command-line arguments (6 or 7) */ char *argv[]) /* I - Command-line arguments */ { + int usebc; /* Use backchannel path? */ int fd; /* USB device */ int rbytes; /* Number of bytes read */ int wbytes; /* Number of bytes written */ @@ -82,6 +83,14 @@ print_device(const char *uri, /* I - Device URI */ (void)argc; (void)argv; + /* + * Disable backchannel data when printing to Canon USB printers - apparently + * Canon printers will return the IEEE-1284 device ID over and over and over + * when they get a read request... + */ + + usebc = strcasecmp(hostname, "Canon") != 0; + /* * Open the USB port device... */ @@ -238,7 +247,9 @@ print_device(const char *uri, /* I - Device URI */ do { FD_ZERO(&input); - FD_SET(fd, &input); + if (usebc) + FD_SET(fd, &input); + FD_ZERO(&output); FD_SET(fd, &output); } @@ -622,5 +633,5 @@ open_device(const char *uri) /* I - Device URI */ /* - * End of "$Id: usb-unix.c 5373 2006-04-06 20:03:32Z mike $". + * End of "$Id: usb-unix.c 5553 2006-05-20 12:22:27Z mike $". */ diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c index aac69d973..db6baa4b6 100644 --- a/cgi-bin/admin.c +++ b/cgi-bin/admin.c @@ -1,5 +1,5 @@ /* - * "$Id: admin.c 5425 2006-04-18 19:59:05Z mike $" + * "$Id: admin.c 5571 2006-05-22 18:46:55Z mike $" * * Administration CGI for the Common UNIX Printing System (CUPS). * @@ -93,7 +93,8 @@ main(int argc, /* I - Number of command-line arguments */ if (!http) { perror("ERROR: Unable to connect to cupsd"); - fprintf(stderr, "DEBUG: cupsServer()=\"%s\"\n", cupsServer()); + fprintf(stderr, "DEBUG: cupsServer()=\"%s\"\n", + cupsServer() ? cupsServer() : "(null)"); fprintf(stderr, "DEBUG: ippPort()=%d\n", ippPort()); fprintf(stderr, "DEBUG: cupsEncryption()=%d\n", cupsEncryption()); exit(1); @@ -481,7 +482,7 @@ do_am_class(http_t *http, /* I - HTTP connection */ char refresh[1024]; /* Refresh URL */ cgiFormEncode(uri, name, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "5;/admin/?OP=redirect&URL=/classes/%s", + snprintf(refresh, sizeof(refresh), "5;URL=/admin/?OP=redirect&URL=/classes/%s", uri); cgiSetVariable("refresh_page", refresh); @@ -534,8 +535,9 @@ do_am_printer(http_t *http, /* I - HTTP connection */ }; + ptr = cgiGetVariable("DEVICE_URI"); fprintf(stderr, "DEBUG: do_am_printer: DEVICE_URI=\"%s\"\n", - cgiGetVariable("DEVICE_URI")); + ptr ? ptr : "(null)"); title = cgiText(modify ? _("Modify Printer") : _("Add Printer")); @@ -1041,7 +1043,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */ "5;/admin/?OP=redirect&URL=/printers/%s", uri); else snprintf(refresh, sizeof(refresh), - "5;/admin/?OP=set-printer-options&PRINTER_NAME=%s", uri); + "5;URL=/admin/?OP=set-printer-options&PRINTER_NAME=%s", uri); cgiSetVariable("refresh_page", refresh); @@ -1489,7 +1491,9 @@ do_config_printer(http_t *http) /* I - HTTP connection */ *keyptr = '\0'; - if (!strcmp(keyword, "PageRegion")) + if (!strcmp(keyword, "PageRegion") || + !strcmp(keyword, "PaperDimension") || + !strcmp(keyword, "ImageableArea")) var = cgiGetVariable("PageSize"); else var = cgiGetVariable(keyword); @@ -1561,7 +1565,7 @@ do_config_printer(http_t *http) /* I - HTTP connection */ cgiFormEncode(uri, printer, sizeof(uri)); snprintf(refresh, sizeof(refresh), - "5;/admin/?OP=redirect&URL=/printers/%s", uri); + "5;URL=/admin/?OP=redirect&URL=/printers/%s", uri); cgiSetVariable("refresh_page", refresh); cgiStartHTML(title); @@ -1623,7 +1627,7 @@ do_config_server(http_t *http) /* I - HTTP connection */ } else { - cgiSetVariable("refresh_page", "5;/admin/?OP=redirect"); + cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect"); cgiStartHTML(cgiText(_("Change Settings"))); cgiCopyTemplateLang("restart.tmpl"); } @@ -1717,7 +1721,7 @@ do_config_server(http_t *http) /* I - HTTP connection */ } else { - cgiSetVariable("refresh_page", "5;/admin/?OP=redirect"); + cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect"); cgiStartHTML(cgiText(_("Edit Configuration File"))); cgiCopyTemplateLang("restart.tmpl"); @@ -2478,7 +2482,7 @@ do_printer_op(http_t *http, /* I - HTTP connection */ cgiRewriteURL(uri, url, sizeof(url), NULL); cgiFormEncode(uri, url, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "5;/admin/?OP=redirect&URL=%s", uri); + snprintf(refresh, sizeof(refresh), "5;URL=/admin/?OP=redirect&URL=%s", uri); cgiSetVariable("refresh_page", refresh); cgiStartHTML(title); @@ -2736,7 +2740,8 @@ do_set_allowed_users(http_t *http) /* I - HTTP connection */ cgiRewriteURL(uri, url, sizeof(url), NULL); cgiFormEncode(uri, url, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "5;/admin/?OP=redirect&URL=%s", uri); + snprintf(refresh, sizeof(refresh), "5;URL=/admin/?OP=redirect&URL=%s", + uri); cgiSetVariable("refresh_page", refresh); cgiStartHTML(cgiText(_("Set Allowed Users"))); @@ -2826,7 +2831,7 @@ do_set_sharing(http_t *http) /* I - HTTP connection */ cgiRewriteURL(uri, url, sizeof(url), NULL); cgiFormEncode(uri, url, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "5;/admin/?OP=redirect&URL=%s", uri); + snprintf(refresh, sizeof(refresh), "5;URL=/admin/?OP=redirect&URL=%s", uri); cgiSetVariable("refresh_page", refresh); cgiStartHTML(cgiText(_("Set Publishing"))); @@ -2888,5 +2893,5 @@ match_string(const char *a, /* I - First string */ /* - * End of "$Id: admin.c 5425 2006-04-18 19:59:05Z mike $". + * End of "$Id: admin.c 5571 2006-05-22 18:46:55Z mike $". */ diff --git a/cgi-bin/classes.c b/cgi-bin/classes.c index d7fd569e7..1c22d513e 100644 --- a/cgi-bin/classes.c +++ b/cgi-bin/classes.c @@ -1,5 +1,5 @@ /* - * "$Id: classes.c 5202 2006-02-28 19:37:03Z mike $" + * "$Id: classes.c 5571 2006-05-22 18:46:55Z mike $" * * Class status CGI for the Common UNIX Printing System (CUPS). * @@ -95,8 +95,7 @@ main(int argc, /* I - Number of command-line arguments */ * See who is logged in... */ - if ((user = getenv("REMOTE_USER")) == NULL) - user = "guest"; + user = getenv("REMOTE_USER"); /* * Connect to the HTTP server... @@ -187,7 +186,7 @@ main(int argc, /* I - Number of command-line arguments */ void show_all_classes(http_t *http, /* I - Connection to server */ - const char *user) /* I - Username */ + const char *user) /* I - Username */ { int i; /* Looping var */ ipp_t *request, /* IPP request */ @@ -221,8 +220,9 @@ show_all_classes(http_t *http, /* I - Connection to server */ request = ippNewRequest(CUPS_GET_CLASSES); - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, - "requesting-user-name", NULL, user); + if (user) + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, + "requesting-user-name", NULL, user); cgiGetAttributes(request, "classes.tmpl"); @@ -419,7 +419,7 @@ show_class(http_t *http, /* I - Connection to server */ */ cgiFormEncode(uri, pclass, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "10;/classes/%s", uri); + snprintf(refresh, sizeof(refresh), "10;URL=/classes/%s", uri); cgiSetVariable("refresh_page", refresh); } @@ -463,5 +463,5 @@ show_class(http_t *http, /* I - Connection to server */ /* - * End of "$Id: classes.c 5202 2006-02-28 19:37:03Z mike $". + * End of "$Id: classes.c 5571 2006-05-22 18:46:55Z mike $". */ diff --git a/cgi-bin/help.c b/cgi-bin/help.c index 6dc512ead..0d554de71 100644 --- a/cgi-bin/help.c +++ b/cgi-bin/help.c @@ -187,7 +187,8 @@ main(int argc, /* I - Number of command-line arguments */ topic = cgiGetVariable("TOPIC"); si = helpSearchIndex(hi, query, topic, helpfile); - fprintf(stderr, "DEBUG: query=\"%s\", topic=\"%s\"\n", query, topic); + fprintf(stderr, "DEBUG: query=\"%s\", topic=\"%s\"\n", + query ? query : "(null)", topic ? topic : "(null)"); if (si) { diff --git a/cgi-bin/html.c b/cgi-bin/html.c index a51b28f94..62e0cc517 100644 --- a/cgi-bin/html.c +++ b/cgi-bin/html.c @@ -1,5 +1,5 @@ /* - * "$Id: html.c 4921 2006-01-12 21:26:26Z mike $" + * "$Id: html.c 5548 2006-05-19 19:38:31Z mike $" * * HTML support functions for the Common UNIX Printing System (CUPS). * @@ -175,12 +175,13 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */ { (void)prompt; - fprintf(stderr, "DEBUG: cgi_null_passwd(prompt=\"%s\") called!\n", prompt); + fprintf(stderr, "DEBUG: cgi_null_passwd(prompt=\"%s\") called!\n", + prompt ? prompt : "(null)"); return (NULL); } /* - * End of "$Id: html.c 4921 2006-01-12 21:26:26Z mike $". + * End of "$Id: html.c 5548 2006-05-19 19:38:31Z mike $". */ diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c index 583a9f745..83dc0af74 100644 --- a/cgi-bin/ipp-var.c +++ b/cgi-bin/ipp-var.c @@ -1,5 +1,5 @@ /* - * "$Id: ipp-var.c 5425 2006-04-18 19:59:05Z mike $" + * "$Id: ipp-var.c 5571 2006-05-22 18:46:55Z mike $" * * CGI <-> IPP variable routines for the Common UNIX Printing System (CUPS). * @@ -482,7 +482,7 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */ { cgiRewriteURL(job_printer_uri, resource, sizeof(resource), NULL); cgiFormEncode(uri, resource, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "2;%s", uri); + snprintf(refresh, sizeof(refresh), "2;URL=%s", uri); cgiSetVariable("refresh_page", refresh); } @@ -598,7 +598,7 @@ cgiPrintTestPage(http_t *http, /* I - Connection to server */ */ cgiFormEncode(uri, resource, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "2;%s", uri); + snprintf(refresh, sizeof(refresh), "2;URL=%s", uri); cgiSetVariable("refresh_page", refresh); } @@ -774,7 +774,7 @@ cgiSetIPPObjectVars( fprintf(stderr, "DEBUG2: cgiSetIPPObjectVars(obj=%p, prefix=\"%s\", " "element=%d)\n", - obj, prefix, element); + obj, prefix ? prefix : "(null)", element); /* * Set common CGI template variables... @@ -977,7 +977,9 @@ cgiSetIPPVars(ipp_t *response, /* I - Response data to be copied... */ fprintf(stderr, "DEBUG2: cgiSetIPPVars(response=%p, filter_name=\"%s\", " "filter_value=\"%s\", prefix=\"%s\", parent_el=%d)\n", - response, filter_name, filter_value, prefix, parent_el); + response, filter_name ? filter_name : "(null)", + filter_value ? filter_value : "(null)", + prefix ? prefix : "(null)", parent_el); /* * Set common CGI template variables... @@ -1277,5 +1279,5 @@ cgiText(const char *message) /* I - Message */ /* - * End of "$Id: ipp-var.c 5425 2006-04-18 19:59:05Z mike $". + * End of "$Id: ipp-var.c 5571 2006-05-22 18:46:55Z mike $". */ diff --git a/cgi-bin/printers.c b/cgi-bin/printers.c index 74b950d56..50dc2b322 100644 --- a/cgi-bin/printers.c +++ b/cgi-bin/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c 5202 2006-02-28 19:37:03Z mike $" + * "$Id: printers.c 5571 2006-05-22 18:46:55Z mike $" * * Printer status CGI for the Common UNIX Printing System (CUPS). * @@ -98,8 +98,7 @@ main(int argc, /* I - Number of command-line arguments */ * See who is logged in... */ - if ((user = getenv("REMOTE_USER")) == NULL) - user = "guest"; + user = getenv("REMOTE_USER"); /* * Connect to the HTTP server... @@ -287,7 +286,7 @@ print_command(http_t *http, /* I - Connection to server */ */ cgiFormEncode(uri, resource, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "2;%s", uri); + snprintf(refresh, sizeof(refresh), "2;URL=%s", uri); cgiSetVariable("refresh_page", refresh); } @@ -331,7 +330,7 @@ show_all_printers(http_t *http, /* I - Connection to server */ fprintf(stderr, "DEBUG: show_all_printers(http=%p, user=\"%s\")\n", - http, user); + http, user ? user : "(null)"); /* * Show the standard header... @@ -357,8 +356,9 @@ show_all_printers(http_t *http, /* I - Connection to server */ ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type-mask", CUPS_PRINTER_CLASS); - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, - "requesting-user-name", NULL, user); + if (user) + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, + "requesting-user-name", NULL, user); cgiGetAttributes(request, "printers.tmpl"); @@ -543,7 +543,7 @@ show_printer(http_t *http, /* I - Connection to server */ fprintf(stderr, "DEBUG: show_printer(http=%p, printer=\"%s\")\n", - http, printer); + http, printer ? printer : "(null)"); /* * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following @@ -594,7 +594,7 @@ show_printer(http_t *http, /* I - Connection to server */ */ cgiFormEncode(uri, printer, sizeof(uri)); - snprintf(refresh, sizeof(refresh), "10;/printers/%s", uri); + snprintf(refresh, sizeof(refresh), "10;URL=/printers/%s", uri); cgiSetVariable("refresh_page", refresh); } @@ -638,5 +638,5 @@ show_printer(http_t *http, /* I - Connection to server */ /* - * End of "$Id: printers.c 5202 2006-02-28 19:37:03Z mike $". + * End of "$Id: printers.c 5571 2006-05-22 18:46:55Z mike $". */ diff --git a/cgi-bin/template.c b/cgi-bin/template.c index f6f213fef..d2fd9b8e3 100644 --- a/cgi-bin/template.c +++ b/cgi-bin/template.c @@ -1,5 +1,5 @@ /* - * "$Id: template.c 5461 2006-04-25 17:15:45Z mike $" + * "$Id: template.c 5548 2006-05-19 19:38:31Z mike $" * * CGI template function. * @@ -60,7 +60,7 @@ cgiCopyTemplateFile(FILE *out, /* I - Output file */ fprintf(stderr, "DEBUG: cgiCopyTemplateFile(out=%p, tmpl=\"%s\")\n", out, - tmpl); + tmpl ? tmpl : "(null)"); /* * Open the template file... @@ -69,7 +69,7 @@ cgiCopyTemplateFile(FILE *out, /* I - Output file */ if ((in = fopen(tmpl, "r")) == NULL) { fprintf(stderr, "ERROR: Unable to open template file \"%s\" - %s\n", - tmpl, strerror(errno)); + tmpl ? tmpl : "(null)", strerror(errno)); return; } @@ -102,7 +102,8 @@ cgiCopyTemplateLang(const char *tmpl) /* I - Base filename */ FILE *in; /* Input file */ - fprintf(stderr, "DEBUG: cgiCopyTemplateLang(tmpl=\"%s\")\n", tmpl); + fprintf(stderr, "DEBUG: cgiCopyTemplateLang(tmpl=\"%s\")\n", + tmpl ? tmpl : "(null)"); /* * Convert the language to a locale name... @@ -669,5 +670,5 @@ cgi_puturi(const char *s, /* I - String to output */ /* - * End of "$Id: template.c 5461 2006-04-25 17:15:45Z mike $". + * End of "$Id: template.c 5548 2006-05-19 19:38:31Z mike $". */ diff --git a/cgi-bin/var.c b/cgi-bin/var.c index 177e883b7..113b8d026 100644 --- a/cgi-bin/var.c +++ b/cgi-bin/var.c @@ -1,5 +1,5 @@ /* - * "$Id: var.c 5331 2006-03-23 21:21:19Z mike $" + * "$Id: var.c 5548 2006-05-19 19:38:31Z mike $" * * CGI form variable and array functions. * @@ -949,7 +949,8 @@ cgi_passwd(const char *prompt) /* I - Prompt (not used) */ { (void)prompt; - fprintf(stderr, "DEBUG: cgi_passwd(prompt=\"%s\") called!\n", prompt); + fprintf(stderr, "DEBUG: cgi_passwd(prompt=\"%s\") called!\n", + prompt ? prompt : "(null)"); /* * Send a 401 (unauthorized) status to the server, so it can notify @@ -1026,5 +1027,5 @@ cgi_unlink_file(void) /* - * End of "$Id: var.c 5331 2006-03-23 21:21:19Z mike $". + * End of "$Id: var.c 5548 2006-05-19 19:38:31Z mike $". */ diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4 index 5495beaa0..f31fc3691 100644 --- a/config-scripts/cups-common.m4 +++ b/config-scripts/cups-common.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-common.m4 5466 2006-04-26 19:52:27Z mike $" +dnl "$Id: cups-common.m4 5502 2006-05-08 21:09:15Z mike $" dnl dnl Common configuration stuff for the Common UNIX Printing System (CUPS). dnl @@ -29,7 +29,7 @@ dnl Set the name of the config header file... AC_CONFIG_HEADER(config.h) dnl Versio number information... -CUPS_VERSION="1.2svn" +CUPS_VERSION="1.3svn" 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'`" @@ -265,5 +265,5 @@ AC_SUBST(DEFAULT_IPP_PORT) AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT) dnl -dnl End of "$Id: cups-common.m4 5466 2006-04-26 19:52:27Z mike $". +dnl End of "$Id: cups-common.m4 5502 2006-05-08 21:09:15Z mike $". dnl diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4 index c3b82a852..964931f9d 100644 --- a/config-scripts/cups-compiler.m4 +++ b/config-scripts/cups-compiler.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-compiler.m4 5473 2006-05-01 15:51:09Z mike $" +dnl "$Id: cups-compiler.m4 5565 2006-05-22 01:08:19Z mike $" dnl dnl Compiler stuff for the Common UNIX Printing System (CUPS). dnl @@ -138,8 +138,8 @@ if test -n "$GCC"; then ARCH32FLAGS="$with_arch32flags" fi INSTALL32="install32bit" - LIB32CUPS="libcups.32.so.2" - LIB32CUPSIMAGE="libcupsimage.32.so.2" + LIB32CUPS="32bit/libcups.so.2" + LIB32CUPSIMAGE="32bit/libcupsimage.so.2" LIB32DIR="$prefix/lib32" UNINSTALL32="uninstall32bit" @@ -162,8 +162,8 @@ if test -n "$GCC"; then ARCH64FLAGS="$with_arch64flags" fi INSTALL64="install64bit" - LIB64CUPS="libcups.64.so.2" - LIB64CUPSIMAGE="libcupsimage.64.so.2" + LIB64CUPS="64bit/libcups.so.2" + LIB64CUPSIMAGE="64bit/libcupsimage.so.2" LIB64DIR="$prefix/lib64" UNINSTALL64="uninstall64bit" @@ -188,8 +188,8 @@ if test -n "$GCC"; then ARCH32FLAGS="$with_arch32flags" fi INSTALL32="install32bit" - LIB32CUPS="libcups.32.so.2" - LIB32CUPSIMAGE="libcupsimage.32.so.2" + LIB32CUPS="32bit/libcups.so.2" + LIB32CUPSIMAGE="32bit/libcupsimage.so.2" LIB32DIR="$exec_prefix/lib" if test -d /usr/lib32; then LIB32DIR="${LIB32DIR}32" @@ -215,8 +215,8 @@ if test -n "$GCC"; then ARCH64FLAGS="$with_arch64flags" fi INSTALL64="install64bit" - LIB64CUPS="libcups.64.so.2" - LIB64CUPSIMAGE="libcupsimage.64.so.2" + LIB64CUPS="64bit/libcups.so.2" + LIB64CUPSIMAGE="64bit/libcupsimage.so.2" LIB64DIR="$exec_prefix/lib" if test -d /usr/lib64; then LIB64DIR="${LIB64DIR}64" @@ -244,8 +244,8 @@ if test -n "$GCC"; then ARCH32FLAGS="$with_arch32flags" fi INSTALL32="install32bit" - LIB32CUPS="libcups.32.so.2" - LIB32CUPSIMAGE="libcupsimage.32.so.2" + LIB32CUPS="32bit/libcups.so.2" + LIB32CUPSIMAGE="32bit/libcupsimage.so.2" LIB32DIR="$exec_prefix/lib/32" UNINSTALL32="uninstall32bit" @@ -268,8 +268,8 @@ if test -n "$GCC"; then ARCH64FLAGS="$with_arch64flags" fi INSTALL64="install64bit" - LIB64CUPS="libcups.64.so.2" - LIB64CUPSIMAGE="libcupsimage.64.so.2" + LIB64CUPS="64bit/libcups.so.2" + LIB64CUPSIMAGE="64bit/libcupsimage.so.2" LIB64DIR="$exec_prefix/lib/64" UNINSTALL64="uninstall64bit" @@ -310,8 +310,11 @@ else # Warning 829 is passing constant string as char * CXXFLAGS="+W336,829 $CXXFLAGS" - if test "x$with_optim" = x; then - OPTIM="+DAportable $OPTIM" + if test -z "$with_archflags"; then + # Build portable binaries for all HP systems... + ARCHFLAGS="+DAportable" + else + ARCHFLAGS="$with_archflags" fi if test $PICFLAG = 1; then @@ -339,8 +342,8 @@ else ARCH32FLAGS="$with_arch32flags" fi INSTALL32="install32bit" - LIB32CUPS="libcups.32.so.2" - LIB32CUPSIMAGE="libcupsimage.32.so.2" + LIB32CUPS="32bit/libcups.so.2" + LIB32CUPSIMAGE="32bit/libcupsimage.so.2" LIB32DIR="$prefix/lib32" UNINSTALL32="uninstall32bit" @@ -363,8 +366,8 @@ else ARCH64FLAGS="$with_arch64flags" fi INSTALL64="install64bit" - LIB64CUPS="libcups.64.so.2" - LIB64CUPSIMAGE="libcupsimage.64.so.2" + LIB64CUPS="64bit/libcups.so.2" + LIB64CUPSIMAGE="64bit/libcupsimage.so.2" LIB64DIR="$prefix/lib64" UNINSTALL64="uninstall64bit" @@ -398,8 +401,8 @@ else # binaries with separate 32-bit libraries... ARCH32FLAGS="-xarch=generic" INSTALL32="install32bit" - LIB32CUPS="libcups.32.so.2" - LIB32CUPSIMAGE="libcupsimage.32.so.2" + LIB32CUPS="32bit/libcups.so.2" + LIB32CUPSIMAGE="32bit/libcupsimage.so.2" LIB32DIR="$exec_prefix/lib/32" UNINSTALL32="uninstall32bit" @@ -408,33 +411,43 @@ else # warning messages, and default to # 64-bit compiles of everything else... OPTIM="-w $OPTIM" - CFLAGS="-xarch=generic64 $CFLAGS" + fi + + if test -z "$with_archflags"; then + if test -z "$with_arch64flags"; then + ARCHFLAGS="-xarch=generic64" + else + ARCHFLAGS="$with_arch64flags" + fi + else + ARCHFLAGS="$with_archflags" fi else if test "x$enable_64bit" = xyes; then # Build 64-bit libraries... ARCH64FLAGS="-xarch=generic64" INSTALL64="install64bit" - LIB64CUPS="libcups.64.so.2" - LIB64CUPSIMAGE="libcupsimage.64.so.2" + LIB64CUPS="64bit/libcups.so.2" + LIB64CUPSIMAGE="64bit/libcupsimage.so.2" LIB64DIR="$exec_prefix/lib/64" UNINSTALL64="uninstall64bit" + fi + + if test "x$with_optim" = x; then + # Suppress all of Sun's questionable + # warning messages, and default to + # 32-bit compiles of everything else... + OPTIM="-w $OPTIM" + fi - if test "x$with_optim" = x; then - # Suppress all of Sun's questionable - # warning messages, and default to - # 32-bit compiles of everything else... - OPTIM="-w $OPTIM" - CFLAGS="-xarch=generic $CFLAGS" + if test -z "$with_archflags"; then + if test -z "$with_arch32flags"; then + ARCHFLAGS="-xarch=generic" + else + ARCHFLAGS="$with_arch32flags" fi else - if test "x$with_optim" = x; then - # Suppress all of Sun's questionable - # warning messages, and default to - # 32-bit compiles of everything else... - OPTIM="-w $OPTIM" - CFLAGS="-xarch=generic $CFLAGS" - fi + ARCHFLAGS="$with_archflags" fi fi ;; @@ -475,5 +488,5 @@ if test $uname = HP-UX; then fi dnl -dnl End of "$Id: cups-compiler.m4 5473 2006-05-01 15:51:09Z mike $". +dnl End of "$Id: cups-compiler.m4 5565 2006-05-22 01:08:19Z mike $". dnl diff --git a/config-scripts/cups-directories.m4 b/config-scripts/cups-directories.m4 index 39a787a98..7a378ad3a 100644 --- a/config-scripts/cups-directories.m4 +++ b/config-scripts/cups-directories.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-directories.m4 5466 2006-04-26 19:52:27Z mike $" +dnl "$Id: cups-directories.m4 5546 2006-05-19 12:44:15Z mike $" dnl dnl Directory stuff for the Common UNIX Printing System (CUPS). dnl @@ -130,9 +130,11 @@ if test x$rcdir = x; then Darwin*) # Darwin and MacOS X... INITDIR="" - AC_CHECK_PROG(INITDDIR, launchd, - "/System/Library/LaunchDaemons", - "/System/Library/StartupItems/PrintingServices") + if test -x /sbin/launchd; then + INITDDIR="/System/Library/LaunchDaemons" + else + INITDDIR="/System/Library/StartupItems/PrintingServices" + fi ;; Linux | GNU) @@ -300,5 +302,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$localstatedir/run/cups") AC_SUBST(CUPS_STATEDIR) dnl -dnl End of "$Id: cups-directories.m4 5466 2006-04-26 19:52:27Z mike $". +dnl End of "$Id: cups-directories.m4 5546 2006-05-19 12:44:15Z mike $". dnl diff --git a/config-scripts/cups-ldap.m4 b/config-scripts/cups-ldap.m4 index 69bbb0a3e..d2171eb30 100644 --- a/config-scripts/cups-ldap.m4 +++ b/config-scripts/cups-ldap.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-ldap.m4 5466 2006-04-26 19:52:27Z mike $" +dnl "$Id: cups-ldap.m4 5563 2006-05-21 17:18:40Z mike $" dnl dnl LDAP configuration stuff for the Common UNIX Printing System (CUPS). dnl @@ -36,7 +36,7 @@ LIBLDAP="" if test x$enable_ldap != xno; then AC_CHECK_HEADER(ldap.h, - AC_CHECK_LIB(ldap, ldap_value_free, + AC_CHECK_LIB(ldap, ldap_initialize, AC_DEFINE(HAVE_LDAP) AC_DEFINE(HAVE_OPENLDAP) LIBLDAP="-lldap")) @@ -46,5 +46,5 @@ AC_SUBST(LIBLDAP) dnl -dnl End of "$Id: cups-ldap.m4 5466 2006-04-26 19:52:27Z mike $". +dnl End of "$Id: cups-ldap.m4 5563 2006-05-21 17:18:40Z mike $". dnl diff --git a/config-scripts/cups-sharedlibs.m4 b/config-scripts/cups-sharedlibs.m4 index 05dc479b7..d6f224f25 100644 --- a/config-scripts/cups-sharedlibs.m4 +++ b/config-scripts/cups-sharedlibs.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-sharedlibs.m4 5466 2006-04-26 19:52:27Z mike $" +dnl "$Id: cups-sharedlibs.m4 5567 2006-05-22 15:33:11Z mike $" dnl dnl Shared library support for the Common UNIX Printing System (CUPS). dnl @@ -33,31 +33,31 @@ if test x$enable_shared != xno; then LIBCUPS="libcups.so.2" LIBCUPSIMAGE="libcupsimage.so.2" DSO="\$(CC)" - DSOFLAGS="$DSOFLAGS -Wl,-h,\$@ -G \$(OPTIM)" + DSOFLAGS="$DSOFLAGS -Wl,-h,\`basename \$@\` -G \$(OPTIM)" ;; HP-UX*) LIBCUPS="libcups.sl.2" LIBCUPSIMAGE="libcupsimage.sl.2" DSO="\$(LD)" - DSOFLAGS="$DSOFLAGS -b -z +h \$@" + DSOFLAGS="$DSOFLAGS -b -z +h \`basename \$@\`" ;; IRIX) LIBCUPS="libcups.so.2" LIBCUPSIMAGE="libcupsimage.so.2" DSO="\$(CC)" - DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi2.6,-soname,\$@ -shared \$(OPTIM)" + DSOFLAGS="$DSOFLAGS -set_version,sgi2.6,-soname,\`basename \$@\` -shared \$(OPTIM)" ;; OSF1* | Linux | GNU | *BSD*) LIBCUPS="libcups.so.2" LIBCUPSIMAGE="libcupsimage.so.2" DSO="\$(CC)" - DSOFLAGS="$DSOFLAGS -Wl,-soname,\$@ -shared \$(OPTIM)" + DSOFLAGS="$DSOFLAGS -Wl,-soname,\`basename \$@\` -shared \$(OPTIM)" ;; Darwin*) LIBCUPS="libcups.2.dylib" LIBCUPSIMAGE="libcupsimage.2.dylib" DSO="\$(CC)" - DSOFLAGS="$DSOFLAGS \$(RC_CFLAGS) -dynamiclib -single_module -lc" + DSOFLAGS="$DSOFLAGS -dynamiclib -single_module -lc" ;; AIX*) LIBCUPS="libcups_s.a" @@ -71,7 +71,7 @@ if test x$enable_shared != xno; then LIBCUPS="libcups.so.2" LIBCUPSIMAGE="libcupsimage.so.2" DSO="\$(CC)" - DSOFLAGS="$DSOFLAGS -Wl,-soname,\$@ -shared \$(OPTIM)" + DSOFLAGS="$DSOFLAGS -Wl,-soname,\`basename \$@\` -shared \$(OPTIM)" ;; esac else @@ -81,8 +81,15 @@ else DSO=":" fi +# 32-bit and 64-bit libraries need variations of the standard +# DSOFLAGS... +DSO32FLAGS="$DSOFLAGS" +DSO64FLAGS="$DSOFLAGS" + AC_SUBST(DSO) AC_SUBST(DSOFLAGS) +AC_SUBST(DSO32FLAGS) +AC_SUBST(DSO64FLAGS) AC_SUBST(LIBCUPS) AC_SUBST(LIBCUPSIMAGE) @@ -113,34 +120,48 @@ if test "$DSO" != ":"; then DSOLIBS="\$(LIBPNG) \$(LIBTIFF) \$(LIBJPEG) \$(LIBZ)" IMGLIBS="" - # The *BSD, HP-UX, and Solaris run-time linkers need help when - # deciding where to find a DSO. Add linker options to tell them - # where to find the DSO (usually in /usr/lib... duh!) + # Tell the run-time linkers where to find a DSO. Some platforms + # need this option, even when the library is installed in a + # standard location... case $uname in HP-UX*) - # HP-UX - DSOFLAGS="+s +b $libdir $DSOFLAGS" - LDFLAGS="$LDFLAGS -Wl,+s,+b,$libdir" - EXPORT_LDFLAGS="-Wl,+s,+b,$libdir" - ;; + # HP-UX needs the path, even for /usr/lib... + DSOFLAGS="+s +b \$(libdir) $DSOFLAGS" + DSO32FLAGS="+s +b \$(LIB32DIR) $DSO32FLAGS" + DSO64FLAGS="+s +b \$(LIB64DIR) $DSO64FLAGS" + LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)" + EXPORT_LDFLAGS="-Wl,+s,+b,\$(libdir)" + ;; SunOS*) - # Solaris - DSOFLAGS="-R$libdir $DSOFLAGS" - LDFLAGS="$LDFLAGS -R$libdir" - EXPORT_LDFLAGS="-R$libdir" - ;; + # Solaris... + if test $exec_prefix != /usr; then + DSOFLAGS="-R\$(libdir) $DSOFLAGS" + DSO32FLAGS="-R\$(LIB32DIR) $DSO32FLAGS" + DSO64FLAGS="-R\$(LIB64DIR) $DSO64FLAGS" + LDFLAGS="$LDFLAGS -R\$(libdir)" + EXPORT_LDFLAGS="-R\$(libdir)" + fi + ;; *BSD*) - # *BSD - DSOFLAGS="-Wl,-R$libdir $DSOFLAGS" - LDFLAGS="$LDFLAGS -Wl,-R$libdir" - EXPORT_LDFLAGS="-Wl,-R$libdir" - ;; - Linux | GNU) - # Linux and HURD - DSOFLAGS="-Wl,-rpath,$libdir $DSOFLAGS" - LDFLAGS="$LDFLAGS -Wl,-rpath,$libdir" - EXPORT_LDFLAGS="-Wl,-rpath,$libdir" - ;; + # *BSD... + if test $exec_prefix != /usr; then + DSOFLAGS="-Wl,-R\$(libdir) $DSOFLAGS" + DSO32FLAGS="-Wl,-R\$(LIB32DIR) $DSO32FLAGS" + DSO64FLAGS="-Wl,-R\$(LIB64DIR) $DSO64FLAGS" + LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)" + EXPORT_LDFLAGS="-Wl,-R\$(libdir)" + fi + ;; + IRIX | Linux | GNU) + # IRIX, Linux, and HURD... + if test $exec_prefix != /usr; then + DSOFLAGS="-Wl,-rpath,\$(libdir) $DSOFLAGS" + DSO32FLAGS="-Wl,-rpath,\$(LIB32DIR) $DSO32FLAGS" + DSO64FLAGS="-Wl,-rpath,\$(LIB64DIR) $DSO64FLAGS" + LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)" + EXPORT_LDFLAGS="-Wl,-rpath,\$(libdir)" + fi + ;; esac else DSOLIBS="" @@ -152,5 +173,5 @@ AC_SUBST(IMGLIBS) AC_SUBST(EXPORT_LDFLAGS) dnl -dnl End of "$Id: cups-sharedlibs.m4 5466 2006-04-26 19:52:27Z mike $". +dnl End of "$Id: cups-sharedlibs.m4 5567 2006-05-22 15:33:11Z mike $". dnl diff --git a/config-scripts/cups-ssl.m4 b/config-scripts/cups-ssl.m4 index 6147b3e8c..35d025c7f 100644 --- a/config-scripts/cups-ssl.m4 +++ b/config-scripts/cups-ssl.m4 @@ -1,5 +1,5 @@ dnl -dnl "$Id: cups-ssl.m4 5466 2006-04-26 19:52:27Z mike $" +dnl "$Id: cups-ssl.m4 5524 2006-05-15 13:52:09Z mike $" dnl dnl OpenSSL/GNUTLS stuff for the Common UNIX Printing System (CUPS). dnl @@ -55,18 +55,14 @@ if test x$enable_ssl != xno; then dnl Then look for GNU TLS... if test "x${SSLLIBS}" = "x" -a "x${enable_gnutls}" != "xno"; then - AC_CHECK_HEADER(gnutls/gnutls.h, - dnl Save the current libraries so the crypto stuff isn't always - dnl included... - SAVELIBS="$LIBS" - - AC_CHECK_LIB(gnutls, gnutls_x509_crt_set_dn_by_oid, - [SSLLIBS="-lgnutls" - ENCRYPTION_REQUIRED=" Encryption Required" - AC_DEFINE(HAVE_SSL) - AC_DEFINE(HAVE_GNUTLS)]) - - LIBS="$SAVELIBS") + AC_PATH_PROG(LIBGNUTLSCONFIG,libgnutls-config) + if test "x$LIBGNUTLSCONFIG" != x; then + SSLLIBS=`$LIBGNUTLSCONFIG --libs` + SSLFLAGS=`$LIBGNUTLSCONFIG --cflags` + ENCRYPTION_REQUIRED=" Encryption Required" + AC_DEFINE(HAVE_SSL) + AC_DEFINE(HAVE_GNUTLS) + fi fi dnl Check for the OpenSSL library last... @@ -104,6 +100,11 @@ if test x$enable_ssl != xno; then fi fi +if test "x$SSLLIBS" != x; then + AC_MSG_RESULT([ Using SSLLIBS="$SSLLIBS"]) + AC_MSG_RESULT([ Using SSLFLAGS="$SSLFLAGS"]) +fi + AC_SUBST(SSLFLAGS) AC_SUBST(SSLLIBS) AC_SUBST(ENCRYPTION_REQUIRED) @@ -113,5 +114,5 @@ AC_SUBST(EXPORT_SSLLIBS) dnl -dnl End of "$Id: cups-ssl.m4 5466 2006-04-26 19:52:27Z mike $". +dnl End of "$Id: cups-ssl.m4 5524 2006-05-15 13:52:09Z mike $". dnl diff --git a/cups-config.in b/cups-config.in index 2f5ea715c..0c88b72b9 100755 --- a/cups-config.in +++ b/cups-config.in @@ -1,6 +1,6 @@ #! /bin/sh # -# "$Id: cups-config.in 5134 2006-02-19 15:16:08Z mike $" +# "$Id: cups-config.in 5503 2006-05-10 18:55:39Z mike $" # # CUPS configuration utility. # @@ -24,13 +24,14 @@ # VERSION="@CUPS_VERSION@" -APIVERSION="1.2" +APIVERSION="1.3" prefix=@prefix@ exec_prefix=@exec_prefix@ bindir=@bindir@ includedir=@includedir@ libdir=@libdir@ +imagelibdir=@libdir@ datadir=@datadir@ sysconfdir=@sysconfdir@ cups_datadir=@CUPS_DATADIR@ @@ -44,14 +45,28 @@ LDFLAGS="@EXPORT_LDFLAGS@" LIBS="@EXPORT_SSLLIBS@ @LIBS@" IMGLIBS="@EXPORT_LIBTIFF@ @EXPORT_LIBJPEG@ @EXPORT_LIBPNG@ @EXPORT_LIBZ@" -if test $includedir != /usr/include; then - CFLAGS="$CFLAGS -I$includedir" -fi +# Check for local invocation... +selfdir=`dirname $0` + +if test -f "$selfdir/cups/cups.h"; then + CFLAGS="-I$selfdir" + LDFLAGS="-L$selfdir/cups -L$selfdir/filter $LDFLAGS" + libdir="$selfdir/cups" + imagelibdir="$selfdir/filter" + if test ! -e "$selfdir/cups/raster.h"; then + ln -s ../filter/raster.h "$selfdir/cups" + fi +else + if test $includedir != /usr/include; then + CFLAGS="$CFLAGS -I$includedir" + fi -if test $libdir != /usr/lib -a $libdir != /usr/lib32; then - LDFLAGS="$LDFLAGS -L$libdir" + if test $libdir != /usr/lib -a $libdir != /usr/lib32 -a $libdir != /usr/lib64; then + LDFLAGS="$LDFLAGS -L$libdir" + fi fi + usage () { echo "Usage: cups-config --api-version" @@ -106,7 +121,7 @@ while test $# -gt 0; do if test $image = no; then echo $libdir/libcups.a $LIBS else - echo $libdir/libcupsimage.a $IMGLIBS $libdir/libcups.a $LIBS + echo $imagelibdir/libcupsimage.a $IMGLIBS $libdir/libcups.a $LIBS fi fi ;; @@ -135,5 +150,5 @@ while test $# -gt 0; do done # -# End of "$Id: cups-config.in 5134 2006-02-19 15:16:08Z mike $". +# End of "$Id: cups-config.in 5503 2006-05-10 18:55:39Z mike $". # diff --git a/cups/Makefile b/cups/Makefile index 51b396b2a..8bd7f808e 100644 --- a/cups/Makefile +++ b/cups/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile 5491 2006-05-04 20:53:35Z mike $" +# "$Id: Makefile 5563 2006-05-21 17:18:40Z mike $" # # API library Makefile for the Common UNIX Printing System (CUPS). # @@ -137,7 +137,8 @@ all: $(TARGETS) clean: $(RM) $(OBJS) $(TARGETS) - $(RM) libcups.so libcups.sl libcups.dylib libcups.32.so libcups.64.so + $(RM) libcups.so libcups.sl libcups.dylib + $(RM) -r 32bit 64it # @@ -184,12 +185,12 @@ installhdrs: install32bit: $(INSTALL_DIR) -m 755 $(LIB32DIR) - $(INSTALL_LIB) libcups.32.so.2 $(LIB32DIR)/libcups.so.2 + $(INSTALL_LIB) 32bit/libcups.so.2 $(LIB32DIR)/libcups.so.2 $(LN) libcups.so $(LIB32DIR)/libcups.so.2 install64bit: $(INSTALL_DIR) -m 755 $(LIB64DIR) - $(INSTALL_LIB) libcups.64.so.2 $(LIB64DIR)/libcups.so.2 + $(INSTALL_LIB) 64bit/libcups.so.2 $(LIB64DIR)/libcups.so.2 $(LN) libcups.so $(LIB64DIR)/libcups.so.2 @@ -235,21 +236,27 @@ libcups.so.2 libcups.sl.2: $(LIBOBJS) # -# libcups.32.so.2 +# 32bit/libcups.so.2 # -libcups.32.so.2: $(LIB32OBJS) +32bit/libcups.so.2: $(LIB32OBJS) echo Linking 32-bit $@... - $(DSO) $(ARCH32FLAGS) $(DSOFLAGS) -o $@ $(LIB32OBJS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ) + -mkdir 32bit + $(DSO) $(ARCH32FLAGS) $(DSO32FLAGS) -o $@ $(LIB32OBJS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ) + $(RM) 32bit/libcups.so + $(LN) libcups.so.2 32bit/libcups.so # -# libcups.64.so.2 +# 64bit/libcups.so.2 # -libcups.64.so.2: $(LIB64OBJS) +64bit/libcups.so.2: $(LIB64OBJS) echo Linking 64-bit $@... - $(DSO) $(ARCH64FLAGS) $(DSOFLAGS) -o $@ $(LIB64OBJS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ) + -mkdir 64bit + $(DSO) $(ARCH64FLAGS) $(DSO64FLAGS) -o $@ $(LIB64OBJS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ) + $(RM) 64bit/libcups.so + $(LN) libcups.so.2 64bit/libcups.so # @@ -442,5 +449,5 @@ include Dependencies # -# End of "$Id: Makefile 5491 2006-05-04 20:53:35Z mike $". +# End of "$Id: Makefile 5563 2006-05-21 17:18:40Z mike $". # diff --git a/cups/auth.c b/cups/auth.c index 1cf1ced72..6dd85bbd3 100644 --- a/cups/auth.c +++ b/cups/auth.c @@ -1,5 +1,5 @@ /* - * "$Id: auth.c 5359 2006-03-30 16:09:30Z mike $" + * "$Id: auth.c 5558 2006-05-21 13:58:56Z mike $" * * Authentication functions for the Common UNIX Printing System (CUPS). * @@ -112,8 +112,8 @@ cupsDoAuthentication(http_t *http, /* I - HTTP connection to server */ * Nope - get a new password from the user... */ - snprintf(prompt, sizeof(prompt), "Password for %s on %s? ", cupsUser(), - http->hostname); + snprintf(prompt, sizeof(prompt), _("Password for %s on %s? "), cupsUser(), + http->hostname[0] == '/' ? "localhost" : http->hostname); http->digest_tries = strncasecmp(http->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Digest", 5) != 0; @@ -249,5 +249,5 @@ cups_local_auth(http_t *http) /* I - HTTP connection to server */ /* - * End of "$Id: auth.c 5359 2006-03-30 16:09:30Z mike $". + * End of "$Id: auth.c 5558 2006-05-21 13:58:56Z mike $". */ diff --git a/cups/backchannel.c b/cups/backchannel.c index 29f542011..f2a7f0ede 100644 --- a/cups/backchannel.c +++ b/cups/backchannel.c @@ -1,5 +1,5 @@ /* - * "$Id: backchannel.c 5138 2006-02-21 10:49:06Z mike $" + * "$Id: backchannel.c 5550 2006-05-19 20:20:15Z mike $" * * Backchannel functions for the Common UNIX Printing System (CUPS). * @@ -161,7 +161,7 @@ cupsBackChannelWrite( * Write error - abort on fatal errors... */ - if (errno != EINTR && errno != EAGAIN) + if (errno != EINTR) return (-1); } else @@ -197,5 +197,5 @@ cups_setup(fd_set *set, /* I - Set for select() */ /* - * End of "$Id: backchannel.c 5138 2006-02-21 10:49:06Z mike $". + * End of "$Id: backchannel.c 5550 2006-05-19 20:20:15Z mike $". */ diff --git a/cups/cups.h b/cups/cups.h index 64b389a08..94f9b8981 100644 --- a/cups/cups.h +++ b/cups/cups.h @@ -1,5 +1,5 @@ /* - * "$Id: cups.h 5233 2006-03-06 03:39:28Z mike $" + * "$Id: cups.h 5502 2006-05-08 21:09:15Z mike $" * * API definitions for the Common UNIX Printing System (CUPS). * @@ -61,9 +61,9 @@ extern "C" { * Constants... */ -# define CUPS_VERSION 1.0200 +# define CUPS_VERSION 1.0300 # define CUPS_VERSION_MAJOR 1 -# define CUPS_VERSION_MINOR 2 +# define CUPS_VERSION_MINOR 3 # define CUPS_VERSION_PATCH 0 # define CUPS_DATE_ANY -1 @@ -244,5 +244,5 @@ extern cups_file_t *cupsTempFile2(char *filename, int len); #endif /* !_CUPS_CUPS_H_ */ /* - * End of "$Id: cups.h 5233 2006-03-06 03:39:28Z mike $". + * End of "$Id: cups.h 5502 2006-05-08 21:09:15Z mike $". */ diff --git a/cups/encode.c b/cups/encode.c index ec46217f1..7d6f4cec4 100644 --- a/cups/encode.c +++ b/cups/encode.c @@ -1,5 +1,5 @@ /* - * "$Id: encode.c 5373 2006-04-06 20:03:32Z mike $" + * "$Id: encode.c 5544 2006-05-18 21:00:16Z mike $" * * Option encoding routines for the Common UNIX Printing System (CUPS). * @@ -67,6 +67,7 @@ static const _ipp_option_t ipp_options[] = { "copies", IPP_TAG_INTEGER, IPP_TAG_JOB }, { "copies-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "document-format", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION }, + { "document-format-default", IPP_TAG_MIMETYPE, IPP_TAG_PRINTER }, { "finishings", IPP_TAG_ENUM, IPP_TAG_JOB }, { "finishings-default", IPP_TAG_ENUM, IPP_TAG_PRINTER }, { "fitplot", IPP_TAG_BOOLEAN, IPP_TAG_JOB }, @@ -88,6 +89,7 @@ static const _ipp_option_t ipp_options[] = { "natural-scaling-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "notify-charset", IPP_TAG_CHARSET, IPP_TAG_SUBSCRIPTION }, { "notify-events", IPP_TAG_KEYWORD, IPP_TAG_SUBSCRIPTION }, + { "notify-events-default", IPP_TAG_KEYWORD, IPP_TAG_PRINTER }, { "notify-lease-time", IPP_TAG_INTEGER, IPP_TAG_SUBSCRIPTION }, { "notify-natural-language", IPP_TAG_LANGUAGE, IPP_TAG_SUBSCRIPTION }, { "notify-pull-method", IPP_TAG_KEYWORD, IPP_TAG_SUBSCRIPTION }, @@ -133,6 +135,8 @@ static const _ipp_option_t ipp_options[] = { "raw", IPP_TAG_MIMETYPE, IPP_TAG_OPERATION }, { "resolution", IPP_TAG_RESOLUTION, IPP_TAG_JOB }, { "resolution-default", IPP_TAG_RESOLUTION, IPP_TAG_PRINTER }, + { "requesting-user-name-allowed", IPP_TAG_NAME, IPP_TAG_PRINTER }, + { "requesting-user-name-denied", IPP_TAG_NAME, IPP_TAG_PRINTER }, { "saturation", IPP_TAG_INTEGER, IPP_TAG_JOB }, { "saturation-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER }, { "scaling", IPP_TAG_INTEGER, IPP_TAG_JOB }, @@ -557,5 +561,5 @@ compare_ipp_options(_ipp_option_t *a, /* I - First option */ /* - * End of "$Id: encode.c 5373 2006-04-06 20:03:32Z mike $". + * End of "$Id: encode.c 5544 2006-05-18 21:00:16Z mike $". */ diff --git a/cups/getifaddrs.c b/cups/getifaddrs.c index 0daf59b85..7653cfde9 100644 --- a/cups/getifaddrs.c +++ b/cups/getifaddrs.c @@ -1,5 +1,5 @@ /* - * "$Id: getifaddrs.c 5466 2006-04-26 19:52:27Z mike $" + * "$Id: getifaddrs.c 5503 2006-05-10 18:55:39Z mike $" * * Network interface functions for the Common UNIX Printing System * (CUPS) scheduler. @@ -182,8 +182,9 @@ _cups_getifaddrs(struct ifaddrs **addrs)/* O - List of interfaces */ * Got it, make a copy... */ - if ((temp->ifa_dstaddr = calloc(1, sizeof(request.ifr_broadaddr))) != NULL) - memcpy(temp->ifa_dstaddr, &(request.ifr_broadaddr), + if ((temp->ifa_broadaddr = + calloc(1, sizeof(request.ifr_broadaddr))) != NULL) + memcpy(temp->ifa_broadaddr, &(request.ifr_broadaddr), sizeof(request.ifr_broadaddr)); } } @@ -271,5 +272,5 @@ _cups_freeifaddrs(struct ifaddrs *addrs)/* I - Interface list to free */ /* - * End of "$Id: getifaddrs.c 5466 2006-04-26 19:52:27Z mike $". + * End of "$Id: getifaddrs.c 5503 2006-05-10 18:55:39Z mike $". */ diff --git a/cups/http-private.h b/cups/http-private.h index 3a32b8da2..b95b007d8 100644 --- a/cups/http-private.h +++ b/cups/http-private.h @@ -1,5 +1,5 @@ /* - * "$Id: http-private.h 5466 2006-04-26 19:52:27Z mike $" + * "$Id: http-private.h 5503 2006-05-10 18:55:39Z mike $" * * Private HTTP definitions for the Common UNIX Printing System (CUPS). * @@ -161,11 +161,23 @@ struct ifaddrs /**** Interface Structure ****/ char *ifa_name; /* Name of interface */ unsigned int ifa_flags; /* Flags (up, point-to-point, etc.) */ struct sockaddr *ifa_addr, /* Network address */ - *ifa_netmask, /* Address mask */ - *ifa_dstaddr; /* Broadcast or destination address */ + *ifa_netmask; /* Address mask */ + union + { + struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */ + struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */ + } ifa_ifu; + void *ifa_data; /* Interface statistics */ }; +# ifndef ifa_broadaddr +# define ifa_broadaddr ifa_ifu.ifu_broadaddr +# endif /* !ifa_broadaddr */ +# ifndef ifa_dstaddr +# define ifa_dstaddr ifa_ifu.ifu_dstaddr +# endif /* !ifa_dstaddr */ + extern int _cups_getifaddrs(struct ifaddrs **addrs); # define getifaddrs _cups_getifaddrs extern void _cups_freeifaddrs(struct ifaddrs *addrs); @@ -175,5 +187,5 @@ extern void _cups_freeifaddrs(struct ifaddrs *addrs); #endif /* !_CUPS_HTTP_PRIVATE_H_ */ /* - * End of "$Id: http-private.h 5466 2006-04-26 19:52:27Z mike $". + * End of "$Id: http-private.h 5503 2006-05-10 18:55:39Z mike $". */ diff --git a/cups/mark.c b/cups/mark.c index 5cbac1b76..a7d8fd7bd 100644 --- a/cups/mark.c +++ b/cups/mark.c @@ -1,5 +1,5 @@ /* - * "$Id: mark.c 5238 2006-03-07 04:41:42Z mike $" + * "$Id: mark.c 5528 2006-05-15 20:03:12Z mike $" * * Option marking routines for the Common UNIX Printing System (CUPS). * @@ -241,9 +241,6 @@ ppd_option_t * /* O - Pointer to option or NULL */ ppdFindOption(ppd_file_t *ppd, /* I - PPD file data */ const char *option) /* I - Option/Keyword name */ { - ppd_option_t key; /* Option search key */ - - /* * Range check input... */ @@ -251,13 +248,39 @@ ppdFindOption(ppd_file_t *ppd, /* I - PPD file data */ if (!ppd || !option) return (NULL); - /* - * Search... - */ + if (ppd->options) + { + /* + * Search in the array... + */ + + ppd_option_t key; /* Option search key */ + + + strlcpy(key.keyword, option, sizeof(key.keyword)); - strlcpy(key.keyword, option, sizeof(key.keyword)); + return ((ppd_option_t *)cupsArrayFind(ppd->options, &key)); + } + else + { + /* + * Search in each group... + */ - return ((ppd_option_t *)cupsArrayFind(ppd->options, &key)); + int i, j; /* Looping vars */ + ppd_group_t *group; /* Current group */ + ppd_option_t *optptr; /* Current option */ + + + for (i = ppd->num_groups, group = ppd->groups; i > 0; i --, group ++) + for (j = group->num_options, optptr = group->options; + j > 0; + j --, optptr ++) + if (!strcasecmp(optptr->keyword, option)) + return (optptr); + + return (NULL); + } } @@ -656,5 +679,5 @@ ppd_defaults(ppd_file_t *ppd, /* I - PPD file */ /* - * End of "$Id: mark.c 5238 2006-03-07 04:41:42Z mike $". + * End of "$Id: mark.c 5528 2006-05-15 20:03:12Z mike $". */ diff --git a/cups/page.c b/cups/page.c index f9ac4ef85..f835c41c0 100644 --- a/cups/page.c +++ b/cups/page.c @@ -1,5 +1,5 @@ /* - * "$Id: page.c 5238 2006-03-07 04:41:42Z mike $" + * "$Id: page.c 5548 2006-05-19 19:38:31Z mike $" * * Page size functions for the Common UNIX Printing System (CUPS). * @@ -87,7 +87,7 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */ if (!nameptr || *nameptr != 'x') return (NULL); - l = _cupsStrScand(nameptr, &nameptr, loc); + l = _cupsStrScand(nameptr + 1, &nameptr, loc); if (!nameptr) return (NULL); @@ -193,5 +193,5 @@ ppdPageLength(ppd_file_t *ppd, /* I - PPD file */ /* - * End of "$Id: page.c 5238 2006-03-07 04:41:42Z mike $". + * End of "$Id: page.c 5548 2006-05-19 19:38:31Z mike $". */ diff --git a/cups/request.c b/cups/request.c index 93d08885e..6aff5126d 100644 --- a/cups/request.c +++ b/cups/request.c @@ -1,5 +1,5 @@ /* - * "$Id: request.c 5495 2006-05-05 17:58:07Z mike $" + * "$Id: request.c 5556 2006-05-21 13:55:23Z mike $" * * IPP utilities for the Common UNIX Printing System (CUPS). * @@ -70,6 +70,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */ struct stat fileinfo; /* File information */ int bytes; /* Number of bytes read/written */ char buffer[32768]; /* Output buffer */ + http_status_t expect; /* Expect: header to use */ DEBUG_printf(("cupsDoFileRequest(%p, %p, \'%s\', \'%s\')\n", @@ -146,6 +147,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */ response = NULL; status = HTTP_ERROR; + expect = HTTP_CONTINUE; while (response == NULL) { @@ -163,7 +165,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */ httpSetLength(http, length); httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp"); httpSetField(http, HTTP_FIELD_AUTHORIZATION, http->authstring); - httpSetExpect(http, HTTP_CONTINUE); + httpSetExpect(http, expect); DEBUG_printf(("cupsDoFileRequest: authstring=\"%s\"\n", http->authstring)); @@ -312,6 +314,14 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */ continue; } #endif /* HAVE_SSL */ + else if (status == HTTP_EXPECTATION_FAILED) + { + /* + * Don't try using the Expect: header the next time around... + */ + + expect = (http_status_t)0; + } else if (status != HTTP_OK) { DEBUG_printf(("cupsDoFileRequest: error %d...\n", status)); @@ -469,5 +479,5 @@ _cupsSetError(ipp_status_t status, /* I - IPP status code */ /* - * End of "$Id: request.c 5495 2006-05-05 17:58:07Z mike $". + * End of "$Id: request.c 5556 2006-05-21 13:55:23Z mike $". */ diff --git a/cups/snprintf.c b/cups/snprintf.c index 86f8c3f63..19dff87af 100644 --- a/cups/snprintf.c +++ b/cups/snprintf.c @@ -1,5 +1,5 @@ /* - * "$Id: snprintf.c 4683 2005-09-21 22:17:44Z mike $" + * "$Id: snprintf.c 5527 2006-05-15 19:37:11Z mike $" * * snprintf functions for the Common UNIX Printing System (CUPS). * @@ -96,7 +96,10 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */ if (*format == '*') { - // Get width from argument... + /* + * Get width from argument... + */ + format ++; width = va_arg(ap, int); @@ -125,7 +128,10 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */ if (*format == '*') { - // Get precision from argument... + /* + * Get precision from argument... + */ + format ++; prec = va_arg(ap, int); @@ -362,6 +368,6 @@ _cups_snprintf(char *buffer, /* O - Output buffer */ /* - * End of "$Id: snprintf.c 4683 2005-09-21 22:17:44Z mike $". + * End of "$Id: snprintf.c 5527 2006-05-15 19:37:11Z mike $". */ diff --git a/doc/help/spec-pdf.html b/doc/help/spec-pdf.html new file mode 100644 index 000000000..862eb0cb6 --- /dev/null +++ b/doc/help/spec-pdf.html @@ -0,0 +1,21 @@ + + + + CUPS PDF Format + + + + +

CUPS PDF files (application/vnd.cups-pdf) are device-dependent +PDF/A files that contain a job ticket information. These files +are typically produced by the CUPS pdftopdf filter +which handles job ticket generation, imposition, page labeling, +scaling, and other formatting options requested by the user. CUPS +PDF files are intended for direct consumption by a PDF-capable +printer, PDF RIP, or the pdftops filter.

+ +

More information will be posted here as the PDF workflow +filters are added to CUPS.

+ + + diff --git a/doc/help/spec-raster.html b/doc/help/spec-raster.html index 8a39e8be8..b3a44a4f9 100644 --- a/doc/help/spec-raster.html +++ b/doc/help/spec-raster.html @@ -2,6 +2,7 @@ CUPS Raster Format + @@ -37,13 +38,16 @@ is followed immediately by the (uncompressed, raw) raster data for that page.

- + + + + @@ -284,9 +288,9 @@ for that page.

- @@ -343,6 +347,7 @@ for that page.

+
Table 1: CUPS Version 1 Raster Page Device DictionaryTable 1: CUPS Version 1 Raster Page Device Dictionary
Bytes Type Description Values
0-63 C String 400-403 Unsigned Integer cupsColorSpace0 = white
- 1 = RGB
- 2 = RGBA
+
0 = white (sRGB)
+ 1 = RGB (sRGB)
+ 2 = RGBA (sRGB)
3 = black
4 = CMY
5 = YMC
@@ -301,22 +305,22 @@ for that page.

14 = SILVER
15 = CIE XYZ
16 = CIE Lab
- 17 = RGBW
- 32 = ICC1
- 33 = ICC2
- 34 = ICC3
- 35 = ICC4
- 36 = ICC5
- 37 = ICC6
- 38 = ICC7
- 39 = ICC8
- 40 = ICC9
- 41 = ICCA (10)
- 42 = ICCB (11)
- 43 = ICCC (12)
- 44 = ICCD (13)
- 45 = ICCE (14)
- 46 = ICCF (15)
+ 17 = RGBW (sRGB)
+ 32 = ICC1 (CIE Lab with hint for 1 color)
+ 33 = ICC2 (CIE Lab with hint for 2 colors)
+ 34 = ICC3 (CIE Lab with hint for 3 colors)
+ 35 = ICC4 (CIE Lab with hint for 4 colors)
+ 36 = ICC5 (CIE Lab with hint for 5 colors)
+ 37 = ICC6 (CIE Lab with hint for 6 colors)
+ 38 = ICC7 (CIE Lab with hint for 7 colors)
+ 39 = ICC8 (CIE Lab with hint for 8 colors)
+ 40 = ICC9 (CIE Lab with hint for 9 colors)
+ 41 = ICCA (CIE Lab with hint for 10 colors)
+ 42 = ICCB (CIE Lab with hint for 11 colors)
+ 43 = ICCC (CIE Lab with hint for 12 colors)
+ 44 = ICCD (CIE Lab with hint for 13 colors)
+ 45 = ICCE (CIE Lab with hint for 14 colors)
+ 46 = ICCF (CIE Lab with hint for 15 colors)
cupsRowStep Driver-specific 0 to 232 - 1
@@ -362,13 +367,16 @@ header and is followed immediately by the compressed raster data for that page.

- + + + + @@ -436,6 +444,7 @@ for that page.

+
Table 2: CUPS Version 2 Raster Page Device DictionaryTable 2: CUPS Version 2 Raster Page Device Dictionary
Bytes Type Description Values
0-419 Version 1 header data cupsPageSizeName Page size name/keyword string from PPD

Compressed Raster Data Format

@@ -446,6 +455,7 @@ color values based upon the cupsColorOrder setting:

+ @@ -475,9 +485,205 @@ colors are encoded using an initial byte of "257 - count" followed by the color value bytes.

+

Pixel Value Coding

+ +

The following sections describe the encoding and decoding of +the color values in a CUPS raster file. In general, colors are +packed into the minimum number of bytes, with special +consideration provided for efficiency of encoding and access. +Multi-byte values are stored in the native byte order and +automatically swapped as needed when reading them using the CUPS +imaging API.

+ +

CUPS_ORDER_CHUNKED

+ +

The chunked order provides the pixel value packed in a single +place. Pixel values with 8 or more bits per color are stored as +an array of colors in order, e.g. for +CUPS_CSPACE_RGB you will see 8/16-bits of red, then +blue, then green, then red, green, blue, etc. Pixel values with +less than 8 bits per color are packed together as shown in Table +4. Multi-byte pixel values are stored in the native word +order, just as for 16-bit color values.

+ +
Table 3: Color Value Sizes
cupsColorOrder Bytes per color value
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4: Chunked Color Values
Bits1-color3-color4-color6-color
1W/W/W/W/W/W/W/W0RGB/0RGBCMYK/CMYK00KCMYcm
2WW/WW/WW/WW00RRGGBBCCMMYYKKN/A
4WWWW/WWWW0000RRRRGGGGBBBB
+ (multi-byte)
CCCCMMMMYYYYKKKK
+ (multi-byte)
N/A
+ +

CUPS_ORDER_BANDED

+ +

The banded order provides each color as a separate line of +data. Each color plane for a line is written in sequence, e.g. +for the CUPS_CSPACE_CMYK colorspace you would see +all of the cyan pixels for a line followed by the magenta, +yellow, and black pixels for that line. This is repeated for all +of the lines on the page. Color values are packed starting with +the most-significant bit (MSB) first.

+ +

CUPS_ORDER_PLANAR

+ +

The planar order provides each color as a separate page of +data using a shared page header. Each color plane for a page is +written in sequence, e.g. for the CUPS_CSPACE_CMYK +colorspace you would see all of the cyan pixels for a page +followed by the magenta, yellow, and black pixels for that page. +Color values are packed starting with the most-significant bit +(MSB) first. Each line starts on an 8-bit boundary.

+ +

CUPS_CSPACE_W, CUPS_CSPACE_RGB, CUPS_CSPACE_RGBA, and +CUPS_CSPACE_RGBW

+ +

These colorspaces use the sRGB colorspace definition and +whitepoint.

+ +

CUPS_CSPACE_KCMYcm

+ +

When cupsBitsPerColor is 1, 6 color planes are +provided - black, cyan, magenta, yellow, light cyan, and light +magenta. When cupsBitsPerColor is greater than 1, 4 +color planes are provided using the CUPS_CSPACE_KCMY +colorspace instead.

+ +

When cupsColorOrder is +CUPS_ORDER_CHUNKED, bit 5 corresponds to black and +bit 0 corresponds to light magenta. For +CUPS_ORDER_BANDED and +CUPS_ORDER_PLANAR, each color plane is encoded +separately.

+ +

CUPS_CSPACE_CIELab and CUPS_CSPACE_ICCn

+ +

These colorspaces map a CIE Lab color value with a D65 +whitepoint to either a 8- or 16-bit per color chunked +(CUPS_ORDER_CHUNKED) format; the banded +(CUPS_ORDER_BANDED) and planar +(CUPS_ORDER_PLANAR) color orders are not +supported.

+ +

The values are encoded and decoded using the following +formulas:

+ + + +

CUPS_CSPACE_CIEXYZ

+ +

These colorspaces map a CIE XYZ color value with a D65 +whitepoint to either a 8- or 16-bit per color chunked +(CUPS_ORDER_CHUNKED) format; the banded +(CUPS_ORDER_BANDED) and planar +(CUPS_ORDER_PLANAR) color orders are not +supported.

+ +

The values are encoded and decoded using the following +formulas:

+ + + +

The scaling factor for XYZ values is 1/1.1, or 231.8181 for +8-bit values and 59577.2727 for 16-bit values. This allows for a +slight overflow of XYZ values when converting from RGB, improving +accuracy.

+

Change History

+

Changes in CUPS 1.2.1

+ + + +

Changes in CUPS 1.2