]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Load cups into easysw/current.
authorjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 14 Feb 2007 19:18:46 +0000 (19:18 +0000)
committerjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 14 Feb 2007 19:18:46 +0000 (19:18 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@266 a1ca3aef-8c08-0410-bb20-df032aa958be

241 files changed:
CHANGES.txt
CREDITS.txt
INSTALL.txt
LICENSE.txt
Makefile
README.txt
backend/ipp.c
backend/parallel.c
backend/runloop.c
backend/snmp.c
backend/usb-unix.c
cgi-bin/ipp-var.c
config-scripts/cups-3264.m4 [new file with mode: 0644]
config-scripts/cups-common.m4
config-scripts/cups-compiler.m4
config-scripts/cups-defaults.m4
config-scripts/cups-opsys.m4
config-scripts/cups-sharedlibs.m4
config-scripts/cups-ssl.m4
config.h.in
configure.in
cups/adminutil.c
cups/auth.c
cups/backchannel.c
cups/cups.h
cups/dest.c
cups/emit.c
cups/encode.c
cups/file.c
cups/file.h
cups/http-addrlist.c
cups/http-private.h
cups/http-support.c
cups/http.c
cups/http.h
cups/ipp.c
cups/langprintf.c
cups/language.c
cups/mark.c
cups/page.c
cups/ppd.c
cups/request.c
cups/snprintf.c
cups/string.c
cups/testfile.c
cups/testppd.c
cups/transcode.c
cups/util.c
desktop/cups.desktop
doc/de/index.html.in
doc/es/index.html.in
doc/et/index.html.in
doc/fr/images/button-accept-jobs.gif [new file with mode: 0644]
doc/fr/images/button-add-class.gif [new file with mode: 0644]
doc/fr/images/button-add-printer.gif [new file with mode: 0644]
doc/fr/images/button-add-this-printer.gif [new file with mode: 0644]
doc/fr/images/button-cancel-all-jobs.gif [new file with mode: 0644]
doc/fr/images/button-cancel-job.gif [new file with mode: 0644]
doc/fr/images/button-change-settings.gif [new file with mode: 0644]
doc/fr/images/button-clean-print-heads.gif [new file with mode: 0644]
doc/fr/images/button-clear.gif [new file with mode: 0644]
doc/fr/images/button-continue.gif [new file with mode: 0644]
doc/fr/images/button-delete-class.gif [new file with mode: 0644]
doc/fr/images/button-delete-printer.gif [new file with mode: 0644]
doc/fr/images/button-edit-configuration-file.gif [new file with mode: 0644]
doc/fr/images/button-export-samba.gif [new file with mode: 0644]
doc/fr/images/button-help.gif [new file with mode: 0644]
doc/fr/images/button-hold-job.gif [new file with mode: 0644]
doc/fr/images/button-manage-classes.gif [new file with mode: 0644]
doc/fr/images/button-manage-jobs.gif [new file with mode: 0644]
doc/fr/images/button-manage-printers.gif [new file with mode: 0644]
doc/fr/images/button-manage-server.gif [new file with mode: 0644]
doc/fr/images/button-modify-class.gif [new file with mode: 0644]
doc/fr/images/button-modify-printer.gif [new file with mode: 0644]
doc/fr/images/button-move-job.gif [new file with mode: 0644]
doc/fr/images/button-move-jobs.gif [new file with mode: 0644]
doc/fr/images/button-print-self-test-page.gif [new file with mode: 0644]
doc/fr/images/button-print-test-page.gif [new file with mode: 0644]
doc/fr/images/button-publish-printer.gif [new file with mode: 0644]
doc/fr/images/button-reject-jobs.gif [new file with mode: 0644]
doc/fr/images/button-release-job.gif [new file with mode: 0644]
doc/fr/images/button-restart-job.gif [new file with mode: 0644]
doc/fr/images/button-save-changes.gif [new file with mode: 0644]
doc/fr/images/button-search.gif [new file with mode: 0644]
doc/fr/images/button-set-allowed-users.gif [new file with mode: 0644]
doc/fr/images/button-set-as-default.gif [new file with mode: 0644]
doc/fr/images/button-set-printer-options.gif [new file with mode: 0644]
doc/fr/images/button-show-active.gif [new file with mode: 0644]
doc/fr/images/button-show-all.gif [new file with mode: 0644]
doc/fr/images/button-show-completed.gif [new file with mode: 0644]
doc/fr/images/button-show-next.gif [new file with mode: 0644]
doc/fr/images/button-show-previous.gif [new file with mode: 0644]
doc/fr/images/button-sort-ascending.gif [new file with mode: 0644]
doc/fr/images/button-sort-descending.gif [new file with mode: 0644]
doc/fr/images/button-start-class.gif [new file with mode: 0644]
doc/fr/images/button-start-printer.gif [new file with mode: 0644]
doc/fr/images/button-stop-class.gif [new file with mode: 0644]
doc/fr/images/button-stop-printer.gif [new file with mode: 0644]
doc/fr/images/button-unpublish-printer.gif [new file with mode: 0644]
doc/fr/images/button-use-default-config.gif [new file with mode: 0644]
doc/fr/images/button-view-access-log.gif [new file with mode: 0644]
doc/fr/images/button-view-error-log.gif [new file with mode: 0644]
doc/fr/images/button-view-page-log.gif [new file with mode: 0644]
doc/fr/images/button-view-printable-version.gif [new file with mode: 0644]
doc/fr/index.html.in [new file with mode: 0644]
doc/help/api-raster.html
doc/help/license.html
doc/help/network.html
doc/help/options.html
doc/help/ref-cupsd-conf.html
doc/help/spec-ppd.html
doc/idd.shtml [deleted file]
doc/index.html.in
doc/it/index.html.in
doc/ja/index.html.in
doc/pl/index.html.in
doc/sdd.shtml [deleted file]
doc/sps.shtml [deleted file]
doc/sv/index.html.in
filter/Dependencies
filter/Makefile
filter/image-pnm.c
filter/image-private.h
filter/image-sun.c
filter/interpret.c
filter/libcupsimage_s.exp
filter/pstops.c
filter/raster.h
filter/rastertolabel.c
filter/testraster.c
locale/cups.pot
locale/cups_de.po
locale/cups_es.po
locale/cups_et.po
locale/cups_fr.po [new file with mode: 0644]
locale/cups_it.po
locale/cups_ja.po
locale/cups_pl.po
locale/cups_sv.po
packaging/cups.list.in
packaging/cups.spec.in
pdftops/PSOutputDev.cxx
scheduler/client.c
scheduler/client.h
scheduler/conf.c
scheduler/cups-driverd.c
scheduler/dirsvc.c
scheduler/ipp.c
scheduler/job.c
scripting/java/src/com/easysw/cups/Base64Coder.java [new file with mode: 0644]
scripting/java/src/com/easysw/cups/IPPBase64Encoder.java
scripting/java/src/com/easysw/cups/IPPHttp.java
scripting/java/src/com/easysw/cups/class.list
systemv/lpoptions.c
templates/de/header.tmpl.in
templates/de/jobs.tmpl
templates/es/header.tmpl.in
templates/es/jobs.tmpl
templates/et/header.tmpl.in
templates/et/jobs.tmpl
templates/fr/add-class.tmpl [new file with mode: 0644]
templates/fr/add-printer.tmpl [new file with mode: 0644]
templates/fr/admin.tmpl [new file with mode: 0644]
templates/fr/choose-device.tmpl [new file with mode: 0644]
templates/fr/choose-make.tmpl [new file with mode: 0644]
templates/fr/choose-model.tmpl [new file with mode: 0644]
templates/fr/choose-serial.tmpl [new file with mode: 0644]
templates/fr/choose-uri.tmpl [new file with mode: 0644]
templates/fr/class-added.tmpl [new file with mode: 0644]
templates/fr/class-confirm.tmpl [new file with mode: 0644]
templates/fr/class-deleted.tmpl [new file with mode: 0644]
templates/fr/class-jobs-header.tmpl [new file with mode: 0644]
templates/fr/class-modified.tmpl [new file with mode: 0644]
templates/fr/classes-header.tmpl [new file with mode: 0644]
templates/fr/classes.tmpl [new file with mode: 0644]
templates/fr/edit-config.tmpl.in [new file with mode: 0644]
templates/fr/error-op.tmpl [new file with mode: 0644]
templates/fr/error.tmpl [new file with mode: 0644]
templates/fr/header.tmpl.in [new file with mode: 0644]
templates/fr/help-header.tmpl [new file with mode: 0644]
templates/fr/help-printable.tmpl [new file with mode: 0644]
templates/fr/job-cancel.tmpl [new file with mode: 0644]
templates/fr/job-hold.tmpl [new file with mode: 0644]
templates/fr/job-move.tmpl [new file with mode: 0644]
templates/fr/job-moved.tmpl [new file with mode: 0644]
templates/fr/job-release.tmpl [new file with mode: 0644]
templates/fr/job-restart.tmpl [new file with mode: 0644]
templates/fr/jobs-header.tmpl [new file with mode: 0644]
templates/fr/jobs.tmpl [new file with mode: 0644]
templates/fr/maintenance.tmpl [new file with mode: 0644]
templates/fr/modify-class.tmpl [new file with mode: 0644]
templates/fr/modify-printer.tmpl [new file with mode: 0644]
templates/fr/norestart.tmpl [new file with mode: 0644]
templates/fr/option-boolean.tmpl [new file with mode: 0644]
templates/fr/option-conflict.tmpl [new file with mode: 0644]
templates/fr/option-header.tmpl [new file with mode: 0644]
templates/fr/option-pickmany.tmpl [new file with mode: 0644]
templates/fr/option-pickone.tmpl [new file with mode: 0644]
templates/fr/option-trailer.tmpl [new file with mode: 0644]
templates/fr/pager.tmpl [new file with mode: 0644]
templates/fr/printer-accept.tmpl [new file with mode: 0644]
templates/fr/printer-added.tmpl [new file with mode: 0644]
templates/fr/printer-configured.tmpl [new file with mode: 0644]
templates/fr/printer-confirm.tmpl [new file with mode: 0644]
templates/fr/printer-default.tmpl [new file with mode: 0644]
templates/fr/printer-deleted.tmpl [new file with mode: 0644]
templates/fr/printer-jobs-header.tmpl [new file with mode: 0644]
templates/fr/printer-modified.tmpl [new file with mode: 0644]
templates/fr/printer-purge.tmpl [new file with mode: 0644]
templates/fr/printer-reject.tmpl [new file with mode: 0644]
templates/fr/printer-start.tmpl [new file with mode: 0644]
templates/fr/printer-stop.tmpl [new file with mode: 0644]
templates/fr/printers-header.tmpl [new file with mode: 0644]
templates/fr/printers.tmpl [new file with mode: 0644]
templates/fr/restart.tmpl [new file with mode: 0644]
templates/fr/samba-export.tmpl [new file with mode: 0644]
templates/fr/samba-exported.tmpl [new file with mode: 0644]
templates/fr/search.tmpl [new file with mode: 0644]
templates/fr/set-printer-options-header.tmpl [new file with mode: 0644]
templates/fr/set-printer-options-trailer.tmpl [new file with mode: 0644]
templates/fr/test-page.tmpl [new file with mode: 0644]
templates/fr/trailer.tmpl [new file with mode: 0644]
templates/fr/users.tmpl [new file with mode: 0644]
templates/header.tmpl.in
templates/it/header.tmpl.in
templates/it/jobs.tmpl
templates/ja/header.tmpl.in
templates/ja/jobs.tmpl
templates/jobs.tmpl
templates/pl/header.tmpl.in
templates/pl/jobs.tmpl
templates/sv/header.tmpl.in
templates/sv/jobs.tmpl
templates/trailer.tmpl
tools/checkpo [new file with mode: 0755]
vcnet/config.h
vcnet/cups.sln
vcnet/libcups2.def
vcnet/libcups2.vcproj
vcnet/testfile.vcproj [new file with mode: 0644]
vcnet/testhttp.vcproj [new file with mode: 0644]

index 49fe7d702e0a08a130ab1f4826dafa786f9b61ee..4dd18bf0c0b4585c9d7410d59b1fa103dad7ea39 100644 (file)
@@ -1,6 +1,92 @@
-CHANGES.txt - 2006-11-16
+CHANGES.txt - 2007-02-06
 ------------------------
 
+CHANGES IN CUPS V1.2.8
+
+       - Documentation fixes (STR #2141, STR #2157)
+       - The HTTP upgrade redirection used by the scheduler did
+         not work with Internet Explorer (STR #2235)
+       - Members of a class with Unicode names did not appear
+         correctly in the web interface (STR #2154)
+       - Changing the "Save debugging information" setting in
+         the web interface no longer affects the other server
+         settings (STR #1993)
+       - The scheduler did not choose SSL certificates correctly
+         on Mac OS X (STR #2225)
+       - The scheduler could get in an infinite loop when
+         printing to a remote class (STR #2228)
+       - The jobs web page did not have separating space after
+         the number of pages column (STR #2230)
+       - Added French localization (STR #2221)
+       - Updated Spanish localization (STR #2223)
+       - Updated Japanese localization (STR #2216)
+       - cupsBorderlessScalingFacter was limited to a range of
+         0.9 to 1.1, but some printers need larger values (STR
+         #2222)
+       - Landscape printing of PDF files did not always work
+         (STR #2149)
+       - Fixed slow USB printing on Minolta printers (STR #2104,
+         STR #2219)
+       - The ZPL label printer driver could produce stretched
+         output (PR #6448)
+       - The IPP backend now clears the printer-state-message
+         when there are no outstanding errors or warnings (STR
+         #2126)
+       - The CUPS Java scripting support did not work with
+         recent versions of Java due to the use of Sun's private
+         Base64 class (STR #2152)
+       - The scheduler did not pass HTTP GET form variables to
+         custom CGI programs (STR #2173)
+       - The lpoptions command now displays the reason why a PPD
+         file cannot be found (STR #2184)
+       - The scheduler did not accept "none" as a browse
+         protocol name (STR #2200)
+       - The scheduler still loaded the remote printer cache,
+         even when browsing was disabled (STR #2198)
+       - The SNMP backend now shows OfficeJet printers with the
+         "HP" manufacturer prefix (STR #2151)
+       - Web interface HTML cleanup (STR #2153)
+       - The parallel backend consumed 100% CPU on FreeBSD due
+         to an apparently common parallel port driver bug (STR
+         #2161)
+       - ippReadIO() incorrectly returned IPP_IDLE when the
+         initial IPP message header could not be read (STR
+         #2179)
+       - cupsRasterInterpretPPD() did not support custom options
+         (STR #1960)
+       - Collated output produced by the PostScript filter could
+         lose some options (STR #2137)
+       - job-hold-until with time values for the next day would
+         be held for 60 days (STR #2144)
+       - Some types of Sun raster files did not print correctly
+         (STR #2107)
+       - Raw PBM files did not print correctly (STR #2106)
+       - The SNMP backend no longer uses IPP with HP printers,
+         as some recent firmware versions appear to not work
+         (STR #2055)
+       - cupsMarkOptions() did not handle the
+         multiple-document-handling option (STR #2135)
+       - lpstat did not show the local job ID of active printers
+         (STR #2125)
+       - The backends incorrectly used STATUS:
+         media-tray-empty-error messages for out-of-paper
+         conditions (STR #2123, STR #2124)
+       - cupsGetPPD2() returned the wrong error when the PPD
+         file did not exist (STR #2122)
+       - cupsDoAuthentication() did not translate the password
+         prompt (STR #2121)
+       - httpGetLength2() did not handle error messages without
+         content correctly (STR #2133)
+       - Added support for 32/64-bit libraries on HP-UX Itanium
+         systems (STR #2115)
+       - Fixed a configure script problem with the 32/64-bit
+         library support (STR #2114)
+       - The PostScript filter did not properly output document
+         setup commands for reversed output (STR #2111)
+       - The scheduler did not parse IPv6 netmasks properly (STR
+         #2117)
+
+
 CHANGES IN CUPS V1.2.7
 
        - Documentation updates (STR #2089)
index cfd4fcd333fc7b99718065d33317dd10131ef121..c839ba1e4c6fa779418390e6d07d729449f87970 100644 (file)
@@ -1,4 +1,4 @@
-CREDITS.txt - 2006-10-02
+CREDITS.txt - 2007-02-05
 ------------------------
 
 Few projects are completed by one person, and CUPS is no exception.  We'd
@@ -6,6 +6,7 @@ like to thank the following individuals for their contributions:
 
     Nathaniel Barbour              - Lots of testing and feedback.
     N. Becker                      - setsid().
+    Philippe Combes                - French localization.
     Jean-Eric Cuendet              - GhostScript filters for CUPS.
     Van Dang                       - HTTP and IPP policeman.
     L. Peter Deutsch               - MD5 code.
index d6f9a01794ea0bfca0b693721dfa79f54419be67..b9636837c3fb16b528c4d70cbdb945f11ca1359c 100644 (file)
@@ -1,4 +1,4 @@
-INSTALL - CUPS v1.2.7 - 2006-11-16
+INSTALL - CUPS v1.2.8 - 2007-02-14
 ----------------------------------
 
 This file describes how to compile and install CUPS from source
index b15a77b7786fba41c3077655f5f7fd9fa2f9c108..4a3e913c3524e4a4b6cbbdcaf46491e7e02600a1 100644 (file)
@@ -1,6 +1,6 @@
                 Common UNIX Printing System License Agreement
 
-                Copyright 1997-2006 by Easy Software Products
+                Copyright 1997-2007 by Easy Software Products
                         44141 AIRPORT VIEW DR STE 204
                      HOLLYWOOD, MARYLAND 20636 USA
 
index 45dd92c05ab176eba045689cb561588501c40697..3d96ec143053894bdda84d91f2b6b604d9284c28 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 #
-# "$Id: Makefile 5902 2006-08-29 15:51:19Z mike $"
+# "$Id: Makefile 6128 2006-12-05 16:07:23Z mike $"
 #
 #   Top-level Makefile for the Common UNIX Printing System (CUPS).
 #
@@ -237,7 +237,7 @@ check:      all
 
 EPMFLAGS       =       -v --output-dir dist $(EPMARCH)
 
-aix bsd deb depot inst pkg rpm setld slackware swinstall tardist:
+aix bsd deb depot inst pkg setld slackware swinstall tardist:
        epm $(EPMFLAGS) -f $@ cups packaging/cups.list
 
 epm:
@@ -246,6 +246,9 @@ epm:
 osx:
        epm $(EPMFLAGS) -f osx -s packaging/installer.tif cups packaging/cups.list
 
+rpm:
+       epm $(EPMFLAGS) -f rpm -s packaging/installer.gif cups packaging/cups.list
+
 .PHONEY:       dist
 dist:  all
        $(RM) -r dist
@@ -260,5 +263,5 @@ dist:       all
 
 
 #
-# End of "$Id: Makefile 5902 2006-08-29 15:51:19Z mike $".
+# End of "$Id: Makefile 6128 2006-12-05 16:07:23Z mike $".
 #
index d8b6b0fb0d60e88dc1572bffe6b83ec1226d590a..8d555a2f33b381d9f1e4eee243597d0e15294727 100644 (file)
@@ -1,4 +1,4 @@
-README - CUPS v1.2.7 - 2006-11-16
+README - CUPS v1.2.8 - 2007-02-14
 ---------------------------------
 
 Looking for compile instructions?  Read the file "INSTALL.txt"
@@ -170,7 +170,7 @@ PRINTING FILES
 
 LEGAL STUFF
 
-    CUPS is Copyright 1993-2006 by Easy Software Products.  CUPS,
+    CUPS is Copyright 1993-2007 by Easy Software Products.  CUPS,
     the CUPS logo, and the Common UNIX Printing System are the
     trademark property of Easy Software Products.
 
index eb631b866a292ace1317bfd734133adbcf30bc21..693911c658c7f93ccc84ab0c9d1c53fd1219bf7c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp.c 6061 2006-10-23 00:26:52Z mike $"
+ * "$Id: ipp.c 6214 2007-01-23 17:01:48Z mike $"
  *
  *   IPP backend for the Common UNIX Printing System (CUPS).
  *
@@ -1380,7 +1380,7 @@ report_printer_state(ipp_t *ipp)  /* I - IPP response */
     strlcat(state, reason, sizeof(state));
 
     prefix  = ",";
-    message = NULL;
+    message = "";
 
     if (!strncmp(reason, "media-needed", 12))
       message = "Media tray needs to be filled.";
@@ -1666,5 +1666,5 @@ sigterm_handler(int sig)          /* I - Signal */
 
 
 /*
- * End of "$Id: ipp.c 6061 2006-10-23 00:26:52Z mike $".
+ * End of "$Id: ipp.c 6214 2007-01-23 17:01:48Z mike $".
  */
index 627c6227f287671ec977aa906f4383cf5620f2f8..c33fc10d2c70c7a0fbc8cccea10c2520601f65a9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: parallel.c 6068 2006-10-27 17:10:34Z mike $"
+ * "$Id: parallel.c 6181 2007-01-03 18:51:27Z mike $"
  *
  *   Parallel port backend for the Common UNIX Printing System (CUPS).
  *
@@ -189,10 +189,10 @@ main(int  argc,                           /* I - Number of command-line arguments (6 or 7) */
 
   do
   {
-#ifdef __linux
+#if defined(__linux) || defined(__FreeBSD__)
    /*
-    * The Linux parallel port driver currently is broken WRT select()
-    * and bidirection I/O...
+    * The Linux and FreeBSD parallel port drivers currently are broken WRT
+    * select() and bidirection I/O...
     */
 
     device_fd = open(resource, O_WRONLY | O_EXCL);
@@ -206,7 +206,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
     }
     else
       use_bc = 1;
-#endif /* __linux */
+#endif /* __linux || __FreeBSD__ */
 
     if (device_fd == -1)
     {
@@ -598,5 +598,5 @@ list_devices(void)
 
 
 /*
- * End of "$Id: parallel.c 6068 2006-10-27 17:10:34Z mike $".
+ * End of "$Id: parallel.c 6181 2007-01-03 18:51:27Z mike $".
  */
index 82673a447a3220f12c517b768c1f319868ca48f7..f613c054021a05f869375a1b3506e098eb855b9e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: runloop.c 5776 2006-07-26 20:55:13Z mike $"
+ * "$Id: runloop.c 6145 2006-12-06 20:10:16Z mike $"
  *
  *   Common run loop API for the Common UNIX Printing System (CUPS).
  *
@@ -206,7 +206,7 @@ backendRunLoop(int print_fd,                /* I - Print file descriptor */
          if (!paperout)
          {
            fputs("ERROR: Out of paper!\n", stderr);
-           fputs("STATUS: +media-tray-empty-error\n", stderr);
+           fputs("STATE: +media-empty-error\n", stderr);
            paperout = 1;
          }
         }
@@ -229,7 +229,7 @@ backendRunLoop(int print_fd,                /* I - Print file descriptor */
       {
         if (paperout)
        {
-         fputs("STATUS: -media-tray-empty-error\n", stderr);
+         fputs("STATE: -media-empty-error\n", stderr);
          paperout = 0;
        }
 
@@ -258,5 +258,5 @@ backendRunLoop(int print_fd,                /* I - Print file descriptor */
 
 
 /*
- * End of "$Id: runloop.c 5776 2006-07-26 20:55:13Z mike $".
+ * End of "$Id: runloop.c 6145 2006-12-06 20:10:16Z mike $".
  */
index b76283aa2e161187f68209e04201684bda56c494..fd7d3922ee111fa80b6a35e377a32a9683ae4888 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: snmp.c 6090 2006-11-14 16:35:27Z mike $"
+ * "$Id: snmp.c 6181 2007-01-03 18:51:27Z mike $"
  *
  *   SNMP discovery backend for the Common UNIX Printing System (CUPS).
  *
@@ -1471,6 +1471,8 @@ fix_make_model(
   }
   else if (!strncasecmp(old_make_model, "deskjet", 7))
     snprintf(make_model, make_model_size, "HP DeskJet%s", old_make_model + 7);
+  else if (!strncasecmp(old_make_model, "officejet", 9))
+    snprintf(make_model, make_model_size, "HP OfficeJet%s", old_make_model + 9);
   else if (!strncasecmp(old_make_model, "stylus_pro_", 11))
     snprintf(make_model, make_model_size, "EPSON Stylus Pro %s",
              old_make_model + 11);
@@ -1729,14 +1731,16 @@ probe_device(snmp_cache_t *device)      /* I - Device */
 
   if (device->make_and_model &&
       (!strncasecmp(device->make_and_model, "Epson", 5) ||
+       !strncasecmp(device->make_and_model, "HP ", 3) ||
+       !strncasecmp(device->make_and_model, "Hewlett", 7) ||
        !strncasecmp(device->make_and_model, "Kyocera", 7) ||
        !strncasecmp(device->make_and_model, "Lexmark", 7) ||
        !strncasecmp(device->make_and_model, "Tektronix", 9) ||
        !strncasecmp(device->make_and_model, "Xerox", 5)))
   {
    /*
-    * Epson, Kyocera, Lexmark, Tektronix, and Xerox printers often lock up on
-    * IPP probes, so exclude them from the IPP connection test...
+    * Epson, HP, Kyocera, Lexmark, Tektronix, and Xerox printers often lock
+    * up on IPP probes, so exclude them from the IPP connection test...
     */
 
     http = NULL;
@@ -1769,9 +1773,9 @@ probe_device(snmp_cache_t *device)        /* I - Device */
     static const char * const resources[] =
                        {               /* Common resource paths for IPP */
                          "/ipp",
-                         "/ipp/port2",
-                         "/ipp/port3",
-                         "/EPSON_IPP_Printer",
+                         /*"/ipp/port2",*/
+                         /*"/ipp/port3",*/
+                         /*"/EPSON_IPP_Printer",*/
                          "/LPT1",
                          "/LPT2",
                          "/COM1",
@@ -2455,5 +2459,5 @@ update_cache(snmp_cache_t *device,        /* I - Device */
 
 
 /*
- * End of "$Id: snmp.c 6090 2006-11-14 16:35:27Z mike $".
+ * End of "$Id: snmp.c 6181 2007-01-03 18:51:27Z mike $".
  */
index 4a4cbe259609cf4d70d62cd308aa0d4fb8b48369..7e78a3f271297604877f7591ffd16fff608a8a05 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: usb-unix.c 6111 2006-11-15 20:28:39Z mike $"
+ * "$Id: usb-unix.c 6234 2007-02-05 20:25:50Z mike $"
  *
  *   USB port backend for the Common UNIX Printing System (CUPS).
  *
@@ -84,7 +84,9 @@ print_device(const char *uri,         /* I - Device URI */
     * device ID over and over and over when they get a read request...
     */
 
-    use_bc = strcasecmp(hostname, "Canon") && !strstr(hostname, "Minolta");
+    use_bc = strcasecmp(hostname, "Canon") &&
+             strcasecmp(hostname, "Konica Minolta") &&
+             strcasecmp(hostname, "Minolta");
 
     if ((device_fd = open_device(uri, &use_bc)) == -1)
     {
@@ -524,5 +526,5 @@ open_device(const char *uri,                /* I - Device URI */
 
 
 /*
- * End of "$Id: usb-unix.c 6111 2006-11-15 20:28:39Z mike $".
+ * End of "$Id: usb-unix.c 6234 2007-02-05 20:25:50Z mike $".
  */
index c312d8bff1975355986290f4582679e213f21c3d..4639643de475c4f9c393427dd70262600e196821 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp-var.c 5838 2006-08-17 14:41:42Z mike $"
+ * "$Id: ipp-var.c 6244 2007-02-06 21:08:59Z mike $"
  *
  *   CGI <-> IPP variable routines for the Common UNIX Printing System (CUPS).
  *
@@ -914,7 +914,7 @@ cgiSetIPPObjectVars(
 
                 snprintf(valptr, sizeof(value) - (valptr - value),
                         "<A HREF=\"%s\">%s</A>", url,
-                        strrchr(url, '/') + 1);
+                        strrchr(attr->values[i].string.text, '/') + 1);
              }
              else
                cgiRewriteURL(attr->values[i].string.text, valptr,
@@ -1280,5 +1280,5 @@ cgiText(const char *message)              /* I - Message */
 
 
 /*
- * End of "$Id: ipp-var.c 5838 2006-08-17 14:41:42Z mike $".
+ * End of "$Id: ipp-var.c 6244 2007-02-06 21:08:59Z mike $".
  */
diff --git a/config-scripts/cups-3264.m4 b/config-scripts/cups-3264.m4
new file mode 100644 (file)
index 0000000..1ce80df
--- /dev/null
@@ -0,0 +1,149 @@
+dnl
+dnl "$Id$"
+dnl
+dnl   32/64-bit library support stuff for the Common UNIX Printing System (CUPS).
+dnl
+dnl   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+dnl
+dnl   These coded instructions, statements, and computer programs are the
+dnl   property of Easy Software Products and are protected by Federal
+dnl   copyright law.  Distribution and use rights are outlined in the file
+dnl   "LICENSE.txt" which should have been included with this file.  If this
+dnl   file is missing or damaged please contact Easy Software Products
+dnl   at:
+dnl
+dnl       Attn: CUPS Licensing Information
+dnl       Easy Software Products
+dnl       44141 Airport View Drive, Suite 204
+dnl       Hollywood, Maryland 20636 USA
+dnl
+dnl       Voice: (301) 373-9600
+dnl       EMail: cups-info@cups.org
+dnl         WWW: http://www.cups.org
+dnl
+
+dnl Setup support for separate 32/64-bit library generation...
+AC_ARG_ENABLE(32bit, [  --enable-32bit          generate 32-bit libraries on 32/64-bit systems, default=no])
+
+INSTALL32=""
+LIB32CUPS=""
+LIB32CUPSIMAGE=""
+LIB32DIR=""
+UNINSTALL32=""
+
+AC_SUBST(INSTALL32)
+AC_SUBST(LIB32CUPS)
+AC_SUBST(LIB32CUPSIMAGE)
+AC_SUBST(LIB32DIR)
+AC_SUBST(UNINSTALL32)
+
+AC_ARG_ENABLE(64bit, [  --enable-64bit          generate 64-bit libraries on 32/64-bit systems, default=no])
+
+INSTALL64=""
+LIB64CUPS=""
+LIB64CUPSIMAGE=""
+LIB64DIR=""
+UNINSTALL64=""
+
+AC_SUBST(INSTALL64)
+AC_SUBST(LIB64CUPS)
+AC_SUBST(LIB64CUPSIMAGE)
+AC_SUBST(LIB64DIR)
+AC_SUBST(UNINSTALL64)
+
+case "$uname" in
+       HP-UX*)
+               if test "x$enable_32bit" = xyes; then
+                       # Build 32-bit libraries, 64-bit base...
+                       INSTALL32="install32bit"
+                       LIB32CUPS="32bit/libcups.so.2"
+                       LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
+                       LIB32DIR="$exec_prefix/lib"
+                       if test -d /usr/lib/hpux32; then
+                               LIB32DIR="${LIB32DIR}/hpux32"
+                       fi
+                       UNINSTALL32="uninstall32bit"
+               fi
+
+               if test "x$enable_64bit" = xyes; then
+                       # Build 64-bit libraries, 32-bit base...
+                       INSTALL64="install64bit"
+                       LIB64CUPS="64bit/libcups.so.2"
+                       LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
+                       LIB64DIR="$exec_prefix/lib"
+                       if test -d /usr/lib/hpux64; then
+                               LIB64DIR="${LIB64DIR}/hpux64"
+                       fi
+                       UNINSTALL64="uninstall64bit"
+               fi
+               ;;
+
+       IRIX)
+               if test "x$enable_32bit" = xyes; then
+                       INSTALL32="install32bit"
+                       LIB32CUPS="32bit/libcups.so.2"
+                       LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
+                       LIB32DIR="$prefix/lib32"
+                       UNINSTALL32="uninstall32bit"
+               fi
+
+               if test "x$enable_64bit" = xyes; then
+                       # Build 64-bit libraries, 32-bit base...
+                       INSTALL64="install64bit"
+                       LIB64CUPS="64bit/libcups.so.2"
+                       LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
+                       LIB64DIR="$prefix/lib64"
+                       UNINSTALL64="uninstall64bit"
+               fi
+               ;;
+
+       Linux*)
+               if test "x$enable_32bit" = xyes; then
+                       # Build 32-bit libraries, 64-bit base...
+                       INSTALL32="install32bit"
+                       LIB32CUPS="32bit/libcups.so.2"
+                       LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
+                       LIB32DIR="$exec_prefix/lib"
+                       if test -d /usr/lib32; then
+                               LIB32DIR="${LIB32DIR}32"
+                       fi
+                       UNINSTALL32="uninstall32bit"
+               fi
+
+               if test "x$enable_64bit" = xyes; then
+                       # Build 64-bit libraries, 32-bit base...
+                       INSTALL64="install64bit"
+                       LIB64CUPS="64bit/libcups.so.2"
+                       LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
+                       LIB64DIR="$exec_prefix/lib"
+                       if test -d /usr/lib64; then
+                               LIB64DIR="${LIB64DIR}64"
+                       fi
+                       UNINSTALL64="uninstall64bit"
+               fi
+               ;;
+
+       SunOS*)
+               if test "x$enable_32bit" = xyes; then
+                       # Build 32-bit libraries, 64-bit base...
+                       INSTALL32="install32bit"
+                       LIB32CUPS="32bit/libcups.so.2"
+                       LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
+                       LIB32DIR="$exec_prefix/lib/32"
+                       UNINSTALL32="uninstall32bit"
+               fi
+
+               if test "x$enable_64bit" = xyes; then
+                       # Build 64-bit libraries, 32-bit base...
+                       INSTALL64="install64bit"
+                       LIB64CUPS="64bit/libcups.so.2"
+                       LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
+                       LIB64DIR="$exec_prefix/lib/64"
+                       UNINSTALL64="uninstall64bit"
+               fi
+               ;;
+esac
+
+dnl
+dnl End of "$Id$".
+dnl
index 7e54767fe37bce10711fc7f17e6e66af453f57c8..8610523ba16d0e81d9c1be6b36734032e3034f88 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-common.m4 6092 2006-11-14 16:36:36Z mike $"
+dnl "$Id: cups-common.m4 6145 2006-12-06 20:10:16Z 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 Version number information...
-CUPS_VERSION="1.2.7"
+CUPS_VERSION="1.2.8"
 CUPS_REVISION=""
 
 AC_SUBST(CUPS_VERSION)
@@ -264,5 +264,5 @@ AC_SUBST(DEFAULT_IPP_PORT)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
 
 dnl
-dnl End of "$Id: cups-common.m4 6092 2006-11-14 16:36:36Z mike $".
+dnl End of "$Id: cups-common.m4 6145 2006-12-06 20:10:16Z mike $".
 dnl
index f265d2ca005fee8113ec257de79c9b5a3b3e9349..9a15cb535bea0d9a366d4f1bf17e283dfaeb86a4 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-compiler.m4 6049 2006-10-20 15:07:21Z mike $"
+dnl "$Id: cups-compiler.m4 6145 2006-12-06 20:10:16Z mike $"
 dnl
 dnl   Compiler stuff for the Common UNIX Printing System (CUPS).
 dnl
@@ -46,41 +46,15 @@ fi
 AC_SUBST(ARCHFLAGS)
 
 dnl Setup support for separate 32/64-bit library generation...
-AC_ARG_ENABLE(32bit, [  --enable-32bit          generate 32-bit libraries on 32/64-bit systems, default=no])
 AC_ARG_WITH(arch32flags, [  --with-arch32flags="flags"
                           specifies 32-bit architecture flags])
-
 ARCH32FLAGS=""
-INSTALL32=""
-LIB32CUPS=""
-LIB32CUPSIMAGE=""
-LIB32DIR=""
-UNINSTALL32=""
-
 AC_SUBST(ARCH32FLAGS)
-AC_SUBST(INSTALL32)
-AC_SUBST(LIB32CUPS)
-AC_SUBST(LIB32CUPSIMAGE)
-AC_SUBST(LIB32DIR)
-AC_SUBST(UNINSTALL32)
 
-AC_ARG_ENABLE(64bit, [  --enable-64bit          generate 64-bit libraries on 32/64-bit systems, default=no])
 AC_ARG_WITH(arch64flags, [  --with-arch64flags="flags"
                           specifies 64-bit architecture flags])
-
 ARCH64FLAGS=""
-INSTALL64=""
-LIB64CUPS=""
-LIB64CUPSIMAGE=""
-LIB64DIR=""
-UNINSTALL64=""
-
 AC_SUBST(ARCH64FLAGS)
-AC_SUBST(INSTALL64)
-AC_SUBST(LIB64CUPS)
-AC_SUBST(LIB64CUPSIMAGE)
-AC_SUBST(LIB64DIR)
-AC_SUBST(UNINSTALL64)
 
 dnl Position-Independent Executable support on Linux and *BSD...
 AC_ARG_ENABLE(pie, [  --enable-pie            use GCC -fPIE option, default=no])
@@ -129,6 +103,42 @@ if test -n "$GCC"; then
        fi
 
        case "$uname" in
+               HP-UX*)
+                       if test "x$enable_32bit" = xyes; then
+                               # Build 32-bit libraries, 64-bit base...
+                               if test -z "$with_arch32flags"; then
+                                       ARCH32FLAGS="-milp32"
+                               else
+                                       ARCH32FLAGS="$with_arch32flags"
+                               fi
+
+                               if test -z "$with_archflags"; then
+                                       if test -z "$with_arch64flags"; then
+                                               ARCHFLAGS="-mlp64"
+                                       else
+                                               ARCHFLAGS="$with_arch64flags"
+                                       fi
+                               fi
+                       fi
+
+                       if test "x$enable_64bit" = xyes; then
+                               # Build 64-bit libraries, 32-bit base...
+                               if test -z "$with_arch64flags"; then
+                                       ARCH64FLAGS="-mlp64"
+                               else
+                                       ARCH64FLAGS="$with_arch64flags"
+                               fi
+
+                               if test -z "$with_archflags"; then
+                                       if test -z "$with_arch32flags"; then
+                                               ARCHFLAGS="-milp32"
+                                       else
+                                               ARCHFLAGS="$with_arch32flags"
+                                       fi
+                               fi
+                       fi
+                       ;;
+
                IRIX)
                        if test "x$enable_32bit" = xyes; then
                                # Build 32-bit libraries, 64-bit base...
@@ -137,11 +147,6 @@ if test -n "$GCC"; then
                                else
                                        ARCH32FLAGS="$with_arch32flags"
                                fi
-                               INSTALL32="install32bit"
-                               LIB32CUPS="32bit/libcups.so.2"
-                               LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
-                               LIB32DIR="$prefix/lib32"
-                               UNINSTALL32="uninstall32bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch64flags"; then
@@ -159,11 +164,6 @@ if test -n "$GCC"; then
                                else
                                        ARCH64FLAGS="$with_arch64flags"
                                fi
-                               INSTALL64="install64bit"
-                               LIB64CUPS="64bit/libcups.so.2"
-                               LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
-                               LIB64DIR="$prefix/lib64"
-                               UNINSTALL64="uninstall64bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch32flags"; then
@@ -183,14 +183,6 @@ if test -n "$GCC"; then
                                else
                                        ARCH32FLAGS="$with_arch32flags"
                                fi
-                               INSTALL32="install32bit"
-                               LIB32CUPS="32bit/libcups.so.2"
-                               LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
-                               LIB32DIR="$exec_prefix/lib"
-                               if test -d /usr/lib32; then
-                                       LIB32DIR="${LIB32DIR}32"
-                               fi
-                               UNINSTALL32="uninstall32bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch64flags"; then
@@ -208,14 +200,6 @@ if test -n "$GCC"; then
                                else
                                        ARCH64FLAGS="$with_arch64flags"
                                fi
-                               INSTALL64="install64bit"
-                               LIB64CUPS="64bit/libcups.so.2"
-                               LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
-                               LIB64DIR="$exec_prefix/lib"
-                               if test -d /usr/lib64; then
-                                       LIB64DIR="${LIB64DIR}64"
-                               fi
-                               UNINSTALL64="uninstall64bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch32flags"; then
@@ -235,11 +219,6 @@ if test -n "$GCC"; then
                                else
                                        ARCH32FLAGS="$with_arch32flags"
                                fi
-                               INSTALL32="install32bit"
-                               LIB32CUPS="32bit/libcups.so.2"
-                               LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
-                               LIB32DIR="$exec_prefix/lib/32"
-                               UNINSTALL32="uninstall32bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch64flags"; then
@@ -257,11 +236,6 @@ if test -n "$GCC"; then
                                else
                                        ARCH64FLAGS="$with_arch64flags"
                                fi
-                               INSTALL64="install64bit"
-                               LIB64CUPS="64bit/libcups.so.2"
-                               LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
-                               LIB64DIR="$exec_prefix/lib/64"
-                               UNINSTALL64="uninstall64bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch32flags"; then
@@ -323,11 +297,6 @@ else
                                else
                                        ARCH32FLAGS="$with_arch32flags"
                                fi
-                               INSTALL32="install32bit"
-                               LIB32CUPS="32bit/libcups.so.2"
-                               LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
-                               LIB32DIR="$prefix/lib32"
-                               UNINSTALL32="uninstall32bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch64flags"; then
@@ -345,11 +314,6 @@ else
                                else
                                        ARCH64FLAGS="$with_arch64flags"
                                fi
-                               INSTALL64="install64bit"
-                               LIB64CUPS="64bit/libcups.so.2"
-                               LIB64CUPSIMAGE="64bit/libcupsimage.so.2"
-                               LIB64DIR="$prefix/lib64"
-                               UNINSTALL64="uninstall64bit"
 
                                if test -z "$with_archflags"; then
                                        if test -z "$with_arch32flags"; then
@@ -388,11 +352,6 @@ else
                                # Compiling on a Solaris system, build 64-bit
                                # binaries with separate 32-bit libraries...
                                ARCH32FLAGS="-xarch=generic"
-                               INSTALL32="install32bit"
-                               LIB32CUPS="32bit/libcups.so.2"
-                               LIB32CUPSIMAGE="32bit/libcupsimage.so.2"
-                               LIB32DIR="$exec_prefix/lib/32"
-                               UNINSTALL32="uninstall32bit"
 
                                if test "x$with_optim" = x; then
                                        # Suppress all of Sun's questionable
@@ -412,11 +371,6 @@ else
                                if test "x$enable_64bit" = xyes; then
                                        # Build 64-bit libraries...
                                        ARCH64FLAGS="-xarch=generic64"
-                                       INSTALL64="install64bit"
-                                       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
@@ -481,5 +435,5 @@ case $uname in
 esac
 
 dnl
-dnl End of "$Id: cups-compiler.m4 6049 2006-10-20 15:07:21Z mike $".
+dnl End of "$Id: cups-compiler.m4 6145 2006-12-06 20:10:16Z mike $".
 dnl
index 66810f9e5d5877526f615e6e5319e27568e387be..48b3aea5f4c85c99b373646fab3e17a2fe3793a0 100644 (file)
@@ -1,10 +1,10 @@
 dnl
-dnl "$Id: cups-defaults.m4 6118 2006-11-16 13:34:44Z mike $"
+dnl "$Id: cups-defaults.m4 6234 2007-02-05 20:25:50Z mike $"
 dnl
 dnl   Default cupsd configuration settings for the Common UNIX Printing System
 dnl   (CUPS).
 dnl
-dnl   Copyright 2006 by Easy Software Products, all rights reserved.
+dnl   Copyright 2006-2007 by Easy Software Products, all rights reserved.
 dnl
 dnl   These coded instructions, statements, and computer programs are the
 dnl   property of Easy Software Products and are protected by Federal
@@ -24,11 +24,11 @@ dnl         WWW: http://www.cups.org
 dnl
 
 dnl Default langugages...
-AC_ARG_WITH(languages, [  --with-languages        set installed languages, default="de es ja pl sv" ],
+AC_ARG_WITH(languages, [  --with-languages        set installed languages, default="de es et fr it ja pl sv" ],
        if test "x$withval" != xno; then
                LANGUAGES="$withval"
        fi,
-       LANGUAGES="de es et it ja pl sv")
+       LANGUAGES="de es et fr it ja pl sv")
 AC_SUBST(LANGUAGES)
 
 dnl Default ConfigFilePerm
@@ -252,5 +252,5 @@ fi
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP")
 
 dnl
-dnl End of "$Id: cups-defaults.m4 6118 2006-11-16 13:34:44Z mike $".
+dnl End of "$Id: cups-defaults.m4 6234 2007-02-05 20:25:50Z mike $".
 dnl
index b47f473a72f80abf4fa4aae7e0e94701287d3a38..8d510da91a250e90c8280eb5eb991455982cd3e9 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-opsys.m4 5466 2006-04-26 19:52:27Z mike $"
+dnl "$Id: cups-opsys.m4 6145 2006-12-06 20:10:16Z mike $"
 dnl
 dnl   Operating system stuff for the Common UNIX Printing System (CUPS).
 dnl
@@ -22,9 +22,10 @@ dnl       EMail: cups-info@cups.org
 dnl         WWW: http://www.cups.org
 dnl
 
-dnl Get the operating system and version number...
+dnl Get the operating system, version number, and architecture...
 uname=`uname`
 uversion=`uname -r | sed -e '1,$s/^[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\).*/\1\2/'`
+uarch=`uname -m`
 
 case "$uname" in
        GNU* | GNU/*)
@@ -39,5 +40,5 @@ case "$uname" in
 esac
 
 dnl
-dnl "$Id: cups-opsys.m4 5466 2006-04-26 19:52:27Z mike $"
+dnl "$Id: cups-opsys.m4 6145 2006-12-06 20:10:16Z mike $"
 dnl
index 86d93e1a1b939e64a9a053d28cc13c265ac4a2c9..ca695aa13440f1bd9d7b73c2f2e69c50df3e31ae 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-sharedlibs.m4 5582 2006-05-24 01:00:35Z mike $"
+dnl "$Id: cups-sharedlibs.m4 6145 2006-12-06 20:10:16Z mike $"
 dnl
 dnl   Shared library support for the Common UNIX Printing System (CUPS).
 dnl
@@ -36,10 +36,20 @@ if test x$enable_shared != xno; then
                        DSOFLAGS="$DSOFLAGS -Wl,-h,\`basename \$@\` -G \$(OPTIM)"
                        ;;
                HP-UX*)
-                       LIBCUPS="libcups.sl.2"
-                       LIBCUPSIMAGE="libcupsimage.sl.2"
-                       DSO="\$(LD)"
-                       DSOFLAGS="$DSOFLAGS -b -z +h \`basename \$@\`"
+                       case "$uarch" in
+                               ia64)
+                                       LIBCUPS="libcups.so.2"
+                                       LIBCUPSIMAGE="libcupsimage.so.2"
+                                       DSO="\$(CC)"
+                                       DSOFLAGS="$DSOFLAGS -Wl,-b,-z,+h,\`basename \$@\`"
+                                       ;;
+                               *)
+                                       LIBCUPS="libcups.sl.2"
+                                       LIBCUPSIMAGE="libcupsimage.sl.2"
+                                       DSO="\$(LD)"
+                                       DSOFLAGS="$DSOFLAGS -b -z +h \`basename \$@\`"
+                                       ;;
+                       esac
                        ;;
                IRIX)
                        LIBCUPS="libcups.so.2"
@@ -126,9 +136,18 @@ if test "$DSO" != ":"; then
        case $uname in
                 HP-UX*)
                        # HP-UX needs the path, even for /usr/lib...
-                       DSOFLAGS="+s +b $libdir $DSOFLAGS"
-                       DSO32FLAGS="+s +b $LIB32DIR $DSO32FLAGS"
-                       DSO64FLAGS="+s +b $LIB64DIR $DSO64FLAGS"
+                       case "$uarch" in
+                               ia64)
+                                       DSOFLAGS="-Wl,+s,+b,$libdir $DSOFLAGS"
+                                       DSO32FLAGS="-Wl,+s,+b,$LIB32DIR $DSO32FLAGS"
+                                       DSO64FLAGS="-Wl,+s,+b,$LIB64DIR $DSO64FLAGS"
+                                       ;;
+                               *)
+                                       DSOFLAGS="+s +b $libdir $DSOFLAGS"
+                                       DSO32FLAGS="+s +b $LIB32DIR $DSO32FLAGS"
+                                       DSO64FLAGS="+s +b $LIB64DIR $DSO64FLAGS"
+                                       ;;
+                       esac
                        LDFLAGS="$LDFLAGS -Wl,+s,+b,$libdir"
                        EXPORT_LDFLAGS="-Wl,+s,+b,$libdir"
                        ;;
@@ -173,5 +192,5 @@ AC_SUBST(IMGLIBS)
 AC_SUBST(EXPORT_LDFLAGS)
 
 dnl
-dnl End of "$Id: cups-sharedlibs.m4 5582 2006-05-24 01:00:35Z mike $".
+dnl End of "$Id: cups-sharedlibs.m4 6145 2006-12-06 20:10:16Z mike $".
 dnl
index ce6ea085956d2d7898a28ed9f2d97547db34ecf5..2522e9b161c9b7f35c4678056b4ce363c877a4cd 100644 (file)
@@ -1,9 +1,9 @@
 dnl
-dnl "$Id: cups-ssl.m4 5630 2006-06-05 18:42:53Z mike $"
+dnl "$Id: cups-ssl.m4 6238 2007-02-06 16:04:25Z mike $"
 dnl
 dnl   OpenSSL/GNUTLS stuff for the Common UNIX Printing System (CUPS).
 dnl
-dnl   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+dnl   Copyright 1997-2007 by Easy Software Products, all rights reserved.
 dnl
 dnl   These coded instructions, statements, and computer programs are the
 dnl   property of Easy Software Products and are protected by Federal
@@ -42,15 +42,33 @@ if test x$enable_ssl != xno; then
     dnl Look for CDSA...
     if test "x${SSLLIBS}" = "x" -a "x${enable_cdsassl}" != "xno"; then
        if test $uname = Darwin; then
-           AC_CHECK_HEADER(Security/SecureTransport.h,
-               [SSLLIBS="-framework CoreFoundation -framework Security"
-                # MacOS X doesn't (yet) come with pre-installed encryption
-                # certificates for CUPS, so don't enable encryption on
-                # /admin just yet...
-                #ENCRYPTION_REQUIRED="  Encryption Required"
-                AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
-                AC_DEFINE(HAVE_SSL)
-                AC_DEFINE(HAVE_CDSASSL)])
+           AC_CHECK_HEADER(Security/SecureTransport.h, [
+               SSLLIBS="-framework CoreFoundation -framework Security"
+               # MacOS X doesn't (yet) come with pre-installed encryption
+               # certificates for CUPS, so don't enable encryption on
+               # /admin just yet...
+               #ENCRYPTION_REQUIRED="  Encryption Required"
+               AC_DEFINE(HAVE_SSL)
+               AC_DEFINE(HAVE_CDSASSL)
+
+               dnl Check for the various security headers...
+               AC_CHECK_HEADER(Security/SecPolicy.h,
+                   AC_DEFINE(HAVE_SECPOLICY_H))
+               AC_CHECK_HEADER(Security/SecPolicyPriv.h,
+                   AC_DEFINE(HAVE_SECPOLICYPRIV_H))
+               AC_CHECK_HEADER(Security/SecBasePriv.h,
+                   AC_DEFINE(HAVE_SECBASEPRIV_H))
+               AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
+                   AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
+
+               dnl Check for SecIdentitySearchCreateWithPolicy...
+               AC_MSG_CHECKING(for SecIdentitySearchCreateWithPolicy)
+               if test $uversion -ge 80; then
+                   AC_DEFINE(HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY)
+                   AC_MSG_RESULT(yes)
+               else
+                   AC_MSG_RESULT(no)
+               fi])
        fi
     fi
 
@@ -115,5 +133,5 @@ AC_SUBST(EXPORT_SSLLIBS)
 
 
 dnl
-dnl End of "$Id: cups-ssl.m4 5630 2006-06-05 18:42:53Z mike $".
+dnl End of "$Id: cups-ssl.m4 6238 2007-02-06 16:04:25Z mike $".
 dnl
index ae2fb9dc7b93cec566d3d696b2bd2e1962b4ffcf..bad25cb09682d7df75916a3c085f2bcaf7cebe86 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: config.h.in 6073 2006-11-02 20:01:54Z mike $"
+ * "$Id: config.h.in 6238 2007-02-06 16:04:25Z mike $"
  *
  *   Configuration file for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
 
 
 /*
- * Do we have <Security/SecBasePriv.h>?
+ * What Security framework headers do we have?
  */
 
+#undef HAVE_SECPOLICY_H
+#undef HAVE_SECPOLICYPRIV_H
 #undef HAVE_SECBASEPRIV_H
+#undef HAVE_SECIDENTITYSEARCHPRIV_H
+
+
+/*
+ * Do we have the SecIdentitySearchCreateWithPolicy function?
+ */
+
+#undef HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
 
 
 /*
 #endif /* !_CUPS_CONFIG_H_ */
 
 /*
- * End of "$Id: config.h.in 6073 2006-11-02 20:01:54Z mike $".
+ * End of "$Id: config.h.in 6238 2007-02-06 16:04:25Z mike $".
  */
index 07909d7e1bc74206343b10d03a2bd0a804a28b98..b96b42272fe8b1a85cae3f0a9139f96bdf3613c2 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: configure.in 5804 2006-08-04 16:51:58Z mike $"
+dnl "$Id: configure.in 6145 2006-12-06 20:10:16Z mike $"
 dnl
 dnl   Configuration script for the Common UNIX Printing System (CUPS).
 dnl
@@ -29,6 +29,7 @@ sinclude(config-scripts/cups-common.m4)
 sinclude(config-scripts/cups-directories.m4)
 sinclude(config-scripts/cups-manpages.m4)
 
+sinclude(config-scripts/cups-3264.m4)
 sinclude(config-scripts/cups-sharedlibs.m4)
 sinclude(config-scripts/cups-libtool.m4)
 sinclude(config-scripts/cups-compiler.m4)
@@ -83,5 +84,5 @@ AC_OUTPUT(Makedefs packaging/cups.list init/cups.sh init/cups-lpd cups-config
 chmod +x cups-config
 
 dnl
-dnl End of "$Id: configure.in 5804 2006-08-04 16:51:58Z mike $".
+dnl End of "$Id: configure.in 6145 2006-12-06 20:10:16Z mike $".
 dnl
index edef4f909f09295f550ee303f089feddf8e069d0..e697e6a1d163029111461c33c049066e968b39ff 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: adminutil.c 5970 2006-09-19 20:11:08Z mike $"
+ * "$Id: adminutil.c 6262 2007-02-11 16:59:33Z mike $"
  *
  *   Administration utility API definitions for the Common UNIX Printing
  *   System (CUPS).
@@ -7,7 +7,7 @@
  *   MANY OF THE FUNCTIONS IN THIS HEADER ARE PRIVATE AND SUBJECT TO
  *   CHANGE AT ANY TIME.  USE AT YOUR OWN RISK.
  *
- *   Copyright 2001-2006 by Easy Software Products.
+ *   Copyright 2001-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
 #include "debug.h"
 #include <errno.h>
 #include <fcntl.h>
-#include <unistd.h>
 #include <sys/stat.h>
-#include <sys/wait.h>
+#ifdef WIN32
+#else
+#  include <unistd.h>
+#  include <sys/wait.h>
+#endif /* WIN32 */
 
 
 /*
@@ -243,7 +246,7 @@ cupsAdminCreateWindowsPPD(
       if ((ptr = strchr(line, ':')) == NULL)
       {
         snprintf(line, sizeof(line),
-                 _cupsLangString(language, _("Missing value on line %d!\n")),
+                 _cupsLangString(language, _("Missing value on line %d!")),
                  linenum);
         _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line);
 
@@ -262,7 +265,7 @@ cupsAdminCreateWindowsPPD(
       {
         snprintf(line, sizeof(line),
                 _cupsLangString(language,
-                                _("Missing double quote on line %d!\n")),
+                                _("Missing double quote on line %d!")),
                 linenum);
         _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line);
 
@@ -281,7 +284,7 @@ cupsAdminCreateWindowsPPD(
       {
         snprintf(line, sizeof(line),
                 _cupsLangString(language,
-                                _("Bad option + choice on line %d!\n")),
+                                _("Bad option + choice on line %d!")),
                 linenum);
         _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line);
 
@@ -324,6 +327,21 @@ cupsAdminCreateWindowsPPD(
   cupsFileClose(srcfp);
   unlink(src);
 
+  if (linenum == 0)
+  {
+    snprintf(line, sizeof(line),
+             _cupsLangString(language, _("Empty PPD file!")),
+             linenum);
+    _cupsSetError(IPP_DOCUMENT_FORMAT_ERROR, line);
+
+    cupsFileClose(dstfp);
+    unlink(buffer);
+
+    *buffer = '\0';
+
+    return (NULL);
+  }
+
  /*
   * Now add the CUPS-specific attributes and options...
   */
@@ -656,7 +674,7 @@ cupsAdminExportSamba(
   {
     snprintf(message, sizeof(message),
              _cupsLangString(language,
-                            _("Unable to set Windows printer driver (%d)!\n")),
+                            _("Unable to set Windows printer driver (%d)!")),
                             status);
 
     _cupsSetError(IPP_INTERNAL_ERROR, message);
@@ -985,6 +1003,11 @@ _cupsAdminSetServerSettings(
                wrote_root_location;    /* Wrote the / location? */
   int          indent;                 /* Indentation */
   int          cupsd_num_settings;     /* New number of settings */
+  int          old_remote_printers,    /* Show remote printers */
+               old_share_printers,     /* Share local printers */
+               old_remote_admin,       /* Remote administration allowed? */
+               old_user_cancel_any,    /* Cancel-job policy set? */
+               old_debug_logging;      /* LogLevel debug set? */
   cups_option_t        *cupsd_settings,        /* New settings */
                *setting;               /* Current setting */
   _cups_globals_t *cg = _cupsGlobals();        /* Global data */
@@ -1017,39 +1040,134 @@ _cupsAdminSetServerSettings(
   else
     return (0);
 
+ /*
+  * Get current settings...
+  */
+
+  if (!_cupsAdminGetServerSettings(http, &cupsd_num_settings,
+                                   &cupsd_settings))
+    return (0);
+
+  if ((val = cupsGetOption(CUPS_SERVER_DEBUG_LOGGING, cupsd_num_settings,
+                           cupsd_settings)) != NULL)
+    old_debug_logging = atoi(val);
+  else
+    old_debug_logging = 0;
+
+  if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ADMIN, cupsd_num_settings,
+                           cupsd_settings)) != NULL)
+    old_remote_admin = atoi(val);
+  else
+    old_remote_admin = 0;
+
+  if ((val = cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS, cupsd_num_settings,
+                           cupsd_settings)) != NULL)
+    old_remote_printers = atoi(val);
+  else
+    old_remote_printers = 1;
+
+  if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, cupsd_num_settings,
+                           cupsd_settings)) != NULL)
+    old_share_printers = atoi(val);
+  else
+    old_share_printers = 0;
+
+  if ((val = cupsGetOption(CUPS_SERVER_USER_CANCEL_ANY, cupsd_num_settings,
+                           cupsd_settings)) != NULL)
+    old_user_cancel_any = atoi(val);
+  else
+    old_user_cancel_any = 0;
+
+  cupsFreeOptions(cupsd_num_settings, cupsd_settings);
+
  /*
   * Get basic settings...
   */
 
   if ((val = cupsGetOption(CUPS_SERVER_DEBUG_LOGGING, num_settings,
                            settings)) != NULL)
+  {
     debug_logging = atoi(val);
+
+    if (debug_logging == old_debug_logging)
+    {
+     /*
+      * No change to this setting...
+      */
+
+      debug_logging = -1;
+    }
+  }
   else
-    debug_logging = 0;
+    debug_logging = -1;
 
   if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ADMIN, num_settings,
                            settings)) != NULL)
+  {
     remote_admin = atoi(val);
+
+    if (remote_admin == old_remote_admin)
+    {
+     /*
+      * No change to this setting...
+      */
+
+      remote_admin = -1;
+    }
+  }
   else
-    remote_admin = 0;
+    remote_admin = -1;
 
   if ((val = cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS, num_settings,
                            settings)) != NULL)
+  {
     remote_printers = atoi(val);
+
+    if (remote_printers == old_remote_printers)
+    {
+     /*
+      * No change to this setting...
+      */
+
+      remote_printers = -1;
+    }
+  }
   else
-    remote_printers = 1;
+    remote_printers = -1;
 
   if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, num_settings,
                            settings)) != NULL)
+  {
     share_printers = atoi(val);
+
+    if (share_printers == old_share_printers)
+    {
+     /*
+      * No change to this setting...
+      */
+
+      share_printers = -1;
+    }
+  }
   else
-    share_printers = 0;
+    share_printers = -1;
 
   if ((val = cupsGetOption(CUPS_SERVER_USER_CANCEL_ANY, num_settings,
                            settings)) != NULL)
+  {
     user_cancel_any = atoi(val);
+
+    if (user_cancel_any == old_user_cancel_any)
+    {
+     /*
+      * No change to this setting...
+      */
+
+      user_cancel_any = -1;
+    }
+  }
   else
-    user_cancel_any = 0;
+    user_cancel_any = -1;
 
  /*
   * Create a temporary file for the new cupsd.conf file...
@@ -1101,13 +1219,14 @@ _cupsAdminSetServerSettings(
 
   while (cupsFileGetConf(cupsd, line, sizeof(line), &value, &linenum))
   {
-    if (!strcasecmp(line, "Port") || !strcasecmp(line, "Listen"))
+    if ((!strcasecmp(line, "Port") || !strcasecmp(line, "Listen")) &&
+        (share_printers >= 0 || remote_admin >= 0))
     {
       if (!wrote_port_listen)
       {
         wrote_port_listen = 1;
 
-       if (share_printers || remote_admin)
+       if (share_printers > 0 || remote_admin > 0)
        {
          cupsFilePuts(temp, "# Allow remote access\n");
          cupsFilePrintf(temp, "Port %d\n", server_port);
@@ -1125,26 +1244,30 @@ _cupsAdminSetServerSettings(
           cupsFilePuts(temp, "Listen " CUPS_DEFAULT_DOMAINSOCKET "\n");
 #endif /* CUPS_DEFAULT_DOMAINSOCKET */
       }
-      else if (value && value[0] == '/' &&
-               strcmp(CUPS_DEFAULT_DOMAINSOCKET, value))
+      else if (value && value[0] == '/'
+#ifdef CUPS_DEFAULT_DOMAINSOCKET
+               && strcmp(CUPS_DEFAULT_DOMAINSOCKET, value)
+#endif /* CUPS_DEFAULT_DOMAINSOCKET */
+               )
         cupsFilePrintf(temp, "Listen %s\n", value);
     }
-    else if (!strcasecmp(line, "Browsing") ||
-             !strcasecmp(line, "BrowseAddress") ||
-             !strcasecmp(line, "BrowseAllow") ||
-             !strcasecmp(line, "BrowseDeny") ||
-             !strcasecmp(line, "BrowseOrder"))
+    else if ((!strcasecmp(line, "Browsing") ||
+              !strcasecmp(line, "BrowseAddress") ||
+              !strcasecmp(line, "BrowseAllow") ||
+              !strcasecmp(line, "BrowseDeny") ||
+              !strcasecmp(line, "BrowseOrder")) &&
+            (remote_printers >= 0 || share_printers >= 0))
     {
       if (!wrote_browsing)
       {
         wrote_browsing = 1;
 
-        if (remote_printers || share_printers)
+        if (remote_printers > 0 || share_printers > 0)
        {
-         if (remote_printers && share_printers)
+         if (remote_printers > 0 && share_printers > 0)
            cupsFilePuts(temp,
                         "# Enable printer sharing and shared printers.\n");
-         else if (remote_printers)
+         else if (remote_printers > 0)
            cupsFilePuts(temp,
                         "# Show shared printers on the local network.\n");
          else
@@ -1154,10 +1277,10 @@ _cupsAdminSetServerSettings(
          cupsFilePuts(temp, "Browsing On\n");
          cupsFilePuts(temp, "BrowseOrder allow,deny\n");
 
-         if (remote_printers)
+         if (remote_printers > 0)
            cupsFilePuts(temp, "BrowseAllow @LOCAL\n");
 
-         if (share_printers)
+         if (share_printers > 0)
            cupsFilePuts(temp, "BrowseAddress @LOCAL\n");
         }
        else
@@ -1168,7 +1291,7 @@ _cupsAdminSetServerSettings(
        }
       }
     }
-    else if (!strcasecmp(line, "LogLevel"))
+    else if (!strcasecmp(line, "LogLevel") && debug_logging >= 0)
     {
       wrote_loglevel = 1;
 
@@ -1231,13 +1354,13 @@ _cupsAdminSetServerSettings(
     {
       in_location = 0;
       indent -= 2;
-      if (in_admin_location)
+      if (in_admin_location && remote_admin >= 0)
       {
        wrote_admin_location = 1;
 
        if (remote_admin)
           cupsFilePuts(temp, "  # Allow remote administration...\n");
-       else
+       else if (remote_admin == 0)
           cupsFilePuts(temp, "  # Restrict access to the admin pages...\n");
 
         cupsFilePuts(temp, "  Order allow,deny\n");
@@ -1247,7 +1370,7 @@ _cupsAdminSetServerSettings(
        else
          cupsFilePuts(temp, "  Allow localhost\n");
       }
-      else if (in_conf_location)
+      else if (in_conf_location && remote_admin >= 0)
       {
        wrote_conf_location = 1;
 
@@ -1265,23 +1388,23 @@ _cupsAdminSetServerSettings(
        else
          cupsFilePuts(temp, "  Allow localhost\n");
       }
-      else if (in_root_location)
+      else if (in_root_location && (remote_admin >= 0 || share_printers >= 0))
       {
        wrote_root_location = 1;
 
-       if (remote_admin && share_printers)
+       if (remote_admin > 0 && share_printers > 0)
           cupsFilePuts(temp, "  # Allow shared printing and remote "
                             "administration...\n");
-       else if (remote_admin)
+       else if (remote_admin > 0)
           cupsFilePuts(temp, "  # Allow remote administration...\n");
-       else if (share_printers)
+       else if (share_printers > 0)
           cupsFilePuts(temp, "  # Allow shared printing...\n");
        else
           cupsFilePuts(temp, "  # Restrict access to the server...\n");
 
         cupsFilePuts(temp, "  Order allow,deny\n");
 
-       if (remote_admin || share_printers)
+       if (remote_admin > 0 || share_printers > 0)
          cupsFilePuts(temp, "  Allow @LOCAL\n");
        else
          cupsFilePuts(temp, "  Allow localhost\n");
@@ -1304,7 +1427,7 @@ _cupsAdminSetServerSettings(
 
       indent += 2;
 
-      if (!strcasecmp(value, "cancel-job"))
+      if (!strcasecmp(value, "cancel-job") && user_cancel_any >= 0)
       {
        /*
        * Don't write anything for this limit section...
@@ -1323,7 +1446,7 @@ _cupsAdminSetServerSettings(
          if (*valptr)
            *valptr++ = '\0';
 
-          if (!strcasecmp(value, "cancel-job"))
+          if (!strcasecmp(value, "cancel-job") && user_cancel_any >= 0)
          {
           /*
            * Write everything except for this definition...
@@ -1359,7 +1482,9 @@ _cupsAdminSetServerSettings(
 
       in_cancel_job = 0;
     }
-    else if ((in_admin_location || in_conf_location || in_root_location) &&
+    else if ((((in_admin_location || in_conf_location || in_root_location) &&
+               remote_admin >= 0) ||
+              (in_root_location && share_printers >= 0)) &&
              (!strcasecmp(line, "Allow") || !strcasecmp(line, "Deny") ||
              !strcasecmp(line, "Order")))
       continue;
@@ -1424,13 +1549,13 @@ _cupsAdminSetServerSettings(
   * Write any missing info...
   */
 
-  if (!wrote_browsing)
+  if (!wrote_browsing && (remote_printers >= 0 || share_printers >= 0))
   {
-    if (remote_printers || share_printers)
+    if (remote_printers > 0 || share_printers > 0)
     {
-      if (remote_printers && share_printers)
+      if (remote_printers > 0 && share_printers > 0)
        cupsFilePuts(temp, "# Enable printer sharing and shared printers.\n");
-      else if (remote_printers)
+      else if (remote_printers > 0)
        cupsFilePuts(temp, "# Show shared printers on the local network.\n");
       else
        cupsFilePuts(temp, "# Share local printers on the local network.\n");
@@ -1438,10 +1563,10 @@ _cupsAdminSetServerSettings(
       cupsFilePuts(temp, "Browsing On\n");
       cupsFilePuts(temp, "BrowseOrder allow,deny\n");
 
-      if (remote_printers)
+      if (remote_printers > 0)
        cupsFilePuts(temp, "BrowseAllow @LOCAL\n");
 
-      if (share_printers)
+      if (share_printers > 0)
        cupsFilePuts(temp, "BrowseAddress @LOCAL\n");
     }
     else
@@ -1451,7 +1576,7 @@ _cupsAdminSetServerSettings(
     }
   }
 
-  if (!wrote_loglevel)
+  if (!wrote_loglevel && debug_logging >= 0)
   {
     if (debug_logging)
     {
@@ -1465,9 +1590,9 @@ _cupsAdminSetServerSettings(
     }
   }
 
-  if (!wrote_port_listen)
+  if (!wrote_port_listen && (share_printers >= 0 || remote_admin >= 0))
   {
-    if (share_printers || remote_admin)
+    if (share_printers > 0 || remote_admin > 0)
     {
       cupsFilePuts(temp, "# Allow remote access\n");
       cupsFilePrintf(temp, "Port %d\n", ippPort());
@@ -1485,14 +1610,14 @@ _cupsAdminSetServerSettings(
 #endif /* CUPS_DEFAULT_DOMAINSOCKET */
   }
 
-  if (!wrote_root_location)
+  if (!wrote_root_location && (remote_admin >= 0 || share_printers >= 0))
   {
-    if (remote_admin && share_printers)
+    if (remote_admin > 0 && share_printers > 0)
       cupsFilePuts(temp,
                    "# Allow shared printing and remote administration...\n");
-    else if (remote_admin)
+    else if (remote_admin > 0)
       cupsFilePuts(temp, "# Allow remote administration...\n");
-    else if (share_printers)
+    else if (share_printers > 0)
       cupsFilePuts(temp, "# Allow shared printing...\n");
     else
       cupsFilePuts(temp, "# Restrict access to the server...\n");
@@ -1500,7 +1625,7 @@ _cupsAdminSetServerSettings(
     cupsFilePuts(temp, "<Location />\n"
                        "  Order allow,deny\n");
 
-    if (remote_admin || share_printers)
+    if (remote_admin > 0 || share_printers > 0)
       cupsFilePuts(temp, "  Allow @LOCAL\n");
     else
       cupsFilePuts(temp, "  Allow localhost\n");
@@ -1508,7 +1633,7 @@ _cupsAdminSetServerSettings(
     cupsFilePuts(temp, "</Location>\n");
   }
 
-  if (!wrote_admin_location)
+  if (!wrote_admin_location && remote_admin >= 0)
   {
     if (remote_admin)
       cupsFilePuts(temp, "# Allow remote administration...\n");
@@ -1526,7 +1651,7 @@ _cupsAdminSetServerSettings(
     cupsFilePuts(temp, "</Location>\n");
   }
 
-  if (!wrote_conf_location)
+  if (!wrote_conf_location && remote_admin >= 0)
   {
     if (remote_admin)
       cupsFilePuts(temp,
@@ -1547,7 +1672,7 @@ _cupsAdminSetServerSettings(
     cupsFilePuts(temp, "</Location>\n");
   }
 
-  if (!wrote_policy)
+  if (!wrote_policy && user_cancel_any >= 0)
   {
     cupsFilePuts(temp, "<Policy default>\n"
                        "  # Job-related operations must be done by the owner "
@@ -1626,21 +1751,50 @@ _cupsAdminSetServerSettings(
     * Updated OK, add the basic settings...
     */
 
-    cupsd_num_settings = cupsAddOption(CUPS_SERVER_DEBUG_LOGGING,
-                                       debug_logging ? "1" : "0",
-                                      cupsd_num_settings, &cupsd_settings);
-    cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ADMIN,
-                                       remote_admin ? "1" : "0",
-                                      cupsd_num_settings, &cupsd_settings);
-    cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
-                                       remote_printers ? "1" : "0",
-                                      cupsd_num_settings, &cupsd_settings);
-    cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
-                                       share_printers ? "1" : "0",
-                                      cupsd_num_settings, &cupsd_settings);
-    cupsd_num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY,
-                                       user_cancel_any ? "1" : "0",
-                                      cupsd_num_settings, &cupsd_settings);
+    if (debug_logging >= 0)
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_DEBUG_LOGGING,
+                                        debug_logging ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+    else
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_DEBUG_LOGGING,
+                                        old_debug_logging ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+
+    if (remote_admin >= 0)
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ADMIN,
+                                        remote_admin ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+    else
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ADMIN,
+                                        old_remote_admin ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+
+    if (remote_printers >= 0)
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
+                                        remote_printers ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+    else
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
+                                        old_remote_printers ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+
+    if (share_printers >= 0)
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
+                                        share_printers ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+    else
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
+                                        old_share_printers ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+
+    if (user_cancel_any >= 0)
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY,
+                                        user_cancel_any ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+    else
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY,
+                                        old_user_cancel_any ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
 
    /*
     * Save the new values...
@@ -1681,6 +1835,10 @@ do_samba_command(const char *command,    /* I - Command to run */
                 const char *authfile,  /* I - Samba authentication file */
                 FILE *logfile)         /* I - Optional log file */
 {
+#ifdef WIN32
+  return (1);                          /* Always fail on Windows... */
+
+#else
   int          status;                 /* Status of command */
   int          pid;                    /* Process ID of child */
 
@@ -1739,6 +1897,7 @@ do_samba_command(const char *command,     /* I - Command to run */
     return (WEXITSTATUS(status));
   else
     return (-WTERMSIG(status));
+#endif /* WIN32 */
 }
 
 
@@ -1756,7 +1915,9 @@ get_cupsd_conf(
     int             *remote)           /* O - Remote file? */
 {
   int          fd;                     /* Temporary file descriptor */
+#ifndef WIN32
   struct stat  info;                   /* cupsd.conf file information */
+#endif /* WIN32 */
   http_status_t        status;                 /* Status of getting cupsd.conf */
   char         host[HTTP_MAX_HOST];    /* Hostname for connection */
 
@@ -1773,6 +1934,7 @@ get_cupsd_conf(
   snprintf(name, namesize, "%s/cupsd.conf", cg->cups_serverroot);
   *remote = 0;
 
+#ifndef WIN32
   if (!strcasecmp(host, "localhost") && !access(name, R_OK))
   {
    /*
@@ -1799,6 +1961,7 @@ get_cupsd_conf(
       status = HTTP_OK;
   }
   else
+#endif /* !WIN32 */
   {
    /*
     * Read cupsd.conf via a HTTP GET request...
@@ -1965,5 +2128,5 @@ write_option(cups_file_t     *dstfp,      /* I - PPD file */
 
 
 /*
- * End of "$Id: adminutil.c 5970 2006-09-19 20:11:08Z mike $".
+ * End of "$Id: adminutil.c 6262 2007-02-11 16:59:33Z mike $".
  */
index 4c7318ce7d500521e2d5236d856091cfc588e689..fc87d2ba5b547b495bbd2019e2ac6a439cd01284 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: auth.c 5961 2006-09-16 19:08:36Z mike $"
+ * "$Id: auth.c 6191 2007-01-10 16:48:37Z mike $"
  *
  *   Authentication functions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -75,6 +75,7 @@ cupsDoAuthentication(http_t     *http,        /* I - HTTP connection to server */
                realm[HTTP_MAX_VALUE],  /* realm="xyz" string */
                nonce[HTTP_MAX_VALUE],  /* nonce="xyz" string */
                encode[512];            /* Encoded username:password */
+  _cups_globals_t *cg;                 /* Global data */
 
 
   DEBUG_printf(("cupsDoAuthentication(http=%p, method=\"%s\", resource=\"%s\")\n",
@@ -114,8 +115,15 @@ 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[0] == '/' ? "localhost" : http->hostname);
+    cg = _cupsGlobals();
+
+    if (!cg->lang_default)
+      cg->lang_default = cupsLangDefault();
+
+    snprintf(prompt, sizeof(prompt),
+             _cupsLangString(cg->lang_default, _("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;
@@ -144,7 +152,7 @@ cupsDoAuthentication(http_t     *http,      /* I - HTTP connection to server */
     */
 
     httpEncode64_2(encode, sizeof(encode), http->userpass,
-                   strlen(http->userpass));
+                   (int)strlen(http->userpass));
     snprintf(http->authstring, sizeof(http->authstring), "Basic %s", encode);
   }
   else
@@ -251,5 +259,5 @@ cups_local_auth(http_t *http)               /* I - HTTP connection to server */
 
 
 /*
- * End of "$Id: auth.c 5961 2006-09-16 19:08:36Z mike $".
+ * End of "$Id: auth.c 6191 2007-01-10 16:48:37Z mike $".
  */
index 09833fe46a238ed4726011fc6cade5bf287971d5..2164ed7503ba431b51e83f32a3e60cac573d7d6f 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: backchannel.c 5551 2006-05-19 20:20:32Z mike $"
+ * "$Id: backchannel.c 6191 2007-01-10 16:48:37Z mike $"
  *
  *   Backchannel functions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -95,7 +95,11 @@ cupsBackChannelRead(char   *buffer,  /* I - Buffer to read */
   * Read bytes from the pipe...
   */
 
+#ifdef WIN32
+  return ((ssize_t)read(3, buffer, (unsigned)bytes));
+#else
   return (read(3, buffer, bytes));
+#endif /* WIN32 */
 }
 
 
@@ -153,7 +157,11 @@ cupsBackChannelWrite(
     * Write bytes to the pipe...
     */
 
+#ifdef WIN32
+    count = (ssize_t)write(3, buffer, (unsigned)(bytes - total));
+#else
     count = write(3, buffer, bytes - total);
+#endif /* WIN32 */
 
     if (count < 0)
     {
@@ -175,7 +183,7 @@ cupsBackChannelWrite(
     }
   }
 
-  return (bytes);
+  return ((ssize_t)bytes);
 }
 
 
@@ -197,5 +205,5 @@ cups_setup(fd_set         *set,             /* I - Set for select() */
 
 
 /*
- * End of "$Id: backchannel.c 5551 2006-05-19 20:20:32Z mike $".
+ * End of "$Id: backchannel.c 6191 2007-01-10 16:48:37Z mike $".
  */
index 9ae3662989b1d75d6fb98f842684fd90f243cda8..96fe9afba25575b83a7089e0907b35d3b6468bc7 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: cups.h 6092 2006-11-14 16:36:36Z mike $"
+ * "$Id: cups.h 6188 2007-01-10 16:23:06Z mike $"
  *
  *   API definitions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
  * Include necessary headers...
  */
 
+#  include <sys/types.h>
+#  if defined(WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
+#    define __CUPS_SSIZE_T_DEFINED
+/* Windows does not support the ssize_t type, so map it to off_t... */
+typedef off_t ssize_t;                 /* @private@ */
+#  endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
+
 #  include "ipp.h"
 #  include "ppd.h"
 #  include "language.h"
@@ -61,10 +68,10 @@ extern "C" {
  * Constants...
  */
 
-#  define CUPS_VERSION         1.0207
+#  define CUPS_VERSION         1.0208
 #  define CUPS_VERSION_MAJOR   1
 #  define CUPS_VERSION_MINOR   2
-#  define CUPS_VERSION_PATCH   7
+#  define CUPS_VERSION_PATCH   8
 #  define CUPS_DATE_ANY                -1
 
 
@@ -244,5 +251,5 @@ extern cups_file_t  *cupsTempFile2(char *filename, int len);
 #endif /* !_CUPS_CUPS_H_ */
 
 /*
- * End of "$Id: cups.h 6092 2006-11-14 16:36:36Z mike $".
+ * End of "$Id: cups.h 6188 2007-01-10 16:23:06Z mike $".
  */
index 289456370b0c2587ce42a82d7106ddf2cdff2c21..f94aaaff54c32689f3c6ee210479e6ae1b226e84 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * "$Id: dest.c 6044 2006-10-17 20:32:59Z mike $"
+ * "$Id: dest.c 6191 2007-01-10 16:48:37Z mike $"
  *
  *   User-defined destination (and option) support for the Common UNIX
  *   Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -500,7 +500,9 @@ cupsSetDests2(http_t      *http,    /* I - HTTP connection */
   cups_option_t        *option;                /* Current option */
   _ipp_option_t        *match;                 /* Matching attribute for option */
   FILE         *fp;                    /* File pointer */
+#ifndef WIN32
   const char   *home;                  /* HOME environment variable */
+#endif /* WIN32 */
   char         filename[1024];         /* lpoptions file */
   int          num_temps;              /* Number of temporary destinations */
   cups_dest_t  *temps,                 /* Temporary destinations */
@@ -1083,5 +1085,5 @@ cups_get_sdests(http_t      *http,        /* I - HTTP connection */
 
 
 /*
- * End of "$Id: dest.c 6044 2006-10-17 20:32:59Z mike $".
+ * End of "$Id: dest.c 6191 2007-01-10 16:48:37Z mike $".
  */
index c62cbf6ab924fc1c50230e3a8364f5eed4ef56f0..08ad831787f0338e11e2c2a39ea2faa3fb2b9119 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: emit.c 5934 2006-09-11 14:54:40Z mike $"
+ * "$Id: emit.c 6191 2007-01-10 16:48:37Z mike $"
  *
  *   PPD code emission routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -291,7 +291,11 @@ ppdEmitFd(ppd_file_t    *ppd,              /* I - PPD file record */
 
     while (buflength > 0)
     {
+#ifdef WIN32
+      if ((bytes = (ssize_t)write(fd, bufptr, (unsigned)buflength)) < 0)
+#else
       if ((bytes = write(fd, bufptr, buflength)) < 0)
+#endif /* WIN32 */
       {
         if (errno == EAGAIN || errno == EINTR)
          continue;
@@ -725,7 +729,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
        else
          pos = 4;
 
-       values[pos] = orientation;
+       values[pos] = (float)orientation;
 
         for (pos = 0; pos < 5; pos ++)
        {
@@ -811,7 +815,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
 
       if (choices[i]->code && choices[i]->code[0])
       {
-        j = strlen(choices[i]->code);
+        j = (int)strlen(choices[i]->code);
        memcpy(bufptr, choices[i]->code, j);
        bufptr += j;
 
@@ -942,5 +946,5 @@ ppd_sort(ppd_choice_t **c1, /* I - First choice */
 
 
 /*
- * End of "$Id: emit.c 5934 2006-09-11 14:54:40Z mike $".
+ * End of "$Id: emit.c 6191 2007-01-10 16:48:37Z mike $".
  */
index b3cc288314963dad36f13fa4db5245ec69b8d294..b691e8656b84aac046ae34ed8035683b22a4124d 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: encode.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: encode.c 6266 2007-02-11 21:20:48Z mike $"
  *
  *   Option encoding routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -82,7 +82,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-lease-time",       IPP_TAG_INTEGER,        IPP_TAG_SUBSCRIPTION },
+  { "notify-lease-duration",   IPP_TAG_INTEGER,        IPP_TAG_SUBSCRIPTION },
   { "notify-natural-language", IPP_TAG_LANGUAGE,       IPP_TAG_SUBSCRIPTION },
   { "notify-pull-method",      IPP_TAG_KEYWORD,        IPP_TAG_SUBSCRIPTION },
   { "notify-recipient",                IPP_TAG_URI,            IPP_TAG_SUBSCRIPTION },
@@ -265,7 +265,7 @@ cupsEncodeOptions2(
       int      namelen;                /* Length of name */
 
 
-      namelen = strlen(option->name);
+      namelen = (int)strlen(option->name);
 
       if (namelen < 9 || strcmp(option->name + namelen - 8, "-default"))
       {
@@ -500,7 +500,7 @@ cupsEncodeOptions2(
            * octet-string
            */
 
-            attr->values[j].unknown.length = strlen(val);
+            attr->values[j].unknown.length = (int)strlen(val);
            attr->values[j].unknown.data   = _cupsStrAlloc(val);
 
             DEBUG_printf(("cupsEncodeOptions2: Added octet-string value \"%s\"...\n",
@@ -567,5 +567,5 @@ compare_ipp_options(_ipp_option_t *a,       /* I - First option */
 
 
 /*
- * End of "$Id: encode.c 5753 2006-07-18 19:53:24Z mike $".
+ * End of "$Id: encode.c 6266 2007-02-11 21:20:48Z mike $".
  */
index f4bbf34e03fece84b86c17540efba2cbf6094035..b2a831157ab68dfe5eab478978b25921597a9a51 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: file.c 5993 2006-09-29 12:57:31Z mike $"
+ * "$Id: file.c 6193 2007-01-10 19:27:04Z mike $"
  *
  *   File functions for the Common UNIX Printing System (CUPS).
  *
@@ -8,7 +8,7 @@
  *   our own file functions allows us to provide transparent support of
  *   gzip'd print files, PPD files, etc.
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
 #endif /* !O_LARGEFILE */
 
 
+/*
+ * Some operating systems don't define O_BINARY, which is used by Microsoft
+ * and IBM to flag binary files...
+ */
+
+#ifndef O_BINARY
+#  define O_BINARY 0
+#endif /* !O_BINARY */
+
+
 /*
  * Types and structures...
  */
@@ -332,7 +342,11 @@ cupsFileFind(const char *filename, /* I - File to find */
 
   while (*path)
   {
+#ifdef WIN32
+    if (*path == ';' || (*path == ':' && ((bufptr - buffer) > 1 || !isalpha(buffer[0] & 255))))
+#else
     if (*path == ';' || *path == ':')
+#endif /* WIN32 */
     {
       if (bufptr > buffer && bufptr[-1] != '/' && bufptr < bufend)
         *bufptr++ = '/';
@@ -344,7 +358,10 @@ cupsFileFind(const char *filename, /* I - File to find */
 #else
       if (!access(buffer, executable ? X_OK : 0))
 #endif /* WIN32 */
+      {
+        DEBUG_printf(("cupsFileFind: Returning \"%s\"\n", buffer));
         return (buffer);
+      }
 
       bufptr = buffer;
     }
@@ -364,9 +381,15 @@ cupsFileFind(const char *filename, /* I - File to find */
   strlcpy(bufptr, filename, bufend - bufptr);
 
   if (!access(buffer, 0))
+  {
+    DEBUG_printf(("cupsFileFind: Returning \"%s\"\n", buffer));
     return (buffer);
+  }
   else
+  {
+    DEBUG_puts("cupsFileFind: Returning NULL");
     return (NULL);
+  }
 }
 
 
@@ -392,7 +415,7 @@ cupsFileFlush(cups_file_t *fp)              /* I - CUPS file */
     return (-1);
   }
 
-  bytes = fp->ptr - fp->buf;
+  bytes = (ssize_t)(fp->ptr - fp->buf);
 
   DEBUG_printf(("    Flushing %ld bytes...\n", (long)bytes));
 
@@ -427,7 +450,10 @@ cupsFileGetChar(cups_file_t *fp)   /* I - CUPS file */
   */
 
   if (!fp || (fp->mode != 'r' && fp->mode != 's'))
+  {
+    DEBUG_puts("cupsFileGetChar: Bad arguments!");
     return (-1);
+  }
 
  /*
   * If the input buffer is empty, try to read more data...
@@ -435,12 +461,17 @@ cupsFileGetChar(cups_file_t *fp)  /* I - CUPS file */
 
   if (fp->ptr >= fp->end)
     if (cups_fill(fp) < 0)
+    {
+      DEBUG_puts("cupsFileGetChar: Unable to fill buffer!");
       return (-1);
+    }
 
  /*
   * Return the next character in the buffer...
   */
 
+  DEBUG_printf(("cupsFileGetChar: Returning %d...\n", *(fp->ptr) & 255));
+
   return (*(fp->ptr)++ & 255);
 }
 
@@ -780,15 +811,15 @@ cupsFileOpen(const char *filename,        /* I - Name of file */
   switch (*mode)
   {
     case 'a' : /* Append file */
-        fd = open(filename, O_RDWR | O_CREAT | O_APPEND | O_LARGEFILE, 0666);
+        fd = open(filename, O_RDWR | O_CREAT | O_APPEND | O_LARGEFILE | O_BINARY, 0666);
         break;
 
     case 'r' : /* Read file */
-       fd = open(filename, O_RDONLY | O_LARGEFILE, 0);
+       fd = open(filename, O_RDONLY | O_LARGEFILE | O_BINARY, 0);
        break;
 
     case 'w' : /* Write file */
-        fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT | O_LARGEFILE, 0666);
+        fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT | O_LARGEFILE | O_BINARY, 0666);
         break;
 
     case 's' : /* Read/write socket */
@@ -1104,7 +1135,7 @@ cupsFilePuts(cups_file_t *fp,             /* I - CUPS file */
   * Write the string...
   */
 
-  bytes = strlen(s);
+  bytes = (int)strlen(s);
 
   if (fp->mode == 's')
   {
@@ -1179,14 +1210,14 @@ cupsFileRead(cups_file_t *fp,           /* I - CUPS file */
         DEBUG_printf(("    cups_fill() returned -1, total=%d\n", total));
 
         if (total > 0)
-          return (total);
+          return ((ssize_t)total);
        else
          return (-1);
       }
 
-    count = fp->end - fp->ptr;
-    if (count > bytes)
-      count = bytes;
+    count = (ssize_t)(fp->end - fp->ptr);
+    if (count > (ssize_t)bytes)
+      count = (ssize_t)bytes;
 
     memcpy(buf, fp->ptr, count);
     fp->ptr += count;
@@ -1206,7 +1237,7 @@ cupsFileRead(cups_file_t *fp,             /* I - CUPS file */
 
   DEBUG_printf(("    total=%d\n", total));
 
-  return (total);
+  return ((ssize_t)total);
 }
 
 
@@ -1328,7 +1359,7 @@ cupsFileSeek(cups_file_t *fp,             /* I - CUPS file */
   */
 
   if (fp->ptr)
-    bytes = fp->end - fp->buf;
+    bytes = (ssize_t)(fp->end - fp->buf);
   else
     bytes = 0;
 
@@ -1582,16 +1613,16 @@ cupsFileWrite(cups_file_t *fp,          /* I - CUPS file */
     if (cups_write(fp, buf, bytes) < 0)
       return (-1);
 
-    fp->pos += bytes;
+    fp->pos += (off_t)bytes;
 
-    return (bytes);
+    return ((ssize_t)bytes);
   }
 
   if ((fp->ptr + bytes) > fp->end)
     if (cupsFileFlush(fp))
       return (-1);
 
-  fp->pos += bytes;
+  fp->pos += (off_t)bytes;
 
   if (bytes > sizeof(fp->buf))
   {
@@ -1606,7 +1637,7 @@ cupsFileWrite(cups_file_t *fp,            /* I - CUPS file */
   {
     memcpy(fp->ptr, buf, bytes);
     fp->ptr += bytes;
-    return (bytes);
+    return ((ssize_t)bytes);
   }
 }
 
@@ -1687,7 +1718,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
   */
 
   if (fp->ptr && fp->end)
-    fp->pos += fp->end - fp->buf;
+    fp->pos += (off_t)(fp->end - fp->buf);
 
 #ifdef HAVE_LIBZ
   DEBUG_printf(("    fp->compressed=%d\n", fp->compressed));
@@ -1995,10 +2026,17 @@ cups_read(cups_file_t *fp,              /* I - CUPS file */
 
   for (;;)
   {
+#ifdef WIN32
+    if (fp->mode == 's')
+      total = (ssize_t)recv(fp->fd, buf, (unsigned)bytes, 0);
+    else
+      total = (ssize_t)read(fp->fd, buf, (unsigned)bytes);
+#else
     if (fp->mode == 's')
       total = recv(fp->fd, buf, bytes, 0);
     else
       total = read(fp->fd, buf, bytes);
+#endif /* WIN32 */
 
     if (total >= 0)
       break;
@@ -2044,10 +2082,17 @@ cups_write(cups_file_t *fp,             /* I - CUPS file */
   total = 0;
   while (bytes > 0)
   {
+#ifdef WIN32
+    if (fp->mode == 's')
+      count = (ssize_t)send(fp->fd, buf, (unsigned)bytes, 0);
+    else
+      count = (ssize_t)write(fp->fd, buf, (unsigned)bytes);
+#else
     if (fp->mode == 's')
       count = send(fp->fd, buf, bytes, 0);
     else
       count = write(fp->fd, buf, bytes);
+#endif /* WIN32 */
 
     if (count < 0)
     {
@@ -2076,10 +2121,10 @@ cups_write(cups_file_t *fp,             /* I - CUPS file */
   * Return the total number of bytes written...
   */
 
-  return (total);
+  return ((ssize_t)total);
 }
 
 
 /*
- * End of "$Id: file.c 5993 2006-09-29 12:57:31Z mike $".
+ * End of "$Id: file.c 6193 2007-01-10 19:27:04Z mike $".
  */
index b36aa0577cfb945a25a410e005851e3486bf655c..fd9eca7318c2a7a3f9a51905282dfb4d81123cc9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: file.h 5769 2006-07-20 17:17:14Z mike $"
+ * "$Id: file.h 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Public file definitions for the Common UNIX Printing System (CUPS).
  *
@@ -8,7 +8,7 @@
  *   our own file functions allows us to provide transparent support of
  *   gzip'd print files, PPD files, etc.
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
  */
 
 #  include <sys/types.h>
-
-#  ifdef WIN32
+#  if defined(WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
+#    define __CUPS_SSIZE_T_DEFINED
 /* Windows does not support the ssize_t type, so map it to off_t... */
 typedef off_t ssize_t;                 /* @private@ */
-#  endif /* WIN32 */
+#  endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
 
 
 /*
@@ -109,5 +109,5 @@ extern ssize_t              cupsFileWrite(cups_file_t *fp, const char *buf, size_t bytes);
 #endif /* !_CUPS_FILE_H_ */
 
 /*
- * End of "$Id: file.h 5769 2006-07-20 17:17:14Z mike $".
+ * End of "$Id: file.h 6188 2007-01-10 16:23:06Z mike $".
  */
index 6700e567da45cb01d2b2a7c12d333884f46799f2..4e369d30c320c830904c333f788b96e7d3ece1e6 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http-addrlist.c 5679 2006-06-20 14:45:15Z mike $"
+ * "$Id: http-addrlist.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   HTTP address list routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -62,7 +62,7 @@ httpAddrConnect(
     * Create the socket...
     */
 
-    if ((*sock = socket(addrlist->addr.addr.sa_family, SOCK_STREAM, 0)) < 0)
+    if ((*sock = (int)socket(addrlist->addr.addr.sa_family, SOCK_STREAM, 0)) < 0)
     {
      /*
       * Don't abort yet, as this could just be an issue with the local
@@ -248,7 +248,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
        */
 
        strlcpy(ipv6, hostname + 4, sizeof(ipv6));
-       if ((ipv6len = strlen(ipv6) - 1) >= 0 && ipv6[ipv6len] == ']')
+       if ((ipv6len = (int)strlen(ipv6) - 1) >= 0 && ipv6[ipv6len] == ']')
        {
           ipv6[ipv6len] = '\0';
          hostname      = ipv6;
@@ -268,7 +268,7 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
        */
 
        strlcpy(ipv6, hostname + 1, sizeof(ipv6));
-       if ((ipv6len = strlen(ipv6) - 1) >= 0 && ipv6[ipv6len] == ']')
+       if ((ipv6len = (int)strlen(ipv6) - 1) >= 0 && ipv6[ipv6len] == ']')
        {
           ipv6[ipv6len] = '\0';
          hostname      = ipv6;
@@ -605,5 +605,5 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
 
 
 /*
- * End of "$Id: http-addrlist.c 5679 2006-06-20 14:45:15Z mike $".
+ * End of "$Id: http-addrlist.c 6188 2007-01-10 16:23:06Z mike $".
  */
index d5b030d280c60fb6650bdb359d32b5e552e45188..3e405d58594a960bf25f1f9e69805a885e260aab 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http-private.h 6111 2006-11-15 20:28:39Z mike $"
+ * "$Id: http-private.h 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Private HTTP definitions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -138,21 +138,22 @@ extern const char *hstrerror(int error);
  * Some OS's don't have getifaddrs() and freeifaddrs()...
  */
 
-#  include <net/if.h>
-#  ifdef HAVE_GETIFADDRS
-#    include <ifaddrs.h>
-#  else
-#    include <sys/ioctl.h>
-#    ifdef HAVE_SYS_SOCKIO_H
-#      include <sys/sockio.h>
-#    endif /* HAVE_SYS_SOCKIO_H */
-
-#  ifdef ifa_dstaddr
-#    undef ifa_dstaddr
-#  endif /* ifa_dstaddr */
-#  ifndef ifr_netmask
-#    define ifr_netmask ifr_addr
-#  endif /* !ifr_netmask */
+#  ifndef WIN32
+#    include <net/if.h>
+#    ifdef HAVE_GETIFADDRS
+#      include <ifaddrs.h>
+#    else
+#      include <sys/ioctl.h>
+#      ifdef HAVE_SYS_SOCKIO_H
+#        include <sys/sockio.h>
+#      endif /* HAVE_SYS_SOCKIO_H */
+
+#      ifdef ifa_dstaddr
+#        undef ifa_dstaddr
+#      endif /* ifa_dstaddr */
+#      ifndef ifr_netmask
+#        define ifr_netmask ifr_addr
+#      endif /* !ifr_netmask */
 
 struct ifaddrs                         /**** Interface Structure ****/
 {
@@ -170,21 +171,22 @@ struct ifaddrs                            /**** Interface Structure ****/
   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 */
+#      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
+#      define getifaddrs _cups_getifaddrs
 extern void    _cups_freeifaddrs(struct ifaddrs *addrs);
-#    define freeifaddrs _cups_freeifaddrs
-#  endif /* HAVE_GETIFADDRS */
+#      define freeifaddrs _cups_freeifaddrs
+#    endif /* HAVE_GETIFADDRS */
+#  endif /* !WIN32 */
 
 #endif /* !_CUPS_HTTP_PRIVATE_H_ */
 
 /*
- * End of "$Id: http-private.h 6111 2006-11-15 20:28:39Z mike $".
+ * End of "$Id: http-private.h 6188 2007-01-10 16:23:06Z mike $".
  */
index b4fec03dadc46cb7d95867f0ad98de85789bd4ef..7214d08cd7a67f3a8f24d9f47077fc9c58615e9e 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http-support.c 6061 2006-10-23 00:26:52Z mike $"
+ * "$Id: http-support.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   HTTP support routines for the Common UNIX Printing System (CUPS) scheduler.
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -549,7 +549,7 @@ char *                                      /* O - Encoded string */
 httpEncode64(char       *out,          /* I - String to write to */
              const char *in)           /* I - String to read from */
 {
-  return (httpEncode64_2(out, 512, in, strlen(in)));
+  return (httpEncode64_2(out, 512, in, (int)strlen(in)));
 }
 
 
@@ -1112,7 +1112,7 @@ httpSeparateURI(
 
       char *resptr = resource + strlen(resource);
 
-      uri = http_copy_decode(resptr, uri, resourcelen - (resptr - resource),
+      uri = http_copy_decode(resptr, uri, resourcelen - (int)(resptr - resource),
                              NULL, decoding & HTTP_URI_CODING_QUERY);
     }
   }
@@ -1327,5 +1327,5 @@ http_copy_encode(char       *dst, /* O - Destination buffer */
 
 
 /*
- * End of "$Id: http-support.c 6061 2006-10-23 00:26:52Z mike $".
+ * End of "$Id: http-support.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 3e0fef0eddec16343c21fd2c01690d44790ffe12..7449596df71f1341d5aa9fcc55ca065852869359 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http.c 6111 2006-11-15 20:28:39Z mike $"
+ * "$Id: http.c 6191 2007-01-10 16:48:37Z mike $"
  *
  *   HTTP routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -694,8 +694,18 @@ httpGetLength2(http_t *http)               /* I - HTTP connection */
     * after the transfer is complete...
     */
 
-    if (http->fields[HTTP_FIELD_CONTENT_LENGTH][0] == '\0')
-      http->data_remaining = 2147483647;
+    if (!http->fields[HTTP_FIELD_CONTENT_LENGTH][0])
+    {
+     /*
+      * Default content length is 0 for errors and 2^31-1 for other
+      * successful requests...
+      */
+
+      if (http->status >= HTTP_MULTIPLE_CHOICES)
+        http->data_remaining = 0;
+      else
+        http->data_remaining = 2147483647;
+    }
     else
       http->data_remaining = strtoll(http->fields[HTTP_FIELD_CONTENT_LENGTH],
                                      NULL, 10);
@@ -920,7 +930,11 @@ httpGets(char   *line,                     /* I - Line to read into */
       if (!http->blocking && !http_wait(http, 10000, 1))
       {
         DEBUG_puts("httpGets: Timed out!");
+#ifdef WIN32
+        http->error = WSAETIMEDOUT;
+#else
         http->error = ETIMEDOUT;
+#endif /* WIN32 */
         return (NULL);
       }
 
@@ -996,7 +1010,7 @@ httpGets(char   *line,                     /* I - Line to read into */
        *lineptr++ = *bufptr++;
     }
 
-    http->used -= bufptr - http->buffer;
+    http->used -= (int)(bufptr - http->buffer);
     if (http->used > 0)
       memmove(http->buffer, bufptr, http->used);
 
@@ -1269,8 +1283,8 @@ httpRead2(http_t *http,                   /* I - HTTP connection */
 
     return (0);
   }
-  else if (length > http->data_remaining)
-    length = http->data_remaining;
+  else if (length > (size_t)http->data_remaining)
+    length = (size_t)http->data_remaining;
 
   if (http->used == 0 && length <= 256)
   {
@@ -1325,15 +1339,15 @@ httpRead2(http_t *http,                 /* I - HTTP connection */
 
   if (http->used > 0)
   {
-    if (length > http->used)
-      length = http->used;
+    if (length > (size_t)http->used)
+      length = (size_t)http->used;
 
-    bytes = length;
+    bytes = (ssize_t)length;
 
     DEBUG_printf(("httpRead2: grabbing %d bytes from input buffer...\n", bytes));
 
     memcpy(buffer, http->buffer, length);
-    http->used -= length;
+    http->used -= (int)length;
 
     if (http->used > 0)
       memmove(http->buffer, http->buffer + length, http->used);
@@ -1344,7 +1358,7 @@ httpRead2(http_t *http,                   /* I - HTTP connection */
     if (!http->blocking && !httpWait(http, 10000))
       return (0);
 
-    bytes = http_read_ssl(http, buffer, length);
+    bytes = (ssize_t)http_read_ssl(http, buffer, (int)length);
   }
 #endif /* HAVE_SSL */
   else
@@ -1354,9 +1368,13 @@ httpRead2(http_t *http,                  /* I - HTTP connection */
 
     DEBUG_printf(("httpRead2: reading %d bytes from socket...\n", length));
 
+#ifdef WIN32
+    bytes = (ssize_t)recv(http->fd, buffer, (int)length, 0);
+#else
     while ((bytes = recv(http->fd, buffer, length, 0)) < 0)
       if (errno != EINTR)
         break;
+#endif /* WIN32 */
 
     DEBUG_printf(("httpRead2: read %d bytes from socket...\n", bytes));
   }
@@ -2004,8 +2022,8 @@ httpWrite2(http_t     *http,              /* I - HTTP connection */
       DEBUG_printf(("    copying %d bytes to wbuffer...\n", length));
 
       memcpy(http->wbuffer + http->wused, buffer, length);
-      http->wused += length;
-      bytes = length;
+      http->wused += (int)length;
+      bytes = (ssize_t)length;
     }
     else
     {
@@ -2016,9 +2034,9 @@ httpWrite2(http_t     *http,              /* I - HTTP connection */
       DEBUG_printf(("    writing %d bytes to socket...\n", length));
 
       if (http->data_encoding == HTTP_ENCODE_CHUNKED)
-       bytes = http_write_chunk(http, buffer, length);
+       bytes = (ssize_t)http_write_chunk(http, buffer, (int)length);
       else
-       bytes = http_write(http, buffer, length);
+       bytes = (ssize_t)http_write(http, buffer, (int)length);
 
       DEBUG_printf(("    wrote %d bytes...\n", bytes));
     }
@@ -2226,7 +2244,11 @@ static int                               /* O - Bytes written */
 http_bio_puts(BIO        *h,           /* I - BIO data */
               const char *str)         /* I - String to write */
 {
+#ifdef WIN32
+  return (send(((http_t *)h->ptr)->fd, str, (int)strlen(str), 0));
+#else
   return (send(((http_t *)h->ptr)->fd, str, strlen(str), 0));
+#endif /* WIN32 */
 }
 
 
@@ -2252,7 +2274,12 @@ http_bio_read(BIO  *h,                   /* I - BIO data */
 
     if (!http_wait(http, 10000, 0))
     {
+#ifdef WIN32
+      http->error = WSAETIMEDOUT;
+#else
       http->error = ETIMEDOUT;
+#endif /* WIN32 */
+
       return (-1);
     }
   }
@@ -2730,43 +2757,30 @@ http_upgrade(http_t *http)              /* I - HTTP connection */
   * encryption on the link...
   */
 
-  httpClearFields(&myhttp);
-  httpSetField(&myhttp, HTTP_FIELD_CONNECTION, "upgrade");
-  httpSetField(&myhttp, HTTP_FIELD_UPGRADE, "TLS/1.0, SSL/2.0, SSL/3.0");
+  httpClearFields(http);
+  httpSetField(http, HTTP_FIELD_CONNECTION, "upgrade");
+  httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.0, SSL/2.0, SSL/3.0");
 
-  if ((ret = httpOptions(&myhttp, "*")) == 0)
+  if ((ret = httpOptions(http, "*")) == 0)
   {
    /*
     * Wait for the secure connection...
     */
 
-    while (httpUpdate(&myhttp) == HTTP_CONTINUE);
+    while (httpUpdate(http) == HTTP_CONTINUE);
   }
 
-  httpFlush(&myhttp);
+  httpFlush(http);
 
  /*
-  * Copy the HTTP data back over, if any...
+  * Restore the HTTP request data...
   */
 
-  http->fd         = myhttp.fd;
-  http->error      = myhttp.error;
-  http->activity   = myhttp.activity;
-  http->status     = myhttp.status;
-  http->version    = myhttp.version;
-  http->keep_alive = myhttp.keep_alive;
-  http->used       = myhttp.used;
-
-  if (http->used)
-    memcpy(http->buffer, myhttp.buffer, http->used);
-
-  http->auth_type   = myhttp.auth_type;
-  http->nonce_count = myhttp.nonce_count;
-
-  memcpy(http->nonce, myhttp.nonce, sizeof(http->nonce));
-
-  http->tls        = myhttp.tls;
-  http->encryption = myhttp.encryption;
+  memcpy(http->fields, myhttp.fields, sizeof(http->fields));
+  http->data_encoding   = myhttp.data_encoding;
+  http->data_remaining  = myhttp.data_remaining;
+  http->_data_remaining = myhttp._data_remaining;
+  http->expect          = myhttp.expect;
 
  /*
   * See if we actually went secure...
@@ -3013,7 +3027,7 @@ http_write_chunk(http_t     *http,        /* I - HTTP connection */
   */
 
   sprintf(header, "%x\r\n", length);
-  if (http_write(http, header, strlen(header)) < 0)
+  if (http_write(http, header, (int)strlen(header)) < 0)
   {
     DEBUG_puts("    http_write of length failed!");
     return (-1);
@@ -3088,5 +3102,5 @@ http_write_ssl(http_t     *http,  /* I - HTTP connection */
 
 
 /*
- * End of "$Id: http.c 6111 2006-11-15 20:28:39Z mike $".
+ * End of "$Id: http.c 6191 2007-01-10 16:48:37Z mike $".
  */
index 2f8a28d73fef6044ee9fc597b7ed85a3fc4324e5..1971bc3ed61164d143014696de392622963bd7cd 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * "$Id: http.h 5889 2006-08-24 21:44:35Z mike $"
+ * "$Id: http.h 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Hyper-Text Transport Protocol definitions for the Common UNIX Printing
  *   System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
 #  include <time.h>
 #  include <sys/types.h>
 #  ifdef WIN32
+#    ifndef __CUPS_SSIZE_T_DEFINED
+#      define __CUPS_SSIZE_T_DEFINED
+/* Windows does not support the ssize_t type, so map it to off_t... */
+typedef off_t ssize_t;                 /* @private@ */
+#    endif /* !__CUPS_SSIZE_T_DEFINED */
 #    include <winsock2.h>
 #    include <ws2tcpip.h>
 #  else
@@ -508,5 +513,5 @@ extern ssize_t              httpWrite2(http_t *http, const char *buffer,
 #endif /* !_CUPS_HTTP_H_ */
 
 /*
- * End of "$Id: http.h 5889 2006-08-24 21:44:35Z mike $".
+ * End of "$Id: http.h 6188 2007-01-10 16:23:06Z mike $".
  */
index 148fc702d4fa63b2df0c8e7af0b68d80c3196e7d..dcd4b651da03ed325ea4efe8dc40fc7b04bb8ff9 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * "$Id: ipp.c 5624 2006-06-02 15:15:23Z mike $"
+ * "$Id: ipp.c 6234 2007-02-05 20:25:50Z mike $"
  *
  *   Internet Printing Protocol support functions for the Common UNIX
  *   Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -1054,7 +1054,7 @@ ippReadIO(void       *src,                /* I - Data source */
           if ((n = (*cb)(src, buffer, 8)) < 8)
          {
            DEBUG_printf(("ippReadIO: Unable to read header (%d bytes read)!\n", n));
-           return (n == 0 ? IPP_IDLE : IPP_ERROR);
+           return (IPP_ERROR);
          }
 
         /*
@@ -1098,8 +1098,11 @@ ippReadIO(void       *src,               /* I - Data source */
          break;
 
     case IPP_ATTRIBUTE :
-        while ((*cb)(src, buffer, 1) > 0)
+        for (;;)
        {
+         if ((*cb)(src, buffer, 1) < 1)
+           return (IPP_ERROR);
+
          DEBUG_printf(("ippReadIO: ipp->current=%p, ipp->prev=%p\n",
                        ipp->current, ipp->prev));
 
@@ -2156,10 +2159,10 @@ ippWriteIO(void       *dst,             /* I - Destination */
                   n = 4;
 
                  if (value->string.charset != NULL)
-                    n += strlen(value->string.charset);
+                    n += (int)strlen(value->string.charset);
 
                  if (value->string.text != NULL)
-                    n += strlen(value->string.text);
+                    n += (int)strlen(value->string.text);
 
                   if (n > (sizeof(buffer) - 2))
                    return (IPP_ERROR);
@@ -2562,7 +2565,7 @@ ipp_length(ipp_t *ipp,                    /* I - IPP message or collection */
     DEBUG_printf(("attr->name = %s, attr->num_values = %d, bytes = %d\n",
                   attr->name, attr->num_values, bytes));
 
-    bytes += strlen(attr->name);       /* Name */
+    bytes += (int)strlen(attr->name);  /* Name */
     bytes += attr->num_values;         /* Value tag for each value */
     bytes += 2 * attr->num_values;     /* Name lengths */
     bytes += 2 * attr->num_values;     /* Value lengths */
@@ -2594,7 +2597,7 @@ ipp_length(ipp_t *ipp,                    /* I - IPP message or collection */
               i < attr->num_values;
               i ++, value ++)
            if (value->string.text != NULL)
-             bytes += strlen(value->string.text);
+             bytes += (int)strlen(value->string.text);
          break;
 
       case IPP_TAG_DATE :
@@ -2618,10 +2621,10 @@ ipp_length(ipp_t *ipp,                  /* I - IPP message or collection */
               i ++, value ++)
          {
            if (value->string.charset != NULL)
-             bytes += strlen(value->string.charset);
+             bytes += (int)strlen(value->string.charset);
 
            if (value->string.text != NULL)
-             bytes += strlen(value->string.text);
+             bytes += (int)strlen(value->string.text);
          }
          break;
 
@@ -2629,7 +2632,7 @@ ipp_length(ipp_t *ipp,                    /* I - IPP message or collection */
          for (i = 0, value = attr->values;
               i < attr->num_values;
               i ++, value ++)
-            bytes += ipp_length(value->collection, 1);
+            bytes += (int)ipp_length(value->collection, 1);
          break;
 
       default :
@@ -2678,7 +2681,7 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
   * Loop until all bytes are read...
   */
 
-  for (tbytes = 0, bytes = 0; tbytes < length; tbytes += bytes, buffer += bytes)
+  for (tbytes = 0, bytes = 0; tbytes < (int)length; tbytes += bytes, buffer += bytes)
   {
     DEBUG_printf(("tbytes = %d, http->state = %d\n", tbytes, http->state));
 
@@ -2691,8 +2694,8 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
       * Do "fast read" from HTTP buffer directly...
       */
 
-      if (http->used > (length - tbytes))
-        bytes = length - tbytes;
+      if (http->used > (int)(length - tbytes))
+        bytes = (int)(length - tbytes);
       else
         bytes = http->used;
 
@@ -2783,7 +2786,11 @@ ipp_read_file(int         *fd,           /* I - File descriptor */
               ipp_uchar_t *buffer,     /* O - Read buffer */
              size_t      length)       /* I - Number of bytes to read */
 {
+#ifdef WIN32
+  return ((ssize_t)read(*fd, buffer, (unsigned)length));
+#else
   return (read(*fd, buffer, length));
+#endif /* WIN32 */
 }
 
 
@@ -2796,7 +2803,11 @@ ipp_write_file(int         *fd,          /* I - File descriptor */
                ipp_uchar_t *buffer,    /* I - Data to write */
                size_t      length)     /* I - Number of bytes to write */
 {
+#ifdef WIN32
+  return ((ssize_t)write(*fd, buffer, (unsigned)length));
+#else
   return (write(*fd, buffer, length));
+#endif /* WIN32 */
 }
 
 
@@ -2824,5 +2835,5 @@ _ipp_free_attr(ipp_attribute_t *attr)     /* I - Attribute to free */
 
 
 /*
- * End of "$Id: ipp.c 5624 2006-06-02 15:15:23Z mike $".
+ * End of "$Id: ipp.c 6234 2007-02-05 20:25:50Z mike $".
  */
index da835dc284954b764602bb9b892e100089861290..ebdccf244742e362e82319ae0bde3f119c31e8a2 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * "$Id: langprintf.c 5926 2006-09-05 20:45:47Z mike $"
+ * "$Id: langprintf.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Localized printf/puts functions for the Common UNIX Printing
  *   System (CUPS).
  *
- *   Copyright 2002-2006 by Easy Software Products.
+ *   Copyright 2002-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -88,7 +88,7 @@ _cupsLangPrintf(FILE        *fp,      /* I - File to write to */
   */
 
   if (bytes > 0)
-    return (fwrite(output, 1, bytes, fp));
+    return ((int)fwrite(output, 1, bytes, fp));
   else
     return (bytes);
 }
@@ -133,7 +133,7 @@ _cupsLangPuts(FILE        *fp,              /* I - File to write to */
   */
 
   if (bytes > 0)
-    return (fwrite(output, 1, bytes, fp));
+    return ((int)fwrite(output, 1, bytes, fp));
   else
     return (bytes);
 }
@@ -224,5 +224,5 @@ _cupsSetLocale(char *argv[])                /* IO - Command-line arguments */
 
 
 /*
- * End of "$Id: langprintf.c 5926 2006-09-05 20:45:47Z mike $".
+ * End of "$Id: langprintf.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 891c96d84632dfad56ac4443d17322270933d29e..e8cf5bed6085eacb32d72b73e6a318625348d788 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: language.c 6073 2006-11-02 20:01:54Z mike $"
+ * "$Id: language.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   I18N/language support for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -887,7 +887,7 @@ _cupsMessageLoad(const char *filename)      /* I - Message catalog to load */
       * Append to current string...
       */
 
-      length = strlen(m->str ? m->str : m->id);
+      length = (int)strlen(m->str ? m->str : m->id);
 
       if ((temp = realloc(m->str ? m->str : m->id,
                           length + strlen(ptr) + 1)) == NULL)
@@ -1326,5 +1326,5 @@ cups_unquote(char       *d,               /* O - Unquoted string */
 
 
 /*
- * End of "$Id: language.c 6073 2006-11-02 20:01:54Z mike $".
+ * End of "$Id: language.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 2e9cbee55935f21e817d35c897d494c05d59fa1e..c3013999d7c68665825bee664a75595f2f8cb6f1 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: mark.c 6036 2006-10-13 22:06:43Z mike $"
+ * "$Id: mark.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Option marking routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -409,26 +409,27 @@ ppdMarkOption(ppd_file_t *ppd,            /* I - PPD file record */
          case PPD_CUSTOM_CURVE :
          case PPD_CUSTOM_INVCURVE :
          case PPD_CUSTOM_REAL :
-             cparam->current.custom_real = _cupsStrScand(choice + 7, NULL,
-                                                         loc);
+             cparam->current.custom_real = (float)_cupsStrScand(choice + 7,
+                                                                NULL, loc);
              break;
 
          case PPD_CUSTOM_POINTS :
-             cparam->current.custom_points = _cupsStrScand(choice + 7,
-                                                           &units, loc);
+             cparam->current.custom_points = (float)_cupsStrScand(choice + 7,
+                                                                  &units,
+                                                                  loc);
 
               if (units)
              {
                if (!strcasecmp(units, "cm"))
-                 cparam->current.custom_points *= 72.0 / 2.54;       
+                 cparam->current.custom_points *= 72.0f / 2.54f;             
                else if (!strcasecmp(units, "mm"))
-                 cparam->current.custom_points *= 72.0 / 25.4;       
+                 cparam->current.custom_points *= 72.0f / 25.4f;             
                else if (!strcasecmp(units, "m"))
-                 cparam->current.custom_points *= 72.0 / 0.0254;             
+                 cparam->current.custom_points *= 72.0f / 0.0254f;           
                else if (!strcasecmp(units, "in"))
-                 cparam->current.custom_points *= 72.0             
+                 cparam->current.custom_points *= 72.0f;             
                else if (!strcasecmp(units, "ft"))
-                 cparam->current.custom_points *= 12 * 72.0;         
+                 cparam->current.custom_points *= 12.0f * 72.0f;             
               }
              break;
 
@@ -485,26 +486,27 @@ ppdMarkOption(ppd_file_t *ppd,            /* I - PPD file record */
          case PPD_CUSTOM_CURVE :
          case PPD_CUSTOM_INVCURVE :
          case PPD_CUSTOM_REAL :
-             cparam->current.custom_real = _cupsStrScand(val->value, NULL,
-                                                         loc);
+             cparam->current.custom_real = (float)_cupsStrScand(val->value,
+                                                                NULL, loc);
              break;
 
          case PPD_CUSTOM_POINTS :
-             cparam->current.custom_points = _cupsStrScand(val->value, &units,
-                                                           loc);
+             cparam->current.custom_points = (float)_cupsStrScand(val->value,
+                                                                  &units,
+                                                                  loc);
 
              if (units)
              {
                if (!strcasecmp(units, "cm"))
-                 cparam->current.custom_points *= 72.0 / 2.54;       
+                 cparam->current.custom_points *= 72.0f / 2.54f;
                else if (!strcasecmp(units, "mm"))
-                 cparam->current.custom_points *= 72.0 / 25.4;       
+                 cparam->current.custom_points *= 72.0f / 25.4f;
                else if (!strcasecmp(units, "m"))
-                 cparam->current.custom_points *= 72.0 / 0.0254;             
+                 cparam->current.custom_points *= 72.0f / 0.0254f;
                else if (!strcasecmp(units, "in"))
-                 cparam->current.custom_points *= 72.0;              
+                 cparam->current.custom_points *= 72.0f;
                else if (!strcasecmp(units, "ft"))
-                 cparam->current.custom_points *= 12 * 72.0;         
+                 cparam->current.custom_points *= 12.0f * 72.0f;
              }
              break;
 
@@ -677,5 +679,5 @@ ppd_defaults(ppd_file_t  *ppd,      /* I - PPD file */
 
 
 /*
- * End of "$Id: mark.c 6036 2006-10-13 22:06:43Z mike $".
+ * End of "$Id: mark.c 6188 2007-01-10 16:23:06Z mike $".
  */
index f8b79832f0823eb305639e92813f960522b3c059..66b64eeae11303714ada0c01a59e91207d8555bf 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: page.c 5549 2006-05-19 19:39:28Z mike $"
+ * "$Id: page.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Page size functions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -50,9 +50,12 @@ ppdPageSize(ppd_file_t *ppd,         /* I - PPD file record */
             const char *name)          /* I - Size name */
 {
   int          i;                      /* Looping var */
+  ppd_size_t   *size;                  /* Current page size */
   float                w, l;                   /* Width and length of page */
   char         *nameptr;               /* Pointer into name */
   struct lconv *loc;                   /* Locale data */
+  ppd_coption_t        *coption;               /* Custom option for page size */
+  ppd_cparam_t *cparam;                /* Custom option parameter */
 
 
   if (!ppd)
@@ -66,11 +69,11 @@ ppdPageSize(ppd_file_t *ppd,                /* I - PPD file record */
       * Find the custom page size...
       */
 
-      for (i = 0; i < ppd->num_sizes; i ++)
-       if (!strcmp("Custom", ppd->sizes[i].name))
+      for (i = ppd->num_sizes, size = ppd->sizes; i > 0; i --, size ++)
+       if (!strcmp("Custom", size->name))
           break;
 
-      if (i == ppd->num_sizes)
+      if (!i)
         return (NULL);
 
      /*
@@ -83,52 +86,65 @@ ppdPageSize(ppd_file_t *ppd,                /* I - PPD file record */
       */
 
       loc = localeconv();
-      w   = _cupsStrScand(name + 7, &nameptr, loc);
+      w   = (float)_cupsStrScand(name + 7, &nameptr, loc);
       if (!nameptr || *nameptr != 'x')
         return (NULL);
 
-      l = _cupsStrScand(nameptr + 1, &nameptr, loc);
+      l = (float)_cupsStrScand(nameptr + 1, &nameptr, loc);
       if (!nameptr)
         return (NULL);
 
       if (!strcasecmp(nameptr, "in"))
       {
-        ppd->sizes[i].width  = w * 72.0f;
-       ppd->sizes[i].length = l * 72.0f;
-       ppd->sizes[i].left   = ppd->custom_margins[0];
-       ppd->sizes[i].bottom = ppd->custom_margins[1];
-       ppd->sizes[i].right  = w * 72.0f - ppd->custom_margins[2];
-       ppd->sizes[i].top    = l * 72.0f - ppd->custom_margins[3];
+        w *= 72.0f;
+       l *= 72.0f;
       }
-      else if (!strcasecmp(nameptr, "cm"))
+      else if (!strcasecmp(nameptr, "ft"))
       {
-        ppd->sizes[i].width  = w / 2.54f * 72.0f;
-       ppd->sizes[i].length = l / 2.54f * 72.0f;
-       ppd->sizes[i].left   = ppd->custom_margins[0];
-       ppd->sizes[i].bottom = ppd->custom_margins[1];
-       ppd->sizes[i].right  = w / 2.54f * 72.0f - ppd->custom_margins[2];
-       ppd->sizes[i].top    = l / 2.54f * 72.0f - ppd->custom_margins[3];
+        w *= 12.0f * 72.0f;
+       l *= 12.0f * 72.0f;
       }
       else if (!strcasecmp(nameptr, "mm"))
       {
-        ppd->sizes[i].width  = w / 25.4f * 72.0f;
-       ppd->sizes[i].length = l / 25.4f * 72.0f;
-       ppd->sizes[i].left   = ppd->custom_margins[0];
-       ppd->sizes[i].bottom = ppd->custom_margins[1];
-       ppd->sizes[i].right  = w / 25.4f * 72.0f - ppd->custom_margins[2];
-       ppd->sizes[i].top    = l / 25.4f * 72.0f - ppd->custom_margins[3];
+        w *= 72.0f / 25.4f;
+        l *= 72.0f / 25.4f;
+      }
+      else if (!strcasecmp(nameptr, "cm"))
+      {
+        w *= 72.0f / 2.54f;
+        l *= 72.0f / 2.54f;
       }
-      else
+      else if (!strcasecmp(nameptr, "m"))
       {
-        ppd->sizes[i].width  = w;
-       ppd->sizes[i].length = l;
-       ppd->sizes[i].left   = ppd->custom_margins[0];
-       ppd->sizes[i].bottom = ppd->custom_margins[1];
-       ppd->sizes[i].right  = w - ppd->custom_margins[2];
-       ppd->sizes[i].top    = l - ppd->custom_margins[3];
+        w *= 72.0f / 0.0254f;
+        l *= 72.0f / 0.0254f;
       }
 
-      return (ppd->sizes + i);
+      size->width  = w;
+      size->length = l;
+      size->left   = ppd->custom_margins[0];
+      size->bottom = ppd->custom_margins[1];
+      size->right  = w - ppd->custom_margins[2];
+      size->top    = l - ppd->custom_margins[3];
+
+     /*
+      * Update the custom option records for the page size, too...
+      */
+
+      if ((coption = ppdFindCustomOption(ppd, "PageSize")) != NULL)
+      {
+        if ((cparam = ppdFindCustomParam(coption, "Width")) != NULL)
+         cparam->current.custom_points = w;
+
+        if ((cparam = ppdFindCustomParam(coption, "Height")) != NULL)
+         cparam->current.custom_points = l;
+      }
+
+     /*
+      * Return the page size...
+      */
+
+      return (size);
     }
     else
     {
@@ -136,9 +152,9 @@ ppdPageSize(ppd_file_t *ppd,                /* I - PPD file record */
       * Lookup by name...
       */
 
-      for (i = 0; i < ppd->num_sizes; i ++)
-       if (!strcasecmp(name, ppd->sizes[i].name))
-          return (ppd->sizes + i);
+      for (i = ppd->num_sizes, size = ppd->sizes; i > 0; i --, size ++)
+       if (!strcmp(name, size->name))
+          return (size);
     }
   }
   else
@@ -147,9 +163,9 @@ ppdPageSize(ppd_file_t *ppd,                /* I - PPD file record */
     * Find default...
     */
 
-    for (i = 0; i < ppd->num_sizes; i ++)
-      if (ppd->sizes[i].marked)
-        return (ppd->sizes + i);
+    for (i = ppd->num_sizes, size = ppd->sizes; i > 0; i --, size ++)
+      if (size->marked)
+        return (size);
   }
 
   return (NULL);
@@ -193,5 +209,5 @@ ppdPageLength(ppd_file_t *ppd,      /* I - PPD file */
 
 
 /*
- * End of "$Id: page.c 5549 2006-05-19 19:39:28Z mike $".
+ * End of "$Id: page.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 9facfe6b954b82c646f9064f2b2ef5855203f54e..37d0f8d6b5fa0bbd0c982d577efa5a27c43778c0 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: ppd.c 6036 2006-10-13 22:06:43Z mike $"
+ * "$Id: ppd.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   PPD file routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -819,17 +819,17 @@ ppdOpen2(cups_file_t *fp)         /* I - File to read from */
       strlcpy(profile->resolution, name, sizeof(profile->resolution));
       strlcpy(profile->media_type, text, sizeof(profile->media_type));
 
-      profile->density      = _cupsStrScand(string, &sptr, loc);
-      profile->gamma        = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[0][0] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[0][1] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[0][2] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[1][0] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[1][1] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[1][2] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[2][0] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[2][1] = _cupsStrScand(sptr, &sptr, loc);
-      profile->matrix[2][2] = _cupsStrScand(sptr, &sptr, loc);
+      profile->density      = (float)_cupsStrScand(string, &sptr, loc);
+      profile->gamma        = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[0][0] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[0][1] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[0][2] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[1][0] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[1][1] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[1][2] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[2][0] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[2][1] = (float)_cupsStrScand(sptr, &sptr, loc);
+      profile->matrix[2][2] = (float)_cupsStrScand(sptr, &sptr, loc);
     }
     else if (!strcmp(keyword, "cupsFilter"))
     {
@@ -928,8 +928,8 @@ ppdOpen2(cups_file_t *fp)           /* I - File to read from */
       if (!strcmp(ctype, "curve"))
       {
         cparam->type = PPD_CUSTOM_CURVE;
-       cparam->minimum.custom_curve = _cupsStrScand(cminimum, NULL, loc);
-       cparam->maximum.custom_curve = _cupsStrScand(cmaximum, NULL, loc);
+       cparam->minimum.custom_curve = (float)_cupsStrScand(cminimum, NULL, loc);
+       cparam->maximum.custom_curve = (float)_cupsStrScand(cmaximum, NULL, loc);
       }
       else if (!strcmp(ctype, "int"))
       {
@@ -940,8 +940,8 @@ ppdOpen2(cups_file_t *fp)           /* I - File to read from */
       else if (!strcmp(ctype, "invcurve"))
       {
         cparam->type = PPD_CUSTOM_INVCURVE;
-       cparam->minimum.custom_invcurve = _cupsStrScand(cminimum, NULL, loc);
-       cparam->maximum.custom_invcurve = _cupsStrScand(cmaximum, NULL, loc);
+       cparam->minimum.custom_invcurve = (float)_cupsStrScand(cminimum, NULL, loc);
+       cparam->maximum.custom_invcurve = (float)_cupsStrScand(cmaximum, NULL, loc);
       }
       else if (!strcmp(ctype, "passcode"))
       {
@@ -958,14 +958,14 @@ ppdOpen2(cups_file_t *fp)         /* I - File to read from */
       else if (!strcmp(ctype, "points"))
       {
         cparam->type = PPD_CUSTOM_POINTS;
-       cparam->minimum.custom_points = _cupsStrScand(cminimum, NULL, loc);
-       cparam->maximum.custom_points = _cupsStrScand(cmaximum, NULL, loc);
+       cparam->minimum.custom_points = (float)_cupsStrScand(cminimum, NULL, loc);
+       cparam->maximum.custom_points = (float)_cupsStrScand(cmaximum, NULL, loc);
       }
       else if (!strcmp(ctype, "real"))
       {
         cparam->type = PPD_CUSTOM_REAL;
-       cparam->minimum.custom_real = _cupsStrScand(cminimum, NULL, loc);
-       cparam->maximum.custom_real = _cupsStrScand(cmaximum, NULL, loc);
+       cparam->minimum.custom_real = (float)_cupsStrScand(cminimum, NULL, loc);
+       cparam->maximum.custom_real = (float)_cupsStrScand(cmaximum, NULL, loc);
       }
       else if (!strcmp(ctype, "string"))
       {
@@ -1001,7 +1001,7 @@ ppdOpen2(cups_file_t *fp)         /* I - File to read from */
     else if (!strcmp(keyword, "HWMargins"))
     {
       for (i = 0, sptr = string; i < 4; i ++)
-        ppd->custom_margins[i] = _cupsStrScand(sptr, &sptr, loc);
+        ppd->custom_margins[i] = (float)_cupsStrScand(sptr, &sptr, loc);
     }
     else if (!strncmp(keyword, "Custom", 6) && !strcmp(name, "True"))
     {
@@ -1400,7 +1400,7 @@ ppdOpen2(cups_file_t *fp)         /* I - File to read from */
     else if (!strcmp(keyword, "OrderDependency") ||
              !strcmp(keyword, "NonUIOrderDependency"))
     {
-      order = _cupsStrScand(string, &sptr, loc);
+      order = (float)_cupsStrScand(string, &sptr, loc);
 
       if (!sptr || sscanf(sptr, "%40s%40s", name, keyword) != 2)
       {
@@ -1728,8 +1728,8 @@ ppdOpen2(cups_file_t *fp)         /* I - File to read from */
        goto error;
       }
 
-      size->width  = _cupsStrScand(string, &sptr, loc);
-      size->length = _cupsStrScand(sptr, NULL, loc);
+      size->width  = (float)_cupsStrScand(string, &sptr, loc);
+      size->length = (float)_cupsStrScand(sptr, NULL, loc);
 
       ppd_free(string);
       string = NULL;
@@ -1750,10 +1750,10 @@ ppdOpen2(cups_file_t *fp)               /* I - File to read from */
        goto error;
       }
 
-      size->left   = _cupsStrScand(string, &sptr, loc);
-      size->bottom = _cupsStrScand(sptr, &sptr, loc);
-      size->right  = _cupsStrScand(sptr, &sptr, loc);
-      size->top    = _cupsStrScand(sptr, NULL, loc);
+      size->left   = (float)_cupsStrScand(string, &sptr, loc);
+      size->bottom = (float)_cupsStrScand(sptr, &sptr, loc);
+      size->right  = (float)_cupsStrScand(sptr, &sptr, loc);
+      size->top    = (float)_cupsStrScand(sptr, NULL, loc);
 
       ppd_free(string);
       string = NULL;
@@ -2370,7 +2370,7 @@ ppd_get_cparam(ppd_coption_t *opt,        /* I - PPD file */
     return (NULL);
 
   strlcpy(cparam->name, param, sizeof(cparam->name));
-  strlcpy(cparam->text, text, sizeof(cparam->text));
+  strlcpy(cparam->text, text[0] ? text : param, sizeof(cparam->text));
 
  /*
   * Add this record to the array...
@@ -3046,5 +3046,5 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
 
 /*
- * End of "$Id: ppd.c 6036 2006-10-13 22:06:43Z mike $".
+ * End of "$Id: ppd.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 329cce8813dc133c8103544185f87edad3720fe3..6c2924385bdd79e55bb6f02f0075c2ab99bbca9a 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: request.c 5555 2006-05-20 13:35:58Z mike $"
+ * "$Id: request.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   IPP utilities for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -285,7 +285,7 @@ cupsDoFileRequest(http_t     *http, /* I - HTTP connection to server */
 
 #ifdef WIN32
       if (http->error != WSAENETDOWN && http->error != WSAENETUNREACH &&
-          http->error != ETIMEDOUT)
+          http->error != WSAETIMEDOUT)
 #else
       if (http->error != ENETDOWN && http->error != ENETUNREACH &&
           http->error != ETIMEDOUT)
@@ -479,5 +479,5 @@ _cupsSetError(ipp_status_t status,  /* I - IPP status code */
 
 
 /*
- * End of "$Id: request.c 5555 2006-05-20 13:35:58Z mike $".
+ * End of "$Id: request.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 683551b054585c4d047c6ff520de010c330e15e2..313102b86c67e461523cd3a04b41f318ecfbf760 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: snprintf.c 5529 2006-05-15 20:06:46Z mike $"
+ * "$Id: snprintf.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   snprintf functions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2005 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -195,7 +195,7 @@ _cups_vsnprintf(char       *buffer, /* O - Output buffer */
 
            sprintf(temp, tformat, va_arg(ap, double));
 
-            bytes += strlen(temp);
+            bytes += (int)strlen(temp);
 
             if (bufptr)
            {
@@ -225,7 +225,7 @@ _cups_vsnprintf(char       *buffer, /* O - Output buffer */
 
            sprintf(temp, tformat, va_arg(ap, int));
 
-            bytes += strlen(temp);
+            bytes += (int)strlen(temp);
 
            if (bufptr)
            {
@@ -248,7 +248,7 @@ _cups_vsnprintf(char       *buffer, /* O - Output buffer */
 
            sprintf(temp, tformat, va_arg(ap, void *));
 
-            bytes += strlen(temp);
+            bytes += (int)strlen(temp);
 
            if (bufptr)
            {
@@ -275,7 +275,7 @@ _cups_vsnprintf(char       *buffer, /* O - Output buffer */
              else
              {
                if ((bufptr + width) > bufend)
-                 width = bufend - bufptr;
+                 width = (int)(bufend - bufptr);
 
                memcpy(bufptr, va_arg(ap, char *), (size_t)width);
                bufptr += width;
@@ -287,7 +287,7 @@ _cups_vsnprintf(char       *buffer, /* O - Output buffer */
            if ((s = va_arg(ap, char *)) == NULL)
              s = "(null)";
 
-           slen = strlen(s);
+           slen = (int)strlen(s);
            if (slen > width && prec != width)
              width = slen;
 
@@ -296,7 +296,7 @@ _cups_vsnprintf(char       *buffer, /* O - Output buffer */
            if (bufptr)
            {
              if ((bufptr + width) > bufend)
-               width = bufend - bufptr;
+               width = (int)(bufend - bufptr);
 
               if (slen > width)
                slen = width;
@@ -368,6 +368,6 @@ _cups_snprintf(char       *buffer,  /* O - Output buffer */
 
 
 /*
- * End of "$Id: snprintf.c 5529 2006-05-15 20:06:46Z mike $".
+ * End of "$Id: snprintf.c 6188 2007-01-10 16:23:06Z mike $".
  */
 
index 733304a82fca2ef8ab5b7c202be889145a5bfe44..98cd344dc6d90bc0c2731aff56e69187b6ef3a37 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: string.c 5368 2006-04-02 19:23:50Z mike $"
+ * "$Id: string.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   String functions for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -243,7 +243,7 @@ _cupsStrFormatd(char         *buf,  /* I - String */
   if (loc && loc->decimal_point)
   {
     dec    = loc->decimal_point;
-    declen = strlen(dec);
+    declen = (int)strlen(dec);
   }
   else
   {
@@ -439,6 +439,47 @@ _cupsStrScand(const char   *buf,   /* I - Pointer to number */
       }
   }
 
+  if (*buf == 'e' || *buf == 'E')
+  {
+   /*
+    * Read exponent...
+    */
+
+    if (tempptr < (temp + sizeof(temp) - 1))
+      *tempptr++ = *buf++;
+    else
+    {
+      if (bufptr)
+       *bufptr = NULL;
+
+      return (0.0);
+    }
+
+    if (*buf == '+' || *buf == '-')
+    {
+      if (tempptr < (temp + sizeof(temp) - 1))
+       *tempptr++ = *buf++;
+      else
+      {
+       if (bufptr)
+         *bufptr = NULL;
+
+       return (0.0);
+      }
+    }
+
+    while (isdigit(*buf & 255))
+      if (tempptr < (temp + sizeof(temp) - 1))
+       *tempptr++ = *buf++;
+      else
+      {
+       if (bufptr)
+         *bufptr = NULL;
+
+       return (0.0);
+      }
+  }
+
  /*
   * Nul-terminate the temporary string and return the value...
   */
@@ -702,5 +743,5 @@ compare_sp_items(_cups_sp_item_t *a,        /* I - First item */
 
 
 /*
- * End of "$Id: string.c 5368 2006-04-02 19:23:50Z mike $".
+ * End of "$Id: string.c 6188 2007-01-10 16:23:06Z mike $".
  */
index 7bd0c2b14b46a6fecc9c452f8f0a76c64c9115a5..c4d6d90f5049ad52e9254b516831e19c991f68ea 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: testfile.c 5194 2006-02-27 20:57:07Z mike $"
+ * "$Id: testfile.c 6193 2007-01-10 19:27:04Z mike $"
  *
  *   File test program for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2005 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -86,8 +86,13 @@ main(int  argc,                              /* I - Number of command-line arguments */
     */
 
     fputs("cupsFileFind: ", stdout);
+#ifdef WIN32
+    if (cupsFileFind("notepad.exe", "C:/WINDOWS", 1, filename, sizeof(filename)) &&
+       cupsFileFind("notepad.exe", "C:/WINDOWS;C:/WINDOWS/SYSTEM32", 1, filename, sizeof(filename)))
+#else
     if (cupsFileFind("cat", "/bin", 1, filename, sizeof(filename)) &&
        cupsFileFind("cat", "/bin:/usr/bin", 1, filename, sizeof(filename)))
+#endif /* WIN32 */
       printf("PASS (%s)\n", filename);
     else
     {
@@ -165,7 +170,12 @@ read_write_tests(int compression)  /* I - Use compression? */
   * Initialize the write buffer with random data...
   */
 
+#ifdef WIN32
+  srand((unsigned)time(NULL));
+#else
   srand(time(NULL));
+#endif /* WIN32 */
+
   for (i = 0; i < (int)sizeof(writebuf); i ++)
     writebuf[i] = rand();
 
@@ -362,14 +372,28 @@ read_write_tests(int compression) /* I - Use compression? */
     }
 
    /*
-    * cupsGetChar()
+    * cupsFileGetChar()
     */
 
-    fputs("cupsGetChar(): ", stdout);
+    fputs("cupsFileGetChar(): ", stdout);
+
+#ifdef DEBUG
+    puts("\ni     byte\n----- -----");
+
+    for (i = 0; i < 256; i ++)
+    {
+      byte = cupsFileGetChar(fp);
+
+      printf("%-5d %-5d\n", i, byte);
 
+      if (byte != i)
+        break;
+    }
+#else
     for (i = 0; i < 256; i ++)
       if ((byte = cupsFileGetChar(fp)) != i)
         break;
+#endif /* DEBUG */
 
     if (i >= 256)
       puts("PASS");
@@ -444,5 +468,5 @@ read_write_tests(int compression)   /* I - Use compression? */
 
 
 /*
- * End of "$Id: testfile.c 5194 2006-02-27 20:57:07Z mike $".
+ * End of "$Id: testfile.c 6193 2007-01-10 19:27:04Z mike $".
  */
index 37032ff62e5e37d2469eaa6fb84e98ec6f3a5539..a587acedf35bf5199d78c942f112b97dda3e530d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: testppd.c 5826 2006-08-15 19:04:11Z mike $"
+ * "$Id: testppd.c 6161 2006-12-19 20:10:22Z mike $"
  *
  *   PPD test program for the Common UNIX Printing System (CUPS).
  *
@@ -195,6 +195,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
       ppd_attr_t       *attr;          /* Current attribute */
       ppd_group_t      *group;         /* Option group */
       ppd_option_t     *option;        /* Option */
+      ppd_coption_t    *coption;       /* Custom option */
+      ppd_cparam_t     *cparam;        /* Custom parameter */
       char             lang[255];      /* LANG environment variable */
 
 
@@ -221,6 +223,73 @@ main(int  argc,                            /* I - Number of command-line arguments */
          for (k = 0; k < option->num_choices; k ++)
            printf("        - %s (%s)\n", option->choices[k].choice,
                   option->choices[k].text);
+
+          if ((coption = ppdFindCustomOption(ppd, option->keyword)) != NULL)
+         {
+           for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
+                cparam;
+                cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
+            {
+             switch (cparam->type)
+             {
+               case PPD_CUSTOM_CURVE :
+                   printf("              %s(%s): PPD_CUSTOM_CURVE (%g to %g)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_curve,
+                          cparam->maximum.custom_curve);
+                   break;
+
+               case PPD_CUSTOM_INT :
+                   printf("              %s(%s): PPD_CUSTOM_INT (%d to %d)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_int,
+                          cparam->maximum.custom_int);
+                   break;
+
+               case PPD_CUSTOM_INVCURVE :
+                   printf("              %s(%s): PPD_CUSTOM_INVCURVE (%g to %g)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_invcurve,
+                          cparam->maximum.custom_invcurve);
+                   break;
+
+               case PPD_CUSTOM_PASSCODE :
+                   printf("              %s(%s): PPD_CUSTOM_PASSCODE (%d to %d)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_passcode,
+                          cparam->maximum.custom_passcode);
+                   break;
+
+               case PPD_CUSTOM_PASSWORD :
+                   printf("              %s(%s): PPD_CUSTOM_PASSWORD (%d to %d)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_password,
+                          cparam->maximum.custom_password);
+                   break;
+
+               case PPD_CUSTOM_POINTS :
+                   printf("              %s(%s): PPD_CUSTOM_POINTS (%g to %g)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_points,
+                          cparam->maximum.custom_points);
+                   break;
+
+               case PPD_CUSTOM_REAL :
+                   printf("              %s(%s): PPD_CUSTOM_REAL (%g to %g)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_real,
+                          cparam->maximum.custom_real);
+                   break;
+
+               case PPD_CUSTOM_STRING :
+                   printf("              %s(%s): PPD_CUSTOM_STRING (%d to %d)\n",
+                          cparam->name, cparam->text,
+                          cparam->minimum.custom_string,
+                          cparam->maximum.custom_string);
+                   break;
+             }
+           }
+         }
        }
       }
 
@@ -239,5 +308,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: testppd.c 5826 2006-08-15 19:04:11Z mike $".
+ * End of "$Id: testppd.c 6161 2006-12-19 20:10:22Z mike $".
  */
index dc9d4dcb1216593055c068eea1e002484e8d9b02..9955d2e3548c6882298412f49a21532f8c01a1ba 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: transcode.c 6115 2006-11-15 22:21:18Z mike $"
+ * "$Id: transcode.c 6188 2007-01-10 16:23:06Z mike $"
  *
  *   Transcoding support for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are
  *   the property of Easy Software Products and are protected by Federal
@@ -292,7 +292,7 @@ cupsCharsetToUTF8(
       encoding < 0 || encoding >= CUPS_ENCODING_VBCS_END)
   {
     strlcpy((char *)dest, src, maxout);
-    return (strlen((char *)dest));
+    return ((int)strlen((char *)dest));
   }
 
  /*
@@ -324,7 +324,7 @@ cupsCharsetToUTF8(
 
     *destptr = '\0';
 
-    return (destptr - dest);
+    return ((int)(destptr - dest));
   }
 
  /*
@@ -392,7 +392,7 @@ cupsUTF8ToCharset(
       encoding < 0 || encoding >= CUPS_ENCODING_VBCS_END)
   {
     strlcpy(dest, (char *)src, maxout);
-    return (strlen(dest));
+    return ((int)strlen(dest));
   }
 
  /*
@@ -431,7 +431,7 @@ cupsUTF8ToCharset(
 
     *destptr = '\0';
 
-    return (destptr - dest);
+    return ((int)(destptr - dest));
   }
 
  /*
@@ -968,7 +968,7 @@ conv_utf8_to_vbcs(
 
     if (unichar < 0x80)
     {
-      *dest++ = (cups_vbcs_t)unichar;
+      *dest++ = (cups_sbcs_t)unichar;
       continue;
     }
 
@@ -1655,5 +1655,5 @@ get_vbcs_charmap(
 
 
 /*
- * End of "$Id: transcode.c 6115 2006-11-15 22:21:18Z mike $"
+ * End of "$Id: transcode.c 6188 2007-01-10 16:23:06Z mike $"
  */
index 1082ceb242376f94c84cdfbb4c2580808efaa4f3..623c22057a128a145dd3595f1e90587489ee9b51 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: util.c 5716 2006-07-11 17:56:57Z mike $"
+ * "$Id: util.c 6145 2006-12-06 20:10:16Z mike $"
  *
  *   Printing utilities for the Common UNIX Printing System (CUPS).
  *
@@ -1649,7 +1649,8 @@ cups_get_printer_uri(
     ippDelete(response);
   }
 
-  _cupsSetError(IPP_INTERNAL_ERROR, "No printer-uri found!");
+  if (cupsLastError() != IPP_NOT_FOUND)
+    _cupsSetError(IPP_INTERNAL_ERROR, "No printer-uri found!");
 
   *host     = '\0';
   *resource = '\0';
@@ -1659,5 +1660,5 @@ cups_get_printer_uri(
 
 
 /*
- * End of "$Id: util.c 5716 2006-07-11 17:56:57Z mike $".
+ * End of "$Id: util.c 6145 2006-12-06 20:10:16Z mike $".
  */
index 0bb1c4620a798f58c80182f75006cb0075f2ad0c..bec77346a6fa39efc99ec9818758b3b3f7eaeed9 100644 (file)
@@ -21,7 +21,9 @@ Name[es]=Administrar impresión
 Comment[es]=Interfaz Web de CUPS
 Name[et]=Trükkimise haldur
 Comment[et]=CUPS-i veebiliides
+Name[fr]=Gestionnaire d'impression
+Comment[fr]=Interface Web de CUPS
 Name[pl]=Zarządzanie drukowaniem
 Comment[pl]=Interfejs WWW CUPS
 Name[it]=Gestione stampa
-Comment[it]=Interfaccia web di CUPS
\ No newline at end of file
+Comment[it]=Interfaccia web di CUPS
index bd7ec21c8f2a82f13fe91e54ebda714e9295fe8a..1fbedf1137e5aee30c89e8d55b0c6eff39a18416 100644 (file)
@@ -130,7 +130,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>Das Common UNIX Printing System, CUPS, und das CUPS Logo sind
 Warenzeichen der <A HREF="http://www.easysw.com">Easy Software
-Products</A>. CUPS ist urheberrechtlich gesch&uuml;tzt 1997-2006 von Easy Software Products,
+Products</A>. CUPS ist urheberrechtlich gesch&uuml;tzt 1997-2007 von Easy Software Products,
 Alle Rechte vorbehalten.</SMALL></P>
 
 </TD>
index e14c40267568d6f641c5eb6da3d3ca37fe193915..735c99378942f7c53e6195f93ebc910b6c2f05da 100644 (file)
@@ -133,7 +133,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>Common UNIX Printing System, CUPS, y el logo de CUPS son
 marcas registradas de <A HREF="http://www.easysw.com">Easy Software
-Products</A>. Los derechos de copia de CUPS 1997-2006 son de Easy Software Products.
+Products</A>. Los derechos de copia de CUPS 1997-2007 son de Easy Software Products.
 Todos los derechos reservados.</SMALL></P>
 
 </TD>
index 8399134d07bf9dcb73f1b13d0f1362c69a89cb88..3e20bbdad27c05d2822bdac6e6a8a0398a3233f7 100644 (file)
@@ -128,7 +128,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>Common UNIX Printing System, CUPS ja CUPS-i logo on
 firma <A HREF="http://www.easysw.com">Easy Software
-Products</A> kaubamärgid. CUPS-i autoriõigus 1997-2006: Easy Software Products,
+Products</A> kaubamärgid. CUPS-i autoriõigus 1997-2007: Easy Software Products,
 kõik õigused kaitstud.</SMALL></P>
 
 </TD>
diff --git a/doc/fr/images/button-accept-jobs.gif b/doc/fr/images/button-accept-jobs.gif
new file mode 100644 (file)
index 0000000..7659603
Binary files /dev/null and b/doc/fr/images/button-accept-jobs.gif differ
diff --git a/doc/fr/images/button-add-class.gif b/doc/fr/images/button-add-class.gif
new file mode 100644 (file)
index 0000000..4870f31
Binary files /dev/null and b/doc/fr/images/button-add-class.gif differ
diff --git a/doc/fr/images/button-add-printer.gif b/doc/fr/images/button-add-printer.gif
new file mode 100644 (file)
index 0000000..813eaf8
Binary files /dev/null and b/doc/fr/images/button-add-printer.gif differ
diff --git a/doc/fr/images/button-add-this-printer.gif b/doc/fr/images/button-add-this-printer.gif
new file mode 100644 (file)
index 0000000..92d3d83
Binary files /dev/null and b/doc/fr/images/button-add-this-printer.gif differ
diff --git a/doc/fr/images/button-cancel-all-jobs.gif b/doc/fr/images/button-cancel-all-jobs.gif
new file mode 100644 (file)
index 0000000..6ee51b7
Binary files /dev/null and b/doc/fr/images/button-cancel-all-jobs.gif differ
diff --git a/doc/fr/images/button-cancel-job.gif b/doc/fr/images/button-cancel-job.gif
new file mode 100644 (file)
index 0000000..bbffe12
Binary files /dev/null and b/doc/fr/images/button-cancel-job.gif differ
diff --git a/doc/fr/images/button-change-settings.gif b/doc/fr/images/button-change-settings.gif
new file mode 100644 (file)
index 0000000..3d6e59a
Binary files /dev/null and b/doc/fr/images/button-change-settings.gif differ
diff --git a/doc/fr/images/button-clean-print-heads.gif b/doc/fr/images/button-clean-print-heads.gif
new file mode 100644 (file)
index 0000000..da56492
Binary files /dev/null and b/doc/fr/images/button-clean-print-heads.gif differ
diff --git a/doc/fr/images/button-clear.gif b/doc/fr/images/button-clear.gif
new file mode 100644 (file)
index 0000000..bbf4fe3
Binary files /dev/null and b/doc/fr/images/button-clear.gif differ
diff --git a/doc/fr/images/button-continue.gif b/doc/fr/images/button-continue.gif
new file mode 100644 (file)
index 0000000..c203ca7
Binary files /dev/null and b/doc/fr/images/button-continue.gif differ
diff --git a/doc/fr/images/button-delete-class.gif b/doc/fr/images/button-delete-class.gif
new file mode 100644 (file)
index 0000000..bbff5bc
Binary files /dev/null and b/doc/fr/images/button-delete-class.gif differ
diff --git a/doc/fr/images/button-delete-printer.gif b/doc/fr/images/button-delete-printer.gif
new file mode 100644 (file)
index 0000000..d3328a6
Binary files /dev/null and b/doc/fr/images/button-delete-printer.gif differ
diff --git a/doc/fr/images/button-edit-configuration-file.gif b/doc/fr/images/button-edit-configuration-file.gif
new file mode 100644 (file)
index 0000000..7799409
Binary files /dev/null and b/doc/fr/images/button-edit-configuration-file.gif differ
diff --git a/doc/fr/images/button-export-samba.gif b/doc/fr/images/button-export-samba.gif
new file mode 100644 (file)
index 0000000..4b63edf
Binary files /dev/null and b/doc/fr/images/button-export-samba.gif differ
diff --git a/doc/fr/images/button-help.gif b/doc/fr/images/button-help.gif
new file mode 100644 (file)
index 0000000..5640d38
Binary files /dev/null and b/doc/fr/images/button-help.gif differ
diff --git a/doc/fr/images/button-hold-job.gif b/doc/fr/images/button-hold-job.gif
new file mode 100644 (file)
index 0000000..bd42ee2
Binary files /dev/null and b/doc/fr/images/button-hold-job.gif differ
diff --git a/doc/fr/images/button-manage-classes.gif b/doc/fr/images/button-manage-classes.gif
new file mode 100644 (file)
index 0000000..a96ef74
Binary files /dev/null and b/doc/fr/images/button-manage-classes.gif differ
diff --git a/doc/fr/images/button-manage-jobs.gif b/doc/fr/images/button-manage-jobs.gif
new file mode 100644 (file)
index 0000000..66e25ca
Binary files /dev/null and b/doc/fr/images/button-manage-jobs.gif differ
diff --git a/doc/fr/images/button-manage-printers.gif b/doc/fr/images/button-manage-printers.gif
new file mode 100644 (file)
index 0000000..6c0a946
Binary files /dev/null and b/doc/fr/images/button-manage-printers.gif differ
diff --git a/doc/fr/images/button-manage-server.gif b/doc/fr/images/button-manage-server.gif
new file mode 100644 (file)
index 0000000..bcb6e3e
Binary files /dev/null and b/doc/fr/images/button-manage-server.gif differ
diff --git a/doc/fr/images/button-modify-class.gif b/doc/fr/images/button-modify-class.gif
new file mode 100644 (file)
index 0000000..e9187b9
Binary files /dev/null and b/doc/fr/images/button-modify-class.gif differ
diff --git a/doc/fr/images/button-modify-printer.gif b/doc/fr/images/button-modify-printer.gif
new file mode 100644 (file)
index 0000000..4972f8d
Binary files /dev/null and b/doc/fr/images/button-modify-printer.gif differ
diff --git a/doc/fr/images/button-move-job.gif b/doc/fr/images/button-move-job.gif
new file mode 100644 (file)
index 0000000..104d044
Binary files /dev/null and b/doc/fr/images/button-move-job.gif differ
diff --git a/doc/fr/images/button-move-jobs.gif b/doc/fr/images/button-move-jobs.gif
new file mode 100644 (file)
index 0000000..5894ce3
Binary files /dev/null and b/doc/fr/images/button-move-jobs.gif differ
diff --git a/doc/fr/images/button-print-self-test-page.gif b/doc/fr/images/button-print-self-test-page.gif
new file mode 100644 (file)
index 0000000..dc0b3ce
Binary files /dev/null and b/doc/fr/images/button-print-self-test-page.gif differ
diff --git a/doc/fr/images/button-print-test-page.gif b/doc/fr/images/button-print-test-page.gif
new file mode 100644 (file)
index 0000000..6e90992
Binary files /dev/null and b/doc/fr/images/button-print-test-page.gif differ
diff --git a/doc/fr/images/button-publish-printer.gif b/doc/fr/images/button-publish-printer.gif
new file mode 100644 (file)
index 0000000..51fbc05
Binary files /dev/null and b/doc/fr/images/button-publish-printer.gif differ
diff --git a/doc/fr/images/button-reject-jobs.gif b/doc/fr/images/button-reject-jobs.gif
new file mode 100644 (file)
index 0000000..690bbaa
Binary files /dev/null and b/doc/fr/images/button-reject-jobs.gif differ
diff --git a/doc/fr/images/button-release-job.gif b/doc/fr/images/button-release-job.gif
new file mode 100644 (file)
index 0000000..dd053b4
Binary files /dev/null and b/doc/fr/images/button-release-job.gif differ
diff --git a/doc/fr/images/button-restart-job.gif b/doc/fr/images/button-restart-job.gif
new file mode 100644 (file)
index 0000000..0f111a9
Binary files /dev/null and b/doc/fr/images/button-restart-job.gif differ
diff --git a/doc/fr/images/button-save-changes.gif b/doc/fr/images/button-save-changes.gif
new file mode 100644 (file)
index 0000000..f13b94d
Binary files /dev/null and b/doc/fr/images/button-save-changes.gif differ
diff --git a/doc/fr/images/button-search.gif b/doc/fr/images/button-search.gif
new file mode 100644 (file)
index 0000000..633193e
Binary files /dev/null and b/doc/fr/images/button-search.gif differ
diff --git a/doc/fr/images/button-set-allowed-users.gif b/doc/fr/images/button-set-allowed-users.gif
new file mode 100644 (file)
index 0000000..195460c
Binary files /dev/null and b/doc/fr/images/button-set-allowed-users.gif differ
diff --git a/doc/fr/images/button-set-as-default.gif b/doc/fr/images/button-set-as-default.gif
new file mode 100644 (file)
index 0000000..c06b56e
Binary files /dev/null and b/doc/fr/images/button-set-as-default.gif differ
diff --git a/doc/fr/images/button-set-printer-options.gif b/doc/fr/images/button-set-printer-options.gif
new file mode 100644 (file)
index 0000000..5223d3a
Binary files /dev/null and b/doc/fr/images/button-set-printer-options.gif differ
diff --git a/doc/fr/images/button-show-active.gif b/doc/fr/images/button-show-active.gif
new file mode 100644 (file)
index 0000000..0328159
Binary files /dev/null and b/doc/fr/images/button-show-active.gif differ
diff --git a/doc/fr/images/button-show-all.gif b/doc/fr/images/button-show-all.gif
new file mode 100644 (file)
index 0000000..4e6c6a8
Binary files /dev/null and b/doc/fr/images/button-show-all.gif differ
diff --git a/doc/fr/images/button-show-completed.gif b/doc/fr/images/button-show-completed.gif
new file mode 100644 (file)
index 0000000..7a71e5a
Binary files /dev/null and b/doc/fr/images/button-show-completed.gif differ
diff --git a/doc/fr/images/button-show-next.gif b/doc/fr/images/button-show-next.gif
new file mode 100644 (file)
index 0000000..4817478
Binary files /dev/null and b/doc/fr/images/button-show-next.gif differ
diff --git a/doc/fr/images/button-show-previous.gif b/doc/fr/images/button-show-previous.gif
new file mode 100644 (file)
index 0000000..1b1ee4b
Binary files /dev/null and b/doc/fr/images/button-show-previous.gif differ
diff --git a/doc/fr/images/button-sort-ascending.gif b/doc/fr/images/button-sort-ascending.gif
new file mode 100644 (file)
index 0000000..41db4f6
Binary files /dev/null and b/doc/fr/images/button-sort-ascending.gif differ
diff --git a/doc/fr/images/button-sort-descending.gif b/doc/fr/images/button-sort-descending.gif
new file mode 100644 (file)
index 0000000..9bd48d9
Binary files /dev/null and b/doc/fr/images/button-sort-descending.gif differ
diff --git a/doc/fr/images/button-start-class.gif b/doc/fr/images/button-start-class.gif
new file mode 100644 (file)
index 0000000..fa10ce6
Binary files /dev/null and b/doc/fr/images/button-start-class.gif differ
diff --git a/doc/fr/images/button-start-printer.gif b/doc/fr/images/button-start-printer.gif
new file mode 100644 (file)
index 0000000..cc0f3dd
Binary files /dev/null and b/doc/fr/images/button-start-printer.gif differ
diff --git a/doc/fr/images/button-stop-class.gif b/doc/fr/images/button-stop-class.gif
new file mode 100644 (file)
index 0000000..913abd0
Binary files /dev/null and b/doc/fr/images/button-stop-class.gif differ
diff --git a/doc/fr/images/button-stop-printer.gif b/doc/fr/images/button-stop-printer.gif
new file mode 100644 (file)
index 0000000..f4eef6e
Binary files /dev/null and b/doc/fr/images/button-stop-printer.gif differ
diff --git a/doc/fr/images/button-unpublish-printer.gif b/doc/fr/images/button-unpublish-printer.gif
new file mode 100644 (file)
index 0000000..699cd2d
Binary files /dev/null and b/doc/fr/images/button-unpublish-printer.gif differ
diff --git a/doc/fr/images/button-use-default-config.gif b/doc/fr/images/button-use-default-config.gif
new file mode 100644 (file)
index 0000000..cfc5659
Binary files /dev/null and b/doc/fr/images/button-use-default-config.gif differ
diff --git a/doc/fr/images/button-view-access-log.gif b/doc/fr/images/button-view-access-log.gif
new file mode 100644 (file)
index 0000000..195457d
Binary files /dev/null and b/doc/fr/images/button-view-access-log.gif differ
diff --git a/doc/fr/images/button-view-error-log.gif b/doc/fr/images/button-view-error-log.gif
new file mode 100644 (file)
index 0000000..8f699e0
Binary files /dev/null and b/doc/fr/images/button-view-error-log.gif differ
diff --git a/doc/fr/images/button-view-page-log.gif b/doc/fr/images/button-view-page-log.gif
new file mode 100644 (file)
index 0000000..b7751f4
Binary files /dev/null and b/doc/fr/images/button-view-page-log.gif differ
diff --git a/doc/fr/images/button-view-printable-version.gif b/doc/fr/images/button-view-printable-version.gif
new file mode 100644 (file)
index 0000000..84c5bc9
Binary files /dev/null and b/doc/fr/images/button-view-printable-version.gif differ
diff --git a/doc/fr/index.html.in b/doc/fr/index.html.in
new file mode 100644 (file)
index 0000000..255facd
--- /dev/null
@@ -0,0 +1,278 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>Accueil - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="Common UNIX Printing System @CUPS_VERSION@">
+<TR CLASS="header">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>Common UNIX Printing System @CUPS_VERSION@@CUPS_REVISION@</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="sel" HREF="/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Accueil&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/admin/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Administration&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/classes/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Classes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/help/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Documentation/Aide&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/jobs/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Tâches&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/printers/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" VALIGN="TOP" CLASS="page">
+
+<H2 CLASS="title">Bienvenue !</H2>
+
+<P>Ces pages Web vous permettent de gérer vos imprimantes et vos tâches
+d'impression comme d'administrer le système. Cliquez sur les onglets ci-dessus ou
+sur les boutons ci-dessous pour effectuer une action.</P>
+
+<P>
+<A HREF="/help/"><IMG SRC="/images/button-help.gif" CLASS="button" ALT="Aide"></A>
+<A HREF="/admin?OP=add-class"><IMG SRC="/images/button-add-class.gif" CLASS="button" ALT="Ajouter une classe"></A>
+<A HREF="/admin?OP=add-printer"><IMG SRC="/images/button-add-printer.gif" CLASS="button" ALT="Ajouter une imprimante"></A>
+<A HREF="/classes"><IMG SRC="/images/button-manage-classes.gif" CLASS="button" ALT="Administrer les classes"></A>
+<A HREF="/jobs"><IMG SRC="/images/button-manage-jobs.gif" CLASS="button" ALT="Administrer les tâches"></A>
+<A HREF="/printers"><IMG SRC="/images/button-manage-printers.gif" CLASS="button" ALT="Administrer les imprimantes"></A>
+<A HREF="/admin"><IMG SRC="/images/button-manage-server.gif" CLASS="button" ALT="Administrer le serveur"></A>
+</P>
+
+<P><I>Si l'on vous demande de vous identifier, utilisez votre nom d'utilisateur et
+votre mot de passe UNIX ou bien identifiez-vous en tant que "root".</I></P>
+
+<H2 CLASS="title">À propos de CUPS</H2>
+
+<P>
+<IMG SRC="/images/happy.gif" ALIGN="LEFT" WIDTH="196" HEIGHT="144"
+STYLE="padding-right: 10px;" ALT="Ordinateur content et imprimante">
+
+<A HREF="http://www.easysw.com/"><IMG SRC="/images/esp-logo.gif"
+ALIGN="RIGHT" WIDTH="110" HEIGHT="68" BORDER="0"
+STYLE="padding-left: 10px; padding-bottom: 10px;"
+ALT="Easy Software Products"></A>
+
+CUPS propose une interface portable pour l'impression sur les systèmes
+UNIX<SUP>&reg;</SUP>. Ce logiciel est développé et maintenu par <A HREF="http://www.easysw.com">Easy Software
+Products</a> afin de promouvoir une solution standard pour l'impression. CUPS
+est le système d'impression standard de MacOS<SUP>&reg;</SUP> X et de la
+plupart des distributions Linux<SUP>&reg;</SUP>.</P>
+
+<P>CUPS repose sur le protocole <A HREF="http://www.pwg.org/ipp/"
+TARGET="_blank">IPP ( Internet Printing Protocol )</A> pour la gestion des tâches
+d'impression et, pour être utilisable en pratique, y ajoute la détection
+d'imprimantes en réseau et des options d'impression fondées sur le format PPD (
+PostScript Printer Description ).<BR CLEAR="ALL"></P>
+
+<H2 CLASS="title">Pilotes d'imprimante et Assistance</H2>
+
+<P>Visitez le site officiel de CUPS pour avoir des pilotes d'imprimante ou toute
+autre assistance:</P>
+
+<PRE>
+    <A HREF="http://www.cups.org/" TARGET="_blank">www.cups.org</A>
+</PRE>
+
+<P>Vous pouvez obtenir un suivi commercial et une version améliorée de CUPS, <A
+HREF="http://www.easysw.com/printpro/">ESP Print Pro</A>, à l'adresse suivante:</P>
+
+<PRE>
+    <A HREF="http://www.easysw.com/" TARGET="_blank">www.easysw.com</A>
+</PRE>
+
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="header">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Le logiciel CUPS ( Common UNIX Printing System ) et son logo sont
+propriété commerciale de <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS est sous copyright 1997-2006 par Easy Software Products, Tous
+Droits Réservés.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>Accueil - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="Common UNIX Printing System @CUPS_VERSION@">
+<TR CLASS="header">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>Common UNIX Printing System @CUPS_VERSION@@CUPS_REVISION@</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="sel" HREF="/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Accueil&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/admin/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Administration&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/classes/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Classes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/help/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Documentation/Aide&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/jobs/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Tâches&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/printers/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" VALIGN="TOP" CLASS="page">
+
+<H2 CLASS="title">Bienvenue !</H2>
+
+<P>Ces pages Web vous permettent de gérer vos imprimantes et vos tâches
+d'impression comme d'administrer le système. Cliquez sur les onglets ci-dessus ou
+sur les boutons ci-dessous pour effectuer une action.</P>
+
+<P>
+<A HREF="/help/"><IMG SRC="/images/button-help.gif" CLASS="button" ALT="Aide"></A>
+<A HREF="/admin?OP=add-class"><IMG SRC="/images/button-add-class.gif" CLASS="button" ALT="Ajouter une classe"></A>
+<A HREF="/admin?OP=add-printer"><IMG SRC="/images/button-add-printer.gif" CLASS="button" ALT="Ajouter une imprimante"></A>
+<A HREF="/classes"><IMG SRC="/images/button-manage-classes.gif" CLASS="button" ALT="Administrer les classes"></A>
+<A HREF="/jobs"><IMG SRC="/images/button-manage-jobs.gif" CLASS="button" ALT="Administrer les tâches"></A>
+<A HREF="/printers"><IMG SRC="/images/button-manage-printers.gif" CLASS="button" ALT="Administrer les imprimantes"></A>
+<A HREF="/admin"><IMG SRC="/images/button-manage-server.gif" CLASS="button" ALT="Administrer le serveur"></A>
+</P>
+
+<P><I>Si l'on vous demande de vous identifier, utilisez votre nom d'utilisateur et
+votre mot de passe UNIX ou bien identifiez-vous en tant que "root".</I></P>
+
+<H2 CLASS="title">À propos de CUPS</H2>
+
+<P>
+<IMG SRC="/images/happy.gif" ALIGN="LEFT" WIDTH="196" HEIGHT="144"
+STYLE="padding-right: 10px;" ALT="Ordinateur content et imprimante">
+
+<A HREF="http://www.easysw.com/"><IMG SRC="/images/esp-logo.gif"
+ALIGN="RIGHT" WIDTH="110" HEIGHT="68" BORDER="0"
+STYLE="padding-left: 10px; padding-bottom: 10px;"
+ALT="Easy Software Products"></A>
+
+CUPS propose une interface portable pour l'impression sur les systèmes
+UNIX<SUP>&reg;</SUP>. Ce logiciel est développé et maintenu par <A HREF="http://www.easysw.com">Easy Software
+Products</a> afin de promouvoir une solution standard pour l'impression. CUPS
+est le système d'impression standard de MacOS<SUP>&reg;</SUP> X et de la
+plupart des distributions Linux<SUP>&reg;</SUP>.</P>
+
+<P>CUPS repose sur le protocole <A HREF="http://www.pwg.org/ipp/"
+TARGET="_blank">IPP ( Internet Printing Protocol )</A> pour la gestion des tâches
+d'impression et, pour être utilisable en pratique, y ajoute la détection
+d'imprimantes en réseau et des options d'impression fondées sur le format PPD (
+PostScript Printer Description ).<BR CLEAR="ALL"></P>
+
+<H2 CLASS="title">Pilotes d'imprimante et Assistance</H2>
+
+<P>Visitez le site officiel de CUPS pour avoir des pilotes d'imprimante ou toute
+autre assistance:</P>
+
+<PRE>
+    <A HREF="http://www.cups.org/" TARGET="_blank">www.cups.org</A>
+</PRE>
+
+<P>Vous pouvez obtenir un suivi commercial et une version améliorée de CUPS, <A
+HREF="http://www.easysw.com/printpro/">ESP Print Pro</A>, à l'adresse suivante:</P>
+
+<PRE>
+    <A HREF="http://www.easysw.com/" TARGET="_blank">www.easysw.com</A>
+</PRE>
+
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="header">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Le logiciel CUPS ( Common UNIX Printing System ) et son logo sont
+propriété commerciale de <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS est sous copyright 1997-2006 par Easy Software Products, Tous
+Droits Réservés.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
index 100a3d82fd04c789acda242df198777a2a43c64e..26ea439f4a228eb00920322173866411bf2cd419 100644 (file)
@@ -87,18 +87,11 @@ information.</p>
 <ul>
        <li><a href='#cups_adv_e'><tt>cups_adv_e</tt></a> </li>
        <li><a href='#cups_bool_e'><tt>cups_bool_e</tt></a> </li>
-       <li><a href='#cups_cspace_e'><tt>cups_cspace_e</tt></a> </li>
-       <li><a href='#cups_cut_e'><tt>cups_cut_e</tt></a> </li>
-       <li><a href='#cups_edge_e'><tt>cups_edge_e</tt></a> </li>
-       <li><a href='#cups_jog_e'><tt>cups_jog_e</tt></a> </li>
-       <li><a href='#cups_mode_e'><tt>cups_mode_e</tt></a> </li>
-       <li><a href='#cups_order_e'><tt>cups_order_e</tt></a> </li>
-       <li><a href='#cups_orient_e'><tt>cups_orient_e</tt></a> </li>
 </ul>
 <!-- NEW PAGE -->
 <h3 class='title'><a name='cups_adv_e'>cups_adv_e</a></h3>
 <h4>Description</h4>
-<p></p>
+<p>AdvanceMedia attribute values</p>
 <h4>Values</h4>
 <div class='table'><table align='center' border='1' width='80%'>
 <thead><tr><th>Name</th><th>Description</th></tr></thead>
@@ -121,125 +114,6 @@ information.</p>
 <tr><td><tt>CUPS_TRUE</tt> </td><td>Logical true</td></tr>
 </tbody></table></div>
 <!-- NEW PAGE -->
-<h3 class='title'><a name='cups_cspace_e'>cups_cspace_e</a></h3>
-<h4>Description</h4>
-<p></p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_CSPACE_CIELab</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>CIE Lab </td></tr>
-<tr><td><tt>CUPS_CSPACE_CIEXYZ</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>CIE XYZ </td></tr>
-<tr><td><tt>CUPS_CSPACE_CMY</tt> </td><td>Cyan, magenta, yellow</td></tr>
-<tr><td><tt>CUPS_CSPACE_CMYK</tt> </td><td>Cyan, magenta, yellow, black</td></tr>
-<tr><td><tt>CUPS_CSPACE_GMCK</tt> </td><td>Gold, magenta, yellow, black</td></tr>
-<tr><td><tt>CUPS_CSPACE_GMCS</tt> </td><td>Gold, magenta, yellow, silver</td></tr>
-<tr><td><tt>CUPS_CSPACE_GOLD</tt> </td><td>Gold foil</td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC1</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 1 color </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC2</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 2 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC3</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 3 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC4</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 4 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC5</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 5 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC6</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 6 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC7</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 7 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC8</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 8 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICC9</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 9 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICCA</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 10 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICCB</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 11 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICCC</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 12 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICCD</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 13 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICCE</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 14 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_ICCF</tt> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></td><td>ICC-based, 15 colors </td></tr>
-<tr><td><tt>CUPS_CSPACE_K</tt> </td><td>Black</td></tr>
-<tr><td><tt>CUPS_CSPACE_KCMY</tt> </td><td>Black, cyan, magenta, yellow</td></tr>
-<tr><td><tt>CUPS_CSPACE_KCMYcm</tt> </td><td>Black, cyan, magenta, yellow, *
-light-cyan, light-magenta</td></tr>
-<tr><td><tt>CUPS_CSPACE_RGB</tt> </td><td>Red, green, blue</td></tr>
-<tr><td><tt>CUPS_CSPACE_RGBA</tt> </td><td>Red, green, blue, alpha</td></tr>
-<tr><td><tt>CUPS_CSPACE_RGBW</tt> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></td><td>Red, green, blue, white </td></tr>
-<tr><td><tt>CUPS_CSPACE_SILVER</tt> </td><td>Silver foil</td></tr>
-<tr><td><tt>CUPS_CSPACE_W</tt> </td><td>Luminance</td></tr>
-<tr><td><tt>CUPS_CSPACE_WHITE</tt> </td><td>White ink (as black)</td></tr>
-<tr><td><tt>CUPS_CSPACE_YMC</tt> </td><td>Yellow, magenta, cyan</td></tr>
-<tr><td><tt>CUPS_CSPACE_YMCK</tt> </td><td>Yellow, magenta, cyan, black</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='cups_cut_e'>cups_cut_e</a></h3>
-<h4>Description</h4>
-<p></p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_CUT_FILE</tt> </td><td>Cut the roll after this file</td></tr>
-<tr><td><tt>CUPS_CUT_JOB</tt> </td><td>Cut the roll after this job</td></tr>
-<tr><td><tt>CUPS_CUT_NONE</tt> </td><td>Never cut the roll</td></tr>
-<tr><td><tt>CUPS_CUT_PAGE</tt> </td><td>Cut the roll after this page</td></tr>
-<tr><td><tt>CUPS_CUT_SET</tt> </td><td>Cut the roll after this set</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='cups_edge_e'>cups_edge_e</a></h3>
-<h4>Description</h4>
-<p></p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_EDGE_BOTTOM</tt> </td><td>Leading edge is the bottom of the page</td></tr>
-<tr><td><tt>CUPS_EDGE_LEFT</tt> </td><td>Leading edge is the left of the page</td></tr>
-<tr><td><tt>CUPS_EDGE_RIGHT</tt> </td><td>Leading edge is the right of the page</td></tr>
-<tr><td><tt>CUPS_EDGE_TOP</tt> </td><td>Leading edge is the top of the page</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='cups_jog_e'>cups_jog_e</a></h3>
-<h4>Description</h4>
-<p></p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_JOG_FILE</tt> </td><td>Move pages after this file</td></tr>
-<tr><td><tt>CUPS_JOG_JOB</tt> </td><td>Move pages after this job</td></tr>
-<tr><td><tt>CUPS_JOG_NONE</tt> </td><td>Never move pages</td></tr>
-<tr><td><tt>CUPS_JOG_SET</tt> </td><td>Move pages after this set</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='cups_mode_e'>cups_mode_e</a></h3>
-<h4>Description</h4>
-<p>Raster modes</p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_RASTER_READ</tt> </td><td>Open stream for reading</td></tr>
-<tr><td><tt>CUPS_RASTER_WRITE</tt> </td><td>Open stream for writing</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='cups_order_e'>cups_order_e</a></h3>
-<h4>Description</h4>
-<p></p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_ORDER_BANDED</tt> </td><td>CCC MMM YYY KKK ...</td></tr>
-<tr><td><tt>CUPS_ORDER_CHUNKED</tt> </td><td>CMYK CMYK CMYK ...</td></tr>
-<tr><td><tt>CUPS_ORDER_PLANAR</tt> </td><td>CCC ... MMM ... YYY ... KKK ...</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
-<h3 class='title'><a name='cups_orient_e'>cups_orient_e</a></h3>
-<h4>Description</h4>
-<p></p>
-<h4>Values</h4>
-<div class='table'><table align='center' border='1' width='80%'>
-<thead><tr><th>Name</th><th>Description</th></tr></thead>
-<tbody>
-<tr><td><tt>CUPS_ORIENT_0</tt> </td><td>Don't rotate the page</td></tr>
-<tr><td><tt>CUPS_ORIENT_180</tt> </td><td>Turn the page upside down</td></tr>
-<tr><td><tt>CUPS_ORIENT_270</tt> </td><td>Rotate the page clockwise</td></tr>
-<tr><td><tt>CUPS_ORIENT_90</tt> </td><td>Rotate the page counter-clockwise</td></tr>
-</tbody></table></div>
-<!-- NEW PAGE -->
 <h2 class='title'><a name='FUNCTIONS'>Functions</a></h2>
 <ul>
        <li><a href='#cupsRasterClose'><tt>cupsRasterClose()</tt></a> </li>
@@ -286,6 +160,10 @@ can make changes to the cups_page_header2_t data as needed to use a
 supported raster format and then returns 0 on success and -1 if the
 requested attributes cannot be supported.
 
+cupsRasterInterpretPPD() supports a subset of the PostScript language.
+Currently only the [, ], &lt;&lt;, &gt;&gt;, {, }, cleartomark, copy, dup, index,
+pop, roll, setpagedevice, and stopped operators are supported.
+
 </p>
 <h4>Syntax</h4>
 <pre>
@@ -585,7 +463,7 @@ factor not applied) </td></tr>
 <!-- NEW PAGE -->
 <h3 class='title'><a name='cups_page_header_s'>cups_page_header_s</a></h3>
 <h4>Description</h4>
-<p></p>
+<p>Version 1 Page Header</p>
 <h4>Definition</h4>
 <pre>
 struct cups_page_header_s
@@ -680,6 +558,7 @@ struct cups_page_header_s
 <ul>
        <li><a href='#cups_interpret_cb_t'><tt>cups_interpret_cb_t</tt></a> </li>
        <li><a href='#cups_page_header2_t'><tt>cups_page_header2_t</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
+       <li><a href='#cups_page_header_t'><tt>cups_page_header_t</tt></a> </li>
        <li><a href='#cups_raster_t'><tt>cups_raster_t</tt></a> </li>
 </ul>
 <!-- NEW PAGE -->
@@ -699,6 +578,14 @@ typedef int (*cups_interpret_cb_t)(<a href='#cups_page_header2_t'>cups_page_head
 typedef struct <a href='#cups_page_header2_s'>cups_page_header2_s</a> cups_page_header2_t;
 </pre>
 <!-- NEW PAGE -->
+<h3 class='title'><a name='cups_page_header_t'>cups_page_header_t</a></h3>
+<h4>Description</h4>
+<p>Version 1 Page Header</p>
+<h4>Definition</h4>
+<pre>
+typedef struct <a href='#cups_page_header_s'>cups_page_header_s</a> cups_page_header_t;
+</pre>
+<!-- NEW PAGE -->
 <h3 class='title'><a name='cups_raster_t'>cups_raster_t</a></h3>
 <h4>Description</h4>
 <p>Raster stream data</p>
index 5b3a25713a35652cfe4ee818306c1c3601d36ec6..224a3938614743499857e45b8ab598f8f545b9e6 100644 (file)
@@ -5,7 +5,7 @@
 </HEAD>
 <BODY>
 
-<P ALIGN="CENTER">Copyright 1997-2006 by Easy Software Products<BR>
+<P ALIGN="CENTER">Copyright 1997-2007 by Easy Software Products<BR>
 44141 AIRPORT VIEW DR STE 204<BR>
 HOLLYWOOD, MARYLAND 20636 USA<BR>
 <BR>
index 4ae55a54f8175d76a9984cb82f9722f10a7edc60..e2cc3618397dc591a366e42af214be5ea52bf5d5 100644 (file)
 </HEAD>
 <BODY>
 
-<H2 CLASS="title"><A NAME="URI">Network Printer URIs</A></H2>
+<P>This help document describes how to discover, configure, and use TCP/IP network printers with CUPS.</P>
 
-<P>Once you have set the IP address you can access the printer or
-print server using the <CODE>ipp</CODE>, <CODE>lpd</CODE>, or
-<CODE>socket</CODE> backends. The following is a list of common
-network interfaces and printer servers and the settings you
-should use with CUPS:</P>
+<H2 CLASS="title"><A NAME="ADDRESS">Getting the IP Address</A></H2>
+
+<P>Every network printer or print server has a unique Internet Protocol (IP) address associated with it. This address is either configured manually or set using an automatic network protocol such as the <A HREF="#BOOTP">Boot Protocol (BOOTP)</A>, <A HREF="#DHCP">Dynamic Host Control Protocol (DHCP)</A>, Reverse Address Resolution Protocol (RARP), or ZeroConf.</P>
+
+<P>You can normally find the IP address of a printer on the printer's control panel or by printing the configuration or status page. The <A HREF="#SNMP">Simple Network Management Protocol (SNMP)</A> can also be used to get the IP address remotely, which happens automatically when you visit the CUPS administration web page or choose an available CUPS device when adding a printer.</P>
+
+
+<H2 CLASS="title"><A NAME="CONFIG">Configuring the IP Address</A></H2>
+
+<P>When you first install a network printer or print server on your LAN, you need to set the Internet Protocol ("IP") address. Most higher-end "workgroup" printers allow you to set the address through the printer control panel. However, if you have many printers you will want to assign the addresses remotely - this makes administration a bit easier and avoids assigning duplicate addresses accidentally.</P>
+
+<P>To setup your printer or print server for remote address assignment, you'll need the Ethernet Media Access Control ("MAC") address, also sometimes called a node address, and the IP address you want to use for the device. The Ethernet MAC address can often be found on the printer test page or bottom of the print server.</P>
+
+<H3><A NAME="DHCP">Configuring the IP Address Using DHCP</A></H3>
+
+<P>The DHCP protocol is the usual way of setting the IP address of a printer on a managed network. Using the standard <TT>dhcpd(8)</TT> program supplied with UNIX you simply need to add a line to the <VAR>/etc/dhcpd.conf</VAR> file:</P>
+
+<PRE CLASS="command">
+host <I>hostname</I> {
+  hardware ethernet <I>mac-address</I>;
+  fixed-address <I>ip-address</I>;
+}
+</PRE>
+
+<P>Make sure that the hostname you use is also listed in the <VAR>/etc/hosts</VAR> file or is registered with your DNS server.</P>
+
+<H3><A NAME="BOOTP">Configuring the IP Address Using BOOTP</A></H3>
+
+<P>The BOOTP protocol is used when you need to provide additional information such as the location of a configuration file to the network interface. Using the standard <TT>bootpd(8)</TT> program supplied with UNIX you simply need to add a line to the <VAR>/etc/bootptab</VAR> file; for IRIX:</P>
+
+<PRE CLASS="command">
+myprinter 08:00:69:00:12:34 192.0.2.2 <VAR>myprinter.boot</VAR>
+</PRE>
+
+<P>Newer versions of <TT>bootpd</TT> use a different format:</P>
+
+<PRE CLASS="command">
+myprinter:ha=080069001234:ip=192.0.2.2:<VAR>t144=myprinter.boot</VAR>
+</PRE>
+
+<P>The <VAR>myprinter.boot</VAR> file resides in the <VAR>/usr/local/boot</VAR> directory by default. If you do not need to provide a boot file you may leave the last part of the line blank.</P>
+
+<BLOCKQUOTE><B>Note:</B> Some versions of UNIX do not enable the BOOTP service by default. The <VAR>/etc/inetd.conf</VAR> or <VAR>/etc/xinetd.d/bootp</VAR> file usually contains a line for the BOOTP service that can be uncommented if needed.</BLOCKQUOTE>
+
+
+<H2 CLASS="title"><A NAME="VERIFY">Verifying the Printer Connection</A></H2>
+
+<P>To test that the IP address has been successfully assigned and
+that the printer is properly connected to your LAN, type:</P>
+
+<PRE CLASS="command">
+<KBD>ping ip-address</KBD>
+</PRE>
+
+<P>If the connection is working properly you will see something
+like:</P>
+
+<PRE CLASS="command">
+<KBD>ping myprinter</KBD>
+PING myprinter (192.0.2.2): 56 data bytes
+64 bytes from 192.0.2.2: icmp_seq=0 ttl=15 time=5 ms
+64 bytes from 192.0.2.2: icmp_seq=1 ttl=15 time=3 ms
+64 bytes from 192.0.2.2: icmp_seq=2 ttl=15 time=3 ms
+64 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms
+</PRE>
+
+<P>If not, verify that the printer or print server is connected
+to the LAN, it is powered on, the LAN cabling is good, and the IP
+address is set correctly. You can usually see the current IP
+address and network status by printing a configuration or test
+page on the device.</P>
+
+
+<H2 CLASS="title"><A NAME="PROTOCOLS">Network Protocols Supported by CUPS</H2>
+
+<P>CUPS supports most network printers using one of three TCP/IP-based protocols. Printer discovery is currently accomplished using the SNMP protocol, however future versions of CUPS will also include support for multicast DNS service discovery as well.</P>
+
+<H3><A NAME="SOCKET">AppSocket Protocol</A></H3>
+
+<P>The AppSocket protocol (sometimes also called the JetDirect protocol, owing to its origins with the HP JetDirect network interfaces) is the simplest, fastest, and generally the most reliable network protocol used for printers. AppSocket printing normally happens over port 9100 and uses the <tt>socket</tt> URI scheme:</P>
+
+<PRE>
+socket://<i>ip-address-or-hostname</i>
+socket://<i>ip-address-or-hostname</i>?waiteof=false
+socket://<i>ip-address-or-hostname</i>:<i>port-number</i>
+socket://<i>ip-address-or-hostname</i>:<i>port-number</i>?waiteof=false
+</PRE>
+
+<P>The "waiteof" option controls whether the <tt>socket</tt> backend waits for the printer to complete the printing of the job. The default is to wait.</P>
+
+<H3><A NAME="IPP">Internet Printing Protocol (IPP)</A></H3>
+
+<P>IPP is the only protocol that CUPS supports natively, and is also supported by many network printers. We recommend using this protocol over others whenever the printer or server supports it. IPP printing normally happens over port 631 and uses the <tt>http</tt> and <tt>ipp</tt> URI schemes:</P>
+
+<PRE>
+http://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>
+http://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>?<i>option=value</i>
+http://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>?<i>option=value&option=value</i>
+ipp://<i>ip-address-or-hostname</i>/<i>resource</i>
+ipp://<i>ip-address-or-hostname</i>/<i>resource</i>?<i>option=value</i>
+ipp://<i>ip-address-or-hostname</i>/<i>resource</i>?<i>option=value&option=value</i>
+ipp://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>
+ipp://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>?<i>option=value</i>
+ipp://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>?<i>option=value&option=value</i>
+</PRE>
+
+<P>The <tt>ipp</tt> backend supports many options, which are summarized in <A HREF="#TABLE2">Table 2</A>.</P>
+
+<DIV CLASS="table"><TABLE SUMMARY="IPP URI Options">
+<CAPTION>Table 2: <A NAME="TABLE2">IPP URI Options</A></CAPTION>
+<THEAD>
+<TR>
+       <TH>Option</TH>
+       <TH>Description</TH>
+</TR>
+</THEAD>
+<TBODY>
+<TR>
+       <TD><TT>compression=gzip</TT></TD>
+       <TD>Specifies that print data should be compressed before sending.</TD>
+</TR>
+<TR>
+       <TD><TT>encryption=always</TT></TD>
+       <TD>Specifies that the connection to the IPP server should be encrypted using SSL.</TD>
+</TR>
+<TR>
+       <TD><TT>encryption=ifrequested</TT></TD>
+       <TD>Specifies that the connection to the IPP server should only be encrypted if the server requests it.</TD>
+</TR>
+<TR>
+       <TD><TT>encryption=never</TT></TD>
+       <TD>Specifies that the connection to the IPP server should not be encrypted.</TD>
+</TR>
+<TR>
+       <TD><TT>encryption=required</TT></TD>
+       <TD>Specifies that the connection to the IPP server should be encrypted using TLS.</TD>
+</TR>
+<TR>
+       <TD><TT>version=1.0</TT></TD>
+       <TD>Specifies that version 1.0 of the IPP protocol should be used instead of the default version 1.1.</TD>
+</TR>
+<TR>
+       <TD><TT>waitjob=false</TT></TD>
+       <TD>Specifies that the IPP backend should not wait for the job to complete.</TD>
+</TR>
+<TR>
+       <TD><TT>waitprinter=false</TT></TD>
+       <TD>Specifies that the IPP backend should not wait for the printer to become idle before sending the print job.</TD>
+</TR>
+</TBODY>
+</TABLE></DIV>
+
+<H3><A NAME="LPD">Line Printer Daemon (LPD) Protocol</A></H3>
+
+<P>LPD is the original network printing protocol and is supported by many network printers. Due to limitations in the LPD protocol, we do not recommend using it if the printer or server supports one of the other protocols. LPD printing normally happens over port 515 and uses the <tt>lpd</tt> URI scheme:</P>
+
+<PRE>
+lpd://<i>ip-address-or-hostname</i>/<i>queue</i>
+lpd://<i>ip-address-or-hostname</i>/<i>queue</i>?<i>option=value</i>
+lpd://<i>ip-address-or-hostname</i>/<i>queue</i>?<i>option=value&option=value</i>
+</PRE>
+
+<P><A HREF="#TABLE3">Table 3</A> summarizes the options supported by the <tt>lpd</tt> backend.</P>
+
+<DIV CLASS="table"><TABLE SUMMARY="LPD URI Options">
+<CAPTION>Table 3: <A NAME="TABLE3">LPD URI Options</A></CAPTION>
+<THEAD>
+<TR>
+       <TH>Option</TH>
+       <TH>Description</TH>
+</TR>
+</THEAD>
+<TBODY>
+<TR>
+       <TD><TT>banner=on</TT></TD>
+       <TD>Specifies that a banner page should be printed by the server.</TD>
+</TR>
+<TR>
+       <TD><TT>contimeout=<I>seconds</I></TT></TD>
+       <TD>Specifies the number of seconds to wait for the connection to the server to complete.</TD>
+</TR>
+<TR>
+       <TD><TT>format=c</TT></TD>
+       <TD>Specifies that the print data is a CIF file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=d</TT></TD>
+       <TD>Specifies that the print data is a DVI file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=f</TT></TD>
+       <TD>Specifies that the print data is a plain text file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=g</TT></TD>
+       <TD>Specifies that the print data is a Berkeley plot file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=l</TT></TD>
+       <TD>Specifies that the print data is a raw (preformatted) print file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=n</TT></TD>
+       <TD>Specifies that the print data is a ditroff file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=o</TT></TD>
+       <TD>Specifies that the print data is a PostScript file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=p</TT></TD>
+       <TD>Specifies that the print data is a plain text file that should be "pretty" printed with a header and footer.</TD>
+</TR>
+<TR>
+       <TD><TT>format=r</TT></TD>
+       <TD>Specifies that the print data is a FORTRAN carriage control file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=t</TT></TD>
+       <TD>Specifies that the print data is a troff Graphic Systems C/A/T phototypesetter file.</TD>
+</TR>
+<TR>
+       <TD><TT>format=v</TT></TD>
+       <TD>Specifies that the print data is a Sun raster file.</TD>
+</TR>
+<TR>
+       <TD><TT>order=data,control</TT></TD>
+       <TD>Specifies that the print data files should be sent before the control file.</TD>
+</TR>
+<TR>
+       <TD><TT>reserve=none</TT></TD>
+       <TD>Specifies that the backend should not reserve a source port.</TD>
+</TR>
+<TR>
+       <TD><TT>reserve=rfc1179</TT></TD>
+       <TD>Specifies that the backend should reserve a source port from 721 to 731 as required by RFC 1179.</TD>
+</TR>
+<TR>
+       <TD><TT>sanitize_title=no</TT></TD>
+       <TD>Specifies that the job title string should not be restricted to ASCII characters.</TD>
+</TR>
+<TR>
+       <TD><TT>sanitize_title=yes</TT></TD>
+       <TD>Specifies that the job title string should be restricted to ASCII characters.</TD>
+</TR>
+<TR>
+       <TD><TT>timeout=<I>seconds</I></TT></TD>
+       <TD>Specifies the number of seconds to wait for LPD commands to complete.</TD>
+</TR>
+</TBODY>
+</TABLE></DIV>
+
+
+<H3><A NAME="URI">Common Network Printer URIs</A></H3>
+
+<P>Once you have set the IP address you can access the printer or print server using the <TT>ipp</TT>, <TT>lpd</TT>, or <TT>socket</TT> backends. <A HREF="#TABLE1">Table 1</A> shows a list of common network interfaces and printer servers and the settings you should use with CUPS:</P>
 
 <DIV CLASS="table"><TABLE SUMMARY="Common Device URIs">
-<CAPTION>Table 1: Common Device URIs</CAPTION>
+<CAPTION>Table 1: <A NAME="TABLE1">Common Device URIs</A></CAPTION>
 <THEAD>
 <TR>
        <TH>Model/Manufacturer</TH>
@@ -131,152 +382,155 @@ should use with CUPS:</P>
 </TBODY>
 </TABLE></DIV>
 
-<H2 CLASS="title"><A NAME="ADDRESS">Getting the IP Address</A></H2>
 
-<P>When you first install a network printer or print server on
-your LAN, you need to set the Internet Protocol ("IP") address.
-On most higher-end "workgroup" printers, you can set the address
-through the printer control panel. However, in most cases you
-will want to assign the addresses remotely from your workstation.
-This makes administration a bit easier and avoids assigning
-duplicate addresses accidentally.</P>
-
-<P>To setup your printer or print server for remote address
-assignment, you'll need the Ethernet Media Access Control ("MAC")
-address, also sometimes called a node address, and the IP address
-you want to use for the device. The Ethernet MAC address can
-often be found on the printer test page or bottom of the print
-server.</P>
-
-<H3>Configuring the IP Address Using ARP</H3>
-
-<P>The easiest way to set the IP address of a network device is
-to use the <CODE>arp(8)</CODE> command.  The <CODE>arp</CODE>
-sends an Address Resolution Protocol ("ARP") packet to the
-specified Ethernet MAC address, setting the network device's IP
-address:</P>
+<H2 CLASS="title"><A NAME="SNMP">Troubleshooting SNMP Discovery Problems</A></H2>
+
+<P>Whenever you view the administration web page or a list of supported device URIs, the <tt>snmp</tt> backend will probe the local network(s) using Simple Network Management Protocol (SNMP) broadcasts. Printers that respond to these broadcasts are then interrogated for the make and model and supported protocols, yielding a device URI that can be used to add the printer.</P> 
+
+<P>That said, the SNMP requests sometimes expose problems in vendor SNMP or IPP implementations. If you are experiencing long delays in loading the CUPS web interface administration page, or if you don't see your printer listed, the following instructions will help you to diagnose those problems and/or provide important feedback to the CUPS developers so that we can correct problems and improve the SNMP backend in future releases.</P>
+
+<H3>Quick Fixes</H3>
+
+<P>If you don't use "public" as your community name, create a text file called <VAR>/etc/cups/snmp.conf</VAR> and put the following line in it:</P>
 
 <PRE CLASS="command">
-<KBD>arp -s ip-address ethernet-address</KBD>
-<KBD>arp -s host.domain.com 08:00:69:00:12:34</KBD>
-<KBD>arp -s 192.0.2.2 08:00:69:00:12:34</KBD>
+Community <I>your community name</I>
 </PRE>
 
-<H3>Configuring the IP Address Using RARP</H3>
+<P>If you have more than one community name, list them all on separate lines.</P>
 
-<P>The most flexible way to remotely assign IP addresses under
-UNIX is through the Reverse Address Resolution Protocol ("RARP").
-RARP allows a network device to request an IP address using its
-Ethernet MAC address, and one or more RARP servers on the network
-will respond with an ARP packet with the IP address the device
-can use.</P>
+<P>If you don't support SNMP v1 on your network, you are currently "out of luck". That said, we will be adding v2, v2c, and v3 support in future CUPS releases once we have a handle on the actual requirements people have for such things. Please file or update an <A HREF="http://www.cups.org/str.php">SNMP enhancement request</A> with <em>specific</em> requirements you have - what you need supported, why you need it supported, and how you would like to see the functionality provided/exposed - so that we can do it "right" the first time.</P>
 
-<P>RARP should be used when you have to manage many printers or
-print servers, or when you have a network device that does not
-remember its IP address after a power cycle. If you just have a
-single printer or print server, the <CODE>arp</CODE> command is
-the way to go.</P>
+<H3>Basic Debugging</H3>
 
-<P>Some UNIX operating systems use a program called
-<CODE>rarpd(8)</CODE> to manage RARP. Others, like Linux, support
-this protocol in the kernel. For systems that provide the
-<CODE>rarpd</CODE> program you will need to start it before RARP
-lookups will work:</P>
+<P>The SNMP backend supports a debugging mode that is activated by running it from a shell prompt. If you are using Bash (/bin/bash), Bourne shell (/bin/sh), Korn shell (/bin/ksh), or Z shell (/bin/zsh), you can run the following command to get a verbose log of the SNMP backend:</P>
 
 <PRE CLASS="command">
-<KBD>rarpd</KBD>
+CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp 2>&amp;1 | tee snmp.log
 </PRE>
 
-<P>Under IRIX you can enable this functionality by default
-using:</P>
+<P>For C shell (/bin/csh) and TCsh (/bin/tcsh), use the following command instead:</P>
 
 <PRE CLASS="command">
-<KBD>chkconfig rarpd on</KBD>
+(setenv CUPS_DEBUG_LEVEL 2; /usr/lib/cups/backend/snmp) |& tee snmp.log
 </PRE>
 
-<P>Both the <CODE>rarpd</CODE> program and kernel RARP support
-read a list of Ethernet and IP addresses from the file
-<VAR>/etc/ethers</VAR>. Each line contains the Ethernet address
-(colon delimited) followed by an IP address or hostname like:</P>
+<P>On MacOS X you'll find the SNMP backend in /usr/libexec/cups/backend instead:</P>
 
 <PRE CLASS="command">
-08:00:69:00:12:34 myprinter.mydomain.com
-08:00:69:00:12:34 192.0.2.2
+CUPS_DEBUG_LEVEL=2 /usr/libexec/cups/backend/snmp 2>&amp;1 | tee snmp.log
 </PRE>
 
-<P>Add a line to this file and cycle the power on the printer or
-print server to set its address.</P>
-
-<H3>Configuring the IP Address Using BOOTP</H3>
-
-<P>The BOOTP protocol is used when you need to provide additional
-information such as the location of a configuration file to the
-network interface. Using the standard <CODE>bootpd(8)</CODE>
-program supplied with UNIX you simply need to add a line to the
-<VAR>/etc/bootptab</VAR> file; for IRIX:</P>
-
-<PRE CLASS="command">
-myprinter 08:00:69:00:12:34 192.0.2.2 <VAR>myprinter.boot</VAR>
+<P>The output will look something like this:</P>
+
+<PRE STYLE="margin-left: 36pt">
+ 1  INFO: Using default SNMP Address @LOCAL
+ 2  INFO: Using default SNMP Community public
+ 3  DEBUG: Scanning for devices in "public" via "@LOCAL"...
+ 4  DEBUG: 0.000 Sending 46 bytes to 192.168.2.255...
+ 5  DEBUG: SEQUENCE 44 bytes
+ 6  DEBUG:     INTEGER 1 bytes 0
+ 7  DEBUG:     OCTET STRING 6 bytes "public"
+ 8  DEBUG:     Get-Request-PDU 31 bytes
+ 9  DEBUG:         INTEGER 4 bytes 1149539174
+10  DEBUG:         INTEGER 1 bytes 0
+11  DEBUG:         INTEGER 1 bytes 0
+12  DEBUG:         SEQUENCE 17 bytes
+13  DEBUG:             SEQUENCE 15 bytes
+14  DEBUG:                 OID 11 bytes .1.3.6.1.2.1.25.3.2.1.2.1
+15  DEBUG:                 NULL VALUE 0 bytes
+16  DEBUG: 0.001 Received 55 bytes from 192.168.2.229...
+17  DEBUG: community="public"
+18  DEBUG: request-id=1149539174
+19  DEBUG: error-status=0
+20  DEBUG: SEQUENCE 53 bytes
+21  DEBUG:     INTEGER 1 bytes 0
+22  DEBUG:     OCTET STRING 6 bytes "public"
+23  DEBUG:     Get-Response-PDU 40 bytes
+24  DEBUG:         INTEGER 4 bytes 1149539174
+25  DEBUG:         INTEGER 1 bytes 0
+26  DEBUG:         INTEGER 1 bytes 0
+27  DEBUG:         SEQUENCE 26 bytes
+28  DEBUG:             SEQUENCE 24 bytes
+29  DEBUG:                 OID 11 bytes .1.3.6.1.2.1.25.3.2.1.2.1
+30  DEBUG:                 OID 9 bytes .1.3.6.1.2.1.25.3.1.5
+31  DEBUG: add_cache(addr=0xbfffe170, addrname="192.168.2.229",
+    uri="(null)", id="(null)", make_and_model="(null)")
+32  DEBUG: 0.002 Sending 46 bytes to 192.168.2.229...
+33  DEBUG: SEQUENCE 44 bytes
+34  DEBUG:     INTEGER 1 bytes 0
+35  DEBUG:     OCTET STRING 6 bytes "public"
+36  DEBUG:     Get-Request-PDU 31 bytes
+37  DEBUG:         INTEGER 4 bytes 1149539175
+38  DEBUG:         INTEGER 1 bytes 0
+39  DEBUG:         INTEGER 1 bytes 0
+40  DEBUG:         SEQUENCE 17 bytes
+41  DEBUG:             SEQUENCE 15 bytes
+42  DEBUG:                 OID 11 bytes .1.3.6.1.2.1.25.3.2.1.3.1
+43  DEBUG:                 NULL VALUE 0 bytes
+44  DEBUG: 0.003 Received 69 bytes from 192.168.2.229...
+45  DEBUG: community="public"
+46  DEBUG: request-id=1149539175
+47  DEBUG: error-status=0
+48  DEBUG: SEQUENCE 67 bytes
+49  DEBUG:     INTEGER 1 bytes 0
+50  DEBUG:     OCTET STRING 6 bytes "public"
+51  DEBUG:     Get-Response-PDU 54 bytes
+52  DEBUG:         INTEGER 4 bytes 1149539175
+53  DEBUG:         INTEGER 1 bytes 0
+54  DEBUG:         INTEGER 1 bytes 0
+55  DEBUG:         SEQUENCE 40 bytes
+56  DEBUG:             SEQUENCE 38 bytes
+57  DEBUG:                 OID 11 bytes .1.3.6.1.2.1.25.3.2.1.3.1
+58  DEBUG:                 OCTET STRING 23 bytes "HP LaserJet 4000
+    Series"
+59  DEBUG: 1.001 Probing 192.168.2.229...
+60  DEBUG: 1.001 Trying socket://192.168.2.229:9100...
+61  DEBUG: 192.168.2.229 supports AppSocket!
+62  DEBUG: 1.002 Scan complete!
+63  network socket://192.168.2.229 "HP LaserJet 4000 Series"
+    "HP LaserJet 4000 Series 192.168.2.229" ""
 </PRE>
 
-<P>Newer versions of <CODE>bootpd</CODE> use a different
-format:</P>
+<H3>Dissecting the Output</H3>
 
-<PRE CLASS="command">
-myprinter:ha=080069001234:ip=192.0.2.2:<VAR>t144=myprinter.boot</VAR>
-</PRE>
+<P>The first two lines are just informational and let you know that the default community name and address are being used. Lines 3-15 contain the initial SNMP query for the device type OID (.1.3.6.1.2.1.25.3.2.1.2.1) from the Host MIB.</P>
 
-<P>The <VAR>myprinter.boot</VAR> file resides in the
-<VAR>/usr/local/boot</VAR> directory by default. If you do not
-need to provide a boot file you may leave the last part of the
-line blank.</P>
+<P>Lines 16-31 show the response we got from an HP LaserJet 4000 network printer. At this point we discover that it is a printer device and then send another SNMP query (lines 32-43) for the device description OID (.1.3.6.1.2.1.25.3.2.1.3.1) from the Host MIB as well.</P>
 
-<BLOCKQUOTE><B>Note:</B>
+<P>Lines 44-58 show the response to the device description query, which tells us that this is an HP LaserJet 4000 Series printer.</P>
 
-<P>Some versions of UNIX do not enable the BOOTP service by
-default. The <VAR>/etc/inetd.conf</VAR> usually contains a line
-for the BOOTP service that can be uncommented if needed.</P>
+<P>On line 59 we start our active connection probe and discover that this print server supports the AppSocket (JetDirect) protocol on port 9100.</P>
 
-</BLOCKQUOTE>
+<P>Finally, line 63 shows the device information line for the print server that is sent to CUPS.</P>
 
-<H2 CLASS="title"><A NAME="VERIFY">Verifying the Printer Connection</A></H2>
+<H3>Reporting Problems</H3>
 
-<P>To test that the IP address has been successfully assigned and
-that the printer is properly connected to your LAN, type:</P>
+If you don't see your printer listed, or the wrong information is listed, then you need to gather more information on the printer. The easiest way to do this is to run the snmpwalk command:
 
 <PRE CLASS="command">
-<KBD>ping ip-address</KBD>
+snmpwalk -Cc -v 1 -c public <I>ip-address</I> | tee snmpwalk.log
 </PRE>
 
-<P>If the connection is working properly you will see something
-like:</P>
+<P>where "ip-address" is the IP address of the printer or print server. You should see a <em>lot</em> of values stream by - the ones you want to see are:</P>
 
-<PRE CLASS="command">
-<KBD>ping myprinter</KBD>
-PING myprinter (192.0.2.2): 56 data bytes
-64 bytes from 192.0.2.2: icmp_seq=0 ttl=15 time=5 ms
-64 bytes from 192.0.2.2: icmp_seq=1 ttl=15 time=3 ms
-64 bytes from 192.0.2.2: icmp_seq=2 ttl=15 time=3 ms
-64 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms
+<PRE STYLE="margin-left: 36pt">
+HOST-RESOURCES-MIB::hrDeviceType.1 = OID: HOST-RESOURCES-TYPES::hrDevicePrinter
+HOST-RESOURCES-MIB::hrDeviceDescr.1 = STRING: HP LaserJet 4000 Series
 </PRE>
 
-<P>If not, verify that the printer or print server is connected
-to the LAN, it is powered on, the LAN cabling is good, and the IP
-address is set correctly. You can usually see the current IP
-address and network status by printing a configuration or test
-page on the device.</P>
+<P>The hrDeviceType line should show hrDevicePrinter; if not, then your printer or print server doesn't identify itself as a printer. The hrDeviceDescr line should provide a human-readable string for the make and model of the printer, although in some cases you'll just see something less useful like "Axis OfficeBASIC Parallel Print Server".</P>
+
+<P>Once you have collected the snmpwalk output, you should go to the  <A HREF="http://www.cups.org/str.php">CUPS Bugs &amp; Features page</A> to submit a feature request to support your printer or print server. Be sure to attach those two log files you created - they will help us to identify the SNMP values we need to look for.</P>
+
+
+<H2 CLASS="title"><A NAME="SERVERS">Configuring Print Servers</A></H2>
 
-<H2 CLASS="title"><A NAME="AXIS">Configuring Axis Print Servers</A></H2>
+<H3><A NAME="AXIS">Configuring Axis Print Servers</A></H3>
 
-<P>The Axis print servers can be configured using ARP, RARP, or
-BOOTP. However, on models that do not provide IPP support an
-additional step must be performed to configure the TCP/IP portion
-of the print server for use with CUPS.</P>
+<P>The Axis print servers can be configured using BOOTP or DHCP. However, on models that do not provide IPP support an additional step must be performed to configure the TCP/IP portion of the print server for use with CUPS.</P>
 
-<P>Each print server contains a configuration file named
-<VAR>config</VAR> that contains a list of network parameters used
-by the server. To modify this file you must first download it
-from the print server using the <CODE>ftp(1)</CODE> program:</P>
+<P>Each print server contains a configuration file named <VAR>config</VAR> that contains a list of network parameters used by the server. To modify this file you must first download it from the print server using the <TT>ftp(1)</TT> program:</P>
 
 <PRE CLASS="command">
 <KBD>ftp ip-address</KBD>
@@ -297,8 +551,7 @@ ftp> <KBD>quit</KBD>
 221 Goodbye.
 </PRE>
 
-<P>Next, edit the file with your favorite text editor and locate
-the lines beginning with:</P>
+<P>Next, edit the file with your favorite text editor and locate the lines beginning with:</P>
 
 <PRE CLASS="command">
 RTN_OPT.     : YES
@@ -312,16 +565,13 @@ RTEL_PR7.    : 0
 RTEL_PR8.    : 0
 </PRE>
 
-<P>Change the <CODE>RTN_OPT</CODE> line to read:</P>
+<P>Change the <TT>RTN_OPT</TT> line to read:</P>
 
 <PRE CLASS="command">
 RTN_OPT.     : <KBD>NO</KBD>
 </PRE>
 
-<P>This disables the Reverse TELNET protocol and enables the
-standard TELNET protocol on the print server. Next, assign a port
-number for each parallel and serial port on the server as
-follows:</P>
+<P>This disables the Reverse TELNET protocol and enables the standard TELNET protocol on the print server. Next, assign a port number for each parallel and serial port on the server as follows:</P>
 
 <PRE CLASS="command">
 RTEL_PR1.    : <KBD>9100</KBD>
@@ -334,10 +584,7 @@ RTEL_PR7.    : <KBD>9106</KBD>
 RTEL_PR8.    : <KBD>9107</KBD>
 </PRE>
 
-<P>This essentially makes the Axis print server look like a
-Hewlett Packard JetDirect EX print server. Save the file and then
-upload the new <VAR>config</VAR> file using the <CODE>ftp</CODE>
-command:</P>
+<P>This essentially makes the Axis print server look like a Hewlett Packard JetDirect EX print server. Save the file and then upload the new <VAR>config</VAR> file using the <TT>ftp</TT> command:</P>
 
 <PRE CLASS="command">
 <KBD>ftp ip-address</KBD>
@@ -363,17 +610,11 @@ ftp> <KBD>quit</KBD>
 
 <P>Your Axis print server is now ready for use!</P>
 
-<H2 CLASS="title"><A NAME="LINKSYS">Configuring Linksys Print Servers</A></H2>
+<H3><A NAME="LINKSYS">Configuring Linksys Print Servers</A></H3>
 
-<P>The Linksys print servers can be configured using ARP, RARP,
-or BOOTP. Like older Axis print servers, an additional step must
-be performed to configure the TCP/IP portion of the print server
-for use with CUPS.</P>
+<P>The Linksys print servers can be configured using BOOTP or DHCP. Like older Axis print servers, an additional step must be performed to configure the TCP/IP portion of the print server for use with CUPS.</P>
 
-<P>Each print server contains a configuration file named
-<VAR>CONFIG</VAR> that contains a list of network parameters used
-by the server. To modify this file you must first download it
-from the print server using the <CODE>ftp(1)</CODE> program:</P>
+<P>Each print server contains a configuration file named <VAR>CONFIG</VAR> that contains a list of network parameters used by the server. To modify this file you must first download it from the print server using the <TT>ftp(1)</TT> program:</P>
 
 <PRE CLASS="command">
 <KBD>ftp -n ip-address</KBD>
@@ -392,8 +633,7 @@ ftp> <KBD>quit</KBD>
 221 Goodbye.
 </PRE>
 
-<P>Next, edit the file with your favorite text editor and locate
-the lines beginning with:</P>
+<P>Next, edit the file with your favorite text editor and locate the lines beginning with:</P>
 
 <PRE CLASS="command">
 0100 L1_PROUT:P1
@@ -401,8 +641,7 @@ the lines beginning with:</P>
 0140 L3_PROUT:P1
 </PRE>
 
-<P>Change the port number for each parallel and serial port on
-the server as follows:</P>
+<P>Change the port number for each parallel and serial port on the server as follows:</P>
 
 <PRE CLASS="command">
 0100 L1_PROUT:<KBD>P1</KBD>
@@ -410,9 +649,7 @@ the server as follows:</P>
 0140 L3_PROUT:<KBD>P3</KBD>
 </PRE>
 
-<P>This maps each virtual printer with a physical port. Save the
-file and then upload the new <VAR>CONFIG</VAR> file using the
-<CODE>ftp</CODE> command:</P>
+<P>This maps each virtual printer with a physical port. Save the file and then upload the new <VAR>CONFIG</VAR> file using the <TT>ftp</TT> command:</P>
 
 <PRE CLASS="command">
 <KBD>ftp -n ip-address</KBD>
index 8602247ebd8cac8d1a5c230c827807688b411b1d..e9311856cb79ea6812f6db8fb81eb8829b3b286f 100644 (file)
@@ -99,7 +99,12 @@ lpr -o landscape -o scaling=75 -o media=A4 filename.jpg
 <P>The available printer options vary depending on the printer.
 The standard options are described in the "<A
 HREF="#OPTIONS">Standard Printing Options</A>" section
-below.</P>
+below. Printer-specific options are also available and can be
+listed using the <B>lpoptions</B> command:</P>
+
+<PRE CLASS="command">
+lpoptions -p printer -l
+</PRE>
 
 <H3><A NAME="COPIES">Printing Multiple Copies</A></H3>
 
@@ -196,6 +201,18 @@ file in the <CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and
 lpoptions -p printer -l
 </PRE>
 
+<P>When <CODE>Custom</CODE> is listed for the <CODE>PageSize</CODE> option, you can specify custom media sizes using one of the following forms:</P>
+
+<PRE CLASS="command">
+lp -o media=Custom.<I>WIDTH</I>x<I>LENGTH</I> filename
+lp -o media=Custom.<I>WIDTH</I>x<I>LENGTH</I>in filename
+lp -o media=Custom.<I>WIDTH</I>x<I>LENGTH</I>cm filename
+lp -o media=Custom.<I>WIDTH</I>x<I>LENGTH</I>mm filename
+</PRE>
+
+<P>where "WIDTH" and "LENGTH" are the width and length of the media in points, inches, centimeters, or millimeters, respectively.</P>
+
+
 <H3><A NAME="ORIENTATION">Setting the Orientation</A></H3>
 
 <P>The <CODE>-o landscape</CODE> option will rotate the page 90
@@ -290,6 +307,12 @@ configuration; CUPS includes the following banner files:</P>
 
 </UL>
 
+
+<H3><A NAME="OUTPUTORDER">Specifying the Output Order</A></H3>
+
+<P>The <CODE>-o outputorder=normal</CODE> and <CODE>-o outputorder=reverse</CODE> options specify the order of the pages. Normal order prints page 1 first, page 2 second, and so forth. Reverse order prints page 1 last.</P>
+
+
 <H3><A NAME="PAGERANGES">Selecting a Range of Pages</A></H3>
 
 <P>The <CODE>-o page-ranges=pages</CODE> option selects a range
index 03cc62f62b7af3fb65d2f13821560f89ae2d89d8..ff8058cd552ff3730b5be7c640535e9104669e7f 100644 (file)
@@ -2479,7 +2479,7 @@ encrypted connections.</P>
 <VAR>/etc/cups/ssl/server.crt</VAR>.</P>
 
 
-<H2 CLASS="title"><A NAME="ServerName"></A>ServerName</H2>
+<H2 CLASS="title"><A NAME="ServerName">ServerName</A></H2>
 
 <H3>Examples</H3>
 
index 089aef83dc1fc701f5cc46dea787c79ac4405e29..4e5569a04f59e022c294c702a73a86af35ce2112 100644 (file)
@@ -8,7 +8,7 @@
 </head>
 <body>
 <!--
-  "$Id: spec-ppd.html 6096 2006-11-14 17:06:28Z mike $"
+  "$Id: spec-ppd.html 6158 2006-12-17 01:44:21Z mike $"
 
   CUPS PPD extensions specification for the Common UNIX Printing System (CUPS).
 
@@ -384,7 +384,7 @@ option value is "2.0" then CUPS will output the string
 *CloseUI: *WatermarkText
 
 <em>*% Custom PostScript watermark option</em>
-*CustomWatermarkText True: "&lt;&lt;/cupsString1 1 roll&gt;&gt;setpagedevice"
+*CustomWatermarkText True: "&lt;&lt;/cupsString1 3 -1 roll&gt;&gt;setpagedevice"
 *ParamCustomWatermarkText Text: 1 string 0 32
 
 
@@ -398,7 +398,7 @@ option value is "2.0" then CUPS will output the string
 *CloseUI: *GammaDensity
 
 <em>*% Custom PostScript gamma/density option</em> 
-*CustomGammaDensity True: "&lt;&lt;/cupsReal1 3 1 roll/cupsReal2 3 1&gt;&gt;setpagedevice"
+*CustomGammaDensity True: "&lt;&lt;/cupsReal1 3 -1 roll/cupsReal2 5 -1&gt;&gt;setpagedevice"
 *ParamCustomGammaDensity Gamma: 1 curve 0.1 10
 *ParamCustomGammaDensity Density: 2 real 0 2
 </pre>
@@ -609,8 +609,340 @@ in the PPD file for a given locale.</blockquote>
 </pre>
 
 
+<h2 class='title'><a name='RASTERPS'>Writing PostScript Option Commands for Raster Drivers</a></h2>
+
+<p>PPD files are used for both PostScript and non-PostScript printers. For CUPS raster drivers, you use a subset of the PostScript language to set page device attributes such as page size, resolution, and so forth. For example, the following code sets the page size to A4 size:</p>
+
+<pre class='command'>
+*PageSize A4: "&lt;&lt;/PageSize[595 842]&gt;&gt;setpagedevice"
+</pre>
+
+<p>Custom options typically use other operators to organize the values into a key/value dictionary for <tt>setpagedevice</tt>. For example, our previous <tt>CustomWatermarkText</tt> option code uses the <tt>roll</tt> operator to move the custom string value into the dictionary for <tt>setpagedevice</tt>:</p>
+
+<pre class='command'>
+*CustomWatermarkText True: "&lt;&lt;/cupsString1 3 -1 roll&gt;&gt;setpagedevice"
+</pre>
+
+<p>For a custom string value of "My Watermark", CUPS will produce the following PostScript code for the option:</p>
+
+<pre class='command'>
+(My Watermark)
+&lt;&lt;/cupsString1 3 -1 roll&gt;&gt;setpagedevice
+</pre>
+
+<p>The code moves the string value ("My Watermark") from the bottom of the stack to the top, creating a dictionary that looks like:</p>
+
+<pre class='command'>
+&lt;&lt;/cupsString1(My Watermark)&gt;&gt;setpagedevice
+</pre>
+
+<p>The resulting dictionary sets the page device attributes that are sent to your raster driver in the page header.</p>
+
+<h3>Supported PostScript Operators</h3>
+
+<p>CUPS supports the following PostScript operators in addition to the usual PostScript number, string (literal and hex-encoded), boolean, null, and name values:</p>
+
+<ul>
+
+       <li><tt>&lt;&lt;</tt> - Start a dictionary.</li>
+
+       <li><tt>&gt;&gt;</tt> - End a dictionary.</li>
+
+       <li><tt>[</tt> - Start an array.</li>
+
+       <li><tt>]</tt> - End an array.</li>
+
+       <li><tt>copy</tt> - Copy the top N objects on the stack.</li>
+
+       <li><tt>dup</tt> - Copy the top object on the stack.</li>
+
+       <li><tt>index</tt> - Copy the Nth from the top object on the stack.</li>
+
+       <li><tt>pop</tt> - Pop the top object on the stack.</li>
+
+       <li><tt>roll</tt> - Shift the top N objects on the stack.</li>
+
+       <li><tt>setpagedevice</tt> - Set the page header values according to the key/value dictionary on the stack.</li>
+
+</ul>
+
+<h3>Supported Page Device Attributes</h3>
+
+<p>Table 1 shows the supported page device attributes along with PostScript code examples.</p>
+
+<div class='table'>
+<table summary='Supported Page Device Attributes'>
+<caption>Table 1: <a name='TABLE_1'>Supported Page Device Attributes</a></caption>
+<thead>
+<tr>
+       <th>Name(s)</th>
+       <th>Type</th>
+       <th>Description</th>
+       <th>Example(s)</th>
+</tr>
+</thead>
+<tbody>
+<tr valign='top'>
+       <td><tt>AdvanceDistance</tt></td>
+       <td>Integer</td>
+       <td>Specifies the number of points to advance roll media after printing.</td>
+       <td><tt>&lt;&lt;/AdvanceDistance 18&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>AdvanceMedia</tt></td>
+       <td>Integer</td>
+       <td>Specifies when to advance the media: 0 = never, 1 = after the file, 2 = after the job, 3 = after the set, and 4 = after the page.</td>
+       <td><tt>&lt;&lt;/AdvanceMedia 4&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>Collate</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether collated copies are required.</td>
+       <td><tt>&lt;&lt;/Collate true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>CutMedia</tt></td>
+       <td>Integer</td>
+       <td>Specifies when to cut the media: 0 = never, 1 = after the file, 2 = after the job, 3 = after the set, and 4 = after the page.</td>
+       <td><tt>&lt;&lt;/CutMedia 1&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>Duplex</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether 2-sided printing is required.</td>
+       <td><tt>&lt;&lt;/Duplex true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>HWResolution</tt></td>
+       <td>Integer Array</td>
+       <td>Specifies the resolution of the page image in pixels per inch.</td>
+       <td><tt>&lt;&lt;/HWResolution[1200 1200]&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>InsertSheet</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether to insert a blank sheet before the job.</td>
+       <td><tt>&lt;&lt;/InsertSheet true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>Jog</tt></td>
+       <td>Integer</td>
+       <td>Specifies when to shift the media in the output bin: 0 = never, 1 = after the file, 2 = after the job, 3 = after the set, and 4 = after the page.</td>
+       <td><tt>&lt;&lt;/Jog 2&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>LeadingEdge</tt></td>
+       <td>Integer</td>
+       <td>Specifies the leading edge of the media: 0 = top, 1 = right, 2 = bottom, 3 = left.</td>
+       <td><tt>&lt;&lt;/LeadingEdge 0&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>ManualFeed</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether media should be drawn from the manual feed tray. Note: The <tt>MediaPosition</tt> attribute is preferred over the <tt>ManualFeed</tt> attribute.</td>
+       <td><tt>&lt;&lt;/ManualFeed true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>MediaClass</tt></td>
+       <td>String</td>
+       <td>Specifies a named media.</td>
+       <td><tt>&lt;&lt;/MediaClass (Invoices)&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>MediaColor</tt></td>
+       <td>String</td>
+       <td>Specifies the color of the media.</td>
+       <td><tt>&lt;&lt;/MediaColor &gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>MediaPosition</tt></td>
+       <td>Integer</td>
+       <td>Specifies the tray or source of the media.</td>
+       <td><tt>&lt;&lt;/MediaPosition 12&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>MediaType</tt></td>
+       <td>String</td>
+       <td>Specifies the general media type.</td>
+       <td><tt>&lt;&lt;/MediaType (Glossy)&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>MediaWeight</tt></td>
+       <td>Integer</td>
+       <td>Specifies the media weight in grams per meter<sup>2</sup>.</td>
+       <td><tt>&lt;&lt;/MediaWeight 100&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>MirrorPrint</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether to flip the output image horizontally.</td>
+       <td><tt>&lt;&lt;/MirrorPrint true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>NegativePrint</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether to invert the output image.</td>
+       <td><tt>&lt;&lt;/NegativePrint true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>NumCopies</tt></td>
+       <td>Integer</td>
+       <td>Specifies the number of copies to produce of each page.</td>
+       <td><tt>&lt;&lt;/NumCopies 100&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>Orientation</tt></td>
+       <td>Integer</td>
+       <td>Specifies the orientation of the output: 0 = portrait, 1 = landscape rotated counter-clockwise, 2 = upside-down, 3 = landscape rotated clockwise.</td>
+       <td><tt>&lt;&lt;/Orientation 3&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>OutputFaceUp</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether to place the media face-up in the output bin/tray.</td>
+       <td><tt>&lt;&lt;/OutputFaceUp true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>OutputType</tt></td>
+       <td>String</td>
+       <td>Specifies the output type name.</td>
+       <td><tt>&lt;&lt;/OutputType (Photo)&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>PageSize</tt></td>
+       <td>Integer/Real Array</td>
+       <td>Specifies the width and length/height of the page in points.</td>
+       <td><tt>&lt;&lt;/PageSize[595 842]&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>Separations</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether to produce color separations.</td>
+       <td><tt>&lt;&lt;/Separations true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>TraySwitch</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether to switch trays automatically.</td>
+       <td><tt>&lt;&lt;/TraySwitch true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>Tumble</tt></td>
+       <td>Boolean</td>
+       <td>Specifies whether the back sides of pages are rotated 180 degrees.</td>
+       <td><tt>&lt;&lt;/Tumble true&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsBorderlessScalingFactor</tt></td>
+       <td>Real</td>
+       <td>Specifies the amount to scale the page image dimensions.</td>
+       <td><tt>&lt;&lt;/cupsBorderlessScalingFactor 1.01&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsColorOrder</tt></td>
+       <td>Integer</td>
+       <td>Specifies the order of colors: 0 = chunked, 1 = banded, 2 = planar.</td>
+       <td><tt>&lt;&lt;/cupsColorOrder 0&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsColorSpace</tt></td>
+       <td>Integer</td>
+       <td>Specifies the page image colorspace: 0 = W, 1 = RGB, 2 = RGBA, 3 = K, 4 = CMY, 5 = YMC, 6 = CMYK, 7 = YMCK, 8 = KCMY, 9 = KCMYcm, 10 = GMCK, 11 = GMCS, 12 = White, 13 = Gold, 14 = Silver, 15 = CIE XYZ, 16 = CIE Lab, 17 = RGBW, 32 to 46 = CIE Lab (1 to 15 inks)</td>
+       <td><tt>&lt;&lt;/cupsColorSpace &gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsCompression</tt></td>
+       <td>Integer</td>
+       <td>Specifies a driver compression type/mode.</td>
+       <td><tt>&lt;&lt;/cupsCompression 2&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsInteger0<br>
+       ...<br>
+       cupsInteger15</tt></td>
+       <td>Integer</td>
+       <td>Specifies driver integer values.</td>
+       <td><tt>&lt;&lt;/cupsInteger11 1234&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsMarkerType</tt></td>
+       <td>String</td>
+       <td>Specifies the type of ink/toner to use.</td>
+       <td><tt>&lt;&lt;/cupsMarkerType (Black+Color)&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsMediaType</tt></td>
+       <td>Integer</td>
+       <td>Specifies a numeric media type.</td>
+       <td><tt>&lt;&lt;/cupsMediaType 999&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsPageSizeName</tt></td>
+       <td>String</td>
+       <td>Specifies the name of the page size.</td>
+       <td><tt>&lt;&lt;/cupsPageSizeName (A4.Full)&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsPreferredBitsPerColor</tt></td>
+       <td>Integer</td>
+       <td>Specifies the preferred number of bits per color, typically 8 or 16.</td>
+       <td><tt>&lt;&lt;/cupsPreferredBitsPerColor 16&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsReal0<br>
+       ...<br>
+       cupsReal15</tt></td>
+       <td>Real</td>
+       <td>Specifies driver real number values.</td>
+       <td><tt>&lt;&lt;/cupsReal15 1.234&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsRenderingIntent</tt></td>
+       <td>String</td>
+       <td>Specifies the color rendering intent.</td>
+       <td><tt>&lt;&lt;/cupsRenderingIntent (AbsoluteColorimetric)&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsRowCount</tt></td>
+       <td>Integer</td>
+       <td>Specifies the number of rows of raster data to print on each line for some drivers.</td>
+       <td><tt>&lt;&lt;/cupsRowCount 24&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsRowFeed</tt></td>
+       <td>Integer</td>
+       <td>Specifies the number of rows to feed between passes for some drivers.</td>
+       <td><tt>&lt;&lt;/cupsRowFeed 17&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsRowStep</tt></td>
+       <td>Integer</td>
+       <td>Specifies the number of lines between columns/rows on the print head for some drivers.</td>
+       <td><tt>&lt;&lt;/cupsRowStep 2&gt;&gt;setpagedevice</tt></td>
+</tr>
+<tr valign='top'>
+       <td><tt>cupsString0<br>
+       ...<br>
+       cupsString15</tt></td>
+       <td>String</td>
+       <td>Specifies driver string values.</td>
+       <td><tt>&lt;&lt;/cupsString0(String Value)&gt;&gt;setpagedevice</tt></td>
+</tr>
+</tbody>
+</table></div>
+
+
 <h2 class='title'><a name='HISTORY'>Change History</a></h2>
 
+<h3>Changes in CUPS 1.2.8</h3>
+
+<ul>
+
+       <li>Added section on supported PostScript commands for raster
+       drivers</li>
+
+</ul>
+
 <h3>Changes in CUPS 1.2</h3>
 
 <ul>
diff --git a/doc/idd.shtml b/doc/idd.shtml
deleted file mode 100644 (file)
index 37821ab..0000000
+++ /dev/null
@@ -1,1445 +0,0 @@
-<HTML>
-<HEAD>
-       <META NAME="COPYRIGHT" CONTENT="Copyright 1997-2003, All Rights Reserved">
-       <META NAME="DOCNUMBER" CONTENT="CUPS-IDD-1.2">
-       <META NAME="Author" CONTENT="Easy Software Products">
-       <TITLE>CUPS Interface Design Description</TITLE>
-</HEAD>
-<BODY>
-
-<H1>Scope</H1>
-
-<H2>Identification</H2>
-
-<P>This interface design description document provides detailed file
-formats, message formats, and program conventions for the Common UNIX
-Printing System ("CUPS") Version 1.2.
-
-<EMBED SRC="system-overview.shtml">
-
-<H2>Document Overview</H2>
-
-<P>This interface design description document is organized into the following
-sections:
-
-<UL>
-       <LI>1 - Scope
-       <LI>2 - References
-       <LI>3 - Internal Interfaces
-       <LI>4 - External Interfaces
-       <LI>5 - Directories
-       <LI>A - Glossary
-</UL>
-
-<EMBED SRC="references.shtml">
-
-<H1>Internal Interfaces</H1>
-
-<H2>Character Set Files</H2>
-
-<P>The character set files define a mapping between 8-bit characters
-and the Unicode character set, or between Unicode and printer fonts.
-They are named using the IETF charset names defined in RFCnnnn.  These
-files are ASCII text, the content of which is described below. Comments
-can be included by using the <TT>#</TT> character in the first column
-of a line.
-
-<H3>8-Bit Character Set Files</H3>
-
-<P>8-bit character set files start with a line reading:
-
-<UL><PRE>
-charset 8bit
-</PRE></UL>
-
-<P>Following this are lines that define the font information:
-
-<UL><PRE>
-first last direction width normal bold italic bold-italic
-</PRE></UL>
-
-<P><VAR>First</VAR> and <VAR>last</VAR> are the first and last glyphs
-in the font mapping that correspond to that font; a maximum of 256
-characters can be mapped within each group, with a maximum of 256
-mappings (this is a PostScript limitation.) The glyph values are
-hexadecimal.
-
-<P><VAR>Direction</VAR> is the string "ltor", "rtol", or "rtola" indicating
-left-to-right, right-to-left, or right-to-left Arabic text.
-
-<P><VAR>Width</VAR> is the string "single" or "double"; double means that the
-glyphs are twice as wide as ASCII characters in the Courier typeface.
-
-<P><VAR>Normal, bold, italic</VAR>, and <VAR>bold-italic</VAR> are the
-typefaces to use for each presentation.  If characters are only available in
-a single style then only one typeface should be listed (e.g. "Symbol".)
-Each font that is listed will be used (and downloaded if needed) when
-printing.
-
-<P>The remaining lines define a character to Unicode glyph mapping for the
-character set. The character and glyph values are hexadecimal:
-
-<UL><PRE>
-xx yyyy
-</PRE></UL>
-
-<H3>Unicode Character Set Files</H3>
-
-<P>Unicode character set files start with a line reading:
-
-<UL><PRE>
-charset encoding
-</PRE></UL>
-
-<P><VAR>Encoding</VAR> is the encoding to use for the text; currently only
-the string "utf8" is supported.
-
-<P>Following this are lines defining the font information:
-
-<UL><PRE>
-first last direction width normal bold italic bold-italic
-</PRE></UL>
-
-<P><VAR>First</VAR> and <VAR>last</VAR> are the first and last glyphs
-in the font mapping that correspond to that font; a maximum of 256
-characters can be mapped within each group, with a maximum of 256
-mappings (this is a PostScript limitation.) The glyph values are
-hexadecimal.
-
-<P><VAR>Direction</VAR> is the string "ltor", "rtol", or "rtola" indicating
-left-to-right, right-to-left, or right-to-left Arabic text.
-
-<P><VAR>Width</VAR> is the string "single" or "double"; double means that the
-glyphs are twice as wide as ASCII characters in the Courier typeface.
-
-<P><VAR>Normal, bold, italic</VAR>, and <VAR>bold-italic</VAR> are the
-typefaces to use for each presentation.  If characters are only available in
-a single style then only one typeface should be listed (e.g. "Symbol".)
-Each font that is listed will be used (and downloaded if needed) when
-printing.
-
-<H2>Language Files</H2>
-
-<P>The language files define the default character set and a collection of
-text messages in that language. They are named by prefixing the string "cups_"
-to the front of the language specifier (e.g. "cups_en", "cups_fr", etc.) Each
-file consists of two or more lines of ASCII text.
-
-<P>The first line identifies the character set to be used for the messages.
-The currently recognized values are:
-
-<UL>
-       <LI>iso-8859-1
-       <LI>iso-8859-2
-       <LI>iso-8859-3
-       <LI>iso-8859-4
-       <LI>iso-8859-5
-       <LI>iso-8859-6
-       <LI>iso-8859-7
-       <LI>iso-8859-8
-       <LI>iso-8859-9
-       <LI>iso-8859-10
-       <LI>iso-8859-13
-       <LI>iso-8859-14
-       <LI>iso-8859-15
-       <LI>us-ascii
-       <LI>utf-8
-       <LI>windows-874
-       <LI>windows-1250
-       <LI>windows-1251
-       <LI>windows-1252
-       <LI>windows-1253
-       <LI>windows-1254
-       <LI>windows-1255
-       <LI>windows-1256
-       <LI>windows-1257
-       <LI>windows-1258
-       <LI>koi8-r
-       <LI>koi8-u
-</UL>
-
-<P>The second and succeeding lines define text messages. If the message text
-is preceded by a number, then the current message number is updated and the
-text after the number is used.
-
-<H2>MIME Files</H2>
-
-<P>CUPS uses two MIME files in its standard configuration.
-
-<H3>mime.types</H3>
-
-<P>The mime.types file defines the recognized file types and consists
-of 1 or more lines of ASCII text. Comment lines start with the pound
-("#") character. The backslash ("\") character can be used at the end
-of a line to continue that line to the next.
-
-<P>Each non-blank line starts with a MIME type identifier ("super/type")
-as registered with the IANA. All text following the MIME type is treated as
-a series of type recognition rules:
-
-<UL><PRE>
-mime-type := super "/" type { SP rule }*
-super := { "a-z" | "A-Z" }*
-type := { "a-z" | "A-Z" | "-" | "." | "0-9" }*
-rule := { extension | match | operator | "(" rule ")" }*
-extension := { "a-z" | "A-Z" | "0-9" }*
-match := "match(" regexp ")" |
-         "ascii(" offset "," length ")" |
-        "printable(" offset "," length ")" |
-        "string(" offset "," string ")" |
-        "contains(" offset "," length "," string ")" |
-        "char(" offset "," value ")" |
-        "short(" offset "," value ")" |
-        "int(" offset "," value ")" |
-        "locale(" string ")"
-operator := "+" |      [ logical AND ]
-            "," | SP    [ logical OR ]
-           "!"         [ unary NOT ]
-</PRE></UL>
-
-<P>The <CODE>int</CODE> and <CODE>short</CODE> rules match look for integers
-in network byte order (a.k.a. big-endian) with the most-significant byte first.
-
-<H3>mime.convs</H3>
-
-<P>The mime.types file defines the recognized file filters and consists
-of 1 or more lines of ASCII text. Comment lines start with the pound
-("#") character.
-
-<P>Each non-blank line starts with two MIME type identifiers ("super/type")
-representing the source and destination types. Following the MIME types are
-a cost value (0 to 100) and the filter program to use. If the filter program
-is not specified using the full path then it must reside in the CUPS filter
-directory:
-
-<UL><PRE>
-super/type SP super/type2 SP cost SP program
-</PRE></UL>
-
-<H2>Option Files</H2>
-
-<P>CUPS maintains user-defined printer and option files for each
-printer and user on the system. The printers and options defined in the
-system option file (<CODE>/etc/cups/lpoptions</CODE>) are loaded first,
-followed by the user option file (<CODE>$HOME/.lpoptions</CODE>).
-Options in the user file replace those defined in the system file for
-the same destination. Each line in the files can be one of the
-following:
-
-<UL><PRE>
-Dest name option=value option=value ... option=value
-Dest name/instance option=value option=value ... option=value
-Default name option=value option=value ... option=value
-Default name/instance option=value option=value ... option=value
-</PRE></UL>
-
-<P>The line beginning with "Default" indicates the default destination for
-print jobs; a default line in the user option file overrides the default
-defined in the system option file.
-
-<P><VAR>Name</VAR> is the name of a printer known to the local server.
-
-<P><VAR>Instance</VAR> can be any string of letters, numbers, and the underscore
-up to 127 characters in length.
-
-<P>The remainder of the line contains a list of space-separated options
-and their values.
-
-<H2>PostScript Printer Description Files</H2>
-
-<P>PostScript Printer Description ("PPD") files describe the capabilities
-of each printer and are used by CUPS to support printer-specific features
-and intelligent filtering.
-
-<H3>PPD Specification</H3>
-
-<P>The PPD file format is described in
-<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
-Adobe TechNote #5003: PostScript Printer Description File Format
-Specification Version 4.3</A>.
-
-<H3>CUPS Extensions to PPD Files</H3>
-
-<P>CUPS adds several new attributes that are described below.
-
-<H4>cupsFilter</H4>
-
-<P>This string attribute provides a conversion rule of the form:
-
-<UL><PRE>
-source/type cost program
-</PRE></UL>
-
-<P>The destination type is assumed to the printer's type. If a printer
-supports the source type directly the special filter program "-" may be
-specified.
-
-<H4>cupsFlipDuplex</H4>
-
-<P>This boolean attribute notifies the RIP filters that the
-destination printer requires an upside-down image for the back
-page. The default value is false.
-
-<H4>cupsManualCopies</H4>
-
-<P>This boolean attribute notifies the RIP filters that the destination printer
-does not support copy generation in hardware. The default value is false.
-
-<H4>cupsModelNumber</H4>
-
-<P>This integer attribute specifies a printer-specific model number. This number
-can be used by a filter program to adjust the output for a specific model of
-printer.
-
-<H4>cupsProfile</H4>
-
-<P>This string attribute specifies a color profile of the form:
-
-<UL><PRE>
-resolution/type density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
-</PRE></UL>
-
-<P>The <I>resolution</I> and <I>type</I> values may be "-" to act as a
-wildcard. Otherwise they must match one of the <CODE>Resolution</CODE> or
-<CODE>MediaType</CODE> attributes defined in the PPD file.
-
-<P>The <I>density</I> and <I>gamma</I> values define gamma and density
-adjustment function such that:
-
-<UL><PRE>
-f(x) = density * x<SUP>gamma</SUP>
-</PRE></UL>
-
-<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
-matrix for the CMY color values. The density function is applied <I>after</I>
-the CMY transformation.
-
-<H4>cupsProtocol</H4>
-
-<P>This optional attribute describes which binary communication
-protocol to use when printing binary PostScript data. The
-strings "None", "BCP", and "TBCP" are recognized, corresponding
-to no encoding, BCP, and TBCP respectively.
-
-<H4>cupsVersion</H4>
-
-<P>This required attribute describes which version of the CUPS
-IDD was used for the PPD file extensions. Currently it must be
-the string "1.0", "1.1", or "1.2".
-
-<H2>Scheduler Configuration Files</H2>
-
-<P>The scheduler reads three configuration files that define the available
-printers, classes, and services:
-
-<DL>
-
-       <DT>classes.conf
-       <DD>This file defines all of the printer classes known to the
-       system.
-
-       <DT>cupsd.conf
-       <DD>This file defines the files, directories, passwords, etc.
-       used by the scheduler.
-
-       <DT>printers.conf
-       <DD>This file defines all of the printers known to the system.
-
-</DL>
-
-<H3>classes.conf</H3>
-
-<P>The classes.conf file consists of 1 or more lines of ASCII text. 
-Comment lines start with the pound ("#") character.
-
-<P>Each non-blank line starts with the name of a configuration directive
-followed by its value. The following directives are understood:
-
-<CENTER><TABLE WIDTH="90%" BORDER="1">
-<TR>
-       <TH WIDTH="25%">Directive</TH>
-       <TH>Description</TH>
-</TR>
-<TR>
-       <TD>&lt;Class name&gt;<BR>
-       &lt;/Class&gt;</TD>
-       <TD>Surrounds a class definition.</TD>
-</TR>
-<TR>
-       <TD>&lt;DefaultClass name&gt;<BR>
-       &lt;/Class&gt;</TD>
-       <TD>Surrounds a class definition for the default destination.</TD>
-</TR>
-<TR>
-       <TD>Accepting</TD>
-       <TD>Specifies whether the class is accepting new jobs. May be
-       the names "Yes" or "No".</TD>
-</TR>
-<TR>
-       <TD>AllowUsers</TD>
-       <TD>Specifies a list of users that are allowed to access the class.</TD>
-</TR>
-<TR>
-       <TD>BannerStart</TD>
-       <TD>Specifies the banner that is printed before other files in a
-       job.</TD>
-</TR>
-<TR>
-       <TD>BannerEnd</TD>
-       <TD>Specifies the banner that is printed after other files in a
-       job.</TD>
-</TR>
-<TR>
-       <TD>DenyUsers</TD>
-       <TD>Specifies a list of users that are not allowed to access the
-       class.</TD>
-</TR>
-<TR>
-       <TD>Info</TD>
-       <TD>A textual description of the class.</TD>
-</TR>
-<TR>
-       <TD>Location</TD>
-       <TD>A textual location of the class.</TD>
-</TR>
-<TR>
-       <TD>Printer</TD>
-       <TD>Specifies a printer that is a member of the class.</TD>
-</TR>
-<TR>
-       <TD>State</TD>
-       <TD>Specifies the initial state of the class; can be "Idle" or
-       "Stopped".</TD>
-</TR>
-<TR>
-       <TD>StateMessage</TD>
-       <TD>Specifies a textual message for the current class state.</TD>
-</TR>
-</TABLE></CENTER>
-
-<H3>cupsd.conf</H3>
-
-<P>The cupsd.conf file consists of 1 or more lines of ASCII text. 
-Comment lines start with the pound ("#") character.
-
-<P>Each non-blank line starts with the name of a configuration directive
-followed by its value. The following directives are understood:
-
-<CENTER><TABLE WIDTH="90%" BORDER="1">
-<TR>
-       <TH WIDTH="25%">Directive</TH>
-       <TH>Default</TH>
-       <TH>Description</TH>
-</TR>
-<TR>
-       <TD>AccessLog</TD>
-       <TD>access_log</TD>
-       <TD>Specifies the location of the access log file. The special name
-       "syslog" can be used to send access log information to the system
-       log.</TD>
-</TR>
-<TR>
-       <TD>Allow</TD>
-       <TD>-</TD>
-       <TD>Allows connections from the specified host, network, or
-       domain.</TD>
-</TR>
-<TR>
-       <TD>AuthClass</TD>
-       <TD>-</TD>
-       <TD>Specifies what level of authentication is required; may be
-       "User", "System", or "Group".</TD>
-</TR>
-<TR>
-       <TD>AuthType</TD>
-       <TD>None</TD>
-       <TD>Specifies the type of authentication to perform; may be
-       "None", "Basic", or "Digest".</TD>
-</TR>
-<TR>
-       <TD>BrowseAddress</TD>
-       <TD>255.255.255.255</TD>
-       <TD>Specifies a broadcast address to send CUPS browsing packets to.</TD>
-</TR>
-<TR>
-       <TD>BrowseAllow</TD>
-       <TD>-</TD>
-       <TD>Specifies hosts or addresses from which browsing information
-       should be used.</TD>
-</TR>
-<TR>
-       <TD>BrowseDeny</TD>
-       <TD>-</TD>
-       <TD>Specifies hosts or addresses from which browsing information
-       should not be used.</TD>
-</TR>
-<TR>
-       <TD>BrowseInterval</TD>
-       <TD>30</TD>
-       <TD>Specifies the number of seconds between browsing updates. A
-       browse interval of 0 seconds disables outgoing packets.</TD>
-</TR>
-<TR>
-       <TD>BrowseOrder</TD>
-       <TD>Allow,Deny</TD>
-       <TD>Specifies the order of BrowseAllow and BrowseDeny directive
-       processing; can be "Deny,Allow" to implicitly deny hosts unless
-       they are allowed by a BrowseAllow line, or "Allow,Deny" to
-       implicitly allow hosts unless they are denied by a BrowseDeny
-       line.</TD>
-</TR>
-<TR>
-       <TD>BrowsePoll</TD>
-       <TD>-</TD>
-       <TD>Specifies a server to poll for available printers and classes.</TD>
-</TR>
-<TR>
-       <TD>BrowsePort</TD>
-       <TD>631</TD>
-       <TD>Specifies the UDP port number to use for browse packets.</TD>
-</TR>
-<TR>
-       <TD>BrowseRelay</TD>
-       <TD>-</TD>
-       <TD>Specifies a source and destination address for relaying browser
-       information from one subnet to another.</TD>
-</TR>
-<TR>
-       <TD>BrowseShortNames</TD>
-       <TD>yes</TD>
-       <TD>Specifies whether or not to provide short names (without the
-       "@server" part) for remote printers.</TD>
-</TR>
-<TR>
-       <TD>BrowseTimeout</TD>
-       <TD>300</TD>
-       <TD>Specifies the number of seconds to wait until remote destinations
-       are removed from the local destination list.</TD>
-</TR>
-<TR>
-       <TD>Browsing</TD>
-       <TD>On</TD>
-       <TD>Specifies whether or not printer and class browsing is enabled; can
-       be "On" or "Off".</TD>
-</TR>
-<TR>
-       <TD>DataDir</TD>
-       <TD>/usr/share/cups</TD>
-       <TD>Specifies the directory where CUPS data files are stored.</TD>
-</TR>
-<TR>
-       <TD>DefaultCharset</TD>
-       <TD>iso-8859-1</TD>
-       <TD>Specifies the default character set.</TD>
-</TR>
-<TR>
-       <TD>DefaultLanguage</TD>
-       <TD>current locale</TD>
-       <TD>Specifies the default language.</TD>
-</TR>
-<TR>
-       <TD>Deny</TD>
-       <TD>-</TD>
-       <TD>Refuses connections from the specified host, network, or
-       domain.</TD>
-</TR>
-<TR>
-       <TD>DocumentRoot</TD>
-       <TD>/usr/share/doc/cups</TD>
-       <TD>Specifies the document data root directory.</TD>
-</TR>
-<TR>
-       <TD>ErrorLog</TD>
-       <TD>error_log</TD>
-       <TD>Specifies the error log file location. The special name
-       "syslog" can be used to send error log information to the system
-       log.</TD>
-</TR>
-<TR>
-       <TD>Group</TD>
-       <TD>root, sys, system</TD>
-       <TD>Specifies the group name or ID that is used when running
-       external programs.</TD>
-</TR>
-<TR>
-       <TD>HostNameLookups</TD>
-       <TD>Off</TD>
-       <TD>Specifies whether or not to perform reverse IP address lookups to
-       get the actual hostname; may be "On" or "Off". Hostname lookups can
-       significantly degrade the performance of the CUPS server if one or
-       more DNS servers is not functioning properly.</TD>
-</TR>
-<TR>
-       <TD>ImplicitClasses</TD>
-       <TD>On</TD>
-       <TD>Specifies whether or not to automatically create printer classes
-       when more than one printer or class of the same name is detected on
-       the network; may be "On" or "Off".</TD>
-</TR>
-<TR>
-       <TD>KeepAlive</TD>
-       <TD>On</TD>
-       <TD>Specifies whether or not to use the HTTP Keep-Alive feature; may
-       be "On" or "Off".</TD>
-</TR>
-<TR>
-       <TD>KeepAliveTimeout</TD>
-       <TD>30</TD>
-       <TD>Specifies the amount of time to keep the HTTP connection alive
-       before closing it.</TD>
-</TR>
-<TR>
-       <TD>&lt;Location path&gt;<BR>
-       &lt;/Location&gt;</TD>
-       <TD>-</TD>
-       <TD>Specifies a location to restrict access to.</TD>
-</TR>
-<TR>
-       <TD>LogLevel</TD>
-       <TD>info</TD>
-       <TD>Controls the amount of information that is logged in the
-       error log file. Can be one of "debug", "info", "warn", "error",
-       or "none", in decreasing order or verbosity.</TD>
-</TR>
-<TR>
-       <TD>MaxClients</TD>
-       <TD>100</TD>
-       <TD>Specifies the maximum number of simultaneous active clients.
-       This value is internally limited to 1/3 of the total number of
-       available file descriptors.</TD>
-</TR>
-<TR>
-       <TD>MaxLogSize</TD>
-       <TD>0</TD>
-       <TD>Specifies the maximum size of the access, error, and page
-       log files in bytes. If set to 0 then no maximum size is set.
-       Log files are rotated automatically when this size is
-       exceeded.</TD>
-</TR>
-<TR>
-       <TD>MaxRequestSize</TD>
-       <TD>0</TD>
-       <TD>Specifies the maximum size of HTTP requests in bytes. If set to 0
-       then there is no maximum.</TD>
-</TR>
-<TR>
-       <TD>Order</TD>
-       <TD>Allow,Deny</TD>
-       <TD>Specifies the order of Allow and Deny directive processing; can
-       be "Deny,Allow" to implicitly deny hosts unless they are allowed by
-       an Allow line, or "Allow,Deny" to implicitly allow hosts unless they
-       are denied by a Deny line.</TD>
-</TR>
-<TR>
-       <TD>PageLog</TD>
-       <TD>page_log</TD>
-       <TD>Specifies the location of the page log file. The special name
-       "syslog" can be used to send page log information to the system
-       log.</TD>
-</TR>
-<TR>
-       <TD>Port</TD>
-       <TD>631</TD>
-       <TD>Specifies a port number to listen to for HTTP connections.</TD>
-</TR>
-<TR>
-       <TD>Printcap</TD>
-       <TD>/etc/printcap</TD>
-       <TD>Specifies the location of a Berkeley printcap file to update
-       with a list of current printers and classes. If no filename is
-       supplied then this automatic generation is disabled.</TD>
-</TR>
-<TR>
-       <TD>RequestRoot</TD>
-       <TD>/var/spool/cups</TD>
-       <TD>Specifies the location of request files.</TD>
-</TR>
-<TR>
-       <TD>RIPCache</TD>
-       <TD>8m</TD>
-       <TD>Specifies the size of the memory cache in bytes that is used by
-       RIP filters.</TD>
-</TR>
-<TR>
-       <TD>ServerAdmin</TD>
-       <TD>root@ServerName</TD>
-       <TD>Specifies the person to contact with problems.</TD>
-</TR>
-<TR>
-       <TD>ServerName</TD>
-       <TD>hostname</TD>
-       <TD>Specifies the hostname that is supplied to HTTP clients. This
-       is also used to determine the default CUPS server for the CUPS IPP
-       client applications.</TD>
-</TR>
-<TR>
-       <TD>ServerRoot</TD>
-       <TD>/etc/cups</TD>
-       <TD>Specifies the root directory for server configuration files.</TD>
-</TR>
-<TR>
-       <TD>SystemGroup</TD>
-       <TD>root, sys, system</TD>
-       <TD>Specifies the group name used for System class authentication.</TD>
-</TR>
-<TR>
-       <TD>TempDir</TD>
-       <TD>/var/tmp</TD>
-       <TD>Specifies the temporary directory to use.</TD>
-</TR>
-<TR>
-       <TD>Timeout</TD>
-       <TD>300</TD>
-       <TD>The timeout in seconds before client connections are closed
-       in the middle of a request.</TD>
-</TR>
-<TR>
-       <TD>User</TD>
-       <TD>lp</TD>
-       <TD>Specifies the user that is used when running external programs.</TD>
-</TR>
-</TABLE></CENTER>
-
-<H3>printers.conf</H3>
-
-<P>The printers.conf file consists of 1 or more lines of ASCII text. 
-Comment lines start with the pound ("#") character.
-
-<P>Each non-blank line starts with the name of a configuration directive
-followed by its value. The following directives are understood:
-
-<CENTER><TABLE WIDTH="90%" BORDER="1">
-<TR>
-       <TH WIDTH="25%">Directive</TH>
-       <TH>Description</TH>
-</TR>
-<TR>
-       <TD>Accepting</TD>
-       <TD>Specifies whether the printer is accepting new jobs. May be
-       the names "Yes" or "No".</TD>
-</TR>
-<TR>
-       <TD>&lt;DefaultPrinter name&gt;<BR>
-       &lt;/Printer&gt;</TD>
-       <TD>Surrounds the printer definition for a default destination.</TD>
-</TR>
-<TR>
-       <TD>AllowUsers</TD>
-       <TD>Specifies a list of users that are allowed to access the printer.</TD>
-</TR>
-<TR>
-       <TD>BannerStart</TD>
-       <TD>Specifies the banner that is printed before other files in a
-       job.</TD>
-</TR>
-<TR>
-       <TD>BannerEnd</TD>
-       <TD>Specifies the banner that is printed after other files in a
-       job.</TD>
-</TR>
-<TR>
-       <TD>DenyUsers</TD>
-       <TD>Specifies a list of users that are not allowed to access the
-       printer.</TD>
-</TR>
-<TR>
-       <TD>DeviceURI</TD>
-       <TD>Specifies the device-uri attribute for the printer.</TD>
-</TR>
-<TR>
-       <TD>Info</TD>
-       <TD>A textual description of the printer.</TD>
-</TR>
-<TR>
-       <TD>Location</TD>
-       <TD>A textual location of the printer.</TD>
-</TR>
-<TR>
-       <TD>&lt;Printer name&gt;<BR>
-       &lt;/Printer&gt;</TD>
-       <TD>Surrounds the printer definition.</TD>
-</TR>
-<TR>
-       <TD>State</TD>
-       <TD>Specifies the initial state of the printer; can be "Idle" or
-       "Stopped".</TD>
-</TR>
-<TR>
-       <TD>StateMessage</TD>
-       <TD>Specifies a textual message for the current printer state.</TD>
-</TR>
-</TABLE></CENTER>
-
-<H1>External Interfaces</H1>
-
-<H2>AppSocket Protocol</H2>
-
-<P>The AppSocket protocol is an 8-bit clean TCP/IP socket connection.
-The default IP service port is 9100. The URI method name is "socket".
-
-<P>The AppSocket protocol is used by the Hewlett Packard JetDirect
-network interfaces and print servers, as well as many other vendors'
-products. See the CUPS Software Administrators Manual for a list of
-supported products.
-
-<H2>CUPS Browsing Protocol</H2>
-
-<P>The CUPS Browsing Protocol is a UDP/IP-based broadcast service. By default
-this service operates on IP service port 631.
-
-<P>Each broadcast packet describes the state of a single printer or class and
-is an ASCII text string of up to 1450 bytes ending with a newline (0x0a). The
-string is formatted as follows:
-
-<UL><PRE>
-type SP state SP uri SP "location" SP "info" SP "make-and-model" NL
-</PRE></UL>
-
-<P><VAR>State, uri, location, info</VAR>, and <VAR>make-and-model</VAR>,
-correspond to the IPP <CODE>printer-state</CODE>,
-<CODE>printer-uri-supported</CODE>, <CODE>printer-location</CODE>,
-<CODE>printer-info</CODE>, and <CODE>printer-make-and-model</CODE>
-attributes.
-
-<P><VAR>Type</VAR> is a hexadecimal number string representing
-capability/type bits:
-
-<CENTER><TABLE WIDTH="40%" BORDER="1">
-<TR>
-       <TH WIDTH="8%">Bit</TH>
-       <TH>Description</TH>
-</TR>
-<TR>
-       <TD>0</TD>
-       <TD>0 = printer<BR>
-       1 = class</TD>
-</TR>
-<TR>
-       <TD>1</TD>
-       <TD>0 = local<BR>
-       1 = remote<BR>
-       (always 1)</TD>
-</TR>
-<TR>
-       <TD>2</TD>
-       <TD>1 = can print B&W</TD>
-</TR>
-<TR>
-       <TD>3</TD>
-       <TD>1 = can print color</TD>
-</TR>
-<TR>
-       <TD>4</TD>
-       <TD>1 = can duplex</TD>
-</TR>
-<TR>
-       <TD>5</TD>
-       <TD>1 = can staple</TD>
-</TR>
-<TR>
-       <TD>6</TD>
-       <TD>1 = can do fast copies</TD>
-</TR>
-<TR>
-       <TD>7</TD>
-       <TD>1 = can do fast collating</TD>
-</TR>
-<TR>
-       <TD>8</TD>
-       <TD>1 = can punch holes</TD>
-</TR>
-<TR>
-       <TD>9</TD>
-       <TD>1 = can cover</TD>
-</TR>
-<TR>
-       <TD>10</TD>
-       <TD>1 = can bind</TD>
-</TR>
-<TR>
-       <TD>11</TD>
-       <TD>1 = can sort</TD>
-</TR>
-<TR>
-       <TD>12</TD>
-       <TD>1 = can print up to 9x14 inches</TD>
-</TR>
-<TR>
-       <TD>13</TD>
-       <TD>1 = can print up to 18x24 inches</TD>
-</TR>
-<TR>
-       <TD>14</TD>
-       <TD>1 = can print up to 36x48 inches</TD>
-</TR>
-<TR>
-       <TD>15</TD>
-       <TD>1 = can print variable sizes</TD>
-</TR>
-</TABLE></CENTER>
-
-<H2>CUPS Form File</H2>
-
-<P>CUPS Form files are XML files used by the CUPS <CODE>formtops</CODE>
-filter to produce dynamic banner pages and support preprinted forms.
-
-<P>The MIME type for CUPS Form files is
-<CODE>application/vnd.cups-form</CODE>.
-
-<H3>CUPS Form DTD</H3>
-
-<P>The following DTD describes the available elements and attributes in
-a CUPS Form file:
-
-<CENTER><TABLE BORDER>
-<TR>
-<TD><PRE>
-&lt;!ENTITY % Angle "CDATA" -- angle in degrees -->
-
-&lt;!ENTITY % Color "CDATA" -- a color using sRGB: #RRGGBB as Hex values -->
-
-&lt;!ENTITY % Length "CDATA" -- nn for pixels or nn% for percentage length -->
-
-&lt;!ENTITY % Lengths "CDATA" -- comma-separated Length values -->
-
-&lt;!ENTITY % Text "CDATA">
-
-&lt;!ENTITY % heading "H1|H2|H3|H4|H5|H6">
-
-&lt;!ENTITY % preformatted "PRE">
-
-&lt;!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED  -- language code --
-  dir         (ltr|rtl)      #IMPLIED  -- direction for weak/neutral text --"
-  >
-
-&lt;!ENTITY % attrs "%i18n;">
-
-&lt;!ENTITY % fontstyle
- "B | FONT | I | TT">
-
-&lt;!ENTITY % graphics
- "BOX | RECT | LINE | POLY | ARC | PIE | TEXT">
-
-&lt;!ENTITY % insert
- "IMG | VAR">
-
-&lt;!-- %inline; covers inline or "text-level" elements -->
-&lt;!ENTITY % inline "#PCDATA | %fontstyle; | %graphics; | %insert;">
-
-&lt;!ELEMENT (%fontstyle;) - - (%inline;)*>
-&lt;!ATTLIST (%fontstyle;)
-  %attrs;                              -- %i18n --
-  >
-
-&lt;!ELEMENT BR - O EMPTY                 -- forced line break -->
-&lt;!ATTLIST BR
-  %attrs;                              -- %i18n --
-  >
-
-&lt;!ENTITY % block
-     "P | %heading; | %preformatted;">
-
-&lt;!ENTITY % flow "%block; | %inline;">
-
-&lt;!ELEMENT PAGE O O (%flow;)+           -- document body -->
-&lt;!ATTLIST PAGE
-  %attrs;                              -- %i18n --
-  align       (left|center|right) #IMPLIED -- horizontal alignment --
-  valign      (top|middle|center|bottom) #IMPLIED -- vertical alignment --
-  >
-
-&lt;!ELEMENT P - O (%inline;)*            -- paragraph -->
-&lt;!ATTLIST P
-  %attrs;                              -- %i18n --
-  align       (left|center|right) #IMPLIED -- horizontal alignment --
-  >
-
-&lt;!ELEMENT (%heading;)  - - (%inline;)* -- heading -->
-&lt;!ATTLIST (%heading;)
-  %attrs;                              -- %i18n --
-  align       (left|center|right) #IMPLIED -- horizontal alignment --
-  >
-
-&lt;!ELEMENT PRE - - (%inline;)*          -- preformatted text -->
-&lt;!ATTLIST PRE
-  %attrs;                              -- %i18n --
-  align       (left|center|right) #IMPLIED -- horizontal alignment --
-  >
-
-&lt;!ELEMENT BOX - O EMPTY                -- unfilled box -->
-&lt;!ATTLIST BOX
-  color       %Color;        #IMPLIED  -- override color --
-  height      %Length;       #REQUIRED -- height of box --
-  thickness   %Length;       #IMPLIED  -- override line thickness --
-  width       %Length;       #REQUIRED -- width of box --
-  x           %Length;       #REQUIRED -- horizontal position --
-  y           %Length;       #REQUIRED -- vertical position --
-  >
-
-&lt;!ELEMENT RECT - O EMPTY               -- filled box -->
-&lt;!ATTLIST RECT
-  color       %Color;        #IMPLIED  -- override color --
-  height      %Length;       #REQUIRED -- height of box --
-  width       %Length;       #REQUIRED -- width of box --
-  x           %Length;       #REQUIRED -- horizontal position --
-  y           %Length;       #REQUIRED -- vertical position --
-  >
-
-&lt;!ELEMENT LINE - O EMPTY               -- polyline -->
-&lt;!ATTLIST LINE
-  color       %Color;        #IMPLIED  -- override color --
-  thickness   %Length;       #IMPLIED  -- override line thickness --
-  x           %Lengths;      #REQUIRED -- horizontal positions --
-  y           %Lengths;      #REQUIRED -- vertical positions --
-  >
-
-&lt;!ELEMENT POLY - O EMPTY               -- polygon (filled) -->
-&lt;!ATTLIST POLY
-  color       %Color;        #IMPLIED  -- override color --
-  x           %Lengths;      #REQUIRED -- horizontal positions --
-  y           %Lengths;      #REQUIRED -- vertical positions --
-  >
-
-&lt;!ELEMENT ARC - O EMPTY                -- unfilled arc -->
-&lt;!ATTLIST ARC
-  color       %Color;        #IMPLIED  -- override color --
-  end         %Angle;        #IMPLIED  -- override end angle --
-  height      %Length;       #REQUIRED -- height of arc --
-  start       %Angle;        #IMPLIED  -- override start angle --
-  thickness   %Length;       #IMPLIED  -- override line thickness --
-  width       %Length;       #REQUIRED -- width of arc --
-  x           %Length;       #REQUIRED -- horizontal position --
-  y           %Length;       #REQUIRED -- vertical position --
-  >
-
-&lt;!ELEMENT PIE - O EMPTY                -- filled arc -->
-&lt;!ATTLIST PIE
-  color       %Color;        #IMPLIED  -- override color --
-  end         %Angle;        #IMPLIED  -- override end angle --
-  height      %Length;       #REQUIRED -- height of arc --
-  start       %Angle;        #IMPLIED  -- override start angle --
-  width       %Length;       #REQUIRED -- width of arc --
-  x           %Length;       #REQUIRED -- horizontal position --
-  y           %Length;       #REQUIRED -- vertical position --
-  >
-
-&lt;!ELEMENT TEXT - - (%flow;)*           -- text box -->
-&lt;!ATTLIST RECT
-  align       (left|center|right) #IMPLIED -- horizontal alignment --
-  height      %Length;       #REQUIRED -- height of box --
-  valign      (top|middle|center|bottom) #IMPLIED -- vertical alignment --
-  width       %Length;       #REQUIRED -- width of box --
-  x           %Length;       #REQUIRED -- horizontal position --
-  y           %Length;       #REQUIRED -- vertical position --
-  >
-
-
-&lt;!ELEMENT IMG - O EMPTY                -- Embedded image -->
-&lt;!ATTLIST IMG
-  %attrs;                              -- %coreattrs, %i18n, %events --
-  src         %URI;          #REQUIRED -- URI of image to embed --
-  height      %Length;       #IMPLIED  -- override height --
-  width       %Length;       #IMPLIED  -- override width --
-  >
-
-&lt;!ELEMENT HEAD O O (DEFVAR)*           -- document head -->
-&lt;!ATTLIST HEAD
-  %i18n;                               -- lang, dir --
-  >
-
-&lt;!ELEMENT DEFVAR - O EMPTY             -- variable definition -->
-&lt;!ATTLIST DEFVAR
-  name        CDATA          #REQUIRED -- name
-  value       CDATA          #REQUIRED -- value
-  >
-
-
-&lt;!ENTITY % html.content "HEAD, PAGE">
-
-&lt;!ELEMENT CUPSFORM - - (HEAD) (PAGE)+  -- document root element -->
-&lt;!ATTLIST CUPSFORM
-  %i18n;                               -- lang, dir --
-  >
-</PRE></TD>
-</TR>
-</TABLE></CENTER>
-
-<H2>CUPS PostScript File</H2>
-
-<P>CUPS PostScript files are device-dependent Adobe PostScript program files.
-The PostScript language is described in the
-<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
-Adobe PostScript Language Reference Manual, Third Edition</A>.
-
-<P>The MIME type for CUPS PostScript files is
-<CODE>application/vnd.cups-postscript</CODE>.
-
-<H2>CUPS Raster File</H2>
-
-<P>CUPS raster files are device-dependent raster image files that contain a
-PostScript page device dictionary and device-dependent raster imagery for
-each page in the document. These files are used to transfer raster data
-from the PostScript and image file RIPs to device-dependent filters that
-convert the raster data to a printable format.
-
-<P>A raster file begins with a four byte synchronization word: 0x52615374
-("RaSt") for big-endian architectures and 0x74536152 ("tSaR") for little-endian
-architectures.  The writer of the raster file will use the native word order,
-and the reader is responsible for detecting a reversed word order file and
-swapping bytes as needed. The CUPS Image Library raster functions perform
-this function automatically.
-
-<P>Following the synchronization word are a series of raster pages.  Each page
-starts with a page device dictionary header and is followed immediately by the
-raster data for that page.
-
-<CENTER><TABLE WIDTH="80%" BORDER="1">
-<TR>
-       <TH WIDTH="10%">Bytes</TH>
-       <TH WIDTH="20%">Description</TH>
-       <TH>Values</TH>
-</TR>
-<TR>
-       <TD>0-63</TD>
-       <TD>MediaClass</TD>
-       <TD>Nul-terminated ASCII string</TD>
-</TR>
-<TR>
-       <TD>64-127</TD>
-       <TD>MediaColor</TD>
-       <TD>Nul-terminated ASCII string</TD>
-</TR>
-<TR>
-       <TD>128-191</TD>
-       <TD>MediaType</TD>
-       <TD>Nul-terminated ASCII string</TD>
-</TR>
-<TR>
-       <TD>192-255</TD>
-       <TD>OutputType</TD>
-       <TD>Nul-terminated ASCII string</TD>
-</TR>
-<TR>
-       <TD>256-259</TD>
-       <TD>AdvanceDistance</TD>
-       <TD>0 to 2<SUP>32</SUP> - 1 points</TD>
-</TR>
-<TR>
-       <TD>260-263</TD>
-       <TD>AdvanceMedia</TD>
-       <TD>0 = Never advance roll<BR>
-       1 = Advance roll after file<BR>
-       2 = Advance roll after job<BR>
-       3 = Advance roll after set<BR>
-       4 = Advance roll after page</TD>
-</TR>
-<TR>
-       <TD>264-267</TD>
-       <TD>Collate</TD>
-       <TD>0 = do not collate copies<BR>
-       1 = collate copies</TD>
-</TR>
-<TR>
-       <TD>268-271</TD>
-       <TD>CutMedia</TD>
-       <TD>0 = Never cut media<BR>
-       1 = Cut roll after file<BR>
-       2 = Cut roll after job<BR>
-       3 = Cut roll after set<BR>
-       4 = Cut roll after page</TD>
-</TR>
-<TR>
-       <TD>272-275</TD>
-       <TD>Duplex</TD>
-       <TD>0 = Print single-sided<BR>
-       1 = Print double-sided</TD>
-</TR>
-<TR>
-       <TD>276-283</TD>
-       <TD>HWResolution</TD>
-       <TD>Horizontal and vertical resolution in dots-per-inch.</TD>
-</TR>
-<TR>
-       <TD>284-299</TD>
-       <TD>ImagingBoundingBox</TD>
-       <TD>Four integers giving the left, bottom, right, and top positions
-       of the page bounding box in points</TD>
-</TR>
-<TR>
-       <TD>300-303</TD>
-       <TD>InsertSheet</TD>
-       <TD>0 = Do not insert separator sheets<BR>
-       1 = Insert separator sheets</TD>
-</TR>
-<TR>
-       <TD>304-307</TD>
-       <TD>Jog</TD>
-       <TD>0 = Do no jog pages<BR>
-       1 = Jog pages after file<BR>
-       2 = Jog pages after job<BR>
-       3 = Jog pages after set</TD>
-</TR>
-<TR>
-       <TD>308-311</TD>
-       <TD>LeadingEdge</TD>
-       <TD>0 = Top edge is first<BR>
-       1 = Right edge is first<BR>
-       2 = Bottom edge is first<BR>
-       3 = Left edge is first</TD>
-</TR>
-<TR>
-       <TD>312-319</TD>
-       <TD>Margins</TD>
-       <TD>Left and bottom origin of image in points</TD>
-</TR>
-<TR>
-       <TD>320-323</TD>
-       <TD>ManualFeed</TD>
-       <TD>0 = Do not manually feed media<BR>
-       1 = Manually feed media</TD>
-</TR>
-<TR>
-       <TD>324-327</TD>
-       <TD>MediaPosition</TD>
-       <TD>Input slot position from 0 to N</TD>
-</TR>
-<TR>
-       <TD>328-331</TD>
-       <TD>MediaWeight</TD>
-       <TD>Media weight in grams per meter squared</TD>
-</TR>
-<TR>
-       <TD>332-335</TD>
-       <TD>MirrorPrint</TD>
-       <TD>0 = Do not mirror prints<BR>
-       1 = Mirror prints</TD>
-</TR>
-<TR>
-       <TD>336-339</TD>
-       <TD>NegativePrint</TD>
-       <TD>0 = Do not invert prints<BR>
-       1 = Invert prints</TD>
-</TR>
-<TR>
-       <TD>340-343</TD>
-       <TD>NumCopies</TD>
-       <TD>1 to 2<SUP>32</SUP> - 1</TD>
-</TR>
-<TR>
-       <TD>344-347</TD>
-       <TD>Orientation</TD>
-       <TD>0 = Do not rotate page<BR>
-       1 = Rotate page counter-clockwise<BR>
-       2 = Turn page upside down<BR>
-       3 = Rotate page clockwise</TD>
-</TR>
-<TR>
-       <TD>348-351</TD>
-       <TD>OutputFaceUp</TD>
-       <TD>0 = Output face down<BR>
-       1 = Output face up</TD>
-</TR>
-<TR>
-       <TD>352-359</TD>
-       <TD>PageSize</TD>
-       <TD>Width and length in points</TD>
-</TR>
-<TR>
-       <TD>360-363</TD>
-       <TD>Separations</TD>
-       <TD>0 = Print composite image<BR>
-       1 = Print color separations</TD>
-</TR>
-<TR>
-       <TD>364-367</TD>
-       <TD>TraySwitch</TD>
-       <TD>0 = Do not change trays if selected tray is empty<BR>
-       1 = Change trays if selected tray is empty</TD>
-</TR>
-<TR>
-       <TD>368-371</TD>
-       <TD>Tumble</TD>
-       <TD>0 = Do not rotate even pages when duplexing<BR>
-       1 = Rotate even pages when duplexing</TD>
-</TR>
-<TR>
-       <TD>372-375</TD>
-       <TD>cupsWidth</TD>
-       <TD>Width of page image in pixels</TD>
-</TR>
-<TR>
-       <TD>376-379</TD>
-       <TD>cupsHeight</TD>
-       <TD>Height of page image in pixels</TD>
-</TR>
-<TR>
-       <TD>380-383</TD>
-       <TD>cupsMediaType</TD>
-       <TD>Driver-specific 0 to 2<SUP>32</SUP> - 1</TD>
-</TR>
-<TR>
-       <TD>384-387</TD>
-       <TD>cupsBitsPerColor</TD>
-       <TD>1, 2, 4, 8 bits</TD>
-</TR>
-<TR>
-       <TD>388-391</TD>
-       <TD>cupsBitsPerPixel</TD>
-       <TD>1 to 32 bits</TD>
-</TR>
-<TR>
-       <TD>392-395</TD>
-       <TD>cupsBytesPerLine</TD>
-       <TD>1 to 2<SUP>32</SUP> - 1 bytes</TD>
-</TR>
-<TR>
-       <TD>396-399</TD>
-       <TD>cupsColorOrder</TD>
-       <TD>0 = chunky pixels (CMYK CMYK CMYK)<BR>
-       1 = banded pixels (CCC MMM YYY KKK)<BR>
-       2 = planar pixels (CCC... MMM... YYY... KKK...)</TD>
-</TR>
-<TR>
-       <TD>400-403</TD>
-       <TD>cupsColorSpace</TD>
-       <TD>0 = white<BR>
-       1 = RGB<BR>
-       2 = RGBA<BR>
-       3 = black<BR>
-       4 = CMY<BR>
-       5 = YMC<BR>
-       6 = CMYK<BR>
-       7 = YMCK<BR>
-       8 = KCMY<BR>
-       9 = KCMYcm</TD>
-</TR>
-<TR>
-       <TD>404-407</TD>
-       <TD>cupsCompression</TD>
-       <TD>Driver-specific 0 to 2<SUP>32</SUP> - 1</TD>
-</TR>
-<TR>
-       <TD>408-411</TD>
-       <TD>cupsRowCount</TD>
-       <TD>Driver-specific 0 to 2<SUP>32</SUP> - 1</TD>
-</TR>
-<TR>
-       <TD>412-415</TD>
-       <TD>cupsRowFeed</TD>
-       <TD>Driver-specific 0 to 2<SUP>32</SUP> - 1</TD>
-</TR>
-<TR>
-       <TD>416-419</TD>
-       <TD>cupsRowStep</TD>
-       <TD>Driver-specific 0 to 2<SUP>32</SUP> - 1</TD>
-</TR>
-</TABLE></CENTER>
-
-<P>The MIME type for CUPS Raster files is
-<CODE>application/vnd.cups-raster</CODE>.
-
-<H2>CUPS Raw Files</H2>
-
-<P>Raw files are printer-dependent print files that are in a format suitable
-to the destination printer (e.g. HP-PCL, HP-RTL, etc.) The MIME type for CUPS
-Raw files is <CODE>application/vnd.cups-raw</CODE>.
-
-<H2>Internet Printing Protocol</H2>
-
-<P>The Internet Printing Protocol and the CUPS extensions to it are
-described in the CUPS Implementation of IPP document.
-
-<H2>Line Printer Daemon Protocol</H2>
-
-<P>The Line Printer Daemon (LPD) protocol is described by
-<A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179: Line Printer Daemon
-Protocol</A>.
-
-<P>The URI method name for LPD is "lpd".
-
-<H2>Server Message Block Protocol</H2>
-
-<P>The Server Message Block (SMB) and related Common Internet File
-System (CIFS) protocols are described at
-<A HREF="http://anu.samba.org/cifs">http://anu.samba.org/cifs</A>.
-
-<P>The URI method name for SMB is "smb". Support for this protocol is
-provided via the SAMBA <CODE>smbspool(1)</CODE> program provided with
-SAMBA 2.0.6 and higher.
-
-<H1>Directories</H1>
-
-<DL>
-
-       <DT>/etc/cups
-       <DD>The scheduler configuration and MIME files reside here.
-
-       <DT>/etc/cups/certs
-       <DD>The authentication certificates reside here.
-
-       <DT>/etc/cups/interfaces
-       <DD>System V interface scripts reside here.
-
-       <DT>/etc/cups/ppd
-       <DD>This directory contains PPD files for each printer.
-
-       <DT>/usr/bin
-       <DD>The <CODE>cancel</CODE>, <CODE>lp</CODE>, <CODE>lpq</CODE>,
-       <CODE>lpr</CODE>, <CODE>lprm</CODE>, and <CODE>lpstat</CODE> commands
-       reside here.
-
-       <DT>/usr/lib, /usr/lib32
-       <DD>The shared libraries (DSOs) reside here.
-
-       <DT>/usr/lib/cups/backend
-       <DD>The backend filters reside here.
-
-       <DT>/usr/lib/cups/cgi-bin
-       <DD>The CGI programs reside here.
-
-       <DT>/usr/lib/cups/daemon
-       <DD>The polling and LPD daemons reside here.
-
-       <DT>/usr/lib/cups/filter
-       <DD>The file filters reside here.
-
-       <DT>/usr/sbin
-       <DD>The <CODE>accept</CODE>, <CODE>cupsd</CODE>,
-       <CODE>lpadmin</CODE>, <CODE>lpc</CODE>, and <CODE>reject</CODE>
-       commands reside here.
-
-       <DT>/usr/share/cups
-       <DD>This is the root directory of the CUPS static data.
-
-       <DT>/usr/share/cups/charsets
-       <DD>The character set files reside here.
-
-       <DT>/usr/share/cups/data
-       <DD>The filter data files reside here.
-
-       <DT>/usr/share/cups/fonts
-       <DD>The <CODE>pstoraster</CODE> font files reside here.
-
-       <DT>/usr/share/cups/model
-       <DD>The sample PPD files reside here.
-
-       <DT>/usr/share/cups/pstoraster
-       <DD>The <CODE>pstoraster</CODE> data files reside here.
-
-       <DT>/usr/share/doc/cups
-       <DD>The scheduler documentation files reside here.
-
-       <DT>/var/log/cups
-       <DD>The <CODE>access_log</CODE>, <CODE>error_log</CODE>, and
-       <CODE>page_log</CODE> files reside here.
-
-       <DT>/var/spool/cups
-       <DD>This directory contains print job files.
-
-</DL>
-
-<EMBED SRC="glossary.shtml">
-
-</BODY>
-</HTML>
index b1bf014459b428102728708af7a6d60d9cac59e3..0e28904e7a86511abfb13b6a2c9840dfdd91e370 100644 (file)
@@ -128,7 +128,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>The Common UNIX Printing System, CUPS, and the CUPS logo are the
 trademark property of <A HREF="http://www.easysw.com">Easy Software
-Products</A>. CUPS is copyright 1997-2006 by Easy Software Products,
+Products</A>. CUPS is copyright 1997-2007 by Easy Software Products,
 All Rights Reserved.</SMALL></P>
 
 </TD>
index a501ee4d1301482ef8e3a439063ec19ecdf63592..d5540de8a1d277f0176ced2904ec0fb43c7f6353 100644 (file)
@@ -125,7 +125,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>Common UNIX Printing System, CUPS, e il logo CUPS sono
 marchi registrati da <A HREF="http://www.easysw.com">Easy Software
-Products</A>. CUPS &egrave; un copyright 1997-2006 di Easy Software Products,
+Products</A>. CUPS &egrave; un copyright 1997-2007 di Easy Software Products,
 Tutti i diritti sono riservati.</SMALL></P>
 
 </TD>
index b87c016e5feba88ff50dd47869197815e15b28e1..13ce30622ea412038c86fa3d4e2115409de1e0b8 100644 (file)
@@ -128,7 +128,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>The Common UNIX Printing System, CUPS, and the CUPS logo are the
 trademark property of <A HREF="http://www.easysw.com">Easy Software
-Products</A>. CUPS is copyright 1997-2006 by Easy Software Products,
+Products</A>. CUPS is copyright 1997-2007 by Easy Software Products,
 All Rights Reserved.</SMALL></P>
 
 </TD>
index 9d29d9ca4f19ee8c28379e71751ecfc773159d34..6453c16fde8b8f42ae51f4103643482ea5d41c02 100644 (file)
@@ -128,7 +128,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>Common UNIX Printing System, CUPS i logo CUPS są
 zarejestrowanymi znakami towarowymi <A HREF="http://www.easysw.com">Easy Software
-Products</A>. Copyright 1997-2006 Easy Software Products,
+Products</A>. Copyright 1997-2007 Easy Software Products,
 wszelkie prawa zastrzeżone.</SMALL></P>
 
 </TD>
diff --git a/doc/sdd.shtml b/doc/sdd.shtml
deleted file mode 100644 (file)
index f09077c..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-<HTML>
-<HEAD>
-       <META NAME="COPYRIGHT" CONTENT="Copyright 1997-2003, All Rights Reserved">
-       <META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.2">
-       <META NAME="Author" CONTENT="Easy Software Products">
-       <TITLE>CUPS Software Design Description</TITLE>
-</HEAD>
-<BODY>
-
-<H1>Scope</H1>
-
-<H2>Identification</H2>
-
-This software design description document provides general information 
-on the architecture and coding of the Common UNIX Printing System 
-(&quot;CUPS&quot;) Version 1.2.
-
-<EMBED SRC="system-overview.shtml">
-
-<H2>Document Overview</H2>
-
-This software design description document is organized into the 
-following sections:
-
-<UL>
-
-       <LI>1 - Scope
-
-       <LI>2 - References
-
-       <LI>3 - Design Overview
-
-       <LI>A - Glossary
-
-</UL>
-
-<EMBED SRC="references.shtml">
-
-<H1>Design Overview</H1>
-
-CUPS is composed of 9 software sub-systems that operate together to 
-perform common printing tasks:
-
-<UL>
-
-       <LI>Backends
-
-       <LI>Berkeley Commands
-
-       <LI>CGI
-
-       <LI>CUPS Application Programmers Interface
-
-       <LI>CUPS Imaging Library
-
-       <LI>Daemons
-
-       <LI>Filters
-
-       <LI>Scheduler
-
-       <LI>System V Commands
-
-</UL>
-
-<H2>Backends</H2>
-
-The backends implement communications over a number of different interfaces.
-All backends are called with a common set of arguments:
-
-<UL>
-
-       <LI>Device URI - the Uniform Resource Identifier for the output device
-       (e.g. <CODE>parallel:/dev/plp</CODE>,
-       <CODE>ipp://hostname/resource</CODE>).
-
-       <LI>Job Identifier - the job identifier for this job (integer).
-
-       <LI>User Name - the user associated with this job (name string).
-
-       <LI>Title - the title/job-name associated with this job (name string).
-
-       <LI>Copies - the number of copies required (integer).
-
-       <LI>Options - the options associated with this job (space separated
-       option strings).
-
-       <LI>Filename (optional) - the file to print; if this option is not
-       specified, the backend must read the print file from the standard
-       input.
-
-</UL>
-
-<P>Backends are named using the scheme of the URI, so a URI of
-"ipp://hostname/resource" would be processed by the "ipp" backend.
-
-<H3>ipp</H3>
-
-<P>The ipp backend sends the specified job to a network printer or host using
-the Internet Printing Protocol.  The URI is as specified by the
-<CODE>printer-uri-supported</CODE> attribute from the printer or host.
-
-<H3>lpd</H3>
-
-<P>The lpd backend sends the specified job to a network printer or host using
-the Line Printer Daemon protocol.  The URI is of the form:
-
-<UL><PRE>lpd://hostname/queue
-</PRE></UL>
-
-<H3>parallel</H3>
-
-<P>The parallel backend sends the specified job to a local printer connected
-via the specified parallel port device.  The URI is of the form:
-
-<UL><PRE>parallel:/dev/file
-</PRE></UL>
-
-<H3>serial</H3>
-
-<P>The serial backend sends the specified job to a local printer connected
-via the specified serial port device.  The URI is of the form:
-
-<UL><PRE>serial:/dev/file?option[+option+...]
-</PRE></UL>
-
-The options can be any combination of the following:
-
-<UL>
-
-       <LI><CODE>baud=<I>rate</I></CODE> - Sets the baud rate for the device.
-
-       <LI><CODE>bits=<I>7 or 8</I></CODE> - Sets the number of data bits.
-
-       <LI><CODE>parity=<I>even</I></CODE> - Sets even parity checking.
-
-       <LI><CODE>parity=<I>odd</I></CODE> - Sets odd parity checking.
-
-       <LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off.
-
-       <LI><CODE>flow=dtrdsr<I></I></CODE> - Turns DTR/DSR (hardware) flow
-       control on.
-
-       <LI><CODE>flow=hard<I></I></CODE> - Turns RTS/CTS
-       (hardware) flow control on.
-
-       <LI><CODE>flow=none<I></I></CODE> - Turns flow control off.
-
-       <LI><CODE>flow=rtscts<I></I></CODE> - Turns RTS/CTS
-       (hardware) flow control on.
-
-       <LI><CODE>flow=xonxoff<I></I></CODE> - Turns XON/XOFF
-       (software) flow control on.
-
-</UL>
-
-<H3>socket</H3>
-
-<P>The socket backend sends the specified job to a network host using the
-AppSocket protocol commonly used by Hewlett-Packard and Tektronix
-printers.  The URI is of the form:
-
-<UL><PRE>socket://hostname[:port]
-</PRE></UL>
-
-The default port number is 9100.
-
-<H3>usb</H3>
-
-<P>The usb backend sends the specified job to a local printer connected
-via the specified usb port device.  The URI is of the form:
-
-<UL><PRE>usb:/dev/file
-</PRE></UL>
-
-<H2>Berkeley Commands</H2>
-
-<P>The Berkeley commands provide a simple command-line interface to CUPS
-to submit and control print jobs. It is provided for compatibility with
-existing software that is hardcoded to use the Berkeley commands.
-
-<H3>lpc</H3>
-
-The lpc command allows users and administrators to check the status and
-control print queues.  The version provided with CUPS supports the following
-commands:
-
-<UL>
-
-       <LI>quit - Quits the lpc command.
-
-       <LI>status - Shows the status of printers and jobs in the queue.
-
-</UL>
-
-<H3>lpq</H3>
-
-<P>The lpq command shows the current queue status.
-
-<H3>lpr</H3>
-
-<P>The lpr command submits a job for printing.  The CUPS version of lpr silently
-ignores the "i", "t", "m", "h", and "s" options.
-
-<H3>lprm</H3>
-
-<P>The lprm removes one or more print jobs.
-
-<H2>CGI</H2>
-
-<P>The Common Gateway Interface (CGI) programs provide a web-based
-status interface to monitor the status of printers, classes, and jobs.
-Each of the CGIs utilize HTML template files that can be customized to
-provide alternate appearances.
-
-<H3>admin.cgi</H3>
-
-<P>The admin CGI provides administration interfaces for printers and
-classes. The user can add, modify, delete, start, stop, and configure
-printers and classes using "wizard" interfaces.
-
-<H3>classes.cgi</H3>
-
-<P>The classes CGI lists the available printer classes and any pending
-jobs for the class.  The user can click on individual classes to limit
-the display and click on jobs to see the job status.
-
-<H3>jobs.cgi</H3>
-
-<P>The jobs CGI lists the queued print jobs in order of priority.  The
-list can be limited by printer or job.
-
-<H3>printers.cgi</H3>
-
-<P>The printers CGI lists the available printer queues and any pending
-jobs for the printer.  The user can click on individual printers to
-limit the display and click on jobs to see the job status.
-
-<H2>CUPS Application Programmers Interface</H2>
-
-<P>The CUPS Application Programmers Interface ("API") provides common
-convenience, HTTP, IPP, language, and PPD functions used by the CUPS
-software.
-
-<H3>Convenience Functions</H3>
-
-<P>Convenience functions are provided to submit an IPP request, send a
-print file, cancel a job, get a list of available printers, get a list
-of available classes, get the default printer or class, get the default
-server name, get the local username, and get a password string.
-
-<H3>HTTP Functions</H3>
-
-<P>The HTTP functions provide functions to connect to HTTP servers,
-issue requests, read data from a server, and write data to a server.
-
-<H3>IPP Functions</H3>
-
-<P>The IPP function provide functions to manage IPP request data and
-attributes, read IPP responses from a server, and write IPP requests to
-a server.
-
-<H3>Language Functions</H3>
-
-<P>The language functions provide a standard interface for retrieving
-common textual messages for a particular locale and determining the
-correct encoding (e.g. US ASCII, UTF-8, ISO-8859-1, etc.)
-
-<H3>PPD Functions</H3>
-
-<P>The PostScript Printer Description functions manage PPD files,
-select options, check for option conflicts, and emit selected options
-in the correct order.
-
-<H2>CUPS Imaging Library</H2>
-
-<P>The CUPS imaging library provides colorspace conversion, color
-management, image management, scaling, image file, and raster functions
-used by the CUPS raster filters.
-
-<H3>Colorspace Conversion Functions</H3>
-
-<P>The colorspace conversion functions handle conversion of grayscale
-and RGB colors to grayscale, RGB, K, CMY, CMYK, and CMYKcm colorspaces.
-
-<H3>Color Management Functions</H3>
-
-<P>The color management functions handle gamut mapping and density
-correction. These are integrated with the colorspace conversion
-functions so that colorspace conversion and color management are
-processed in a single step.
-
-<H3>Image Management Functions</H3>
-
-<P>The image management functions manage a tiled image database that is
-swapped to/from disk as needed.
-
-<H3>Scaling Functions</H3>
-
-<P>The scaling functions provide image scaling services using
-nearest-neighbor sampling and bilinear interpolation as appropriate.
-
-<H3>Image File Functions</H3>
-
-<P>The image file functions handle loading of all image file formats.
-
-<H3>Raster Functions</H3>
-
-<P>The raster functions manage streams of CUPS raster data (described
-in the Interface Design Document) used by non-PostScript printer
-drivers and raster filters.
-
-<H2>Daemons</H2>
-
-<P>The daemons provide additional network functions for the scheduler.
-Currently only two daemons are provided with CUPS.
-
-<H3>Line Printer Daemon</H3>
-
-<P>The line printer daemon provides remote LPD client support and is
-run by the <CODE>inetd(8)</CODE> daemon as needed.
-
-<H3>Polling Daemon</H3>
-
-<P>The polling daemon is used to poll a remote server for a list of
-available printers and provide it to the scheduler for addition. A
-separate polling daemon is run by the scheduler for every remote
-system listed for polling in the scheduler configuration file.
-
-<H2>Filters</H2>
-
-<P>The filters implement file conversion services for CUPS. All filters
-are called with a common set of arguments:
-
-<UL>
-
-       <LI>Printer name - the name of the destination printer (name string).
-
-       <LI>Job Identifier - the job identifier for this job (integer).
-
-       <LI>User Name - the user associated with this job (name string).
-
-       <LI>Title - the title/job-name associated with this job (name string).
-
-       <LI>Copies - the number of copies required (integer).
-
-       <LI>Options - the options associated with this job (space separated
-       option strings).
-
-       <LI>Filename (optional) - the file to print; if this option is not
-       specified, the filter must read the input file from the standard
-       input.
-
-</UL>
-
-<P>Filters are added to the MIME conversion data file and implement all
-necessary conversions from one file type to another.
-
-<H3>hpgltops</H3>
-
-<P>The hpgltops filter converts HP-GL/2 files into PostScript.
-
-<H3>imagetops</H3>
-
-<P>The imagetops filter converts image files into PostScript.
-
-<H3>imagetoraster</H3>
-
-<P>The imagetoraster filter converts image files into CUPS raster data.
-
-<H3>pdftops</H3>
-
-<P>The pdftops filter converts PDF files into PostScript.
-
-<H3>pstops</H3>
-
-<P>The pstops filter inserts printer-specific commands from PPD files and
-performs page filtering as requested by the user.
-
-<H3>pstoraster</H3>
-
-<P>The pstoraster filter converts PostScript program data into CUPS
-raster data.
-
-<H3>rastertoepson</H3>
-
-<P>The rastertoepson filter handles converting CUPS raster data to
-ESC/P and supports both color and black-and-white printers.
-
-<H3>rastertohp</H3>
-
-<P>The rastertohp filter handles converting CUPS raster data to HP-PCL
-and supports both color and black-and-white printers.
-
-<H3>texttops</H3>
-
-<P>The texttops filter converts text files into PostScript.
-
-<H2>Scheduler</H2>
-
-<P>The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that
-manages the printers, classes, and jobs in the system.  It also handles
-a simple broadcast-based directory service so that remote print queues
-and classes can be accessed transparently from the local system.
-
-<H3>Authorization</H3>
-
-<P>The authorization module is responsible for performing access
-control and authentication for all HTTP and IPP requests entering the
-system.
-
-<H3>Classes</H3>
-
-<P>The classes module is responsible for managing printer classes in
-the system. Each class is a collection of local and/or remote
-printers.  The classes module also reads and writes the classes
-configuration file.
-
-<H3>Client</H3>
-
-<P>The client module is responsible for all HTTP client
-communications.  It handles listening on selected interfaces, accepting
-connections from prospective clients, processing incoming HTTP
-requests, and sending HTTP responses to those requests.  The client
-module also is responsible for executing the external CGI programs as
-needed to support web-based printer, class, and job status monitoring
-and administration.
-
-<P>Once authorized, all IPP requests are sent to the IPP module.
-
-<H3>Configuration</H3>
-
-<P>The configuration module is responsible for reading the CUPS
-configuration file and initializing the appropriate data structures and
-values.  The configuration module also stops CUPS services before
-reading the configuration file and restarts them after the
-configuration file has been read.
-
-<H3>Devices</H3>
-
-<P>The devices module is responsible for managing the list of available
-devices for the CUPS-Get-Devices operation.
-
-<H3>Directory Services</H3>
-
-<P>The directory services module sends and recieves printer state
-information over a broadcast socket.  Remote printers and classes are
-automatically added to or removed from the local printer and class
-lists as needed.
-
-<P>The directory services module can only recieve printer state information
-over a single UDP port, however it can broadcast to multiple addresses and
-ports as needed.
-
-<H3>IPP</H3>
-
-<P>The IPP module handles IPP requests and acts accordingly.  URI
-validation is also performed here, as a client can post IPP data to any
-URI on the server which might sidestep the access control or
-authentication of the HTTP server.
-
-<H3>Jobs</H3>
-
-<P>The jobs module manages print jobs, starts filter and backend
-processes for jobs to be printed, and monitors status messages from
-those filters and backends.
-
-<H3>Logging</H3>
-
-<P>The logging module manages the access, error, and page log files
-that are generated by the scheduler.
-
-<H3>Main</H3>
-
-<P>The main module is responsible for timing out and dispatching input
-and output for client connections.  It also watches for incoming
-<CODE>SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the
-server configuration files as needed, and handles child process errors
-and exits.
-
-<H3>MIME</H3>
-
-<P>The Multimedia Internet Mail Exchange module manages a MIME type and
-conversion database that supports file typing by extension and content
-and least-cost file filtering from a source to a destination file type.
-
-<H3>PPDs</H3>
-
-<P>The PPDs module is responsible for managing the list of available
-PPD files for the CUPS-Get-PPDs operation.
-
-<H3>Printers</H3>
-
-<P>The printers module is responsible for managing printers and PPD
-files in the system. The printers module also reads and writes the
-printers configuration file.
-
-<H2>System V Commands</H2>
-
-<P>The System V commands provide a robust command-line interface to
-CUPS to submit and control printers and jobs.
-
-<H3>accept</H3>
-
-<P>The accept command tells the scheduler to accept new jobs for specific
-printers.
-
-<H3>cancel</H3>
-
-<P>The cancel command tells the scheduler to cancel one or more jobs that are
-queued for printing.
-
-<H3>disable</H3>
-
-<P>The disable command tells the scheduler to stop printing jobs on the
-specified printers.
-
-<H3>enable</H3>
-
-<P>The enable command tells the scheduler to start printing jobs on the
-specified printers.
-
-<H3>lp</H3>
-
-<P>The lp command submits submits files for printing.  Unlike the standard
-System V lp command, a single CUPS lp command will generate a separate
-job ID for each file that is printed. Also, the Solaris "f", "H", "P", "S",
-and "y" options are silently ignored.
-
-<H3>lpadmin</H3>
-
-<P>The lpadmin command manages printer queues and classes.  The Solaris
-"A", "F", "I", "M", "P", "Q", "S", "T", "U", "W", "f", "l", "m", "o",
-"s", "t", and "u" options are not supported, and new options "P" (PPD
-file) and "E" (enable and accept) are provided to configure
-CUPS-specific features.
-
-<H3>lpinfo</H3>
-
-<P>The lpinfo command lists the available PPD files or devices as selected
-by the user.
-
-<H3>lpmove</H3>
-
-<P>The lpmove command moves a print job to a new destination.
-
-<H3>lpoptions</H3>
-
-<P>The lpoptions command manages user-defined printers and options.
-
-<H3>lpstat</H3>
-
-<P>The lpstat command lists printers, classes, and jobs as requested by the
-user.
-
-<H3>reject</H3>
-
-<P>The reject command tells the scheduler not to accept new jobs for specific
-printers.
-
-<EMBED SRC="glossary.shtml">
-
-</BODY>
-</HTML>
diff --git a/doc/sps.shtml b/doc/sps.shtml
deleted file mode 100644 (file)
index 5e2d3ee..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-<HTML>
-<HEAD>
-       <META NAME="COPYRIGHT" CONTENT="Copyright 1997-2003, All Rights Reserved">
-       <META NAME="DOCNUMBER" CONTENT="CUPS-SPS-1.2">
-       <META NAME="Author" CONTENT="Easy Software Products">
-       <TITLE>CUPS Software Performance Specification</TITLE>
-</HEAD>
-<BODY>
-
-<H1>Scope</H1>
-
-<H2>Identification</H2>
-
-<P>This software performance specification provides an analysis of the
-memory, disk, and processor utilitization of each program in the
-Common UNIX Printing System ("CUPS") Version 1.2.</P>
-
-<P>For the purposes of comparison, all figures are for the Linux Intel
-platform. Memory utilization on other platforms should be similar.
-
-<EMBED SRC="system-overview.shtml">
-
-<H2>Document Overview</H2>
-
-<P>This software performance specification is organized into the
-following sections:</P>
-
-<UL>
-       <LI>1 - Scope</LI>
-       <LI>2 - References</LI>
-       <LI>3 - Programs</LI>
-       <LI>4 - Scheduler Objects</LI>
-       <LI>A - Glossary</LI>
-</UL>
-
-<EMBED SRC="references.shtml">
-
-<H1>Programs</H1>
-
-<P>The following table describes the average memory, disk, and CPU usage of
-each program in CUPS.
-
-<P>The base memory column shows the initial memory requirements for each
-program, including any shared libraries that are provided by CUPS.
-
-<P>The max memory column shows the maximum amount of memory that will be
-used by the program based upon the default configuration settings supplied
-with CUPS.
-
-<P>The temp files column indicates whether any temporary files are created.
-
-<P>The CPU usage column specifies a relative CPU usage by the program under
-normal conditions, either low, medium, or high.  Low usage indicates that
-the program will never use more than 33% of the available CPU time. Medium
-usage indicates the program will use as much as 66% of the available CPU
-time. High usage indicates the program uses 66% or more of the available CPU
-time.
-
-<CENTER><TABLE WIDTH="80%" BORDER="1">
-<TR>
-       <TH COLSPAN="3">Backends</TH>
-</TR>
-<TR>
-       <TH>Program</TH>
-       <TH>Base Memory</TH>
-       <TH>Max Memory</TH>
-       <TH>Temp Files</TH>
-       <TH>CPU Usage</TH>
-</TR>
-<TR>
-       <TD>ipp</TD>
-       <TD>91k</TD>
-       <TD>256k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lpd</TD>
-       <TD>89k</TD>
-       <TD>89k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>parallel</TD>
-       <TD>85k</TD>
-       <TD>85k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>serial</TD>
-       <TD>85k</TD>
-       <TD>85k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>socket</TD>
-       <TD>85k</TD>
-       <TD>85k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>usb</TD>
-       <TD>85k</TD>
-       <TD>85k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TH COLSPAN="3">CGIs</TH>
-</TR>
-<TR>
-       <TH>Program</TH>
-       <TH>Base Memory</TH>
-       <TH>Max Memory</TH>
-       <TH>Temp Files</TH>
-       <TH>CPU Usage</TH>
-</TR>
-<TR>
-       <TD>admin.cgi</TD>
-       <TD>107k</TD>
-       <TD>256k</TD>
-       <TD>Up to size of PPD file</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>classes.cgi</TD>
-       <TD>95k</TD>
-       <TD>Size of class objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>jobs.cgi</TD>
-       <TD>93k</TD>
-       <TD>Size of job objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>printers.cgi</TD>
-       <TD>95k</TD>
-       <TD>Size of printer objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TH COLSPAN="3">Command-Line Programs</TH>
-</TR>
-<TR>
-       <TH>Program</TH>
-       <TH>Base Memory</TH>
-       <TH>Max Memory</TH>
-       <TH>Temp Files</TH>
-       <TH>CPU Usage</TH>
-</TR>
-<TR>
-       <TD>accept</TD>
-       <TD>88k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>cancel</TD>
-       <TD>88k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>disable</TD>
-       <TD>88k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>enable</TD>
-       <TD>88k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lp</TD>
-       <TD>90k</TD>
-       <TD>256k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lpadmin</TD>
-       <TD>148k</TD>
-       <TD>256k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lpc</TD>
-       <TD>86k</TD>
-       <TD>Size of job and printer objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>lpinfo</TD>
-       <TD>89k</TD>
-       <TD>Size of device and PPD objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>lpmove</TD>
-       <TD>88k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lpoptions</TD>
-       <TD>89k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lppasswd</TD>
-       <TD>90k</TD>
-       <TD>90k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lpq</TD>
-       <TD>87k</TD>
-       <TD>Size of job objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>lpr</TD>
-       <TD>87k</TD>
-       <TD>256k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lprm</TD>
-       <TD>84k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>lpstat</TD>
-       <TD>119k</TD>
-       <TD>Size of job, printer, and class objects</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>reject</TD>
-       <TD>88k</TD>
-       <TD>128k</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TH COLSPAN="3">Daemons</TH>
-</TR>
-<TR>
-       <TH>Program</TH>
-       <TH>Base Memory</TH>
-       <TH>Max Memory</TH>
-       <TH>Temp Files</TH>
-       <TH>CPU Usage</TH>
-</TR>
-<TR>
-       <TD>cups-lpd</TD>
-       <TD>92k</TD>
-       <TD>256k</TD>
-       <TD>One file per control or data file from client</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>cupsd</TD>
-       <TD>308k</TD>
-       <TD>See Scheduler Requirements</TD>
-       <TD>See Scheduler Requirements</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>cups-polld</TD>
-       <TD>84k</TD>
-       <TD>Size of printer and class objects</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TH COLSPAN="3">Filters</TH>
-</TR>
-<TR>
-       <TH>Program</TH>
-       <TH>Base Memory</TH>
-       <TH>Max Memory</TH>
-       <TH>Temp Files</TH>
-       <TH>CPU Usage</TH>
-</TR>
-<TR>
-       <TD>hpgltops</TD>
-       <TD>263k</TD>
-       <TD>320k</TD>
-       <TD>None</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>imagetops</TD>
-       <TD>628k</TD>
-       <TD>10M</TD>
-       <TD>Swap file for uncompressed image data</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>imagetoraster</TD>
-       <TD>652k</TD>
-       <TD>10M</TD>
-       <TD>Swap file for uncompressed image data</TD>
-       <TD>High</TD>
-</TR>
-<TR>
-       <TD>pstops</TD>
-       <TD>775k</TD>
-       <TD>840k</TD>
-       <TD>Up to size of print file</TD>
-       <TD>Medium</TD>
-</TR>
-<TR>
-       <TD>pstoraster</TD>
-       <TD>4M</TD>
-       <TD>14M</TD>
-       <TD>Swap file for command lists</TD>
-       <TD>High</TD>
-</TR>
-<TR>
-       <TD>rastertoepson</TD>
-       <TD>693k</TD>
-       <TD>1M</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>rastertohp</TD>
-       <TD>690k</TD>
-       <TD>1M</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-<TR>
-       <TD>texttops</TD>
-       <TD>638k</TD>
-       <TD>4*cols*rows</TD>
-       <TD>None</TD>
-       <TD>Low</TD>
-</TR>
-</TABLE></CENTER>
-
-
-<H1>Scheduler Objects</H1>
-
-<P>The <CODE>cupsd</CODE> program is the CUPS scheduler process. It manages
-many interdependent server objects that are used to manage and print files
-to printers.
-
-<P>The following table provides the memory and disk cost associated with each
-server object.
-
-<CENTER><TABLE WIDTH="80%" BORDER="1">
-<TR>
-       <TH>Object</TH>
-       <TH>Memory Per</TH>
-       <TH>Disk Per</TH>
-</TR>
-<TR>
-       <TD>Browse ACL</TD>
-       <TD>1k</TD>
-       <TD>120</TD>
-</TR>
-<TR>
-       <TD>Browse Poll</TD>
-       <TD>24</TD>
-       <TD>80</TD>
-</TR>
-<TR>
-       <TD>Browse Relay</TD>
-       <TD>28</TD>
-       <TD>80</TD>
-</TR>
-<TR>
-       <TD>Certificate</TD>
-       <TD>76</TD>
-       <TD>32</TD>
-</TR>
-<TR>
-       <TD>Class</TD>
-       <TD>9k</TD>
-       <TD>200</TD>
-</TR>
-<TR>
-       <TD>Client</TD>
-       <TD>13k</TD>
-       <TD>-</TD>
-</TR>
-<TR>
-       <TD>Device</TD>
-       <TD>256</TD>
-       <TD>-</TD>
-</TR>
-<TR>
-       <TD>Job</TD>
-       <TD>2k</TD>
-       <TD>1k + size of document files</TD>
-</TR>
-<TR>
-       <TD>Location ACL</TD>
-       <TD>1k</TD>
-       <TD>120</TD>
-</TR>
-<TR>
-       <TD>MIME Filter</TD>
-       <TD>268</TD>
-       <TD>80</TD>
-</TR>
-<TR>
-       <TD>MIME Type</TD>
-       <TD>340</TD>
-       <TD>80</TD>
-</TR>
-<TR>
-       <TD>PPD</TD>
-       <TD>200</TD>
-       <TD>656</TD>
-</TR>
-<TR>
-       <TD>Printer</TD>
-       <TD>11k</TD>
-       <TD>32k</TD>
-</TR>
-</TABLE></CENTER>
-
-<EMBED SRC="glossary.shtml">
-
-</BODY>
-</HTML>
index 4f6244118171dbb91f4fbec0b00e8134011a55ad..2085fb6e95264c1c88c41be7ec264b33d2705e4f 100644 (file)
@@ -124,7 +124,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 <TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
 
 <P><SMALL>The Common UNIX Printing System, CUPS, och CUPS-logotypen är  varumärken för <A HREF="http://www.easysw.com">Easy Software
-Products</A>. CUPS är copyright 1997-2006 Easy Software Products,
+Products</A>. CUPS är copyright 1997-2007 Easy Software Products,
 Alla rättigheter reserverade.</SMALL></P>
 
 </TD>
index fa2b859a35e460984fab7b0ec7cf0d90c7d4a1a3..867919f09e92d5fd7e28935199dfd53fd537990a 100644 (file)
-# DO NOT DELETE
-
-hpgl-attr.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-attr.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-attr.o: ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-attr.o: ../config.h
-hpgl-config.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-config.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-config.o: ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-config.o: ../cups/string.h ../config.h
-hpgl-main.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-main.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-main.o: ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-main.o: ../config.h
-hpgl-prolog.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-prolog.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-prolog.o: ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-prolog.o: ../cups/string.h ../config.h
-hpgl-char.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-char.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-char.o: ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-char.o: ../config.h
-hpgl-input.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-input.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-input.o: ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-input.o: ../config.h
-hpgl-polygon.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-polygon.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-polygon.o: ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-polygon.o: ../cups/string.h ../config.h
-hpgl-vector.o: hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-vector.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-vector.o: ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-vector.o: ../cups/string.h ../config.h
-image-bmp.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-bmp.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-bmp.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-bmp.o: ../cups/string.h ../config.h
-image-colorspace.o: image-private.h image.h raster.h ../cups/cups.h
-image-colorspace.o: ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-image-colorspace.o: ../cups/array.h ../cups/file.h ../cups/language.h
-image-colorspace.o: ../cups/debug.h ../cups/string.h ../config.h
-image-gif.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-gif.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-gif.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-gif.o: ../cups/string.h ../config.h
-image-jpeg.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-jpeg.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-jpeg.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-jpeg.o: ../cups/string.h ../config.h
-image-photocd.o: image-private.h image.h raster.h ../cups/cups.h
-image-photocd.o: ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-image-photocd.o: ../cups/array.h ../cups/file.h ../cups/language.h
-image-photocd.o: ../cups/debug.h ../cups/string.h ../config.h
-image-pix.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-pix.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-pix.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-pix.o: ../cups/string.h ../config.h
-image-png.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-png.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-png.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-png.o: ../cups/string.h ../config.h
-image-pnm.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-pnm.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-pnm.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-pnm.o: ../cups/string.h ../config.h
-image-sgi.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-sgi.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-sgi.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-sgi.o: ../cups/string.h ../config.h image-sgi.h
-image-sgilib.o: image-sgi.h
-image-sun.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-sun.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-sun.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-sun.o: ../cups/string.h ../config.h
-image-tiff.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-tiff.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-tiff.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-tiff.o: ../cups/string.h ../config.h
-image-zoom.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-zoom.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-zoom.o: ../cups/file.h ../cups/language.h ../cups/debug.h
-image-zoom.o: ../cups/string.h ../config.h
-image.o: image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image.o: ../cups/file.h ../cups/language.h ../cups/debug.h ../cups/string.h
-image.o: ../config.h
-interpret.o: ../cups/string.h ../config.h raster.h ../cups/cups.h
-interpret.o: ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-interpret.o: ../cups/array.h ../cups/file.h ../cups/language.h
-raster.o: raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-raster.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-raster.o: ../cups/debug.h ../cups/string.h ../config.h
-form-main.o: form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-main.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-main.o: ../cups/language.h ../cups/language.h ../cups/string.h
-form-main.o: ../config.h
-form-ps.o: form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-ps.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-ps.o: ../cups/language.h ../cups/language.h ../cups/string.h ../config.h
-form-tree.o: form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-tree.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-tree.o: ../cups/language.h ../cups/language.h ../cups/string.h
-form-tree.o: ../config.h
-gziptoany.o: ../cups/string.h ../config.h
-imagetops.o: common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-imagetops.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-imagetops.o: ../cups/language.h ../cups/language.h ../cups/string.h
-imagetops.o: ../config.h image.h raster.h
-imagetoraster.o: common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-imagetoraster.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-imagetoraster.o: ../cups/language.h ../cups/language.h ../cups/string.h
-imagetoraster.o: ../config.h image-private.h image.h raster.h ../cups/debug.h
-common.o: common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-common.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-common.o: ../cups/language.h ../cups/string.h ../config.h
-pstops.o: common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-pstops.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-pstops.o: ../cups/language.h ../cups/string.h ../config.h ../cups/file.h
-pstops.o: ../cups/array.h
-rasterbench.o: raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-rasterbench.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-rasterbench.o: ../cups/language.h
-rastertoepson.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertoepson.o: ../cups/ppd.h ../cups/array.h ../cups/file.h
-rastertoepson.o: ../cups/language.h ../cups/ppd.h ../cups/string.h
-rastertoepson.o: ../config.h raster.h
-rastertohp.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertohp.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-rastertohp.o: ../cups/string.h ../config.h raster.h
-rastertolabel.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertolabel.o: ../cups/ppd.h ../cups/array.h ../cups/file.h
-rastertolabel.o: ../cups/language.h ../cups/string.h ../config.h raster.h
-testimage.o: image.h raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-testimage.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-testimage.o: ../cups/language.h
-testraster.o: raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-testraster.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-testraster.o: ../cups/language.h ../cups/string.h ../config.h
-textcommon.o: textcommon.h common.h ../cups/cups.h ../cups/ipp.h
-textcommon.o: ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-textcommon.o: ../cups/file.h ../cups/language.h ../cups/language.h
-textcommon.o: ../cups/string.h ../config.h
-texttops.o: textcommon.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-texttops.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-texttops.o: ../cups/language.h ../cups/language.h ../cups/string.h
-texttops.o: ../config.h
-# DO NOT DELETE
-
-hpgl-attr.32.o: hpgl-attr.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-attr.32.o: hpgl-attr.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-attr.32.o: hpgl-attr.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-attr.32.o: hpgl-attr.c  ../config.h
-hpgl-config.32.o: hpgl-config.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-config.32.o: hpgl-config.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-config.32.o: hpgl-config.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-config.32.o: hpgl-config.c  ../cups/string.h ../config.h
-hpgl-main.32.o: hpgl-main.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-main.32.o: hpgl-main.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-main.32.o: hpgl-main.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-main.32.o: hpgl-main.c  ../config.h
-hpgl-prolog.32.o: hpgl-prolog.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-prolog.32.o: hpgl-prolog.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-prolog.32.o: hpgl-prolog.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-prolog.32.o: hpgl-prolog.c  ../cups/string.h ../config.h
-hpgl-char.32.o: hpgl-char.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-char.32.o: hpgl-char.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-char.32.o: hpgl-char.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-char.32.o: hpgl-char.c  ../config.h
-hpgl-input.32.o: hpgl-input.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-input.32.o: hpgl-input.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-input.32.o: hpgl-input.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-input.32.o: hpgl-input.c  ../config.h
-hpgl-polygon.32.o: hpgl-polygon.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-polygon.32.o: hpgl-polygon.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-polygon.32.o: hpgl-polygon.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-polygon.32.o: hpgl-polygon.c  ../cups/string.h ../config.h
-hpgl-vector.32.o: hpgl-vector.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-vector.32.o: hpgl-vector.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-vector.32.o: hpgl-vector.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-vector.32.o: hpgl-vector.c  ../cups/string.h ../config.h
-image-bmp.32.o: image-bmp.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-bmp.32.o: image-bmp.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-bmp.32.o: image-bmp.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-bmp.32.o: image-bmp.c  ../cups/string.h ../config.h
-image-colorspace.32.o: image-colorspace.c  image-private.h image.h raster.h ../cups/cups.h
-image-colorspace.32.o: image-colorspace.c  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-image-colorspace.32.o: image-colorspace.c  ../cups/array.h ../cups/file.h ../cups/language.h
-image-colorspace.32.o: image-colorspace.c  ../cups/debug.h ../cups/string.h ../config.h
-image-gif.32.o: image-gif.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-gif.32.o: image-gif.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-gif.32.o: image-gif.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-gif.32.o: image-gif.c  ../cups/string.h ../config.h
-image-jpeg.32.o: image-jpeg.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-jpeg.32.o: image-jpeg.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-jpeg.32.o: image-jpeg.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-jpeg.32.o: image-jpeg.c  ../cups/string.h ../config.h
-image-photocd.32.o: image-photocd.c  image-private.h image.h raster.h ../cups/cups.h
-image-photocd.32.o: image-photocd.c  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-image-photocd.32.o: image-photocd.c  ../cups/array.h ../cups/file.h ../cups/language.h
-image-photocd.32.o: image-photocd.c  ../cups/debug.h ../cups/string.h ../config.h
-image-pix.32.o: image-pix.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-pix.32.o: image-pix.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-pix.32.o: image-pix.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-pix.32.o: image-pix.c  ../cups/string.h ../config.h
-image-png.32.o: image-png.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-png.32.o: image-png.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-png.32.o: image-png.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-png.32.o: image-png.c  ../cups/string.h ../config.h
-image-pnm.32.o: image-pnm.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-pnm.32.o: image-pnm.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-pnm.32.o: image-pnm.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-pnm.32.o: image-pnm.c  ../cups/string.h ../config.h
-image-sgi.32.o: image-sgi.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-sgi.32.o: image-sgi.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-sgi.32.o: image-sgi.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-sgi.32.o: image-sgi.c  ../cups/string.h ../config.h image-sgi.h
-image-sgilib.32.o: image-sgilib.c  image-sgi.h
-image-sun.32.o: image-sun.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-sun.32.o: image-sun.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-sun.32.o: image-sun.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-sun.32.o: image-sun.c  ../cups/string.h ../config.h
-image-tiff.32.o: image-tiff.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-tiff.32.o: image-tiff.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-tiff.32.o: image-tiff.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-tiff.32.o: image-tiff.c  ../cups/string.h ../config.h
-image-zoom.32.o: image-zoom.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-zoom.32.o: image-zoom.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-zoom.32.o: image-zoom.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-zoom.32.o: image-zoom.c  ../cups/string.h ../config.h
-image.32.o: image.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image.32.o: image.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image.32.o: image.c  ../cups/file.h ../cups/language.h ../cups/debug.h ../cups/string.h
-image.32.o: image.c  ../config.h
-interpret.32.o: interpret.c  ../cups/string.h ../config.h raster.h ../cups/cups.h
-interpret.32.o: interpret.c  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-interpret.32.o: interpret.c  ../cups/array.h ../cups/file.h ../cups/language.h
-raster.32.o: raster.c  raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-raster.32.o: raster.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-raster.32.o: raster.c  ../cups/debug.h ../cups/string.h ../config.h
-form-main.32.o: form-main.c  form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-main.32.o: form-main.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-main.32.o: form-main.c  ../cups/language.h ../cups/language.h ../cups/string.h
-form-main.32.o: form-main.c  ../config.h
-form-ps.32.o: form-ps.c  form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-ps.32.o: form-ps.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-ps.32.o: form-ps.c  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h
-form-tree.32.o: form-tree.c  form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-tree.32.o: form-tree.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-tree.32.o: form-tree.c  ../cups/language.h ../cups/language.h ../cups/string.h
-form-tree.32.o: form-tree.c  ../config.h
-gziptoany.32.o: gziptoany.c  ../cups/string.h ../config.h
-imagetops.32.o: imagetops.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-imagetops.32.o: imagetops.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-imagetops.32.o: imagetops.c  ../cups/language.h ../cups/language.h ../cups/string.h
-imagetops.32.o: imagetops.c  ../config.h image.h raster.h
-imagetoraster.32.o: imagetoraster.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-imagetoraster.32.o: imagetoraster.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-imagetoraster.32.o: imagetoraster.c  ../cups/language.h ../cups/language.h ../cups/string.h
-imagetoraster.32.o: imagetoraster.c  ../config.h image-private.h image.h raster.h ../cups/debug.h
-common.32.o: common.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-common.32.o: common.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-common.32.o: common.c  ../cups/language.h ../cups/string.h ../config.h
-pstops.32.o: pstops.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-pstops.32.o: pstops.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-pstops.32.o: pstops.c  ../cups/language.h ../cups/string.h ../config.h ../cups/file.h
-pstops.32.o: pstops.c  ../cups/array.h
-rasterbench.32.o: rasterbench.c  raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-rasterbench.32.o: rasterbench.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-rasterbench.32.o: rasterbench.c  ../cups/language.h
-rastertoepson.32.o: rastertoepson.c  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertoepson.32.o: rastertoepson.c  ../cups/ppd.h ../cups/array.h ../cups/file.h
-rastertoepson.32.o: rastertoepson.c  ../cups/language.h ../cups/ppd.h ../cups/string.h
-rastertoepson.32.o: rastertoepson.c  ../config.h raster.h
-rastertohp.32.o: rastertohp.c  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertohp.32.o: rastertohp.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-rastertohp.32.o: rastertohp.c  ../cups/string.h ../config.h raster.h
-rastertolabel.32.o: rastertolabel.c  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertolabel.32.o: rastertolabel.c  ../cups/ppd.h ../cups/array.h ../cups/file.h
-rastertolabel.32.o: rastertolabel.c  ../cups/language.h ../cups/string.h ../config.h raster.h
-testimage.32.o: testimage.c  image.h raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-testimage.32.o: testimage.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-testimage.32.o: testimage.c  ../cups/language.h
-testraster.32.o: testraster.c  raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-testraster.32.o: testraster.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-testraster.32.o: testraster.c  ../cups/language.h ../cups/string.h ../config.h
-textcommon.32.o: textcommon.c  textcommon.h common.h ../cups/cups.h ../cups/ipp.h
-textcommon.32.o: textcommon.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-textcommon.32.o: textcommon.c  ../cups/file.h ../cups/language.h ../cups/language.h
-textcommon.32.o: textcommon.c  ../cups/string.h ../config.h
-texttops.32.o: texttops.c  textcommon.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-texttops.32.o: texttops.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-texttops.32.o: texttops.c  ../cups/language.h ../cups/language.h ../cups/string.h
-texttops.32.o: texttops.c  ../config.h
-# DO NOT DELETE
-
-hpgl-attr.64.o: hpgl-attr.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-attr.64.o: hpgl-attr.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-attr.64.o: hpgl-attr.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-attr.64.o: hpgl-attr.c  ../config.h
-hpgl-config.64.o: hpgl-config.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-config.64.o: hpgl-config.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-config.64.o: hpgl-config.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-config.64.o: hpgl-config.c  ../cups/string.h ../config.h
-hpgl-main.64.o: hpgl-main.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-main.64.o: hpgl-main.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-main.64.o: hpgl-main.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-main.64.o: hpgl-main.c  ../config.h
-hpgl-prolog.64.o: hpgl-prolog.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-prolog.64.o: hpgl-prolog.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-prolog.64.o: hpgl-prolog.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-prolog.64.o: hpgl-prolog.c  ../cups/string.h ../config.h
-hpgl-char.64.o: hpgl-char.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-char.64.o: hpgl-char.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-char.64.o: hpgl-char.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-char.64.o: hpgl-char.c  ../config.h
-hpgl-input.64.o: hpgl-input.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-hpgl-input.64.o: hpgl-input.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-hpgl-input.64.o: hpgl-input.c  ../cups/language.h ../cups/language.h ../cups/string.h
-hpgl-input.64.o: hpgl-input.c  ../config.h
-hpgl-polygon.64.o: hpgl-polygon.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-polygon.64.o: hpgl-polygon.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-polygon.64.o: hpgl-polygon.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-polygon.64.o: hpgl-polygon.c  ../cups/string.h ../config.h
-hpgl-vector.64.o: hpgl-vector.c  hpgltops.h common.h ../cups/cups.h ../cups/ipp.h
-hpgl-vector.64.o: hpgl-vector.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-hpgl-vector.64.o: hpgl-vector.c  ../cups/file.h ../cups/language.h ../cups/language.h
-hpgl-vector.64.o: hpgl-vector.c  ../cups/string.h ../config.h
-image-bmp.64.o: image-bmp.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-bmp.64.o: image-bmp.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-bmp.64.o: image-bmp.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-bmp.64.o: image-bmp.c  ../cups/string.h ../config.h
-image-colorspace.64.o: image-colorspace.c  image-private.h image.h raster.h ../cups/cups.h
-image-colorspace.64.o: image-colorspace.c  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-image-colorspace.64.o: image-colorspace.c  ../cups/array.h ../cups/file.h ../cups/language.h
-image-colorspace.64.o: image-colorspace.c  ../cups/debug.h ../cups/string.h ../config.h
-image-gif.64.o: image-gif.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-gif.64.o: image-gif.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-gif.64.o: image-gif.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-gif.64.o: image-gif.c  ../cups/string.h ../config.h
-image-jpeg.64.o: image-jpeg.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-jpeg.64.o: image-jpeg.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-jpeg.64.o: image-jpeg.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-jpeg.64.o: image-jpeg.c  ../cups/string.h ../config.h
-image-photocd.64.o: image-photocd.c  image-private.h image.h raster.h ../cups/cups.h
-image-photocd.64.o: image-photocd.c  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-image-photocd.64.o: image-photocd.c  ../cups/array.h ../cups/file.h ../cups/language.h
-image-photocd.64.o: image-photocd.c  ../cups/debug.h ../cups/string.h ../config.h
-image-pix.64.o: image-pix.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-pix.64.o: image-pix.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-pix.64.o: image-pix.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-pix.64.o: image-pix.c  ../cups/string.h ../config.h
-image-png.64.o: image-png.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-png.64.o: image-png.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-png.64.o: image-png.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-png.64.o: image-png.c  ../cups/string.h ../config.h
-image-pnm.64.o: image-pnm.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-pnm.64.o: image-pnm.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-pnm.64.o: image-pnm.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-pnm.64.o: image-pnm.c  ../cups/string.h ../config.h
-image-sgi.64.o: image-sgi.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-sgi.64.o: image-sgi.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-sgi.64.o: image-sgi.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-sgi.64.o: image-sgi.c  ../cups/string.h ../config.h image-sgi.h
-image-sgilib.64.o: image-sgilib.c  image-sgi.h
-image-sun.64.o: image-sun.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-sun.64.o: image-sun.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-sun.64.o: image-sun.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-sun.64.o: image-sun.c  ../cups/string.h ../config.h
-image-tiff.64.o: image-tiff.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-tiff.64.o: image-tiff.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-tiff.64.o: image-tiff.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-tiff.64.o: image-tiff.c  ../cups/string.h ../config.h
-image-zoom.64.o: image-zoom.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image-zoom.64.o: image-zoom.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image-zoom.64.o: image-zoom.c  ../cups/file.h ../cups/language.h ../cups/debug.h
-image-zoom.64.o: image-zoom.c  ../cups/string.h ../config.h
-image.64.o: image.c  image-private.h image.h raster.h ../cups/cups.h ../cups/ipp.h
-image.64.o: image.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-image.64.o: image.c  ../cups/file.h ../cups/language.h ../cups/debug.h ../cups/string.h
-image.64.o: image.c  ../config.h
-interpret.64.o: interpret.c  ../cups/string.h ../config.h raster.h ../cups/cups.h
-interpret.64.o: interpret.c  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h
-interpret.64.o: interpret.c  ../cups/array.h ../cups/file.h ../cups/language.h
-raster.64.o: raster.c  raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-raster.64.o: raster.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-raster.64.o: raster.c  ../cups/debug.h ../cups/string.h ../config.h
-form-main.64.o: form-main.c  form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-main.64.o: form-main.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-main.64.o: form-main.c  ../cups/language.h ../cups/language.h ../cups/string.h
-form-main.64.o: form-main.c  ../config.h
-form-ps.64.o: form-ps.c  form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-ps.64.o: form-ps.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-ps.64.o: form-ps.c  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h
-form-tree.64.o: form-tree.c  form.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-form-tree.64.o: form-tree.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-form-tree.64.o: form-tree.c  ../cups/language.h ../cups/language.h ../cups/string.h
-form-tree.64.o: form-tree.c  ../config.h
-gziptoany.64.o: gziptoany.c  ../cups/string.h ../config.h
-imagetops.64.o: imagetops.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-imagetops.64.o: imagetops.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-imagetops.64.o: imagetops.c  ../cups/language.h ../cups/language.h ../cups/string.h
-imagetops.64.o: imagetops.c  ../config.h image.h raster.h
-imagetoraster.64.o: imagetoraster.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-imagetoraster.64.o: imagetoraster.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-imagetoraster.64.o: imagetoraster.c  ../cups/language.h ../cups/language.h ../cups/string.h
-imagetoraster.64.o: imagetoraster.c  ../config.h image-private.h image.h raster.h ../cups/debug.h
-common.64.o: common.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-common.64.o: common.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-common.64.o: common.c  ../cups/language.h ../cups/string.h ../config.h
-pstops.64.o: pstops.c  common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-pstops.64.o: pstops.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-pstops.64.o: pstops.c  ../cups/language.h ../cups/string.h ../config.h ../cups/file.h
-pstops.64.o: pstops.c  ../cups/array.h
-rasterbench.64.o: rasterbench.c  raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-rasterbench.64.o: rasterbench.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-rasterbench.64.o: rasterbench.c  ../cups/language.h
-rastertoepson.64.o: rastertoepson.c  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertoepson.64.o: rastertoepson.c  ../cups/ppd.h ../cups/array.h ../cups/file.h
-rastertoepson.64.o: rastertoepson.c  ../cups/language.h ../cups/ppd.h ../cups/string.h
-rastertoepson.64.o: rastertoepson.c  ../config.h raster.h
-rastertohp.64.o: rastertohp.c  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertohp.64.o: rastertohp.c  ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
-rastertohp.64.o: rastertohp.c  ../cups/string.h ../config.h raster.h
-rastertolabel.64.o: rastertolabel.c  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
-rastertolabel.64.o: rastertolabel.c  ../cups/ppd.h ../cups/array.h ../cups/file.h
-rastertolabel.64.o: rastertolabel.c  ../cups/language.h ../cups/string.h ../config.h raster.h
-testimage.64.o: testimage.c  image.h raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-testimage.64.o: testimage.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-testimage.64.o: testimage.c  ../cups/language.h
-testraster.64.o: testraster.c  raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-testraster.64.o: testraster.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-testraster.64.o: testraster.c  ../cups/language.h ../cups/string.h ../config.h
-textcommon.64.o: textcommon.c  textcommon.h common.h ../cups/cups.h ../cups/ipp.h
-textcommon.64.o: textcommon.c  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h
-textcommon.64.o: textcommon.c  ../cups/file.h ../cups/language.h ../cups/language.h
-textcommon.64.o: textcommon.c  ../cups/string.h ../config.h
-texttops.64.o: texttops.c  textcommon.h common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-texttops.64.o: texttops.c  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-texttops.64.o: texttops.c  ../cups/language.h ../cups/language.h ../cups/string.h
-texttops.64.o: texttops.c  ../config.h
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+hpgl-attr.o: hpgl-attr.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-config.o: hpgl-config.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-main.o: hpgl-main.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-prolog.o: hpgl-prolog.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-char.o: hpgl-char.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-input.o: hpgl-input.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-polygon.o: hpgl-polygon.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-vector.o: hpgl-vector.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+image-bmp.o: image-bmp.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-colorspace.o: image-colorspace.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-gif.o: image-gif.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-jpeg.o: image-jpeg.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-photocd.o: image-photocd.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-pix.o: image-pix.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-png.o: image-png.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-pnm.o: image-pnm.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-sgi.o: image-sgi.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h image-sgi.h
+image-sgilib.o: image-sgilib.c image-sgi.h
+image-sun.o: image-sun.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-tiff.o: image-tiff.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-zoom.o: image-zoom.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image.o: image.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+interpret.o: interpret.c ../cups/string.h ../config.h image-private.h \
+  image.h raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/debug.h
+raster.o: raster.c raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/debug.h ../cups/string.h ../config.h
+form-main.o: form-main.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+form-ps.o: form-ps.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+form-tree.o: form-tree.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+gziptoany.o: gziptoany.c ../cups/string.h ../config.h
+imagetops.o: imagetops.c common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h image.h raster.h
+imagetoraster.o: imagetoraster.c common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h image-private.h image.h raster.h ../cups/debug.h
+common.o: common.c common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h
+pstops.o: pstops.c common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h \
+  ../cups/file.h ../cups/array.h
+rasterbench.o: rasterbench.c raster.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h
+rastertoepson.o: rastertoepson.c ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/ppd.h ../cups/string.h \
+  ../config.h raster.h
+rastertohp.o: rastertohp.c ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/string.h ../config.h raster.h
+rastertolabel.o: rastertolabel.c ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/string.h ../config.h raster.h
+testimage.o: testimage.c image.h raster.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h
+testraster.o: testraster.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+textcommon.o: textcommon.c textcommon.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+texttops.o: texttops.c textcommon.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+hpgl-attr.32.o: hpgl-attr.c  hpgl-attr.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-config.32.o: hpgl-config.c  hpgl-config.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-main.32.o: hpgl-main.c  hpgl-main.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-prolog.32.o: hpgl-prolog.c  hpgl-prolog.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-char.32.o: hpgl-char.c  hpgl-char.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-input.32.o: hpgl-input.c  hpgl-input.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-polygon.32.o: hpgl-polygon.c  hpgl-polygon.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-vector.32.o: hpgl-vector.c  hpgl-vector.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+image-bmp.32.o: image-bmp.c  image-bmp.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-colorspace.32.o: image-colorspace.c  image-colorspace.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-gif.32.o: image-gif.c  image-gif.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-jpeg.32.o: image-jpeg.c  image-jpeg.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-photocd.32.o: image-photocd.c  image-photocd.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-pix.32.o: image-pix.c  image-pix.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-png.32.o: image-png.c  image-png.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-pnm.32.o: image-pnm.c  image-pnm.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-sgi.32.o: image-sgi.c  image-sgi.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h image-sgi.h
+image-sgilib.32.o: image-sgilib.c  image-sgilib.c image-sgi.h
+image-sun.32.o: image-sun.c  image-sun.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-tiff.32.o: image-tiff.c  image-tiff.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-zoom.32.o: image-zoom.c  image-zoom.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image.32.o: image.c  image.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+interpret.32.o: interpret.c  interpret.c ../cups/string.h ../config.h image-private.h \
+  image.h raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/debug.h
+raster.32.o: raster.c  raster.c raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/debug.h ../cups/string.h ../config.h
+form-main.32.o: form-main.c  form-main.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+form-ps.32.o: form-ps.c  form-ps.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+form-tree.32.o: form-tree.c  form-tree.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+gziptoany.32.o: gziptoany.c  gziptoany.c ../cups/string.h ../config.h
+imagetops.32.o: imagetops.c  imagetops.c common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h image.h raster.h
+imagetoraster.32.o: imagetoraster.c  imagetoraster.c common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h image-private.h image.h raster.h ../cups/debug.h
+common.32.o: common.c  common.c common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h
+pstops.32.o: pstops.c  pstops.c common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h \
+  ../cups/file.h ../cups/array.h
+rasterbench.32.o: rasterbench.c  rasterbench.c raster.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h
+rastertoepson.32.o: rastertoepson.c  rastertoepson.c ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/ppd.h ../cups/string.h \
+  ../config.h raster.h
+rastertohp.32.o: rastertohp.c  rastertohp.c ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/string.h ../config.h raster.h
+rastertolabel.32.o: rastertolabel.c  rastertolabel.c ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/string.h ../config.h raster.h
+testimage.32.o: testimage.c  testimage.c image.h raster.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h
+testraster.32.o: testraster.c  testraster.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+textcommon.32.o: textcommon.c  textcommon.c textcommon.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+texttops.32.o: texttops.c  texttops.c textcommon.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+hpgl-attr.64.o: hpgl-attr.c  hpgl-attr.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-config.64.o: hpgl-config.c  hpgl-config.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-main.64.o: hpgl-main.c  hpgl-main.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-prolog.64.o: hpgl-prolog.c  hpgl-prolog.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-char.64.o: hpgl-char.c  hpgl-char.c hpgltops.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+hpgl-input.64.o: hpgl-input.c  hpgl-input.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-polygon.64.o: hpgl-polygon.c  hpgl-polygon.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+hpgl-vector.64.o: hpgl-vector.c  hpgl-vector.c hpgltops.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+image-bmp.64.o: image-bmp.c  image-bmp.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-colorspace.64.o: image-colorspace.c  image-colorspace.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-gif.64.o: image-gif.c  image-gif.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-jpeg.64.o: image-jpeg.c  image-jpeg.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-photocd.64.o: image-photocd.c  image-photocd.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-pix.64.o: image-pix.c  image-pix.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-png.64.o: image-png.c  image-png.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-pnm.64.o: image-pnm.c  image-pnm.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-sgi.64.o: image-sgi.c  image-sgi.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h image-sgi.h
+image-sgilib.64.o: image-sgilib.c  image-sgilib.c image-sgi.h
+image-sun.64.o: image-sun.c  image-sun.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-tiff.64.o: image-tiff.c  image-tiff.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image-zoom.64.o: image-zoom.c  image-zoom.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+image.64.o: image.c  image.c image-private.h image.h raster.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+interpret.64.o: interpret.c  interpret.c ../cups/string.h ../config.h image-private.h \
+  image.h raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/debug.h
+raster.64.o: raster.c  raster.c raster.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/debug.h ../cups/string.h ../config.h
+form-main.64.o: form-main.c  form-main.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+form-ps.64.o: form-ps.c  form-ps.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+form-tree.64.o: form-tree.c  form-tree.c form.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
+gziptoany.64.o: gziptoany.c  gziptoany.c ../cups/string.h ../config.h
+imagetops.64.o: imagetops.c  imagetops.c common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h image.h raster.h
+imagetoraster.64.o: imagetoraster.c  imagetoraster.c common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h image-private.h image.h raster.h ../cups/debug.h
+common.64.o: common.c  common.c common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h
+pstops.64.o: pstops.c  pstops.c common.h ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/language.h ../cups/string.h ../config.h \
+  ../cups/file.h ../cups/array.h
+rasterbench.64.o: rasterbench.c  rasterbench.c raster.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h
+rastertoepson.64.o: rastertoepson.c  rastertoepson.c ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/ppd.h ../cups/string.h \
+  ../config.h raster.h
+rastertohp.64.o: rastertohp.c  rastertohp.c ../cups/cups.h ../cups/ipp.h ../cups/http.h \
+  ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h \
+  ../cups/language.h ../cups/string.h ../config.h raster.h
+rastertolabel.64.o: rastertolabel.c  rastertolabel.c ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/string.h ../config.h raster.h
+testimage.64.o: testimage.c  testimage.c image.h raster.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h
+testraster.64.o: testraster.c  testraster.c image-private.h image.h raster.h \
+  ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/debug.h \
+  ../cups/string.h ../config.h
+textcommon.64.o: textcommon.c  textcommon.c textcommon.h common.h ../cups/cups.h \
+  ../cups/ipp.h ../cups/http.h ../cups/md5.h ../cups/ppd.h \
+  ../cups/array.h ../cups/file.h ../cups/language.h ../cups/language.h \
+  ../cups/string.h ../config.h
+texttops.64.o: texttops.c  texttops.c textcommon.h common.h ../cups/cups.h ../cups/ipp.h \
+  ../cups/http.h ../cups/md5.h ../cups/ppd.h ../cups/array.h \
+  ../cups/file.h ../cups/language.h ../cups/language.h ../cups/string.h \
+  ../config.h
index 5d456d0a33fe1f0b3d8fdfa81f4267e29122533e..ae7b7322f404b87eb2626dc265683b89ec6881d4 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: Makefile 5649 2006-06-14 21:03:17Z mike $"
+# "$Id: Makefile 6158 2006-12-17 01:44:21Z mike $"
 #
 #   Filter makefile for the Common UNIX Printing System (CUPS).
 #
@@ -26,6 +26,7 @@
 
 include ../Makedefs
 
+
 FILTERS        =       gziptoany hpgltops texttops pstops $(IMGFILTERS) \
                rastertolabel rastertoepson rastertohp
 TARGETS        =       $(FILTERS) \
@@ -355,9 +356,10 @@ rastertohp:        rastertohp.o ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
 # testraster
 #
 
-testraster:    testraster.o raster.o
+testraster:    testraster.o ../cups/libcups.a libcupsimage.a
        echo Linking $@...
-       $(CC) $(LDFLAGS) -o $@ testraster.o raster.o
+       $(CC) $(LDFLAGS) -o $@ testraster.o libcupsimage.a ../cups/libcups.a \
+               $(IMGLIBS) $(DSOLIBS) $(LIBS)
 
 
 #
@@ -387,5 +389,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 5649 2006-06-14 21:03:17Z mike $".
+# End of "$Id: Makefile 6158 2006-12-17 01:44:21Z mike $".
 #
index 54f6c74470c4497b4d214173c3a4df993d682dbe..b418f68e3a7d2797b16d4eaf509afb8c8ae1f1a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: image-pnm.c 5509 2006-05-11 11:41:36Z mike $"
+ * "$Id: image-pnm.c 6149 2006-12-06 20:25:42Z mike $"
  *
  *   Portable Any Map file routines for the Common UNIX Printing System (CUPS).
  *
@@ -202,7 +202,7 @@ _cupsImageReadPNM(
             else
             {
               bit = 128;
-              inptr ++;
+              outptr ++;
             }
           }
           break;
@@ -301,5 +301,5 @@ _cupsImageReadPNM(
 
 
 /*
- * End of "$Id: image-pnm.c 5509 2006-05-11 11:41:36Z mike $".
+ * End of "$Id: image-pnm.c 6149 2006-12-06 20:25:42Z mike $".
  */
index df7bed281f27a5539b1ed48425bee1ca97517d38..f84ace850f34620e28b78ba6c38f7ac56d8e2277 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: image-private.h 5191 2006-02-27 02:47:56Z mike $"
+ * "$Id: image-private.h 6158 2006-12-17 01:44:21Z mike $"
  *
  *   Private image library definitions for the Common UNIX Printing
  *   System (CUPS).
@@ -33,6 +33,7 @@
  */
 
 #  include "image.h"
+#  include "raster.h"
 #  include <cups/cups.h>
 #  include <cups/debug.h>
 #  include <cups/string.h>
@@ -213,9 +214,13 @@ extern cups_izoom_t        *_cupsImageZoomNew(cups_image_t *img, int xc0, int yc0,
                                           int ysize, int rotated,
                                           cups_iztype_t type);
 
+extern int             _cupsRasterExecPS(cups_page_header2_t *h,
+                                         int *preferred_bits,
+                                         const char *code);
+
 
 #endif /* !_CUPS_IMAGE_PRIVATE_H_ */
 
 /*
- * End of "$Id: image-private.h 5191 2006-02-27 02:47:56Z mike $".
+ * End of "$Id: image-private.h 6158 2006-12-17 01:44:21Z mike $".
  */
index c6b0622db7a07c995d6bdfc2b039557fe1d91d93..bcc354a8fb8de63d485c7295d18d88ec61853115 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: image-sun.c 5509 2006-05-11 11:41:36Z mike $"
+ * "$Id: image-sun.c 6149 2006-12-06 20:25:42Z mike $"
  *
  *   Sun Raster image file routines for the Common UNIX Printing System (CUPS).
  *
@@ -171,7 +171,7 @@ _cupsImageReadSunRaster(
 
   for (y = 0; y < img->ysize; y ++)
   {
-    if (ras_depth != 8 || ras_maplength > 0)
+    if ((ras_depth != 8 && ras_depth != 24) || ras_maplength > 0)
       p = scanline;
     else
       p = in;
@@ -221,12 +221,12 @@ _cupsImageReadSunRaster(
           *p = 0;
 
        if (bit > 1)
+          bit >>= 1;
+       else
        {
           bit = 128;
           scanptr ++;
        }
-       else
-          bit >>= 1;
       }
     }
     else if (ras_depth == 1)
@@ -253,12 +253,12 @@ _cupsImageReadSunRaster(
        }
 
        if (bit > 1)
+          bit >>= 1;
+       else
        {
           bit = 128;
           scanptr ++;
        }
-       else
-          bit >>= 1;
       }
     }
     else if (ras_depth == 8 && ras_maplength > 0)
@@ -389,5 +389,5 @@ read_unsigned(FILE *fp)                     /* I - File to read from */
 
 
 /*
- * End of "$Id: image-sun.c 5509 2006-05-11 11:41:36Z mike $".
+ * End of "$Id: image-sun.c 6149 2006-12-06 20:25:42Z mike $".
  */
index 50190b4f1a5a0a27226fa035841ef08662f08ba5..6f9c9f855512b7e9243b4614f1923bc2935476ad 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: interpret.c 5926 2006-09-05 20:45:47Z mike $"
+ * "$Id: interpret.c 6282 2007-02-14 16:33:54Z mike $"
  *
  *   PPD command interpreter for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1993-2006 by Easy Software Products.
+ *   Copyright 1993-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
  * Contents:
  *
  *   cupsRasterInterpretPPD() - Interpret PPD commands to create a page header.
- *   exec_code()              - Execute PostScript setpagedevice commands as
- *                              appropriate.
+ *   _cupsRasterExecPS()      - Execute PostScript code to initialize a page
+ *                              header.
+ *   cleartomark_stack()      - Clear to the last mark ([) on the stack.
+ *   copy_stack()             - Copy the top N stack objects.
+ *   delete_stack()           - Free memory used by a stack.
+ *   index_stack()            - Copy the Nth value on the stack.
+ *   new_stack()              - Create a new stack.
+ *   pop_stock()              - Pop the top object off the stack.
+ *   push_stack()             - Push an object on the stack.
+ *   roll_stack()             - Rotate stack objects.
+ *   scan_ps()                - Scan a string for the next PS object.
+ *   setpagedevice()          - Simulate the PostScript setpagedevice operator.
+ *   DEBUG_object()           - Print an object value.
+ *   DEBUG_stack()            - Print a stack.
  */
 
 /*
  */
 
 #include <cups/string.h>
-#include "raster.h"
+#include "image-private.h"
 #include <stdlib.h>
 
 
 /*
- * Value types for PS code...
+ * Stack values for the PostScript mini-interpreter...
  */
 
-#define CUPS_TYPE_NUMBER       0       /* Integer or real number */
-#define CUPS_TYPE_NAME         1       /* Name */
-#define CUPS_TYPE_STRING       2       /* String */
-#define CUPS_TYPE_ARRAY                3       /* Array of integers */
+typedef enum
+{
+  CUPS_PS_NAME,
+  CUPS_PS_NUMBER,
+  CUPS_PS_STRING,
+  CUPS_PS_BOOLEAN,
+  CUPS_PS_NULL,
+  CUPS_PS_START_ARRAY,
+  CUPS_PS_END_ARRAY,
+  CUPS_PS_START_DICT,
+  CUPS_PS_END_DICT,
+  CUPS_PS_START_PROC,
+  CUPS_PS_END_PROC,
+  CUPS_PS_CLEARTOMARK,
+  CUPS_PS_COPY,
+  CUPS_PS_DUP,
+  CUPS_PS_INDEX,
+  CUPS_PS_POP,
+  CUPS_PS_ROLL,
+  CUPS_PS_SETPAGEDEVICE,
+  CUPS_PS_STOPPED,
+  CUPS_PS_OTHER
+} _cups_ps_type_t;
+
+typedef struct
+{
+  _cups_ps_type_t      type;           /* Object type */
+  union
+  {
+    int                boolean;                /* Boolean value */
+    char       name[64];               /* Name value */
+    double     number;                 /* Number value */
+    char       other[64];              /* Other operator */
+    char       string[64];             /* Sring value */
+  }                    value;          /* Value */
+} _cups_ps_obj_t;
+
+typedef struct
+{
+  int                  num_objs,       /* Number of objects on stack */
+                       alloc_objs;     /* Number of allocated objects */
+  _cups_ps_obj_t       *objs;          /* Objects in stack */
+} _cups_ps_stack_t;
 
 
 /*
  * Local functions...
  */
 
-static int     exec_code(cups_page_header2_t *header, int *preferred_bits,
-                         const char *code);
+static int             cleartomark_stack(_cups_ps_stack_t *st);
+static int             copy_stack(_cups_ps_stack_t *st, int count);
+static void            delete_stack(_cups_ps_stack_t *st);
+static _cups_ps_obj_t  *index_stack(_cups_ps_stack_t *st, int n);
+static _cups_ps_stack_t        *new_stack(void);
+static _cups_ps_obj_t  *pop_stack(_cups_ps_stack_t *st);
+static _cups_ps_obj_t  *push_stack(_cups_ps_stack_t *st,
+                                   _cups_ps_obj_t *obj);
+static int             roll_stack(_cups_ps_stack_t *st, int c, int s);
+static _cups_ps_obj_t  *scan_ps(_cups_ps_stack_t *st, char **ptr);
+static int             setpagedevice(_cups_ps_stack_t *st,
+                                       cups_page_header2_t *h,
+                                       int *preferred_bits);
+#ifdef DEBUG
+static void            DEBUG_object(_cups_ps_obj_t *obj);
+static void            DEBUG_stack(_cups_ps_stack_t *st);
+#endif /* DEBUG */
 
 
 /*
@@ -71,6 +137,10 @@ static int  exec_code(cups_page_header2_t *header, int *preferred_bits,
  * supported raster format and then returns 0 on success and -1 if the
  * requested attributes cannot be supported.
  *
+ * cupsRasterInterpretPPD() supports a subset of the PostScript language.
+ * Currently only the [, ], <<, >>, {, }, cleartomark, copy, dup, index,
+ * pop, roll, setpagedevice, and stopped operators are supported.
+ *
  * @since CUPS 1.2@
  */
 
@@ -82,11 +152,9 @@ cupsRasterInterpretPPD(
     cups_option_t       *options,      /* I - Options */
     cups_interpret_cb_t func)          /* I - Optional page header callback */
 {
-  int          i;                      /* Looping var */
   int          status;                 /* Cummulative status */
-  int          count;                  /* Number of marked choices */
+  char         *code;                  /* Code to run */
   const char   *val;                   /* Option value */
-  ppd_choice_t **choices;              /* List of marked choices */
   ppd_size_t   *size;                  /* Current size */
   float                left,                   /* Left position */
                bottom,                 /* Bottom position */
@@ -140,34 +208,34 @@ cupsRasterInterpretPPD(
     */
 
     if (ppd->patches)
-      status |= exec_code(h, &preferred_bits, ppd->patches);
+      status |= _cupsRasterExecPS(h, &preferred_bits, ppd->patches);
 
    /*
     * Then apply printer options in the proper order...
     */
 
-    if ((count = ppdCollect(ppd, PPD_ORDER_DOCUMENT, &choices)) > 0)
+    if ((code = ppdEmitString(ppd, PPD_ORDER_DOCUMENT, 0.0)) != NULL)
     {
-      for (i = 0; i < count; i ++)
-       status |= exec_code(h, &preferred_bits, choices[i]->code);
+      status |= _cupsRasterExecPS(h, &preferred_bits, code);
+      free(code);
     }
 
-    if ((count = ppdCollect(ppd, PPD_ORDER_ANY, &choices)) > 0)
+    if ((code = ppdEmitString(ppd, PPD_ORDER_ANY, 0.0)) != NULL)
     {
-      for (i = 0; i < count; i ++)
-       status |= exec_code(h, &preferred_bits, choices[i]->code);
+      status |= _cupsRasterExecPS(h, &preferred_bits, code);
+      free(code);
     }
 
-    if ((count = ppdCollect(ppd, PPD_ORDER_PROLOG, &choices)) > 0)
+    if ((code = ppdEmitString(ppd, PPD_ORDER_PROLOG, 0.0)) != NULL)
     {
-      for (i = 0; i < count; i ++)
-       status |= exec_code(h, &preferred_bits, choices[i]->code);
+      status |= _cupsRasterExecPS(h, &preferred_bits, code);
+      free(code);
     }
 
-    if ((count = ppdCollect(ppd, PPD_ORDER_PAGE, &choices)) > 0)
+    if ((code = ppdEmitString(ppd, PPD_ORDER_PAGE, 0.0)) != NULL)
     {
-      for (i = 0; i < count; i ++)
-       status |= exec_code(h, &preferred_bits, choices[i]->code);
+      status |= _cupsRasterExecPS(h, &preferred_bits, code);
+      free(code);
     }
   }
 
@@ -247,8 +315,8 @@ cupsRasterInterpretPPD(
       (h->cupsBitsPerColor != 1 && h->cupsBitsPerColor != 2 &&
        h->cupsBitsPerColor != 4 && h->cupsBitsPerColor != 8 &&
        h->cupsBitsPerColor != 16) ||
-      h->cupsBorderlessScalingFactor < 0.9 ||
-      h->cupsBorderlessScalingFactor > 1.1)
+      h->cupsBorderlessScalingFactor < 0.5 ||
+      h->cupsBorderlessScalingFactor > 2.0)
     return (-1);
 
  /*
@@ -340,276 +408,1097 @@ cupsRasterInterpretPPD(
 
 
 /*
- * 'exec_code()' - Execute PostScript setpagedevice commands as appropriate.
+ * '_cupsRasterExecPS()' - Execute PostScript code to initialize a page header.
  */
 
-static int                             /* O - 0 on success, -1 on error */
-exec_code(
+int                                    /* O - 0 on success, -1 on error */
+_cupsRasterExecPS(
     cups_page_header2_t *h,            /* O - Page header */
     int                 *preferred_bits,/* O - Preferred bits per color */
-    const char          *code)         /* I - Option choice to execute */
+    const char          *code)         /* I - PS code to execute */
 {
-  int  i;                              /* Index into array */
-  int  type;                           /* Type of value */
-  char *ptr,                           /* Pointer into name/value string */
-       name[255],                      /* Name of pagedevice entry */
-       value[1024];                    /* Value of pagedevice entry */
+  _cups_ps_stack_t     *st;            /* PostScript value stack */
+  _cups_ps_obj_t       *obj;           /* Object from top of stack */
+  char                 *codecopy,      /* Copy of code */
+                       *codeptr;       /* Pointer into copy of code */
+
 
+  DEBUG_printf(("_cupsRasterExecPS(h=%p, preferred_bits=%p, code=\"%s\")\n",
+                h, preferred_bits, code ? code : "(null)"));
 
  /*
-  * Range check input...
+  * Copy the PostScript code and create a stack...
   */
 
-  if (!code || !h)
+  if ((codecopy = strdup(code)) == NULL)
+    return (-1);
+
+  if ((st = new_stack()) == NULL)
+  {
+    free(codecopy);
     return (-1);
+  }
 
  /*
-  * Parse the code string...
+  * Parse the PS string until we run out of data...
   */
 
-  while (*code)
+  codeptr = codecopy;
+
+  while ((obj = scan_ps(st, &codeptr)) != NULL)
   {
-   /*
-    * Search for the start of a dictionary name...
-    */
+#ifdef DEBUG
+    printf("    (%d): ", st->num_objs);
+    DEBUG_object(obj);
+    putchar('\n');
+#endif /* DEBUG */
+
+    switch (obj->type)
+    {
+      default :
+          /* Do nothing for regular values */
+         break;
+
+      case CUPS_PS_CLEARTOMARK :
+          pop_stack(st);
+
+         cleartomark_stack(st);
+
+#ifdef DEBUG
+          fputs("    dup: ", stdout);
+         DEBUG_stack(st);
+#endif /* DEBUG */
+          break;
+
+      case CUPS_PS_COPY :
+          pop_stack(st);
+         if ((obj = pop_stack(st)) != NULL)
+         {
+           copy_stack(st, (int)obj->value.number);
+
+#ifdef DEBUG
+            fputs("    copy: ", stdout);
+           DEBUG_stack(st);
+#endif /* DEBUG */
+          }
+          break;
+
+      case CUPS_PS_DUP :
+          pop_stack(st);
+         copy_stack(st, 1);
+
+#ifdef DEBUG
+          fputs("    dup: ", stdout);
+         DEBUG_stack(st);
+#endif /* DEBUG */
+          break;
+
+      case CUPS_PS_INDEX :
+          pop_stack(st);
+         if ((obj = pop_stack(st)) != NULL)
+         {
+           index_stack(st, (int)obj->value.number);
+
+#ifdef DEBUG
+            fputs("    index: ", stdout);
+           DEBUG_stack(st);
+#endif /* DEBUG */
+          }
+          break;
+
+      case CUPS_PS_POP :
+          pop_stack(st);
+          pop_stack(st);
+
+#ifdef DEBUG
+          fputs("    pop: ", stdout);
+         DEBUG_stack(st);
+#endif /* DEBUG */
+          break;
+
+      case CUPS_PS_ROLL :
+          pop_stack(st);
+         if ((obj = pop_stack(st)) != NULL)
+         {
+            int                c;              /* Count */
 
-    while (*code && *code != '/')
-      code ++;
 
-    if (!*code)
+            c = (int)obj->value.number;
+
+           if ((obj = pop_stack(st)) != NULL)
+           {
+             roll_stack(st, (int)obj->value.number, c);
+
+#ifdef DEBUG
+              fputs("    roll:", stdout);
+             DEBUG_stack(st);
+#endif /* DEBUG */
+            }
+         }
+          break;
+
+      case CUPS_PS_SETPAGEDEVICE :
+          pop_stack(st);
+         setpagedevice(st, h, preferred_bits);
+
+#ifdef DEBUG
+          fputs("    setpagedevice: ", stdout);
+         DEBUG_stack(st);
+#endif /* DEBUG */
+          break;
+
+      case CUPS_PS_START_PROC :
+      case CUPS_PS_END_PROC :
+      case CUPS_PS_STOPPED :
+          pop_stack(st);
+         break;
+
+      case CUPS_PS_OTHER :
+          DEBUG_printf(("    Unknown operator \"%s\"!\n", obj->value.other));
+          break;
+    }
+
+    if (obj->type == CUPS_PS_OTHER)
       break;
+  }
+
+ /*
+  * Cleanup...
+  */
+
+  free(codecopy);
+
+  if (st->num_objs > 0)
+  {
+#ifdef DEBUG
+    fputs("    Stack not empty:", stdout);
+    DEBUG_stack(st);
+#endif /* DEBUG */
 
+    delete_stack(st);
+
+    return (-1);
+  }
+
+  delete_stack(st);
+
+ /*
+  * Return success...
+  */
+
+  return (0);
+}
+
+
+/*
+ * 'cleartomark_stack()' - Clear to the last mark ([) on the stack.
+ */
+
+static int                             /* O - 0 on success, -1 on error */
+cleartomark_stack(_cups_ps_stack_t *st)        /* I - Stack */
+{
+  _cups_ps_obj_t       *obj;           /* Current object on stack */
+
+
+  while ((obj = pop_stack(st)) != NULL)
+    if (obj->type == CUPS_PS_START_ARRAY)
+      break;
+
+  return (obj ? 0 : -1);
+}
+
+
+/*
+ * 'copy_stack()' - Copy the top N stack objects.
+ */
+
+static int                             /* O - 0 on success, -1 on error */
+copy_stack(_cups_ps_stack_t *st,       /* I - Stack */
+           int              c)         /* I - Number of objects to copy */
+{
+  int  n;                              /* Index */
+
+
+  if (c < 0)
+    return (-1);
+  else if (c == 0)
+    return (0);
+
+  if ((n = st->num_objs - c) < 0)
+    return (-1);
+
+  while (c > 0)
+  {
+    if (!push_stack(st, st->objs + n))
+      return (-1);
+
+    n ++;
+    c --;
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'delete_stack()' - Free memory used by a stack.
+ */
+
+static void
+delete_stack(_cups_ps_stack_t *st)     /* I - Stack */
+{
+  free(st->objs);
+  free(st);
+}
+
+
+/*
+ * 'index_stack()' - Copy the Nth value on the stack.
+ */
+
+static _cups_ps_obj_t  *               /* O - New object */
+index_stack(_cups_ps_stack_t *st,      /* I - Stack */
+            int              n)                /* I - Object index */
+{
+  if (n < 0 || (n = st->num_objs - n - 1) < 0)
+    return (NULL);
+
+  return (push_stack(st, st->objs + n));
+}
+
+
+/*
+ * 'new_stack()' - Create a new stack.
+ */
+
+static _cups_ps_stack_t        *               /* O - New stack */
+new_stack(void)
+{
+  _cups_ps_stack_t     *st;            /* New stack */
+
+
+  if ((st = calloc(1, sizeof(_cups_ps_stack_t))) == NULL)
+    return (NULL);
+
+  st->alloc_objs = 32;
+
+  if ((st->objs = calloc(32, sizeof(_cups_ps_obj_t))) == NULL)
+  {
+    free(st);
+    return (NULL);
+  }
+  else
+    return (st);
+}
+
+
+/*
+ * 'pop_stock()' - Pop the top object off the stack.
+ */
+
+static _cups_ps_obj_t  *               /* O - Object */
+pop_stack(_cups_ps_stack_t *st)                /* I - Stack */
+{
+  if (st->num_objs > 0)
+  {
+    st->num_objs --;
+
+    return (st->objs + st->num_objs);
+  }
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'push_stack()' - Push an object on the stack.
+ */
+
+static _cups_ps_obj_t  *               /* O - New object */
+push_stack(_cups_ps_stack_t *st,       /* I - Stack */
+           _cups_ps_obj_t   *obj)      /* I - Object */
+{
+  _cups_ps_obj_t       *temp;          /* New object */
+
+
+  if (st->num_objs >= st->alloc_objs)
+  {
+
+
+    st->alloc_objs += 32;
+
+    if ((temp = realloc(st->objs, st->alloc_objs *
+                                  sizeof(_cups_ps_obj_t))) == NULL)
+      return (NULL);
+
+    st->objs = temp;
+    memset(temp + st->num_objs, 0, 32 * sizeof(_cups_ps_obj_t));
+  }
+
+  temp = st->objs + st->num_objs;
+  st->num_objs ++;
+
+  memcpy(temp, obj, sizeof(_cups_ps_obj_t));
+
+  return (temp);
+}
+
+
+/*
+ * 'roll_stack()' - Rotate stack objects.
+ */
+
+static int                             /* O - 0 on success, -1 on error */
+roll_stack(_cups_ps_stack_t *st,       /* I - Stack */
+          int              c,          /* I - Number of objects */
+           int              s)         /* I - Amount to shift */
+{
+  _cups_ps_obj_t       *temp;          /* Temporary array of objects */
+  int                  n;              /* Index into array */
+
+
+  DEBUG_printf(("    roll_stack(st=%p, s=%d, c=%d)\n", st, s, c));
+
+ /*
+  * Range check input...
+  */
+
+  if (c < 0)
+    return (-1);
+  else if (c == 0)
+    return (0);
+
+  if ((n = st->num_objs - c) < 0)
+    return (-1);
+
+  s %= c;
+
+  if (s == 0)
+    return (0);
+
+ /*
+  * Copy N objects and move things around...
+  */
+
+  if (s < 0)
+  {
    /*
-    * Get the name...
+    * Shift down...
     */
 
-    code ++;
-    for (ptr = name; isalnum(*code & 255); code ++)
-      if (ptr < (name + sizeof(name) - 1))
-        *ptr++ = *code;
-      else
-        return (-1);
+    s = -s;
 
-    *ptr = '\0';
+    if ((temp = calloc(s, sizeof(_cups_ps_obj_t))) == NULL)
+      return (-1);
 
+    memcpy(temp, st->objs + n, s * sizeof(_cups_ps_obj_t));
+    memmove(st->objs + n, st->objs + n + s, (c - s) * sizeof(_cups_ps_obj_t));
+    memcpy(st->objs + n + c - s, temp, s * sizeof(_cups_ps_obj_t));
+  }
+  else
+  {
    /*
-    * Then parse the value as needed...
+    * Shift up...
     */
 
-    while (isspace(*code & 255))
-      code ++;
+    if ((temp = calloc(s, sizeof(_cups_ps_obj_t))) == NULL)
+      return (-1);
 
-    if (!*code)
-      break;
+    memcpy(temp, st->objs + n + c - s, s * sizeof(_cups_ps_obj_t));
+    memmove(st->objs + n + s, st->objs + n,
+            (c - s) * sizeof(_cups_ps_obj_t));
+    memcpy(st->objs + n, temp, s * sizeof(_cups_ps_obj_t));
+  }
 
-    if (*code == '[')
-    {
-     /*
-      * Read array of values...
-      */
+  free(temp);
+
+  return (0);
+}
 
-      type = CUPS_TYPE_ARRAY;
 
-      for (ptr = value; *code && *code != ']'; code ++)
-        if (ptr < (value + sizeof(value) - 1))
-         *ptr++ = *code;
-       else
-         return (-1);
+/*
+ * 'scan_ps()' - Scan a string for the next PS object.
+ */
+
+static _cups_ps_obj_t  *               /* O  - New object or NULL on EOF */
+scan_ps(_cups_ps_stack_t *st,          /* I  - Stack */
+        char             **ptr)                /* IO - String pointer */
+{
+  _cups_ps_obj_t       obj;            /* Current object */
+  char                 *start,         /* Start of object */
+                       *cur,           /* Current position */
+                       *valptr,        /* Pointer into value string */
+                       *valend;        /* End of value string */
+  int                  parens;         /* Parenthesis nesting level */
 
-      if (*code == ']')
-        *ptr++ = *code++;
 
-      *ptr = '\0';
-    }
-    else if (*code == '(')
+ /*
+  * Skip leading whitespace...
+  */
+
+  for (cur = *ptr; *cur; cur ++)
+  {
+    if (*cur == '%')
     {
      /*
-      * Read string value...
+      * Comment, skip to end of line...
       */
 
-      type = CUPS_TYPE_STRING;
+      for (cur ++; *cur && *cur != '\n' && *cur != '\r'; cur ++);
+    }
+    else if (!isspace(*cur & 255))
+      break;
+  }
 
-      for (ptr = value; *code && *code != ')'; code ++)
-        if (ptr < (value + sizeof(value) - 1))
-         *ptr++ = *code;
-       else
-         return (-1);
+  if (!*cur)
+  {
+    *ptr = NULL;
 
-      if (*code == ')')
-        *ptr++ = *code++;
+    return (NULL);
+  }
 
-      *ptr = '\0';
-    }
-    else if (isdigit(*code & 255) || *code == '-' || *code == '.')
-    {
-     /*
-      * Read single number...
-      */
+ /*
+  * See what we have...
+  */
 
-      type = CUPS_TYPE_NUMBER;
+  memset(&obj, 0, sizeof(obj));
 
-      for (ptr = value;
-           isdigit(*code & 255) || *code == '-' || *code == '.';
-          code ++)
-        if (ptr < (value + sizeof(value) - 1))
-         *ptr++ = *code;
+  switch (*cur)
+  {
+    case '(' :                         /* (string) */
+        obj.type = CUPS_PS_STRING;
+       start    = cur;
+
+       for (cur ++, parens = 1, valptr = obj.value.string,
+                valend = obj.value.string + sizeof(obj.value.string) - 1;
+             *cur;
+            cur ++)
+       {
+         if (*cur == ')' && parens == 1)
+           break;
+
+          if (*cur == '(')
+           parens ++;
+         else if (*cur == ')')
+           parens --;
+
+          if (valptr >= valend)
+         {
+           *ptr = start;
+
+           return (NULL);
+         }
+
+         if (*cur == '\\')
+         {
+          /*
+           * Decode escaped character...
+           */
+
+           cur ++;
+
+            if (*cur == 'b')
+             *valptr++ = '\b';
+           else if (*cur == 'f')
+             *valptr++ = '\f';
+           else if (*cur == 'n')
+             *valptr++ = '\n';
+           else if (*cur == 'r')
+             *valptr++ = '\r';
+           else if (*cur == 't')
+             *valptr++ = '\t';
+           else if (*cur >= '0' && *cur <= '7')
+           {
+             int ch = *cur - '0';
+
+              if (cur[1] >= '0' && cur[1] <= '7')
+             {
+               cur ++;
+               ch = (ch << 3) + *cur - '0';
+             }
+
+              if (cur[1] >= '0' && cur[1] <= '7')
+             {
+               cur ++;
+               ch = (ch << 3) + *cur - '0';
+             }
+
+             *valptr++ = ch;
+           }
+           else if (*cur == '\r')
+           {
+             if (cur[1] == '\n')
+               cur ++;
+           }
+           else if (*cur != '\n')
+             *valptr++ = *cur;
+         }
+         else
+           *valptr++ = *cur;
+       }
+
+       if (*cur != ')')
+       {
+         *ptr = start;
+
+         return (NULL);
+       }
+
+       cur ++;
+        break;
+
+    case '[' :                         /* Start array */
+        obj.type = CUPS_PS_START_ARRAY;
+       cur ++;
+        break;
+
+    case ']' :                         /* End array */
+        obj.type = CUPS_PS_END_ARRAY;
+       cur ++;
+        break;
+
+    case '<' :                         /* Start dictionary or hex string */
+        if (cur[1] == '<')
+       {
+         obj.type = CUPS_PS_START_DICT;
+         cur += 2;
+       }
        else
-         return (-1);
+       {
+          obj.type = CUPS_PS_STRING;
+         start    = cur;
+
+         for (cur ++, valptr = obj.value.string,
+                  valend = obj.value.string + sizeof(obj.value.string) - 1;
+               *cur;
+              cur ++)
+         {
+           int ch;                     /* Current character */
+
+
+
+            if (*cur == '>')
+             break;
+           else if (valptr >= valend || !isxdigit(*cur & 255))
+           {
+             *ptr = start;
+             return (NULL);
+           }
+
+            if (*cur >= '0' && *cur <= '9')
+             ch = (*cur - '0') << 4;
+           else
+             ch = (tolower(*cur) - 'a' + 10) << 4;
+
+           if (isxdigit(cur[1] & 255))
+           {
+             cur ++;
+
+              if (*cur >= '0' && *cur <= '9')
+               ch |= *cur - '0';
+             else
+               ch |= tolower(*cur) - 'a' + 10;
+            }
+
+           *valptr++ = ch;
+          }
+
+          if (*cur != '>')
+         {
+           *ptr = start;
+           return (NULL);
+         }
+
+         cur ++;
+       }
+        break;
 
-      *ptr = '\0';
-    }
-    else
-    {
-     /*
-      * Read a single name...
-      */
+    case '>' :                         /* End dictionary? */
+        if (cur[1] == '>')
+       {
+         obj.type = CUPS_PS_END_DICT;
+         cur += 2;
+       }
+       else
+       {
+         obj.type           = CUPS_PS_OTHER;
+         obj.value.other[0] = *cur;
+
+         cur ++;
+       }
+        break;
+
+    case '{' :                         /* Start procedure */
+        obj.type = CUPS_PS_START_PROC;
+       cur ++;
+        break;
+
+    case '}' :                         /* End procedure */
+        obj.type = CUPS_PS_END_PROC;
+       cur ++;
+        break;
+
+    case '-' :                         /* Possible number */
+    case '+' :
+        if (!isdigit(cur[1] & 255) && cur[1] != '.')
+       {
+         obj.type           = CUPS_PS_OTHER;
+         obj.value.other[0] = *cur;
+
+         cur ++;
+         break;
+       }
+
+    case '0' :                         /* Number */
+    case '1' :
+    case '2' :
+    case '3' :
+    case '4' :
+    case '5' :
+    case '6' :
+    case '7' :
+    case '8' :
+    case '9' :
+    case '.' :
+        obj.type = CUPS_PS_NUMBER;
+
+        start = cur;
+       for (cur ++; *cur; cur ++)
+         if (!isdigit(*cur & 255))
+           break;
+
+        if (*cur == '#')
+       {
+        /*
+         * Integer with radix...
+         */
+
+          obj.value.number = strtol(cur + 1, &cur, atoi(start));
+         break;
+       }
+       else if (strchr(".Ee()<>[]{}/%", *cur) || isspace(*cur & 255))
+       {
+        /*
+         * Integer or real number...
+         */
 
-      type = CUPS_TYPE_NAME;
+         obj.value.number = _cupsStrScand(start, &cur, localeconv());
+          break;
+       }
+       else
+         cur = start;
 
-      for (ptr = value; isalnum(*code & 255) || *code == '_'; code ++) 
-        if (ptr < (value + sizeof(value) - 1))
-         *ptr++ = *code;
+    default :                          /* Operator/variable name */
+        start = cur;
+
+       if (*cur == '/')
+       {
+         obj.type = CUPS_PS_NAME;
+          valptr   = obj.value.name;
+          valend   = obj.value.name + sizeof(obj.value.name) - 1;
+         cur ++;
+       }
        else
-         return (-1);
+       {
+         obj.type = CUPS_PS_OTHER;
+          valptr   = obj.value.other;
+          valend   = obj.value.other + sizeof(obj.value.other) - 1;
+       }
 
-      *ptr = '\0';
-    }
+       while (*cur)
+       {
+         if (strchr("()<>[]{}/%", *cur) || isspace(*cur & 255))
+           break;
+         else if (valptr < valend)
+           *valptr++ = *cur++;
+         else
+         {
+           *ptr = start;
+           return (NULL);
+         }
+       }
+
+        if (obj.type == CUPS_PS_OTHER)
+       {
+          if (!strcmp(obj.value.other, "true"))
+         {
+           obj.type          = CUPS_PS_BOOLEAN;
+           obj.value.boolean = 1;
+         }
+         else if (!strcmp(obj.value.other, "false"))
+         {
+           obj.type          = CUPS_PS_BOOLEAN;
+           obj.value.boolean = 0;
+         }
+         else if (!strcmp(obj.value.other, "null"))
+           obj.type = CUPS_PS_NULL;
+         else if (!strcmp(obj.value.other, "cleartomark"))
+           obj.type = CUPS_PS_CLEARTOMARK;
+         else if (!strcmp(obj.value.other, "copy"))
+           obj.type = CUPS_PS_COPY;
+         else if (!strcmp(obj.value.other, "dup"))
+           obj.type = CUPS_PS_DUP;
+         else if (!strcmp(obj.value.other, "index"))
+           obj.type = CUPS_PS_INDEX;
+         else if (!strcmp(obj.value.other, "pop"))
+           obj.type = CUPS_PS_POP;
+         else if (!strcmp(obj.value.other, "roll"))
+           obj.type = CUPS_PS_ROLL;
+         else if (!strcmp(obj.value.other, "setpagedevice"))
+           obj.type = CUPS_PS_SETPAGEDEVICE;
+         else if (!strcmp(obj.value.other, "stopped"))
+           obj.type = CUPS_PS_STOPPED;
+       }
+       break;
+  }
+
+ /*
+  * Save the current position in the string and return the new object...
+  */
+
+  *ptr = cur;
+
+  return (push_stack(st, &obj));
+}
+
+
+/*
+ * 'setpagedevice()' - Simulate the PostScript setpagedevice operator.
+ */
+
+static int                             /* O - 0 on success, -1 on error */
+setpagedevice(
+    _cups_ps_stack_t    *st,           /* I - Stack */
+    cups_page_header2_t *h,            /* O - Page header */
+    int                 *preferred_bits)/* O - Preferred bits per color */
+{
+  int                  i;              /* Index into array */
+  _cups_ps_obj_t       *obj,           /* Current object */
+                       *end;           /* End of dictionary */
+  const char           *name;          /* Attribute name */
+
+
+ /*
+  * Make sure we have a dictionary on the stack...
+  */
+
+  if (st->num_objs == 0)
+    return (-1);
+
+  obj = end = st->objs + st->num_objs - 1;
+
+  if (obj->type != CUPS_PS_END_DICT)
+    return (-1);
+
+  obj --;
+
+  while (obj > st->objs)
+  {
+    if (obj->type == CUPS_PS_START_DICT)
+      break;
+
+    obj --;
+  }
+
+  if (obj < st->objs)
+    return (-1);
 
+ /*
+  * Found the start of the dictionary, empty the stack to this point...
+  */
+
+  st->num_objs = obj - st->objs;
+
+ /*
+  * Now pull /name and value pairs from the dictionary...
+  */
+
+  DEBUG_puts("    Dictionary:");
+
+  for (obj ++; obj < end; obj ++)
+  {
    /*
-    * Assign the value as needed...
+    * Grab the name...
     */
 
-    if (!strcmp(name, "MediaClass") && type == CUPS_TYPE_STRING)
-    {
-      if (sscanf(value, "(%63[^)])", h->MediaClass) != 1)
-        return (-1);
-    }
-    else if (!strcmp(name, "MediaColor") && type == CUPS_TYPE_STRING)
-    {
-      if (sscanf(value, "(%63[^)])", h->MediaColor) != 1)
-        return (-1);
-    }
-    else if (!strcmp(name, "MediaType") && type == CUPS_TYPE_STRING)
-    {
-      if (sscanf(value, "(%63[^)])", h->MediaType) != 1)
-        return (-1);
-    }
-    else if (!strcmp(name, "OutputType") && type == CUPS_TYPE_STRING)
-    {
-      if (sscanf(value, "(%63[^)])", h->OutputType) != 1)
-        return (-1);
-    }
-    else if (!strcmp(name, "AdvanceDistance") && type == CUPS_TYPE_NUMBER)
-      h->AdvanceDistance = atoi(value);
-    else if (!strcmp(name, "AdvanceMedia") && type == CUPS_TYPE_NUMBER)
-      h->AdvanceMedia = atoi(value);
-    else if (!strcmp(name, "Collate") && type == CUPS_TYPE_NAME)
-      h->Collate = !strcmp(value, "true");
-    else if (!strcmp(name, "CutMedia") && type == CUPS_TYPE_NUMBER)
-      h->CutMedia = (cups_cut_t)atoi(value);
-    else if (!strcmp(name, "Duplex") && type == CUPS_TYPE_NAME)
-      h->Duplex = !strcmp(value, "true");
-    else if (!strcmp(name, "HWResolution") && type == CUPS_TYPE_ARRAY)
+    if (obj->type != CUPS_PS_NAME)
+      return (-1);
+
+    name = obj->value.name;
+    obj ++;
+
+#ifdef DEBUG
+    printf("        /%s ", name);
+    DEBUG_object(obj);
+    putchar('\n');
+#endif /* DEBUG */
+
+   /*
+    * Then grab the value...
+    */
+
+    if (!strcmp(name, "MediaClass") && obj->type == CUPS_PS_STRING)
+      strlcpy(h->MediaClass, obj->value.string, sizeof(h->MediaClass));
+    else if (!strcmp(name, "MediaColor") && obj->type == CUPS_PS_STRING)
+      strlcpy(h->MediaColor, obj->value.string, sizeof(h->MediaColor));
+    else if (!strcmp(name, "MediaType") && obj->type == CUPS_PS_STRING)
+      strlcpy(h->MediaType, obj->value.string, sizeof(h->MediaType));
+    else if (!strcmp(name, "OutputType") && obj->type == CUPS_PS_STRING)
+      strlcpy(h->OutputType, obj->value.string, sizeof(h->OutputType));
+    else if (!strcmp(name, "AdvanceDistance") && obj->type == CUPS_PS_NUMBER)
+      h->AdvanceDistance = (unsigned)obj->value.number;
+    else if (!strcmp(name, "AdvanceMedia") && obj->type == CUPS_PS_NUMBER)
+      h->AdvanceMedia = (unsigned)obj->value.number;
+    else if (!strcmp(name, "Collate") && obj->type == CUPS_PS_BOOLEAN)
+      h->Collate = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "CutMedia") && obj->type == CUPS_PS_NUMBER)
+      h->CutMedia = (cups_cut_t)(unsigned)obj->value.number;
+    else if (!strcmp(name, "Duplex") && obj->type == CUPS_PS_BOOLEAN)
+      h->Duplex = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "HWResolution") && obj->type == CUPS_PS_START_ARRAY)
     {
-      if (sscanf(value, "[%d%d]", h->HWResolution + 0,
-                 h->HWResolution + 1) != 2)
+      if (obj[1].type == CUPS_PS_NUMBER && obj[2].type == CUPS_PS_NUMBER &&
+          obj[3].type == CUPS_PS_END_ARRAY)
+      {
+        h->HWResolution[0] = (unsigned)obj[1].value.number;
+       h->HWResolution[1] = (unsigned)obj[2].value.number;
+       obj += 3;
+      }
+      else
         return (-1);
     }
-    else if (!strcmp(name, "InsertSheet") && type == CUPS_TYPE_NAME)
-      h->InsertSheet = !strcmp(value, "true");
-    else if (!strcmp(name, "Jog") && type == CUPS_TYPE_NUMBER)
-      h->Jog = atoi(value);
-    else if (!strcmp(name, "LeadingEdge") && type == CUPS_TYPE_NUMBER)
-      h->LeadingEdge = atoi(value);
-    else if (!strcmp(name, "ManualFeed") && type == CUPS_TYPE_NAME)
-      h->ManualFeed = !strcmp(value, "true");
+    else if (!strcmp(name, "InsertSheet") && obj->type == CUPS_PS_BOOLEAN)
+      h->InsertSheet = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "Jog") && obj->type == CUPS_PS_NUMBER)
+      h->Jog = (unsigned)obj->value.number;
+    else if (!strcmp(name, "LeadingEdge") && obj->type == CUPS_PS_NUMBER)
+      h->LeadingEdge = (unsigned)obj->value.number;
+    else if (!strcmp(name, "ManualFeed") && obj->type == CUPS_PS_BOOLEAN)
+      h->ManualFeed = (unsigned)obj->value.boolean;
     else if ((!strcmp(name, "cupsMediaPosition") || /* Compatibility */
-              !strcmp(name, "MediaPosition")) && type == CUPS_TYPE_NUMBER)
-      h->MediaPosition = atoi(value);
-    else if (!strcmp(name, "MediaWeight") && type == CUPS_TYPE_NUMBER)
-      h->MediaWeight = atoi(value);
-    else if (!strcmp(name, "MirrorPrint") && type == CUPS_TYPE_NAME)
-      h->MirrorPrint = !strcmp(value, "true");
-    else if (!strcmp(name, "NegativePrint") && type == CUPS_TYPE_NAME)
-      h->NegativePrint = !strcmp(value, "true");
-    else if (!strcmp(name, "Orientation") && type == CUPS_TYPE_NUMBER)
-      h->Orientation = atoi(value);
-    else if (!strcmp(name, "OutputFaceUp") && type == CUPS_TYPE_NAME)
-      h->OutputFaceUp = !strcmp(value, "true");
-    else if (!strcmp(name, "PageSize") && type == CUPS_TYPE_ARRAY)
+              !strcmp(name, "MediaPosition")) && obj->type == CUPS_PS_NUMBER)
+      h->MediaPosition = (unsigned)obj->value.number;
+    else if (!strcmp(name, "MediaWeight") && obj->type == CUPS_PS_NUMBER)
+      h->MediaWeight = (unsigned)obj->value.number;
+    else if (!strcmp(name, "MirrorPrint") && obj->type == CUPS_PS_BOOLEAN)
+      h->MirrorPrint = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "NegativePrint") && obj->type == CUPS_PS_BOOLEAN)
+      h->NegativePrint = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "NumCopies") && obj->type == CUPS_PS_NUMBER)
+      h->NumCopies = (unsigned)obj->value.number;
+    else if (!strcmp(name, "Orientation") && obj->type == CUPS_PS_NUMBER)
+      h->Orientation = (unsigned)obj->value.number;
+    else if (!strcmp(name, "OutputFaceUp") && obj->type == CUPS_PS_BOOLEAN)
+      h->OutputFaceUp = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "PageSize") && obj->type == CUPS_PS_START_ARRAY)
     {
-      if (sscanf(value, "[%f%f]", h->cupsPageSize + 0, h->cupsPageSize + 1) != 2)
+      if (obj[1].type == CUPS_PS_NUMBER && obj[2].type == CUPS_PS_NUMBER &&
+          obj[3].type == CUPS_PS_END_ARRAY)
+      {
+        h->cupsPageSize[0] = obj[1].value.number;
+       h->cupsPageSize[1] = obj[2].value.number;
+
+        h->PageSize[0] = (unsigned)obj[1].value.number;
+       h->PageSize[1] = (unsigned)obj[2].value.number;
+
+       obj += 3;
+      }
+      else
         return (-1);
     }
-    else if (!strcmp(name, "Separations") && type == CUPS_TYPE_NAME)
-      h->Separations = !strcmp(value, "true");
-    else if (!strcmp(name, "TraySwitch") && type == CUPS_TYPE_NAME)
-      h->TraySwitch = !strcmp(value, "true");
-    else if (!strcmp(name, "Tumble") && type == CUPS_TYPE_NAME)
-      h->Tumble = !strcmp(value, "true");
-    else if (!strcmp(name, "cupsMediaType") && type == CUPS_TYPE_NUMBER)
-      h->cupsMediaType = atoi(value);
-    else if (!strcmp(name, "cupsBitsPerColor") && type == CUPS_TYPE_NUMBER)
-      h->cupsBitsPerColor = atoi(value);
-    else if (!strcmp(name, "cupsPreferredBitsPerColor") && type == CUPS_TYPE_NUMBER)
-      *preferred_bits = atoi(value);
-    else if (!strcmp(name, "cupsColorOrder") && type == CUPS_TYPE_NUMBER)
-      h->cupsColorOrder = (cups_order_t)atoi(value);
-    else if (!strcmp(name, "cupsColorSpace") && type == CUPS_TYPE_NUMBER)
-      h->cupsColorSpace = (cups_cspace_t)atoi(value);
-    else if (!strcmp(name, "cupsCompression") && type == CUPS_TYPE_NUMBER)
-      h->cupsCompression = atoi(value);
-    else if (!strcmp(name, "cupsRowCount") && type == CUPS_TYPE_NUMBER)
-      h->cupsRowCount = atoi(value);
-    else if (!strcmp(name, "cupsRowFeed") && type == CUPS_TYPE_NUMBER)
-      h->cupsRowFeed = atoi(value);
-    else if (!strcmp(name, "cupsRowStep") && type == CUPS_TYPE_NUMBER)
-      h->cupsRowStep = atoi(value);
+    else if (!strcmp(name, "Separations") && obj->type == CUPS_PS_BOOLEAN)
+      h->Separations = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "TraySwitch") && obj->type == CUPS_PS_BOOLEAN)
+      h->TraySwitch = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "Tumble") && obj->type == CUPS_PS_BOOLEAN)
+      h->Tumble = (unsigned)obj->value.boolean;
+    else if (!strcmp(name, "cupsMediaType") && obj->type == CUPS_PS_NUMBER)
+      h->cupsMediaType = (unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsBitsPerColor") && obj->type == CUPS_PS_NUMBER)
+      h->cupsBitsPerColor = (unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsPreferredBitsPerColor") &&
+             obj->type == CUPS_PS_NUMBER)
+      *preferred_bits = (int)obj->value.number;
+    else if (!strcmp(name, "cupsColorOrder") && obj->type == CUPS_PS_NUMBER)
+      h->cupsColorOrder = (cups_order_t)(unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsColorSpace") && obj->type == CUPS_PS_NUMBER)
+      h->cupsColorSpace = (cups_cspace_t)(unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsCompression") && obj->type == CUPS_PS_NUMBER)
+      h->cupsCompression = (unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsRowCount") && obj->type == CUPS_PS_NUMBER)
+      h->cupsRowCount = (unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsRowFeed") && obj->type == CUPS_PS_NUMBER)
+      h->cupsRowFeed = (unsigned)obj->value.number;
+    else if (!strcmp(name, "cupsRowStep") && obj->type == CUPS_PS_NUMBER)
+      h->cupsRowStep = (unsigned)obj->value.number;
     else if (!strcmp(name, "cupsBorderlessScalingFactor") &&
-             type == CUPS_TYPE_NUMBER)
-      h->cupsBorderlessScalingFactor = atof(value);
-    else if (!strncmp(name, "cupsInteger", 11) && type == CUPS_TYPE_NUMBER)
+             obj->type == CUPS_PS_NUMBER)
+      h->cupsBorderlessScalingFactor = obj->value.number;
+    else if (!strncmp(name, "cupsInteger", 11) && obj->type == CUPS_PS_NUMBER)
     {
-      if ((i = atoi(name + 11)) >= 0 || i > 15)
+      if ((i = atoi(name + 11)) < 0 || i > 15)
         return (-1);
 
-      h->cupsInteger[i] = atoi(value);
+      h->cupsInteger[i] = (unsigned)obj->value.number;
     }
-    else if (!strncmp(name, "cupsReal", 8) && type == CUPS_TYPE_NUMBER)
+    else if (!strncmp(name, "cupsReal", 8) && obj->type == CUPS_PS_NUMBER)
     {
-      if ((i = atoi(name + 8)) >= 0 || i > 15)
+      if ((i = atoi(name + 8)) < 0 || i > 15)
         return (-1);
 
-      h->cupsReal[i] = atof(value);
+      h->cupsReal[i] = obj->value.number;
     }
-    else if (!strncmp(name, "cupsString", 10) && type == CUPS_TYPE_STRING)
+    else if (!strncmp(name, "cupsString", 10) && obj->type == CUPS_PS_STRING)
     {
-      if ((i = atoi(name + 10)) >= 0 || i > 15)
+      if ((i = atoi(name + 10)) < 0 || i > 15)
         return (-1);
 
-      if (sscanf(value, "(%63[^)])", h->cupsString[i]) != 1)
-        return (-1);
-    }
-    else if (!strcmp(name, "cupsMarkerType") && type == CUPS_TYPE_STRING)
-    {
-      if (sscanf(value, "(%63[^)])", h->cupsMarkerType) != 1)
-        return (-1);
+      strlcpy(h->cupsString[i], obj->value.string, sizeof(h->cupsString[i]));
     }
-    else if (!strcmp(name, "cupsRenderingIntent") && type == CUPS_TYPE_STRING)
+    else if (!strcmp(name, "cupsMarkerType") && obj->type == CUPS_PS_STRING)
+      strlcpy(h->cupsMarkerType, obj->value.string, sizeof(h->cupsMarkerType));
+    else if (!strcmp(name, "cupsPageSizeName") && obj->type == CUPS_PS_STRING)
+      strlcpy(h->cupsPageSizeName, obj->value.string,
+              sizeof(h->cupsPageSizeName));
+    else if (!strcmp(name, "cupsRenderingIntent") &&
+             obj->type == CUPS_PS_STRING)
+      strlcpy(h->cupsRenderingIntent, obj->value.string,
+              sizeof(h->cupsRenderingIntent));
+    else
     {
-      if (sscanf(value, "(%63[^)])", h->cupsRenderingIntent) != 1)
-        return (-1);
+     /*
+      * Ignore unknown name+value...
+      */
+
+      DEBUG_printf(("    Unknown name (\"%s\") or value...\n", name));
+
+      while (obj[1].type != CUPS_PS_NAME && obj < end)
+        obj ++;
     }
   }
 
- /*
-  * Return success...
-  */
-
   return (0);
 }
 
 
+#ifdef DEBUG
+/*
+ * 'DEBUG_object()' - Print an object's value...
+ */
+
+static void
+DEBUG_object(_cups_ps_obj_t *obj)      /* I - Object to print */
+{
+  switch (obj->type)
+  {
+    case CUPS_PS_NAME :
+       printf("/%s", obj->value.name);
+       break;
+
+    case CUPS_PS_NUMBER :
+       printf("%g", obj->value.number);
+       break;
+
+    case CUPS_PS_STRING :
+       printf("(%s)", obj->value.string);
+       break;
+
+    case CUPS_PS_BOOLEAN :
+       if (obj->value.boolean)
+         fputs("true", stdout);
+       else
+         fputs("false", stdout);
+       break;
+
+    case CUPS_PS_NULL :
+       fputs("null", stdout);
+       break;
+
+    case CUPS_PS_START_ARRAY :
+       fputs("[", stdout);
+       break;
+
+    case CUPS_PS_END_ARRAY :
+       fputs("]", stdout);
+       break;
+
+    case CUPS_PS_START_DICT :
+       fputs("<<", stdout);
+       break;
+
+    case CUPS_PS_END_DICT :
+       fputs(">>", stdout);
+       break;
+
+    case CUPS_PS_START_PROC :
+       fputs("{", stdout);
+       break;
+
+    case CUPS_PS_END_PROC :
+       fputs("}", stdout);
+       break;
+
+    case CUPS_PS_CLEARTOMARK :
+       fputs("--cleartomark--", stdout);
+        break;
+
+    case CUPS_PS_COPY :
+       fputs("--copy--", stdout);
+        break;
+
+    case CUPS_PS_DUP :
+       fputs("--dup--", stdout);
+        break;
+
+    case CUPS_PS_INDEX :
+       fputs("--index--", stdout);
+        break;
+
+    case CUPS_PS_POP :
+       fputs("--pop--", stdout);
+        break;
+
+    case CUPS_PS_ROLL :
+       fputs("--roll--", stdout);
+        break;
+
+    case CUPS_PS_SETPAGEDEVICE :
+       fputs("--setpagedevice--", stdout);
+        break;
+
+    case CUPS_PS_STOPPED :
+       fputs("--stopped--", stdout);
+        break;
+
+    case CUPS_PS_OTHER :
+       printf("--%s--", obj->value.other);
+       break;
+  }
+}
+
+
+/*
+ * 'DEBUG_stack()' - Print a stack...
+ */
+
+static void
+DEBUG_stack(_cups_ps_stack_t *st)      /* I - Stack */
+{
+  int                  c;              /* Looping var */
+  _cups_ps_obj_t       *obj;           /* Current object on stack */
+
+
+  for (obj = st->objs, c = st->num_objs; c > 0; c --, obj ++)
+  {
+    putchar(' ');
+    DEBUG_object(obj);
+  }
+
+  putchar('\n');
+}
+#endif /* DEBUG */
+
+
 /*
- * End of "$Id: interpret.c 5926 2006-09-05 20:45:47Z mike $".
+ * End of "$Id: interpret.c 6282 2007-02-14 16:33:54Z mike $".
  */
index b6c3e2e3f971ea5943f7b814f380a29d60921854..57f4259f9962ea45f1217625e1ed3ff1db3244e2 100644 (file)
@@ -13,3 +13,4 @@ _cupsImageReadTIFF
 _cupsImageZoomDelete
 _cupsImageZoomFill
 _cupsImageZoomNew
+_cupsRasterExecPS
index 69dce4f5463799007a9b397fedf4388c1359675f..f81fcdda3576709a7698e8371e62f2fc0e3afcd8 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: pstops.c 6094 2006-11-14 16:54:50Z mike $"
+ * "$Id: pstops.c 6247 2007-02-07 20:54:37Z mike $"
  *
  *   PostScript filter for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1993-2006 by Easy Software Products.
+ *   Copyright 1993-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -205,6 +205,9 @@ static size_t               skip_page(cups_file_t *fp, char *line, size_t linelen,
                                  size_t linesize);
 static void            start_nup(pstops_doc_t *doc, int number,
                                  int show_border, const int *bounding_box);
+static void            write_label_prolog(pstops_doc_t *doc, const char *label,
+                                          float bottom, float top,
+                                          float width);
 static void            write_labels(pstops_doc_t *doc, int orient);
 
 
@@ -665,12 +668,12 @@ copy_comments(cups_file_t  *fp,           /* I - File to read from */
     else if (!strncmp(line, "%%For:", 6))
     {
       saw_for = 1;
-      printf("%s\n", line);
+      doc_printf(doc, "%s\n", line);
     }
     else if (!strncmp(line, "%%Title:", 8))
     {
       saw_title = 1;
-      printf("%s\n", line);
+      doc_printf(doc, "%s\n", line);
     }
     else if (!strncmp(line, "%cupsRotation:", 14))
     {
@@ -697,7 +700,7 @@ copy_comments(cups_file_t  *fp,             /* I - File to read from */
       break;
     }
     else if (strncmp(line, "%!", 2) && strncmp(line, "%cups", 5))
-      printf("%s\n", line);
+      doc_printf(doc, "%s\n", line);
 
     if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
       break;
@@ -722,15 +725,15 @@ copy_comments(cups_file_t  *fp,           /* I - File to read from */
     * that are required...
     */
 
-    printf("%%%%Requirements: numcopies(%d)%s%s\n", doc->copies,
-           doc->collate ? " collate" : "",
-          Duplex ? " duplex" : "");
+    doc_printf(doc, "%%%%Requirements: numcopies(%d)%s%s\n", doc->copies,
+               doc->collate ? " collate" : "",
+              Duplex ? " duplex" : "");
 
    /*
     * Apple uses RBI comments for various non-PPD options...
     */
 
-    printf("%%RBINumCopies: %d\n", doc->copies);
+    doc_printf(doc, "%%RBINumCopies: %d\n", doc->copies);
   }
   else
   {
@@ -739,18 +742,18 @@ copy_comments(cups_file_t  *fp,           /* I - File to read from */
     */
 
     if (Duplex)
-      puts("%%Requirements: duplex");
+      doc_puts(doc, "%%Requirements: duplex\n");
 
    /*
     * Apple uses RBI comments for various non-PPD options...
     */
 
-    puts("%RBINumCopies: 1");
+    doc_puts(doc, "%RBINumCopies: 1\n");
   }
 
-  puts("%%Pages: (atend)");
-  puts("%%BoundingBox: (atend)");
-  puts("%%EndComments");
+  doc_puts(doc, "%%Pages: (atend)\n");
+  doc_puts(doc, "%%BoundingBox: (atend)\n");
+  doc_puts(doc, "%%EndComments\n");
 
   return (linelen);
 }
@@ -811,7 +814,7 @@ copy_dsc(cups_file_t  *fp,          /* I - File to read from */
 
   while (strncmp(line, "%%Page:", 7) && strncmp(line, "%%Trailer", 9))
   {
-    fwrite(line, 1, linelen, stdout);
+    doc_write(doc, line, linelen);
 
     if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
       break;
@@ -909,23 +912,37 @@ copy_dsc(cups_file_t  *fp,                /* I - File to read from */
       * for the JCL options...
       */
 
-      if (!doc->saw_eof)
-       puts("%%EOF");
-
-      if (doc->emit_jcl)
+      if (number && doc->emit_jcl && ppd && ppd->jcl_end)
       {
-       if (ppd && ppd->jcl_end)
-         ppdEmitJCLEnd(ppd, stdout);
+       /*
+        * Send the trailer...
+       */
+
+        puts("%%Trailer");
+       printf("%%%%Pages: %d\n", cupsArrayCount(doc->pages));
+       if (doc->number_up > 1 || doc->fitplot)
+         printf("%%%%BoundingBox: %.0f %.0f %.0f %.0f\n",
+                PageLeft, PageBottom, PageRight, PageTop);
        else
-         putchar(0x04);
+         printf("%%%%BoundingBox: %d %d %d %d\n",
+                doc->new_bounding_box[0], doc->new_bounding_box[1],
+                doc->new_bounding_box[2], doc->new_bounding_box[3]);
+        puts("%%EOF");
 
+       /*
+        * Start a new document...
+       */
+
+        ppdEmitJCLEnd(ppd, stdout);
         ppdEmitJCL(ppd, stdout, doc->job_id, doc->user, doc->title);
-      }
 
-      puts("%!PS-Adobe-3.0");
-      puts("%%Pages: (atend)");
-      puts("%%BoundingBox: (atend)");
-      puts("%%EndComments");
+       puts("%!PS-Adobe-3.0");
+       
+        pageinfo = (pstops_page_t *)cupsArrayFirst(doc->pages);
+       copy_bytes(doc->temp, 0, pageinfo->offset);
+
+       number = 0;
+      }
 
      /*
       * Then copy all of the pages...
@@ -1263,43 +1280,47 @@ copy_page(cups_file_t  *fp,             /* I - File to read from */
         memcpy(bounding_box, doc->bounding_box,
               sizeof(bounding_box));
       }
-      else if (doc->number_up == 1 && !doc->fitplot)
+      else if (doc->number_up == 1 && !doc->fitplot  && Orientation)
       {
         int    temp_bbox[4];           /* Temporary bounding box */
 
 
+        memcpy(temp_bbox, bounding_box, sizeof(temp_bbox));
+
+        fprintf(stderr, "DEBUG: Orientation = %d\n", Orientation);
+        fprintf(stderr, "DEBUG: original bounding_box = [ %d %d %d %d ]\n",
+               bounding_box[0], bounding_box[1],
+               bounding_box[2], bounding_box[3]);
+        fprintf(stderr, "DEBUG: PageWidth = %.1f, PageLength = %.1f\n",
+               PageWidth, PageLength);
+
         switch (Orientation)
        {
-         case 0 : /* Portrait */
-              break;
-
          case 1 : /* Landscape */
-             temp_bbox[0] = PageWidth - bounding_box[3];
-             temp_bbox[1] = bounding_box[0];
-             temp_bbox[2] = PageWidth - bounding_box[1];
-             temp_bbox[3] = bounding_box[2];
-
-             memcpy(bounding_box, temp_bbox, sizeof(bounding_box));
+             bounding_box[0] = PageLength - temp_bbox[3];
+             bounding_box[1] = temp_bbox[0];
+             bounding_box[2] = PageLength - temp_bbox[1];
+             bounding_box[3] = temp_bbox[2];
               break;
 
          case 2 : /* Reverse Portrait */
-             temp_bbox[0] = PageWidth - bounding_box[0];
-             temp_bbox[1] = PageLength - bounding_box[1];
-             temp_bbox[2] = PageWidth - bounding_box[2];
-             temp_bbox[3] = PageLength - bounding_box[3];
-
-             memcpy(bounding_box, temp_bbox, sizeof(bounding_box));
+             bounding_box[0] = PageWidth - temp_bbox[2];
+             bounding_box[1] = PageLength - temp_bbox[3];
+             bounding_box[2] = PageWidth - temp_bbox[0];
+             bounding_box[3] = PageLength - temp_bbox[1];
               break;
 
          case 3 : /* Reverse Landscape */
-             temp_bbox[0] = bounding_box[1];
-             temp_bbox[1] = PageLength - bounding_box[2];
-             temp_bbox[2] = bounding_box[3];
-             temp_bbox[3] = PageLength - bounding_box[0];
-
-             memcpy(bounding_box, temp_bbox, sizeof(bounding_box));
+             bounding_box[0] = temp_bbox[1];
+             bounding_box[1] = PageWidth - temp_bbox[2];
+             bounding_box[2] = temp_bbox[3];
+             bounding_box[3] = PageWidth - temp_bbox[0];
               break;
        }
+
+        fprintf(stderr, "DEBUG: updated bounding_box = [ %d %d %d %d ]\n",
+               bounding_box[0], bounding_box[1],
+               bounding_box[2], bounding_box[3]);
       }
     }
 #if 0
@@ -1636,13 +1657,13 @@ copy_prolog(cups_file_t  *fp,           /* I - File to read from */
     if (!strncmp(line, "%%BeginSetup", 12) || !strncmp(line, "%%Page:", 7))
       break;
 
-    fwrite(line, 1, linelen, stdout);
+    doc_write(doc, line, linelen);
 
     if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
       break;
   }
 
-  puts("%%BeginProlog");
+  doc_puts(doc, "%%BeginProlog\n");
 
   do_prolog(doc, ppd);
 
@@ -1655,7 +1676,7 @@ copy_prolog(cups_file_t  *fp,             /* I - File to read from */
           !strncmp(line, "%%Page:", 7))
         break;
 
-      fwrite(line, 1, linelen, stdout);
+      doc_write(doc, line, linelen);
     }
 
     if (!strncmp(line, "%%EndProlog", 11))
@@ -1664,7 +1685,7 @@ copy_prolog(cups_file_t  *fp,             /* I - File to read from */
       fputs("ERROR: Missing %%EndProlog!\n", stderr);
   }
 
-  puts("%%EndProlog");
+  doc_puts(doc, "%%EndProlog\n");
 
   return (linelen);
 }
@@ -1690,13 +1711,13 @@ copy_setup(cups_file_t  *fp,            /* I - File to read from */
     if (!strncmp(line, "%%Page:", 7))
       break;
 
-    fwrite(line, 1, linelen, stdout);
+    doc_write(doc, line, linelen);
 
     if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
       break;
   }
 
-  puts("%%BeginSetup");
+  doc_puts(doc, "%%BeginSetup\n");
   
   do_setup(doc, ppd);
 
@@ -1717,7 +1738,7 @@ copy_setup(cups_file_t  *fp,              /* I - File to read from */
                                              &(doc->options));
       }
       else if (strncmp(line, "%%BeginSetup", 12))
-        fwrite(line, 1, linelen, stdout);
+        doc_write(doc, line, linelen);
 
       if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
        break;
@@ -1729,7 +1750,7 @@ copy_setup(cups_file_t  *fp,              /* I - File to read from */
       fputs("ERROR: Missing %%EndSetup!\n", stderr);
   }
 
-  puts("%%EndSetup");
+  doc_puts(doc, "%%EndSetup\n");
 
   return (linelen);
 }
@@ -1792,18 +1813,25 @@ static void
 do_prolog(pstops_doc_t *doc,           /* I - Document information */
           ppd_file_t   *ppd)           /* I - PPD file */
 {
+  char *ps;                            /* PS commands */
+
+
  /*
   * Send the document prolog commands...
   */
 
   if (ppd && ppd->patches)
   {
-    puts("%%BeginFeature: *JobPatchFile 1");
-    puts(ppd->patches);
-    puts("%%EndFeature");
+    doc_puts(doc, "%%BeginFeature: *JobPatchFile 1\n");
+    doc_puts(doc, ppd->patches);
+    doc_puts(doc, "\n%%EndFeature\n");
   }
 
-  ppdEmit(ppd, stdout, PPD_ORDER_PROLOG);
+  if ((ps = ppdEmitString(ppd, PPD_ORDER_PROLOG, 0.0)) != NULL)
+  {
+    doc_puts(doc, ps);
+    free(ps);
+  }
 
  /*
   * Define ESPshowpage here so that applications that define their
@@ -1811,9 +1839,8 @@ do_prolog(pstops_doc_t *doc,              /* I - Document information */
   */
 
   if (doc->use_ESPshowpage)
-    puts("userdict/ESPshowpage/showpage load put\n"
-        "userdict/showpage{}put");
-
+    doc_puts(doc, "userdict/ESPshowpage/showpage load put\n"
+                 "userdict/showpage{}put\n");
 }
 
 
@@ -1825,13 +1852,16 @@ static void
 do_setup(pstops_doc_t *doc,            /* I - Document information */
          ppd_file_t   *ppd)            /* I - PPD file */
 {
+  char *ps;                            /* PS commands */
+
+
  /*
   * Disable CTRL-D so that embedded files don't cause printing
   * errors...
   */
 
-  puts("% Disable CTRL-D as an end-of-file marker...");
-  puts("userdict dup(\\004)cvn{}put (\\004\\004)cvn{}put");
+  doc_puts(doc, "% Disable CTRL-D as an end-of-file marker...\n");
+  doc_puts(doc, "userdict dup(\\004)cvn{}put (\\004\\004)cvn{}put\n");
 
  /*
   * Mark any options from %%IncludeFeature: comments...
@@ -1843,8 +1873,17 @@ do_setup(pstops_doc_t *doc,              /* I - Document information */
   * Send all the printer-specific setup commands...
   */
 
-  ppdEmit(ppd, stdout, PPD_ORDER_DOCUMENT);
-  ppdEmit(ppd, stdout, PPD_ORDER_ANY);
+  if ((ps = ppdEmitString(ppd, PPD_ORDER_DOCUMENT, 0.0)) != NULL)
+  {
+    doc_puts(doc, ps);
+    free(ps);
+  }
+
+  if ((ps = ppdEmitString(ppd, PPD_ORDER_ANY, 0.0)) != NULL)
+  {
+    doc_puts(doc, ps);
+    free(ps);
+  }
 
  /*
   * Set the number of copies for the job...
@@ -1852,11 +1891,13 @@ do_setup(pstops_doc_t *doc,             /* I - Document information */
 
   if (doc->copies != 1 && (!doc->collate || !doc->slow_collate))
   {
-    printf("%%RBIBeginNonPPDFeature: *NumCopies %d\n", doc->copies);
-    printf("%d/languagelevel where{pop languagelevel 2 ge}{false}ifelse\n"
-           "{1 dict begin/NumCopies exch def currentdict end setpagedevice}\n"
-          "{userdict/#copies 3 -1 roll put}ifelse\n", doc->copies);
-    puts("%RBIEndNonPPDFeature");
+    doc_printf(doc, "%%RBIBeginNonPPDFeature: *NumCopies %d\n", doc->copies);
+    doc_printf(doc,
+               "%d/languagelevel where{pop languagelevel 2 ge}{false}ifelse\n"
+               "{1 dict begin/NumCopies exch def currentdict end "
+              "setpagedevice}\n"
+              "{userdict/#copies 3 -1 roll put}ifelse\n", doc->copies);
+    doc_puts(doc, "%RBIEndNonPPDFeature\n");
   }
 
  /*
@@ -1864,7 +1905,7 @@ do_setup(pstops_doc_t *doc,               /* I - Document information */
   */
 
   if (doc->number_up > 1)
-    puts("userdict/setpagedevice{pop}bind put");
+    doc_puts(doc, "userdict/setpagedevice{pop}bind put\n");
 
  /*
   * Changes to the transfer function must be made AFTER any
@@ -1872,15 +1913,31 @@ do_setup(pstops_doc_t *doc,             /* I - Document information */
   */
 
   if (doc->gamma != 1.0f || doc->brightness != 1.0f)
-    printf("{ neg 1 add dup 0 lt { pop 1 } { %.3f exp neg 1 add } "
-          "ifelse %.3f mul } bind settransfer\n", doc->gamma,
-          doc->brightness);
+    doc_printf(doc, "{ neg 1 add dup 0 lt { pop 1 } { %.3f exp neg 1 add } "
+                   "ifelse %.3f mul } bind settransfer\n",
+              doc->gamma, doc->brightness);
 
  /*
   * Make sure we have rectclip and rectstroke procedures of some sort...
   */
 
-  WriteCommon();
+  doc_puts(doc,
+           "% x y w h ESPrc - Clip to a rectangle.\n"
+          "userdict/ESPrc/rectclip where{pop/rectclip load}\n"
+          "{{newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto\n"
+          "neg 0 rlineto closepath clip newpath}bind}ifelse put\n");
+
+  doc_puts(doc,
+           "% x y w h ESPrf - Fill a rectangle.\n"
+          "userdict/ESPrf/rectfill where{pop/rectfill load}\n"
+          "{{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto\n"
+          "neg 0 rlineto closepath fill grestore}bind}ifelse put\n");
+
+  doc_puts(doc,
+           "% x y w h ESPrs - Stroke a rectangle.\n"
+          "userdict/ESPrs/rectstroke where{pop/rectstroke load}\n"
+          "{{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto\n"
+          "neg 0 rlineto closepath stroke grestore}bind}ifelse put\n");
 
  /*
   * Write the page and label prologs...
@@ -1894,13 +1951,14 @@ do_setup(pstops_doc_t *doc,             /* I - Document information */
     */
 
     if (Orientation & 1)
-      WriteLabelProlog(doc->page_label, PageBottom,
-                       PageWidth - PageLength + PageTop, PageLength);
+      write_label_prolog(doc, doc->page_label, PageBottom,
+                         PageWidth - PageLength + PageTop, PageLength);
     else
-      WriteLabelProlog(doc->page_label, PageLeft, PageRight, PageLength);
+      write_label_prolog(doc, doc->page_label, PageLeft, PageRight,
+                         PageLength);
   }
   else
-    WriteLabelProlog(doc->page_label, PageBottom, PageTop, PageWidth);
+    write_label_prolog(doc, doc->page_label, PageBottom, PageTop, PageWidth);
 }
 
 
@@ -3059,6 +3117,123 @@ start_nup(pstops_doc_t *doc,            /* I - Document information */
 }
 
 
+/*
+ * 'write_label_prolog()' - Write the prolog with the classification
+ *                          and page label.
+ */
+
+static void
+write_label_prolog(pstops_doc_t *doc,  /* I - Document info */
+                   const char   *label,        /* I - Page label */
+                  float        bottom, /* I - Bottom position in points */
+                  float        top,    /* I - Top position in points */
+                  float        width)  /* I - Width in points */
+{
+  const char   *classification;        /* CLASSIFICATION environment variable */
+  const char   *ptr;                   /* Temporary string pointer */
+
+
+ /*
+  * First get the current classification...
+  */
+
+  if ((classification = getenv("CLASSIFICATION")) == NULL)
+    classification = "";
+  if (strcmp(classification, "none") == 0)
+    classification = "";
+
+ /*
+  * If there is nothing to show, bind an empty 'write labels' procedure
+  * and return...
+  */
+
+  if (!classification[0] && (label == NULL || !label[0]))
+  {
+    doc_puts(doc, "userdict/ESPwl{}bind put\n");
+    return;
+  }
+
+ /*
+  * Set the classification + page label string...
+  */
+
+  doc_puts(doc, "userdict");
+  if (!strcmp(classification, "confidential"))
+    doc_puts(doc, "/ESPpl(CONFIDENTIAL");
+  else if (!strcmp(classification, "classified"))
+    doc_puts(doc, "/ESPpl(CLASSIFIED");
+  else if (!strcmp(classification, "secret"))
+    doc_puts(doc, "/ESPpl(SECRET");
+  else if (!strcmp(classification, "topsecret"))
+    doc_puts(doc, "/ESPpl(TOP SECRET");
+  else if (!strcmp(classification, "unclassified"))
+    doc_puts(doc, "/ESPpl(UNCLASSIFIED");
+  else
+  {
+    doc_puts(doc, "/ESPpl(");
+
+    for (ptr = classification; *ptr; ptr ++)
+    {
+      if (*ptr < 32 || *ptr > 126)
+        doc_printf(doc, "\\%03o", *ptr);
+      else if (*ptr == '_')
+        doc_puts(doc, " ");
+      else if (*ptr == '(' || *ptr == ')' || *ptr == '\\')
+       doc_printf(doc, "\\%c", *ptr);
+      else
+        doc_printf(doc, "%c", *ptr);
+    }
+  }
+
+  if (label)
+  {
+    if (classification[0])
+      doc_puts(doc, " - ");
+
+   /*
+    * Quote the label string as needed...
+    */
+
+    for (ptr = label; *ptr; ptr ++)
+    {
+      if (*ptr < 32 || *ptr > 126)
+        doc_printf(doc, "\\%03o", *ptr);
+      else if (*ptr == '(' || *ptr == ')' || *ptr == '\\')
+       doc_printf(doc, "\\%c", *ptr);
+      else
+        doc_printf(doc, "%c", *ptr);
+    }
+  }
+
+  doc_puts(doc, ")put\n");
+
+ /*
+  * Then get a 14 point Helvetica-Bold font...
+  */
+
+  doc_puts(doc, "userdict/ESPpf /Helvetica-Bold findfont 14 scalefont put\n");
+
+ /*
+  * Finally, the procedure to write the labels on the page...
+  */
+
+  doc_puts(doc, "userdict/ESPwl{\n");
+  doc_puts(doc, "  ESPpf setfont\n");
+  doc_printf(doc, "  ESPpl stringwidth pop dup 12 add exch -0.5 mul %.0f add\n",
+             width * 0.5f);
+  doc_puts(doc, "  1 setgray\n");
+  doc_printf(doc, "  dup 6 sub %.0f 3 index 20 ESPrf\n", bottom - 2.0);
+  doc_printf(doc, "  dup 6 sub %.0f 3 index 20 ESPrf\n", top - 18.0);
+  doc_puts(doc, "  0 setgray\n");
+  doc_printf(doc, "  dup 6 sub %.0f 3 index 20 ESPrs\n", bottom - 2.0);
+  doc_printf(doc, "  dup 6 sub %.0f 3 index 20 ESPrs\n", top - 18.0);
+  doc_printf(doc, "  dup %.0f moveto ESPpl show\n", bottom + 2.0);
+  doc_printf(doc, "  %.0f moveto ESPpl show\n", top - 14.0);
+  doc_puts(doc, "pop\n");
+  doc_puts(doc, "}bind put\n");
+}
+
+
 /*
  * 'write_labels()' - Write the actual page labels.
  *
@@ -3106,5 +3281,5 @@ write_labels(pstops_doc_t *doc,           /* I - Document information */
 
 
 /*
- * End of "$Id: pstops.c 6094 2006-11-14 16:54:50Z mike $".
+ * End of "$Id: pstops.c 6247 2007-02-07 20:54:37Z mike $".
  */
index 076e76524db1b015365223ecd45e21f4fcb1767c..27e276a156b84a0efc55fb403845e13fcc17ab5e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: raster.h 6061 2006-10-23 00:26:52Z mike $"
+ * "$Id: raster.h 6158 2006-12-17 01:44:21Z mike $"
  *
  *   Raster file definitions for the Common UNIX Printing System (CUPS).
  *
@@ -76,43 +76,6 @@ extern "C" {
  * Types...
  */
 
-typedef enum cups_mode_e               /**** Raster modes ****/
-{
-  CUPS_RASTER_READ = 0,                        /* Open stream for reading */
-  CUPS_RASTER_WRITE = 1                        /* Open stream for writing */
-} cups_mode_t;
-
-typedef enum cups_bool_e               /**** Boolean type ****/
-{
-  CUPS_FALSE = 0,                      /* Logical false */
-  CUPS_TRUE = 1                                /* Logical true */
-} cups_bool_t;
-
-typedef enum cups_jog_e                        /**** Jog attribute values ****/
-{
-  CUPS_JOG_NONE = 0,                   /* Never move pages */
-  CUPS_JOG_FILE = 1,                   /* Move pages after this file */
-  CUPS_JOG_JOB = 2,                    /* Move pages after this job */
-  CUPS_JOG_SET = 3                     /* Move pages after this set */
-} cups_jog_t;
-
-typedef enum cups_orient_e             /**** Orientation attribute values ****/
-{
-  CUPS_ORIENT_0 = 0,                   /* Don't rotate the page */
-  CUPS_ORIENT_90 = 1,                  /* Rotate the page counter-clockwise */
-  CUPS_ORIENT_180 = 2,                 /* Turn the page upside down */
-  CUPS_ORIENT_270 = 3                  /* Rotate the page clockwise */
-} cups_orient_t;
-
-typedef enum cups_cut_e                        /**** CutMedia attribute values ****/
-{
-  CUPS_CUT_NONE = 0,                   /* Never cut the roll */
-  CUPS_CUT_FILE = 1,                   /* Cut the roll after this file */
-  CUPS_CUT_JOB = 2,                    /* Cut the roll after this job */
-  CUPS_CUT_SET = 3,                    /* Cut the roll after this set */
-  CUPS_CUT_PAGE = 4                    /* Cut the roll after this page */
-} cups_cut_t;
-
 typedef enum cups_adv_e                        /**** AdvanceMedia attribute values ****/
 {
   CUPS_ADVANCE_NONE = 0,               /* Never advance the roll */
@@ -122,20 +85,11 @@ typedef enum cups_adv_e                    /**** AdvanceMedia attribute values ****/
   CUPS_ADVANCE_PAGE = 4                        /* Advance the roll after this page */
 } cups_adv_t;
 
-typedef enum cups_edge_e               /**** LeadingEdge attribute values ****/
-{
-  CUPS_EDGE_TOP = 0,                   /* Leading edge is the top of the page */
-  CUPS_EDGE_RIGHT = 1,                 /* Leading edge is the right of the page */
-  CUPS_EDGE_BOTTOM = 2,                        /* Leading edge is the bottom of the page */
-  CUPS_EDGE_LEFT = 3                   /* Leading edge is the left of the page */
-} cups_edge_t;
-
-typedef enum cups_order_e              /**** cupsColorOrder attribute values ****/
+typedef enum cups_bool_e               /**** Boolean type ****/
 {
-  CUPS_ORDER_CHUNKED = 0,              /* CMYK CMYK CMYK ... */
-  CUPS_ORDER_BANDED = 1,               /* CCC MMM YYY KKK ... */
-  CUPS_ORDER_PLANAR = 2                        /* CCC ... MMM ... YYY ... KKK ... */
-} cups_order_t;
+  CUPS_FALSE = 0,                      /* Logical false */
+  CUPS_TRUE = 1                                /* Logical true */
+} cups_bool_t;
 
 typedef enum cups_cspace_e             /**** cupsColorSpace attribute values ****/
 {
@@ -177,6 +131,52 @@ typedef enum cups_cspace_e         /**** cupsColorSpace attribute values ****/
   CUPS_CSPACE_ICCF = 46                        /* ICC-based, 15 colors @since CUPS 1.1.19@ */
 } cups_cspace_t;
 
+typedef enum cups_cut_e                        /**** CutMedia attribute values ****/
+{
+  CUPS_CUT_NONE = 0,                   /* Never cut the roll */
+  CUPS_CUT_FILE = 1,                   /* Cut the roll after this file */
+  CUPS_CUT_JOB = 2,                    /* Cut the roll after this job */
+  CUPS_CUT_SET = 3,                    /* Cut the roll after this set */
+  CUPS_CUT_PAGE = 4                    /* Cut the roll after this page */
+} cups_cut_t;
+
+typedef enum cups_edge_e               /**** LeadingEdge attribute values ****/
+{
+  CUPS_EDGE_TOP = 0,                   /* Leading edge is the top of the page */
+  CUPS_EDGE_RIGHT = 1,                 /* Leading edge is the right of the page */
+  CUPS_EDGE_BOTTOM = 2,                        /* Leading edge is the bottom of the page */
+  CUPS_EDGE_LEFT = 3                   /* Leading edge is the left of the page */
+} cups_edge_t;
+
+typedef enum cups_jog_e                        /**** Jog attribute values ****/
+{
+  CUPS_JOG_NONE = 0,                   /* Never move pages */
+  CUPS_JOG_FILE = 1,                   /* Move pages after this file */
+  CUPS_JOG_JOB = 2,                    /* Move pages after this job */
+  CUPS_JOG_SET = 3                     /* Move pages after this set */
+} cups_jog_t;
+
+typedef enum cups_mode_e               /**** Raster modes ****/
+{
+  CUPS_RASTER_READ = 0,                        /* Open stream for reading */
+  CUPS_RASTER_WRITE = 1                        /* Open stream for writing */
+} cups_mode_t;
+
+typedef enum cups_order_e              /**** cupsColorOrder attribute values ****/
+{
+  CUPS_ORDER_CHUNKED = 0,              /* CMYK CMYK CMYK ... */
+  CUPS_ORDER_BANDED = 1,               /* CCC MMM YYY KKK ... */
+  CUPS_ORDER_PLANAR = 2                        /* CCC ... MMM ... YYY ... KKK ... */
+} cups_order_t;
+
+typedef enum cups_orient_e             /**** Orientation attribute values ****/
+{
+  CUPS_ORIENT_0 = 0,                   /* Don't rotate the page */
+  CUPS_ORIENT_90 = 1,                  /* Rotate the page counter-clockwise */
+  CUPS_ORIENT_180 = 2,                 /* Turn the page upside down */
+  CUPS_ORIENT_270 = 3                  /* Rotate the page clockwise */
+} cups_orient_t;
+
 
 /*
  * The page header structure contains the standard PostScript page device
@@ -338,5 +338,5 @@ extern unsigned             cupsRasterWriteHeader2(cups_raster_t *r,
 #endif /* !_CUPS_RASTER_H_ */
 
 /*
- * End of "$Id: raster.h 6061 2006-10-23 00:26:52Z mike $".
+ * End of "$Id: raster.h 6158 2006-12-17 01:44:21Z mike $".
  */
index 340ee976df7e63b84f249a42a544374f20d03a2a..bc4ca7c979ff3148498a877250e2eb9e629e8bb6 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: rastertolabel.c 5703 2006-06-29 18:12:04Z mike $"
+ * "$Id: rastertolabel.c 6236 2007-02-05 21:04:04Z mike $"
  *
  *   Label printer filter for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 2001-2006 by Easy Software Products.
+ *   Copyright 2001-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -77,7 +77,7 @@
  */
 
 unsigned char  *Buffer;                /* Output buffer */
-char           *CompBuffer;            /* Compression buffer */
+unsigned char  *CompBuffer;            /* Compression buffer */
 unsigned char  *LastBuffer;            /* Last buffer */
 int            LastSet;                /* Number of repeat characters */
 int            ModelNumber,            /* cupsModelNumber attribute */
@@ -750,7 +750,7 @@ OutputLine(ppd_file_t         *ppd, /* I - PPD file */
         * Run-length compress the graphics...
        */
 
-       for (compptr = CompBuffer, repeat_char = CompBuffer[0], repeat_count = 1;
+       for (compptr = CompBuffer + 1, repeat_char = CompBuffer[0], repeat_count = 1;
             *compptr;
             compptr ++)
          if (*compptr == repeat_char)
@@ -769,13 +769,19 @@ OutputLine(ppd_file_t         *ppd,       /* I - PPD file */
          */
 
          if (repeat_count & 1)
+         {
+           repeat_count --;
            putchar('0');
+         }
 
-         putchar(',');
+          if (repeat_count > 0)
+           putchar(',');
        }
        else
          ZPLCompress(repeat_char, repeat_count);
 
+       fflush(stdout);
+
        /*
         * Save this line for the next round...
        */
@@ -878,7 +884,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
     * and return.
     */
 
-    fputs("ERROR: rastertodymo job-id user title copies options [file]\n", stderr);
+    fputs("ERROR: rastertolabel job-id user title copies options [file]\n", stderr);
     return (1);
   }
 
@@ -1008,5 +1014,5 @@ main(int  argc,                           /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: rastertolabel.c 5703 2006-06-29 18:12:04Z mike $".
+ * End of "$Id: rastertolabel.c 6236 2007-02-05 21:04:04Z mike $".
  */
index bc35bb01a41ab61776a27b8ec211fbcc5ee9d8d8..dd1c76ae8ed0b32ed61356dd650ad39be24762dc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: testraster.c 4545 2005-06-21 19:26:28Z mike $"
+ * "$Id: testraster.c 6158 2006-12-17 01:44:21Z mike $"
  *
  *   Raster test program routines for the Common UNIX Printing System (CUPS).
  *
  *
  * Contents:
  *
+ *   main()          - Test the raster functions.
+ *   print_changes() - Print differences in the page header.
  */
 
 /*
  * Include necessary headers...
  */
 
-#include "raster.h"
+#include "image-private.h"
 #include <stdlib.h>
 #include <cups/string.h>
 
 
 /*
- * 'main()' - Test the raster read/write functions.
+ * Test PS commands and header...
+ */
+
+static const char *test_code =
+"<<"
+"/MediaClass(Media Class)"
+"/MediaColor((Media Color))"
+"/MediaType(Media\\\\Type)"
+"/OutputType<416263>"
+"/AdvanceDistance 1000"
+"/AdvanceMedia 1"
+"/Collate false"
+"/CutMedia 2"
+"/Duplex true"
+"/HWResolution[100 200]"
+"/InsertSheet true"
+"/Jog 3"
+"/LeadingEdge 1"
+"/ManualFeed true"
+"/MediaPosition 8#777"
+"/MediaWeight 16#fe01"
+"/MirrorPrint true"
+"/NegativePrint true"
+"/NumCopies 1"
+"/Orientation 1"
+"/OutputFaceUp true"
+"/PageSize[612 792.1]"
+"/Separations true"
+"/TraySwitch true"
+"/Tumble true"
+"/cupsMediaType 2"
+"/cupsColorOrder 1"
+"/cupsColorSpace 1"
+"/cupsCompression 1"
+"/cupsRowCount 1"
+"/cupsRowFeed 1"
+"/cupsRowStep 1"
+"/cupsBorderlessScalingFactor 1.001"
+"/cupsInteger0 1"
+"/cupsInteger1 2"
+"/cupsInteger2 3"
+"/cupsInteger3 4"
+"/cupsInteger4 5"
+"/cupsInteger5 6"
+"/cupsInteger6 7"
+"/cupsInteger7 8"
+"/cupsInteger8 9"
+"/cupsInteger9 10"
+"/cupsInteger10 11"
+"/cupsInteger11 12"
+"/cupsInteger12 13"
+"/cupsInteger13 14"
+"/cupsInteger14 15"
+"/cupsInteger15 16"
+"/cupsReal0 1.1"
+"/cupsReal1 2.1"
+"/cupsReal2 3.1"
+"/cupsReal3 4.1"
+"/cupsReal4 5.1"
+"/cupsReal5 6.1"
+"/cupsReal6 7.1"
+"/cupsReal7 8.1"
+"/cupsReal8 9.1"
+"/cupsReal9 10.1"
+"/cupsReal10 11.1"
+"/cupsReal11 12.1"
+"/cupsReal12 13.1"
+"/cupsReal13 14.1"
+"/cupsReal14 15.1"
+"/cupsReal15 16.1"
+"/cupsString0(1)"
+"/cupsString1(2)"
+"/cupsString2(3)"
+"/cupsString3(4)"
+"/cupsString4(5)"
+"/cupsString5(6)"
+"/cupsString6(7)"
+"/cupsString7(8)"
+"/cupsString8(9)"
+"/cupsString9(10)"
+"/cupsString10(11)"
+"/cupsString11(12)"
+"/cupsString12(13)"
+"/cupsString13(14)"
+"/cupsString14(15)"
+"/cupsString15(16)"
+"/cupsMarkerType(Marker Type)"
+"/cupsRenderingIntent(Rendering Intent)"
+"/cupsPageSizeName(Letter)"
+"/cupsPreferredBitsPerColor 17"
+">> setpagedevice";
+
+static cups_page_header2_t test_header =
+{
+  "Media Class",                       /* MediaClass */
+  "(Media Color)",                     /* MediaColor */
+  "Media\\Type",                       /* MediaType */
+  "Abc",                               /* OutputType */
+  1000,                                        /* AdvanceDistance */
+  CUPS_ADVANCE_FILE,                   /* AdvanceMedia */
+  CUPS_FALSE,                          /* Collate */
+  CUPS_CUT_JOB,                                /* CutMedia */
+  CUPS_TRUE,                           /* Duplex */
+  { 100, 200 },                                /* HWResolution */
+  { 0, 0, 0, 0 },                      /* ImagingBoundingBox */
+  CUPS_TRUE,                           /* InsertSheet */
+  CUPS_JOG_SET,                                /* Jog */
+  CUPS_EDGE_RIGHT,                     /* LeadingEdge */
+  { 0, 0 },                            /* Margins */
+  CUPS_TRUE,                           /* ManualFeed */
+  0777,                                        /* MediaPosition */
+  0xfe01,                              /* MediaWeight */
+  CUPS_TRUE,                           /* MirrorPrint */
+  CUPS_TRUE,                           /* NegativePrint */
+  1,                                   /* NumCopies */
+  CUPS_ORIENT_90,                      /* Orientation */
+  CUPS_TRUE,                           /* OutputFaceUp */
+  { 612, 792 },                                /* PageSize */
+  CUPS_TRUE,                           /* Separations */
+  CUPS_TRUE,                           /* TraySwitch */
+  CUPS_TRUE,                           /* Tumble */
+  0,                                   /* cupsWidth */
+  0,                                   /* cupsHeight */
+  2,                                   /* cupsMediaType */
+  0,                                   /* cupsBitsPerColor */
+  0,                                   /* cupsBitsPerPixel */
+  0,                                   /* cupsBytesPerLine */
+  CUPS_ORDER_BANDED,                   /* cupsColorOrder */
+  CUPS_CSPACE_RGB,                     /* cupsColorSpace */
+  1,                                   /* cupsCompression */
+  1,                                   /* cupsRowCount */
+  1,                                   /* cupsRowFeed */
+  1,                                   /* cupsRowStep */
+  0,                                   /* cupsNumColors */
+  1.001,                               /* cupsBorderlessScalingFactor */
+  { 612.0, 792.1 },                    /* cupsPageSize */
+  { 0.0, 0.0, 0.0, 0.0 },              /* cupsImagingBBox */
+  { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 },
+                                       /* cupsInteger[16] */
+  { 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1, 11.1, 12.1, 13.1,
+    14.1, 15.1, 16.1 },                        /* cupsReal[16] */
+  { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
+    "14", "15", "16" },                        /* cupsString[16] */
+  "Marker Type",                       /* cupsMarkerType */
+  "Rendering Intent",                  /* cupsRenderingIntent */
+  "Letter"                             /* cupsPageSizeName */
+};
+
+
+/*
+ * Local functions...
+ */
+
+static void    print_changes(cups_page_header2_t *header,
+                             cups_page_header2_t *expected);
+
+
+/*
+ * 'main()' - Test the raster functions.
  */
 
 int                                    /* O - Exit status */
@@ -53,23 +213,212 @@ main(void)
   int                  page, x, y;     /* Looping vars */
   FILE                 *fp;            /* Raster file */
   cups_raster_t                *r;             /* Raster stream */
-  cups_page_header2_t  header;         /* Page header */
+  cups_page_header2_t  header,         /* Page header */
+                       expected;       /* Expected page header */
   unsigned char                data[2048];     /* Raster data */
+  int                  preferred_bits; /* Preferred bits */
+  int                  errors;         /* Number of errors */
+
+
+  errors = 0;
+
+ /*
+  * Test PS exec code...
+  */
+
+  fputs("_cupsRasterExecPS(\"setpagedevice\"): ", stdout);
+  fflush(stdout);
+
+  memset(&header, 0, sizeof(header));
+  header.Collate = CUPS_TRUE;
+  preferred_bits = 0;
+
+  if (_cupsRasterExecPS(&header, &preferred_bits, test_code))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (preferred_bits != 17 || memcmp(&header, &test_header, sizeof(header)))
+  {
+    puts("FAIL (bad header)");
+
+    if (preferred_bits != 17)
+      printf("    cupsPreferredBitsPerColor %d, expected 17\n",
+             preferred_bits);
+
+    print_changes(&test_header, &header);
+    errors ++;
+  }
+  else
+    puts("PASS");
+    
+  fputs("_cupsRasterExecPS(\"roll\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        "792 612 0 0 0\n"
+                       "pop pop pop\n"
+                       "<</PageSize[5 -2 roll]/ImagingBBox null>>"
+                       "setpagedevice\n"))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (header.PageSize[0] != 792 || header.PageSize[1] != 612)
+  {
+    printf("FAIL (PageSize [%d %d], expected [792 612])\n", header.PageSize[0],
+           header.PageSize[1]);
+    errors ++;
+  }
+  else
+    puts("PASS");
+
+  fputs("_cupsRasterExecPS(\"dup index\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        "true false dup\n"
+                       "<</Collate 4 index"
+                       "/Duplex 5 index"
+                       "/Tumble 6 index>>setpagedevice\n"
+                       "pop pop pop"))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else
+  {
+    if (!header.Collate)
+    {
+      printf("FAIL (Collate false, expected true)\n");
+      errors ++;
+    }
+
+    if (header.Duplex)
+    {
+      printf("FAIL (Duplex true, expected false)\n");
+      errors ++;
+    }
+
+    if (header.Tumble)
+    {
+      printf("FAIL (Tumble true, expected false)\n");
+      errors ++;
+    }
+
+    if(header.Collate && !header.Duplex && !header.Tumble)
+      puts("PASS");
+  }
+
+#if 0
+  fputs("_cupsRasterExecPS(\"\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        ""))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (header.)
+  {
+    printf("FAIL ()\n");
+    errors ++;
+  }
+  else
+    puts("PASS");
+
+  fputs("_cupsRasterExecPS(\"\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        ""))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (header.)
+  {
+    printf("FAIL ()\n");
+    errors ++;
+  }
+  else
+    puts("PASS");
+
+  fputs("_cupsRasterExecPS(\"\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        ""))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (header.)
+  {
+    printf("FAIL ()\n");
+    errors ++;
+  }
+  else
+    puts("PASS");
+
+  fputs("_cupsRasterExecPS(\"\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        ""))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (header.)
+  {
+    printf("FAIL ()\n");
+    errors ++;
+  }
+  else
+    puts("PASS");
+
+  fputs("_cupsRasterExecPS(\"\"): ", stdout);
+  fflush(stdout);
+
+  if (_cupsRasterExecPS(&header, &preferred_bits,
+                        ""))
+  {
+    puts("FAIL (error from function)");
+    errors ++;
+  }
+  else if (header.)
+  {
+    printf("FAIL ()\n");
+    errors ++;
+  }
+  else
+    puts("PASS");
+#endif /* 0 */
+
+ /*
+  * Test writing...
+  */
 
+  fputs("cupsRasterOpen(CUPS_RASTER_WRITE): ", stdout);
+  fflush(stdout);
 
   if ((fp = fopen("test.raster", "wb")) == NULL)
   {
-    perror("Unable to create test.raster");
+    printf("FAIL (%s)\n", strerror(errno));
     return (1);
   }
 
   if ((r = cupsRasterOpen(fileno(fp), CUPS_RASTER_WRITE)) == NULL)
   {
-    perror("Unable to create raster output stream");
+    printf("FAIL (%s)\n", strerror(errno));
     fclose(fp);
     return (1);
   }
 
+  puts("PASS");
+
   for (page = 0; page < 4; page ++)
   {
     memset(&header, 0, sizeof(header));
@@ -82,11 +431,13 @@ main(void)
       header.cupsBytesPerLine *= 2;
       header.cupsColorSpace = CUPS_CSPACE_CMYK;
       header.cupsColorOrder = CUPS_ORDER_CHUNKED;
+      header.cupsNumColors  = 4;
     }
     else
     {
       header.cupsColorSpace = CUPS_CSPACE_K;
       header.cupsColorOrder = CUPS_ORDER_BANDED;
+      header.cupsNumColors  = 1;
     }
 
     if (page & 2)
@@ -101,110 +452,488 @@ main(void)
       header.cupsBitsPerPixel = (page & 1) ? 32 : 8;
     }
 
-    cupsRasterWriteHeader2(r, &header);
-
-    memset(data, 0, header.cupsBytesPerLine);
-    for (y = 0; y < 64; y ++)
-      cupsRasterWritePixels(r, data, header.cupsBytesPerLine);
+    if (cupsRasterWriteHeader2(r, &header))
+      puts("cupsRasterWriteHeader2: PASS");
+    else
+    {
+      puts("cupsRasterWriteHeader2: FAIL");
+      errors ++;
+    }
 
-    for (x = 0; x < header.cupsBytesPerLine; x ++)
-      data[x] = x;
+    fputs("cupsRasterWritePixels: ", stdout);
+    fflush(stdout);
 
+    memset(data, 0, header.cupsBytesPerLine);
     for (y = 0; y < 64; y ++)
-      cupsRasterWritePixels(r, data, header.cupsBytesPerLine);
+      if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
+        break;
 
-    memset(data, 255, header.cupsBytesPerLine);
-    for (y = 0; y < 64; y ++)
-      cupsRasterWritePixels(r, data, header.cupsBytesPerLine);
+    if (y < 64)
+    {
+      puts("FAIL");
+      errors ++;
+    }
+    else
+    {
+      for (x = 0; x < header.cupsBytesPerLine; x ++)
+       data[x] = x;
 
-    for (x = 0; x < header.cupsBytesPerLine; x ++)
-      data[x] = x / 4;
+      for (y = 0; y < 64; y ++)
+       if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
+         break;
 
-    for (y = 0; y < 64; y ++)
-      cupsRasterWritePixels(r, data, header.cupsBytesPerLine);
+      if (y < 64)
+      {
+       puts("FAIL");
+       errors ++;
+      }
+      else
+      {
+       memset(data, 255, header.cupsBytesPerLine);
+       for (y = 0; y < 64; y ++)
+         if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
+           break;
+
+       if (y < 64)
+       {
+         puts("FAIL");
+         errors ++;
+       }
+       else
+       {
+         for (x = 0; x < header.cupsBytesPerLine; x ++)
+           data[x] = x / 4;
+
+         for (y = 0; y < 64; y ++)
+           if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
+             break;
+
+         if (y < 64)
+         {
+           puts("FAIL");
+           errors ++;
+         }
+         else
+           puts("PASS");
+        }
+      }
+    }
   }
 
   cupsRasterClose(r);
   fclose(fp);
 
+ /*
+  * Test reading...
+  */
+
+  fputs("cupsRasterOpen(CUPS_RASTER_READ): ", stdout);
+  fflush(stdout);
+
   if ((fp = fopen("test.raster", "rb")) == NULL)
   {
-    perror("Unable to open test.raster");
+    printf("FAIL (%s)\n", strerror(errno));
     return (1);
   }
 
   if ((r = cupsRasterOpen(fileno(fp), CUPS_RASTER_READ)) == NULL)
   {
-    perror("Unable to create raster input stream");
+    printf("FAIL (%s)\n", strerror(errno));
     fclose(fp);
     return (1);
   }
 
+  puts("PASS");
+
   for (page = 0; page < 4; page ++)
   {
-    cupsRasterReadHeader2(r, &header);
+    memset(&expected, 0, sizeof(expected));
+    expected.cupsWidth        = 256;
+    expected.cupsHeight       = 256;
+    expected.cupsBytesPerLine = 256;
 
-    printf("Page %d:\n", page + 1);
-    printf("    cupsWidth        = %d\n", header.cupsWidth);
-    printf("    cupsHeight       = %d\n", header.cupsHeight);
-    printf("    cupsBitsPerColor = %d\n", header.cupsBitsPerColor);
-    printf("    cupsBitsPerPixel = %d\n", header.cupsBitsPerPixel);
-    printf("    cupsColorSpace   = %d\n", header.cupsColorSpace);
-    printf("    cupsColorOrder   = %d\n", header.cupsColorOrder);
-    printf("    cupsBytesPerLine = %d\n", header.cupsBytesPerLine);
-
-    for (y = 0; y < 64; y ++)
+    if (page & 1)
     {
-      cupsRasterReadPixels(r, data, header.cupsBytesPerLine);
-
-      if (data[0] != 0 || memcmp(data, data + 1, header.cupsBytesPerLine - 1))
-        printf("    RASTER LINE %d CORRUPT AT %d (%02X instead of 00!)\n",
-              y, x, data[x]);
+      expected.cupsBytesPerLine *= 2;
+      expected.cupsColorSpace = CUPS_CSPACE_CMYK;
+      expected.cupsColorOrder = CUPS_ORDER_CHUNKED;
+      expected.cupsNumColors  = 4;
+    }
+    else
+    {
+      expected.cupsColorSpace = CUPS_CSPACE_K;
+      expected.cupsColorOrder = CUPS_ORDER_BANDED;
+      expected.cupsNumColors  = 1;
     }
 
-    for (y = 0; y < 64; y ++)
+    if (page & 2)
+    {
+      expected.cupsBytesPerLine *= 2;
+      expected.cupsBitsPerColor = 16;
+      expected.cupsBitsPerPixel = (page & 1) ? 64 : 16;
+    }
+    else
     {
-      cupsRasterReadPixels(r, data, header.cupsBytesPerLine);
+      expected.cupsBitsPerColor = 8;
+      expected.cupsBitsPerPixel = (page & 1) ? 32 : 8;
+    }
 
-      for (x = 0; x < header.cupsBytesPerLine; x ++)
-        if (data[x] != (x & 255))
-         break;
+    fputs("cupsRasterReadHeader2: ", stdout);
+    fflush(stdout);
 
-      if (x < header.cupsBytesPerLine)
-        printf("    RASTER LINE %d CORRUPT AT %d (%02X instead of %02X!)\n",
-              y + 64, x, data[x], x & 255);
+    if (!cupsRasterReadHeader2(r, &header))
+    {
+      puts("FAIL (read error)");
+      errors ++;
+      break;
     }
 
-    for (y = 0; y < 64; y ++)
+    if (memcmp(&header, &expected, sizeof(header)))
     {
-      cupsRasterReadPixels(r, data, header.cupsBytesPerLine);
-
-      if (data[0] != 255 || memcmp(data, data + 1, header.cupsBytesPerLine - 1))
-        printf("    RASTER LINE %d CORRUPT AT %d (%02X instead of FF!)\n",
-              y + 128, x, data[x]);
+      puts("FAIL (bad page header)");
+      errors ++;
+      print_changes(&header, &expected);
     }
 
+    fputs("cupsRasterReadPixels: ", stdout);
+    fflush(stdout);
+
     for (y = 0; y < 64; y ++)
     {
-      cupsRasterReadPixels(r, data, header.cupsBytesPerLine);
+      if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine))
+      {
+        puts("FAIL (read error)");
+       errors ++;
+       break;
+      }
 
-      for (x = 0; x < header.cupsBytesPerLine; x ++)
-        if (data[x] != ((x / 4) & 255))
+      if (data[0] != 0 || memcmp(data, data + 1, header.cupsBytesPerLine - 1))
+      {
+        printf("FAIL (raster line %d corrupt)\n", y);
+       errors ++;
+       break;
+      }
+    }
+
+    if (y == 64)
+    {
+      for (y = 0; y < 64; y ++)
+      {
+       if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine))
+       {
+         puts("FAIL (read error)");
+         errors ++;
          break;
+       }
+
+       for (x = 0; x < header.cupsBytesPerLine; x ++)
+          if (data[x] != (x & 255))
+           break;
 
-      if (x < header.cupsBytesPerLine)
-        printf("    RASTER LINE %d CORRUPT AT %d (%02X instead of %02X!)\n",
-              y + 192, x, data[x], (x / 4) & 255);
+       if (x < header.cupsBytesPerLine)
+       {
+         printf("FAIL (raster line %d corrupt)\n", y + 64);
+         errors ++;
+         break;
+       }
+      }
+
+      if (y == 64)
+      {
+       for (y = 0; y < 64; y ++)
+       {
+         if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine))
+         {
+           puts("FAIL (read error)");
+           errors ++;
+           break;
+         }
+
+         if (data[0] != 255 || memcmp(data, data + 1, header.cupsBytesPerLine - 1))
+          {
+           printf("fail (raster line %d corrupt)\n", y + 128);
+           errors ++;
+           break;
+         }
+       }
+
+        if (y == 64)
+       {
+         for (y = 0; y < 64; y ++)
+         {
+           if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine))
+           {
+             puts("FAIL (read error)");
+             errors ++;
+             break;
+           }
+
+           for (x = 0; x < header.cupsBytesPerLine; x ++)
+              if (data[x] != ((x / 4) & 255))
+               break;
+
+           if (x < header.cupsBytesPerLine)
+            {
+             printf("FAIL (raster line %d corrupt)\n", y + 192);
+             errors ++;
+             break;
+           }
+         }
+
+         if (y == 64)
+           puts("PASS");
+       }
+      }
     }
   }
 
   cupsRasterClose(r);
   fclose(fp);
 
-  return (0);
+  return (errors > 0);
+}
+
+
+
+/*
+ * 'print_changes()' - Print differences in the page header.
+ */
+
+static void
+print_changes(
+    cups_page_header2_t *header,       /* I - Actual page header */
+    cups_page_header2_t *expected)     /* I - Expected page header */
+{
+  int  i;                              /* Looping var */
+
+
+  if (strcmp(header->MediaClass, expected->MediaClass))
+    printf("    MediaClass (%s), expected (%s)\n", header->MediaClass,
+           expected->MediaClass);
+
+  if (strcmp(header->MediaColor, expected->MediaColor))
+    printf("    MediaColor (%s), expected (%s)\n", header->MediaColor,
+           expected->MediaColor);
+
+  if (strcmp(header->MediaType, expected->MediaType))
+    printf("    MediaType (%s), expected (%s)\n", header->MediaType,
+           expected->MediaType);
+
+  if (strcmp(header->OutputType, expected->OutputType))
+    printf("    OutputType (%s), expected (%s)\n", header->OutputType,
+           expected->OutputType);
+
+  if (header->AdvanceDistance != expected->AdvanceDistance)
+    printf("    AdvanceDistance %d, expected %d\n", header->AdvanceDistance,
+           expected->AdvanceDistance);
+
+  if (header->AdvanceMedia != expected->AdvanceMedia)
+    printf("    AdvanceMedia %d, expected %d\n", header->AdvanceMedia,
+           expected->AdvanceMedia);
+
+  if (header->Collate != expected->Collate)
+    printf("    Collate %d, expected %d\n", header->Collate,
+           expected->Collate);
+
+  if (header->CutMedia != expected->CutMedia)
+    printf("    CutMedia %d, expected %d\n", header->CutMedia,
+           expected->CutMedia);
+
+  if (header->Duplex != expected->Duplex)
+    printf("    Duplex %d, expected %d\n", header->Duplex,
+           expected->Duplex);
+
+  if (header->HWResolution[0] != expected->HWResolution[0] ||
+      header->HWResolution[1] != expected->HWResolution[1])
+    printf("    HWResolution [%d %d], expected [%d %d]\n",
+           header->HWResolution[0], header->HWResolution[1],
+           expected->HWResolution[0], expected->HWResolution[1]);
+
+  if (memcmp(header->ImagingBoundingBox, expected->ImagingBoundingBox,
+             sizeof(header->ImagingBoundingBox)))
+    printf("    ImagingBoundingBox [%d %d %d %d], expected [%d %d %d %d]\n",
+           header->ImagingBoundingBox[0],
+           header->ImagingBoundingBox[1],
+           header->ImagingBoundingBox[2],
+           header->ImagingBoundingBox[3],
+           expected->ImagingBoundingBox[0],
+           expected->ImagingBoundingBox[1],
+           expected->ImagingBoundingBox[2],
+           expected->ImagingBoundingBox[3]);
+
+  if (header->InsertSheet != expected->InsertSheet)
+    printf("    InsertSheet %d, expected %d\n", header->InsertSheet,
+           expected->InsertSheet);
+
+  if (header->Jog != expected->Jog)
+    printf("    Jog %d, expected %d\n", header->Jog,
+           expected->Jog);
+
+  if (header->LeadingEdge != expected->LeadingEdge)
+    printf("    LeadingEdge %d, expected %d\n", header->LeadingEdge,
+           expected->LeadingEdge);
+
+  if (header->Margins[0] != expected->Margins[0] ||
+      header->Margins[1] != expected->Margins[1])
+    printf("    Margins [%d %d], expected [%d %d]\n",
+           header->Margins[0], header->Margins[1],
+           expected->Margins[0], expected->Margins[1]);
+
+  if (header->ManualFeed != expected->ManualFeed)
+    printf("    ManualFeed %d, expected %d\n", header->ManualFeed,
+           expected->ManualFeed);
+
+  if (header->MediaPosition != expected->MediaPosition)
+    printf("    MediaPosition %d, expected %d\n", header->MediaPosition,
+           expected->MediaPosition);
+
+  if (header->MediaWeight != expected->MediaWeight)
+    printf("    MediaWeight %d, expected %d\n", header->MediaWeight,
+           expected->MediaWeight);
+
+  if (header->MirrorPrint != expected->MirrorPrint)
+    printf("    MirrorPrint %d, expected %d\n", header->MirrorPrint,
+           expected->MirrorPrint);
+
+  if (header->NegativePrint != expected->NegativePrint)
+    printf("    NegativePrint %d, expected %d\n", header->NegativePrint,
+           expected->NegativePrint);
+
+  if (header->NumCopies != expected->NumCopies)
+    printf("    NumCopies %d, expected %d\n", header->NumCopies,
+           expected->NumCopies);
+
+  if (header->Orientation != expected->Orientation)
+    printf("    Orientation %d, expected %d\n", header->Orientation,
+           expected->Orientation);
+
+  if (header->OutputFaceUp != expected->OutputFaceUp)
+    printf("    OutputFaceUp %d, expected %d\n", header->OutputFaceUp,
+           expected->OutputFaceUp);
+
+  if (header->PageSize[0] != expected->PageSize[0] ||
+      header->PageSize[1] != expected->PageSize[1])
+    printf("    PageSize [%d %d], expected [%d %d]\n",
+           header->PageSize[0], header->PageSize[1],
+           expected->PageSize[0], expected->PageSize[1]);
+
+  if (header->Separations != expected->Separations)
+    printf("    Separations %d, expected %d\n", header->Separations,
+           expected->Separations);
+
+  if (header->TraySwitch != expected->TraySwitch)
+    printf("    TraySwitch %d, expected %d\n", header->TraySwitch,
+           expected->TraySwitch);
+
+  if (header->Tumble != expected->Tumble)
+    printf("    Tumble %d, expected %d\n", header->Tumble,
+           expected->Tumble);
+
+  if (header->cupsWidth != expected->cupsWidth)
+    printf("    cupsWidth %d, expected %d\n", header->cupsWidth,
+           expected->cupsWidth);
+
+  if (header->cupsHeight != expected->cupsHeight)
+    printf("    cupsHeight %d, expected %d\n", header->cupsHeight,
+           expected->cupsHeight);
+
+  if (header->cupsMediaType != expected->cupsMediaType)
+    printf("    cupsMediaType %d, expected %d\n", header->cupsMediaType,
+           expected->cupsMediaType);
+
+  if (header->cupsBitsPerColor != expected->cupsBitsPerColor)
+    printf("    cupsBitsPerColor %d, expected %d\n", header->cupsBitsPerColor,
+           expected->cupsBitsPerColor);
+
+  if (header->cupsBitsPerPixel != expected->cupsBitsPerPixel)
+    printf("    cupsBitsPerPixel %d, expected %d\n", header->cupsBitsPerPixel,
+           expected->cupsBitsPerPixel);
+
+  if (header->cupsBytesPerLine != expected->cupsBytesPerLine)
+    printf("    cupsBytesPerLine %d, expected %d\n", header->cupsBytesPerLine,
+           expected->cupsBytesPerLine);
+
+  if (header->cupsColorOrder != expected->cupsColorOrder)
+    printf("    cupsColorOrder %d, expected %d\n", header->cupsColorOrder,
+           expected->cupsColorOrder);
+
+  if (header->cupsColorSpace != expected->cupsColorSpace)
+    printf("    cupsColorSpace %d, expected %d\n", header->cupsColorSpace,
+           expected->cupsColorSpace);
+
+  if (header->cupsCompression != expected->cupsCompression)
+    printf("    cupsCompression %d, expected %d\n", header->cupsCompression,
+           expected->cupsCompression);
+
+  if (header->cupsRowCount != expected->cupsRowCount)
+    printf("    cupsRowCount %d, expected %d\n", header->cupsRowCount,
+           expected->cupsRowCount);
+
+  if (header->cupsRowFeed != expected->cupsRowFeed)
+    printf("    cupsRowFeed %d, expected %d\n", header->cupsRowFeed,
+           expected->cupsRowFeed);
+
+  if (header->cupsRowStep != expected->cupsRowStep)
+    printf("    cupsRowStep %d, expected %d\n", header->cupsRowStep,
+           expected->cupsRowStep);
+
+  if (header->cupsNumColors != expected->cupsNumColors)
+    printf("    cupsNumColors %d, expected %d\n", header->cupsNumColors,
+           expected->cupsNumColors);
+
+  if (header->cupsBorderlessScalingFactor !=
+          expected->cupsBorderlessScalingFactor)
+    printf("    cupsBorderlessScalingFactor %g, expected %g\n",
+           header->cupsBorderlessScalingFactor,
+           expected->cupsBorderlessScalingFactor);
+
+  if (header->cupsPageSize[0] != expected->cupsPageSize[0] ||
+      header->cupsPageSize[1] != expected->cupsPageSize[1])
+    printf("    cupsPageSize [%g %g], expected [%g %g]\n",
+           header->cupsPageSize[0], header->cupsPageSize[1],
+           expected->cupsPageSize[0], expected->cupsPageSize[1]);
+
+  if (header->cupsImagingBBox[0] != expected->cupsImagingBBox[0] ||
+      header->cupsImagingBBox[1] != expected->cupsImagingBBox[1] ||
+      header->cupsImagingBBox[2] != expected->cupsImagingBBox[2] ||
+      header->cupsImagingBBox[3] != expected->cupsImagingBBox[3])
+    printf("    cupsImagingBBox [%g %g %g %g], expected [%g %g %g %g]\n",
+           header->cupsImagingBBox[0], header->cupsImagingBBox[1],
+           header->cupsImagingBBox[2], header->cupsImagingBBox[3],
+           expected->cupsImagingBBox[0], expected->cupsImagingBBox[1],
+           expected->cupsImagingBBox[2], expected->cupsImagingBBox[3]);
+
+  for (i = 0; i < 16; i ++)
+    if (header->cupsInteger[i] != expected->cupsInteger[i])
+      printf("    cupsInteger%d %d, expected %d\n", i, header->cupsInteger[i],
+             expected->cupsInteger[i]);
+
+  for (i = 0; i < 16; i ++)
+    if (header->cupsReal[i] != expected->cupsReal[i])
+      printf("    cupsReal%d %g, expected %g\n", i, header->cupsReal[i],
+             expected->cupsReal[i]);
+
+  for (i = 0; i < 16; i ++)
+    if (strcmp(header->cupsString[i], expected->cupsString[i]))
+      printf("    cupsString%d (%s), expected (%s)\n", i,
+            header->cupsString[i], expected->cupsString[i]);
+
+  if (strcmp(header->cupsMarkerType, expected->cupsMarkerType))
+    printf("    cupsMarkerType (%s), expected (%s)\n", header->cupsMarkerType,
+           expected->cupsMarkerType);
+
+  if (strcmp(header->cupsRenderingIntent, expected->cupsRenderingIntent))
+    printf("    cupsRenderingIntent (%s), expected (%s)\n",
+           header->cupsRenderingIntent,
+           expected->cupsRenderingIntent);
+
+  if (strcmp(header->cupsPageSizeName, expected->cupsPageSizeName))
+    printf("    cupsPageSizeName (%s), expected (%s)\n",
+           header->cupsPageSizeName,
+           expected->cupsPageSizeName);
 }
 
 
 /*
- * End of "$Id: testraster.c 4545 2005-06-21 19:26:28Z mike $".
+ * End of "$Id: testraster.c 6158 2006-12-17 01:44:21Z mike $".
  */
index 1ca4004d75de3a6e32d83f1e7c4dabe3fd17686a..c8459bd8166cc81c1499d2d22567dc652f438435 100644 (file)
@@ -29,7 +29,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:08-0400\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2608,6 +2608,55 @@ msgid ""
 "                REF: Page 72, section 5.5\n"
 msgstr ""
 
+#, c-format
+msgid "Missing value on line %d!"
+msgstr ""
+
+#, c-format
+msgid "Missing double quote on line %d!"
+msgstr ""
+
+#, c-format
+msgid "Bad option + choice on line %d!"
+msgstr ""
+
+msgid "Empty PPD file!"
+msgstr ""
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr ""
+
+#, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr ""
+
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr ""
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr ""
+
+#, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr ""
+
 
 #
 # End of "$Id$".
index d2bff379332b24eb5689c16f204ea34fc19101a0..0b9237974f35f49887a25c79e949509b098dd89d 100644 (file)
@@ -25,7 +25,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-04-14 14:35-0400\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
 "PO-Revision-Date: 2006-07-17 19:55+0200\n"
 "Last-Translator: Bernd Krumböck <b.krumboeck@rewe-group.at>\n"
 "Language-Team: Deutsch\n"
@@ -75,8 +75,12 @@ msgstr "Nein"
 msgid "Auto"
 msgstr "Automatisch"
 
-msgid "Enter your username and password or the root username and password to access this page."
-msgstr "Für Zugang Benutzername und Passwort (oder Benutzername und Passwort für root) eingeben."
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page."
+msgstr ""
+"Für Zugang Benutzername und Passwort (oder Benutzername und Passwort für "
+"root) eingeben."
 
 msgid "You must use a https: URL to access this page."
 msgstr "Eine https:-URL ist für den Zugriff erforderlich."
@@ -102,8 +106,10 @@ msgstr "%s nicht unterstützt!"
 msgid "The printer or class was not found."
 msgstr "Drucker oder Klasse nicht gefunden."
 
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr "Die printer-uri muss in der Form \"ipp://HOSTNAME/classes/KLASSENNAME\" sein."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr ""
+"Die printer-uri muss in der Form \"ipp://HOSTNAME/classes/KLASSENNAME\" sein."
 
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
@@ -140,19 +146,28 @@ msgstr "Sprache \"%s\" nicht unterstützt!"
 msgid "The notify-user-data value is too large (%d > 63 octets)!"
 msgstr "Der Wert von notify-user-data ist zu groß (%d > 63 Oktette)!"
 
-msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr "notify-lease-duration kann nicht bei Auftragssubskriptionen verwendet werden."
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr ""
+"notify-lease-duration kann nicht bei Auftragssubskriptionen verwendet werden."
 
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr "Die printer-uri muss in der Form \"ipp://HOSTNAME/printers/DRUCKERNAME\" sein."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"Die printer-uri muss in der Form \"ipp://HOSTNAME/printers/DRUCKERNAME\" "
+"sein."
 
 #, c-format
 msgid "A class named \"%s\" already exists!"
 msgstr "Eine Klasse namens \"%s\" existiert bereits!"
 
 #, c-format
-msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
-msgstr "Ausgabe auf Dateien gesperrt! Gegebenenfalls FileDevice-Einstellung in \"%s/cupsd.conf\" ändern."
+msgid ""
+"File device URIs have been disabled! To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
+msgstr ""
+"Ausgabe auf Dateien gesperrt! Gegebenenfalls FileDevice-Einstellung in \"%s/"
+"cupsd.conf\" ändern."
 
 #, c-format
 msgid "Bad device-uri \"%s\"!"
@@ -343,11 +358,15 @@ msgstr "Auftrag #%d kann nicht neu gestartet werden - keine Dateien!"
 
 #, c-format
 msgid "You are not authorized to restart job id %d owned by \"%s\"!"
-msgstr "Sie sind nicht berechtigt den Auftrag mit der ID %d von \"%s\" neu zu starten!"
+msgstr ""
+"Sie sind nicht berechtigt den Auftrag mit der ID %d von \"%s\" neu zu "
+"starten!"
 
 #, c-format
 msgid "You are not authorized to send document for job #%d owned by \"%s\"!"
-msgstr "Sie sind nicht berechtigt ein Dokument für den Auftrag #%d von \"%s\" zu senden!"
+msgstr ""
+"Sie sind nicht berechtigt ein Dokument für den Auftrag #%d von \"%s\" zu "
+"senden!"
 
 #, c-format
 msgid "Bad document-format \"%s\"!"
@@ -355,7 +374,8 @@ msgstr "document-format \"%s\" ist falsch!"
 
 #, c-format
 msgid "You are not authorized to alter job id %d owned by \"%s\"!"
-msgstr "Sie sind nicht berechtigt den Aufrag mit der ID %d von \"%s\" abzuändern."
+msgstr ""
+"Sie sind nicht berechtigt den Aufrag mit der ID %d von \"%s\" abzuändern."
 
 #, c-format
 msgid "%s cannot be changed."
@@ -445,8 +465,10 @@ msgid "lpq: Unknown destination \"%s\"!\n"
 msgstr "lpq: Unbekanntes Ziel \"%s\"!\n"
 
 #, c-format
-msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lp: Fehler - Umgebungsvariable %s enhält nicht vorhandenes Ziel \"%s\"!\n"
+msgid ""
+"lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lp: Fehler - Umgebungsvariable %s enhält nicht vorhandenes Ziel \"%s\"!\n"
 
 msgid "lpq: error - no default destination available.\n"
 msgstr "lpq: Fehler - kein Standardziel verfügbar.\n"
@@ -455,8 +477,10 @@ msgstr "lpq: Fehler - kein Standardziel verfügbar.\n"
 msgid "lpq: get-jobs failed: %s\n"
 msgstr "lpq: get-jobs fehlgeschlagen: %s\n"
 
-msgid "Rank   Owner      Pri  Job        Files                       Total Size\n"
-msgstr "Rang   Besitzer   Pri  Auftrag    Dateien                     Gesamtgröße\n"
+msgid ""
+"Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgstr ""
+"Rang   Besitzer   Pri  Auftrag    Dateien                     Gesamtgröße\n"
 
 msgid "Rank    Owner   Job     File(s)                         Total Size\n"
 msgstr "Rang    Besitz  Auftrag Datei(en)                       Gesamtgröße\n"
@@ -504,14 +528,19 @@ msgid "lpr: error - expected value after -%c option!\n"
 msgstr "lpr: Fehler - Es wird ein Wert hinter dem Parameter -%c erwartet!\n"
 
 #, c-format
-msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "lpr: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe evtl. fehlerhaft!\n"
+msgid ""
+"lpr: warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"lpr: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe evtl. "
+"fehlerhaft!\n"
 
 msgid "lpr: error - expected option=value after -o option!\n"
 msgstr "lpr: Fehler - Erwarte Parameter=Wert hinter dem Parameter -o!\n"
 
 msgid "lpr: warning - email notification is not currently supported!\n"
-msgstr "lpr: Warnung - Email Benachrichtigung wird zurzeit nicht unterstützt!\n"
+msgstr ""
+"lpr: Warnung - Email Benachrichtigung wird zurzeit nicht unterstützt!\n"
 
 msgid "lpr: error - expected destination after -P option!\n"
 msgstr "lpr: Fehler - Erwarte Ziel hinter dem Parameter -P!\n"
@@ -539,8 +568,11 @@ msgid "lpr: error - too many files - \"%s\"\n"
 msgstr "lpr: Fehler - Zu viele Dateien \"%s\"\n"
 
 #, c-format
-msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lpr: Fehler - Die Umgebungsvariable %s beinhaltet das nicht vorhandene Ziel \"%s\"!\n"
+msgid ""
+"lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lpr: Fehler - Die Umgebungsvariable %s beinhaltet das nicht vorhandene Ziel "
+"\"%s\"!\n"
 
 msgid "lpr: error - no default destination available.\n"
 msgstr "lpr: Fehler - Kein Standardziel verfügbar.\n"
@@ -554,7 +586,8 @@ msgstr "lpr: Fehler - Kann temporäre Datei \"%s\" nicht erstellen - %s\n"
 
 #, c-format
 msgid "lpr: error - unable to write to temporary file \"%s\" - %s\n"
-msgstr "lpr: Fehler - Kann nicht in die temporäre Datei \"%s\" schreiben - %s\n"
+msgstr ""
+"lpr: Fehler - Kann nicht in die temporäre Datei \"%s\" schreiben - %s\n"
 
 msgid "lpr: error - stdin is empty, so no job has been sent.\n"
 msgstr "lpr: Fehler - stdin ist leer, kein Auftrag gesendet.\n"
@@ -665,7 +698,8 @@ msgstr "cupsaddsmb: Kann PPD Datei nicht konvertieren für %s - %s\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht kopieren!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht kopieren!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
@@ -673,15 +707,19 @@ msgstr "cupsaddsmb: Kann CUPS Druckertreiberdateien (%d) nicht kopieren!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht installieren!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht "
+"installieren!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht kopieren!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht kopieren!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht installieren!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht installieren!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
@@ -709,10 +747,12 @@ msgstr ""
 "  -v                Zusätzliche Ausgaben einschalten (zeige Kommandos)\n"
 
 msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
-msgstr "cupstestppd: Der Parameter -q ist nicht kompatibel mit dem Parameter -v.\n"
+msgstr ""
+"cupstestppd: Der Parameter -q ist nicht kompatibel mit dem Parameter -v.\n"
 
 msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
-msgstr "cupstestppd: Der Parameter -v ist nicht kompatibel mit dem Parameter -d.\n"
+msgstr ""
+"cupstestppd: Der Parameter -v ist nicht kompatibel mit dem Parameter -d.\n"
 
 #, c-format
 msgid ""
@@ -895,7 +935,8 @@ msgid ""
 "      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
 "                REF: Pages 59-60, section 5.3.\n"
 msgstr ""
-"      **FEHLGESCHLAGEN**  FALSCH ModelName - \"%c\" nicht in Zeichenkette erlaubt.\n"
+"      **FEHLGESCHLAGEN**  FALSCH ModelName - \"%c\" nicht in Zeichenkette "
+"erlaubt.\n"
 "                REF: Seiten 59-60, Kapitel 5.3.\n"
 
 msgid "        PASS    ModelName\n"
@@ -1065,10 +1106,12 @@ msgstr " BESTANDEN\n"
 
 #, c-format
 msgid ""
-"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"        WARN    Duplex option keyword %s should be named Duplex or "
+"JCLDuplex!\n"
 "                REF: Page 122, section 5.17\n"
 msgstr ""
-"        WARNUNG    Schlüsselwort für Duplexparameter %s sollte Duplex oder JCLDuplex heißen!\n"
+"        WARNUNG    Schlüsselwort für Duplexparameter %s sollte Duplex oder "
+"JCLDuplex heißen!\n"
 "                REF: Seite 122, Kapitel 5.17\n"
 
 msgid "        WARN    Default choices conflicting!\n"
@@ -1100,7 +1143,8 @@ msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3.\n"
 msgstr ""
-"        WARNUNG    PCFileName länger als 8.3 ist eine Verletzung der PPD Spez.\n"
+"        WARNUNG    PCFileName länger als 8.3 ist eine Verletzung der PPD "
+"Spez.\n"
 "                REF: Seiten 61-62, Kapitel 5.3.\n"
 
 msgid ""
@@ -1121,7 +1165,8 @@ msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7.\n"
 msgstr ""
-"        WARNUNG    Protokoll enthält PJL jedoch sind keine JCL Eigenschaften gesetzt.\n"
+"        WARNUNG    Protokoll enthält PJL jedoch sind keine JCL Eigenschaften "
+"gesetzt.\n"
 "                REF: Seiten 78-79, Kapitel 5.7.\n"
 
 #, c-format
@@ -1148,10 +1193,12 @@ msgstr ""
 "                (Beschränkung=\"%s %s %s %s\")\n"
 
 msgid ""
-"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[."
+"gz]]\n"
 "       program | cupstestppd [-q] [-r] [-v[v]] -\n"
 msgstr ""
-"Benutzung: cupstestppd [-q] [-r] [-v[v]] Dateiname1.ppd[.gz] [... DateinameN.ppd[.gz]]\n"
+"Benutzung: cupstestppd [-q] [-r] [-v[v]] Dateiname1.ppd[.gz] [... DateinameN."
+"ppd[.gz]]\n"
 "       Programm | cupstestppd [-q] [-r] [-v[v]] -\n"
 
 msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
@@ -1224,15 +1271,20 @@ msgid "system default destination: %s\n"
 msgstr "System Standardziel: %s\n"
 
 #, c-format
-msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lpstat: Fehler - Umgebungsvariable %s enthält das nicht vorhandene Ziel \"%s\"!\n"
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"!\n"
+msgstr ""
+"lpstat: Fehler - Umgebungsvariable %s enthält das nicht vorhandene Ziel \"%s"
+"\"!\n"
 
 msgid "no system default destination\n"
 msgstr "Kein systemweites Standardziel\n"
 
 #, c-format
 msgid "Output for printer %s is sent to remote printer %s on %s\n"
-msgstr "Ausgabe für Drucker %s wurde gesendet an entfernten Drucker %s auf %s\n"
+msgstr ""
+"Ausgabe für Drucker %s wurde gesendet an entfernten Drucker %s auf %s\n"
 
 #, c-format
 msgid "Output for printer %s is sent to %s\n"
@@ -1240,7 +1292,8 @@ msgstr "Ausgabe für Drucker %s wurde gesendet an %s\n"
 
 #, c-format
 msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-msgstr "Ausgabe für Drucker %s/%s wurde gesendet an entfernten Drucker %s auf %s\n"
+msgstr ""
+"Ausgabe für Drucker %s/%s wurde gesendet an entfernten Drucker %s auf %s\n"
 
 #, c-format
 msgid "Output for printer %s/%s is sent to %s\n"
@@ -1432,7 +1485,9 @@ msgid "lpadmin: Expected class after '-r' option!\n"
 msgstr "lpadmin: Klasse wird hinter dem Parameter '-r' erwartet!\n"
 
 msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
-msgstr "lpadmin: Benutzerliste für Erlaubt/Verweigert wird nach dem Parameter '-u' erwartet!\n"
+msgstr ""
+"lpadmin: Benutzerliste für Erlaubt/Verweigert wird nach dem Parameter '-u' "
+"erwartet!\n"
 
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
@@ -1449,7 +1504,8 @@ msgid "lpadmin: Expected device URI after '-v' option!\n"
 msgstr "lpadmin: Erwarte Geräte URI hinter dem Parameter '-v'!\n"
 
 msgid "lpadmin: Expected printer or class after '-x' option!\n"
-msgstr "lpadmin: Drucker oder Klasse wird hinter dem Parameter '-x' erwartet!\n"
+msgstr ""
+"lpadmin: Drucker oder Klasse wird hinter dem Parameter '-x' erwartet!\n"
 
 msgid ""
 "lpadmin: Unable to set the printer description:\n"
@@ -1462,7 +1518,8 @@ msgid "lpadmin: Expected description after '-D' option!\n"
 msgstr "lpadmin: Beschreibung wird hinter dem Parameter '-D' erwartet!\n"
 
 msgid "lpadmin: Expected file type(s) after '-I' option!\n"
-msgstr "lpadmin: Dateityp(en) wird bzw. werden hinter dem Parameter '-I' erwartet!\n"
+msgstr ""
+"lpadmin: Dateityp(en) wird bzw. werden hinter dem Parameter '-I' erwartet!\n"
 
 msgid "lpadmin: Warning - content type list ignored!\n"
 msgstr "lpadmin: Warnung - Datentypliste ignoriert!\n"
@@ -1517,10 +1574,13 @@ msgstr ""
 "\n"
 "    lpadmin [-h Server] -d Ziel\n"
 "    lpadmin [-h Server] -x Ziel\n"
-"    lpadmin [-h Server] -p Drucker [-c hinzuzufügende-Klasse] [-i Interface] [-m Modell]\n"
-"                       [-r zu-löschende-Klasse] [-v Gerät] [-D Beschreibung]\n"
+"    lpadmin [-h Server] -p Drucker [-c hinzuzufügende-Klasse] [-i Interface] "
+"[-m Modell]\n"
+"                       [-r zu-löschende-Klasse] [-v Gerät] [-D "
+"Beschreibung]\n"
 "                       [-P PPD-Datei] [-o Name=Wert]\n"
-"                       [-u allow:Benutzer,Benutzer] [-u deny:Benutzer,Benutzer]\n"
+"                       [-u allow:Benutzer,Benutzer] [-u deny:Benutzer,"
+"Benutzer]\n"
 "\n"
 
 #, c-format
@@ -1537,7 +1597,8 @@ msgstr "lpadmin: add-printer (Setzen des Modells) fehlgeschlagen: %s\n"
 
 #, c-format
 msgid "lpadmin: add-printer (set description) failed: %s\n"
-msgstr "lpadmin: Drucker hinzufügen (Setzen der Beschreibung) fehlgeschlagen: %s\n"
+msgstr ""
+"lpadmin: Drucker hinzufügen (Setzen der Beschreibung) fehlgeschlagen: %s\n"
 
 #, c-format
 msgid "lpadmin: add-printer (set location) failed: %s\n"
@@ -1568,7 +1629,8 @@ msgid "lp: Expected job ID after -i option!\n"
 msgstr "lp: Auftrags ID wird hinter dem Parameter -i erwartet!\n"
 
 msgid "lp: Error - cannot print files and alter jobs simultaneously!\n"
-msgstr "lp: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n"
+msgstr ""
+"lp: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n"
 
 msgid "lp: Error - bad job ID!\n"
 msgstr "lp: Fehler - Falsche Auftrags ID!\n"
@@ -1620,8 +1682,11 @@ msgstr "lp: Warnung - Parameter für Inhaltstyp ignoriert!\n"
 msgid "lp: Unknown option '%c'!\n"
 msgstr "lp: Unbekannter Parameter '%c'!\n"
 
-msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "lp: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Auftrags ID übergeben wurde!\n"
+msgid ""
+"lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"lp: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Auftrags ID "
+"übergeben wurde!\n"
 
 #, c-format
 msgid "lp: Unable to access \"%s\" - %s\n"
@@ -1779,7 +1844,8 @@ msgid ""
 "your username, and must contain at least one letter and number.\n"
 msgstr ""
 "lppasswd: Bedaure, Passwort zurückgewiesen.\n"
-"Ihr Passwort muss zumindest 6 Zeichen lang sein, darf nicht den Benutzernamen\n"
+"Ihr Passwort muss zumindest 6 Zeichen lang sein, darf nicht den "
+"Benutzernamen\n"
 "enthalten, und muss mindestens einen Buchstaben und eine Zahl enthalten.\n"
 
 msgid "lppasswd: Password file busy!\n"
@@ -1856,8 +1922,12 @@ msgstr "Klasse ändern"
 msgid "Add Class"
 msgstr "Klasse hinzufügen"
 
-msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "Der Klassenname darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, Slashes (/), oder das Rautezeichen (#) enthalten."
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Der Klassenname darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, "
+"Slashes (/), oder das Rautezeichen (#) enthalten."
 
 msgid "Unable to modify class:"
 msgstr "Kann Klasse nicht ändern:"
@@ -1871,8 +1941,12 @@ msgstr "Drucker ändern"
 msgid "Add Printer"
 msgstr "Drucker hinzufügen"
 
-msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "Der Druckername darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, Slashes (/), oder das Rautezeichen (#) enthalten."
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Der Druckername darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, "
+"Slashes (/), oder das Rautezeichen (#) enthalten."
 
 msgid "Unable to get list of printer drivers:"
 msgstr "Holen der Druckertreiberliste nicht möglich:"
@@ -2000,7 +2074,8 @@ msgid "cupsaddsmb crashed on signal %d"
 msgstr "cupsaddsmb abgestürzt mit Signal %d"
 
 msgid "A Samba username is required to export printer drivers!"
-msgstr "Ein Samba Benutzername wird benötigt um Drucker für Samba bereitzustellen!"
+msgstr ""
+"Ein Samba Benutzername wird benötigt um Drucker für Samba bereitzustellen!"
 
 msgid "A Samba password is required to export printer drivers!"
 msgstr "Ein Samba Passwort wird benötigt um Druckertreiber bereitzustellen!"
@@ -2203,7 +2278,9 @@ msgid "Usage: lpmove job/src dest\n"
 msgstr "Benutzung: lpmove Auftrag/Quelle Ziel\n"
 
 msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
-msgstr "lpstat: Brauche \"completed\", \"not-completed\", oder \"all\" hinter dem Parameter -W!\n"
+msgstr ""
+"lpstat: Brauche \"completed\", \"not-completed\", oder \"all\" hinter dem "
+"Parameter -W!\n"
 
 #, c-format
 msgid "%s accepting requests since %s\n"
@@ -2253,15 +2330,21 @@ msgid "%s: Error - expected hostname after '-h' option!\n"
 msgstr "%s: Fehler - Hostname wird hinter dem Parameter '-h' erwartet!\n"
 
 #, c-format
-msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%s\"!\n"
+msgid ""
+"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%"
+"s\"!\n"
 
 #, c-format
 msgid "%s: error - no default destination available.\n"
 msgstr "%s: Fehler - Kein Standardziel verfügbar.\n"
 
-msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgstr "Benutzung: lpq [-P Ziel] [-U Benutzername] [-h Hostname[:Port]] [-l] [+Intervall]\n"
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr ""
+"Benutzung: lpq [-P Ziel] [-U Benutzername] [-h Hostname[:Port]] [-l] "
+"[+Intervall]\n"
 
 #, c-format
 msgid "%s: Error - expected hostname after '-H' option!\n"
@@ -2272,8 +2355,12 @@ msgid "%s: Error - expected value after '-%c' option!\n"
 msgstr "%s: Fehler - Wert wird hinter dem Paramter '-%c' erwartet!\n"
 
 #, c-format
-msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "%s: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe ist möglicherweise falsch!\n"
+msgid ""
+"%s: Warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"%s: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe ist "
+"möglicherweise falsch!\n"
 
 #, c-format
 msgid "%s: error - expected option=value after '-o' option!\n"
@@ -2304,8 +2391,11 @@ msgid "%s: Error - too many files - \"%s\"\n"
 msgstr "%s: Fehler - Zu viele Dateien - \"%s\"\n"
 
 #, c-format
-msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%s\"!\n"
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%"
+"s\"!\n"
 
 #, c-format
 msgid "%s: Error - no default destination available.\n"
@@ -2333,7 +2423,8 @@ msgstr "%s: Fehler - unbekanntes Ziel \"%s\"!\n"
 
 #, c-format
 msgid "%s: Error - expected reason text after '-r' option!\n"
-msgstr "%s: Fehler - Begründungstext wird hinter dem Parameter '-r' erwartet!\n"
+msgstr ""
+"%s: Fehler - Begründungstext wird hinter dem Parameter '-r' erwartet!\n"
 
 #, c-format
 msgid "%s: Error - expected username after '-u' option!\n"
@@ -2361,7 +2452,8 @@ msgstr "%s: Auftrags ID wird hinter dem Parameter '-i' erwartet!\n"
 
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
-msgstr "%s: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n"
+msgstr ""
+"%s: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n"
 
 #, c-format
 msgid "%s: Error - bad job ID!\n"
@@ -2373,7 +2465,9 @@ msgstr "%s: Fehler - Kopienanzahl wird hinter dem Parameter '-n' erwartet!\n"
 
 #, c-format
 msgid "%s: Error - expected option string after '-o' option!\n"
-msgstr "%s: Fehler - Zeichenkette mit Parametern wird hinter dem Parameter '-o' erwartet!\n"
+msgstr ""
+"%s: Fehler - Zeichenkette mit Parametern wird hinter dem Parameter '-o' "
+"erwartet!\n"
 
 #, c-format
 msgid "%s: Error - expected priority after '-%c' option!\n"
@@ -2397,7 +2491,8 @@ msgstr "%s: Warnung - Modusangabe ignoriert!\n"
 
 #, c-format
 msgid "%s: Error - expected hold name after '-H' option!\n"
-msgstr "%s: Fehler - Haltebezeichnung wird hinter dem Parameter '-H' erwartet!\n"
+msgstr ""
+"%s: Fehler - Haltebezeichnung wird hinter dem Parameter '-H' erwartet!\n"
 
 #, c-format
 msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
@@ -2424,12 +2519,19 @@ msgid "%s: Warning - content type option ignored!\n"
 msgstr "%s: Warnung - Parameter für Inhaltstyp ignoriert!\n"
 
 #, c-format
-msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "%s: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Autrags ID übergeben wurde!\n"
+msgid ""
+"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Autrags ID "
+"übergeben wurde!\n"
 
 #, c-format
-msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
-msgstr "%s: Fehler - Brauche \"completed\", \"not-completed\", oder \"all\" hinter dem Parameter '-W'!\n"
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+"option!\n"
+msgstr ""
+"%s: Fehler - Brauche \"completed\", \"not-completed\", oder \"all\" hinter "
+"dem Parameter '-W'!\n"
 
 #, c-format
 msgid "%s: Error - expected destination after '-b' option!\n"
@@ -2486,10 +2588,13 @@ msgid "Job subscriptions cannot be renewed!"
 msgstr "Auftragssubkription kann nicht erneuert werden!"
 
 msgid "cupsd: Expected config filename after \"-c\" option!\n"
-msgstr "cupsd: Konfigurationsdateiname wird hinter dem Paramter \"-c\" erwartet!\n"
+msgstr ""
+"cupsd: Konfigurationsdateiname wird hinter dem Paramter \"-c\" erwartet!\n"
 
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-msgstr "cupsd: launchd(8)-unterstützung wurde nicht kompiliert, laufe im normalen Modus.\n"
+msgstr ""
+"cupsd: launchd(8)-unterstützung wurde nicht kompiliert, laufe im normalen "
+"Modus.\n"
 
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting!\n"
@@ -2520,11 +2625,17 @@ msgstr ""
 msgid "        WARN    Line %d only contains whitespace!\n"
 msgstr "        WARNUNG    Zeile %d enthält nur Whitespace!\n"
 
-msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
-msgstr "        WARNUNG    Datei enthält gemischt CR, LF und CR LF als Zeilenende!\n"
+msgid ""
+"        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr ""
+"        WARNUNG    Datei enthält gemischt CR, LF und CR LF als Zeilenende!\n"
 
-msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
-msgstr "        WARNUNG    Nicht-Windows PPD Dateien sollten nur das Zeilenende LF benutzen, nicht CR LF!\n"
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF!\n"
+msgstr ""
+"        WARNUNG    Nicht-Windows PPD Dateien sollten nur das Zeilenende LF "
+"benutzen, nicht CR LF!\n"
 
 msgid "Printer Maintenance"
 msgstr "Druckerwartung"
@@ -2546,19 +2657,31 @@ msgstr "      **FEHLGESCHLAGEN**  Falsche Sprache \"%s\"!\n"
 
 #, c-format
 msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
-msgstr "      **FEHLGESCHLAGEN**  Vermisse \"%s\" Übersetzung für Parameter %s!\n"
+msgstr ""
+"      **FEHLGESCHLAGEN**  Vermisse \"%s\" Übersetzung für Parameter %s!\n"
 
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
-msgstr "      **FEHLGESCHLAGEN**  Standardübersetzung für Parameter %s enthält 8-bit Zeichen!\n"
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters!\n"
+msgstr ""
+"      **FEHLGESCHLAGEN**  Standardübersetzung für Parameter %s enthält 8-bit "
+"Zeichen!\n"
 
 #, c-format
-msgid "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
-msgstr "      **FEHLGESCHLAGEN**  Vermisse \"%s\" Übersetzung für Parameter %s, Auswahl %s!\n"
+msgid ""
+"      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr ""
+"      **FEHLGESCHLAGEN**  Vermisse \"%s\" Übersetzung für Parameter %s, "
+"Auswahl %s!\n"
 
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
-msgstr "      **FEHLGESCHLAGEN**  Standardübersetzung für Parameter %s Auswahl %s enthält 8-bit Zeichen!\n"
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters!\n"
+msgstr ""
+"      **FEHLGESCHLAGEN**  Standardübersetzung für Parameter %s Auswahl %s "
+"enthält 8-bit Zeichen!\n"
 
 #, c-format
 msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
@@ -2683,8 +2806,12 @@ msgid "Job #%d is already completed - can't cancel."
 msgstr "Auftrag #%d wurde bereits beendet - abbrechen nicht möglich."
 
 #, c-format
-msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-msgstr "Um auf diese Seite zuzugreifen müssen Sie die URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> verwenden."
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
+"s:%d%s</A>."
+msgstr ""
+"Um auf diese Seite zuzugreifen müssen Sie die URL <A HREF=\"https://%s:%d%s"
+"\">https://%s:%d%s</A> verwenden."
 
 #, c-format
 msgid "Unsupported format '%s'!"
@@ -2798,7 +2925,8 @@ msgid ""
 "\n"
 "    -h       Show program usage\n"
 "\n"
-"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+"    Note: this program only validates the DSC comments, not the PostScript "
+"itself.\n"
 msgstr ""
 "Benutzung: cupstestdsc [Parameter] Dateiname.ps [... Dateiname.ps]\n"
 "       cupstestdsc [Parameter] -\n"
@@ -2807,7 +2935,8 @@ msgstr ""
 "\n"
 "    -h       Zeige Gebrauchsanleitung\n"
 "\n"
-"    Notiz: Dieses Programm validiert nur die DSC Kommentare, nicht das PostScript selbst.\n"
+"    Notiz: Dieses Programm validiert nur die DSC Kommentare, nicht das "
+"PostScript selbst.\n"
 
 #, c-format
 msgid "Password for %s on %s? "
@@ -2819,3 +2948,55 @@ msgid ""
 msgstr ""
 "      **FEHLGESCHLAGEN**  1284DeviceId muss 1284DeviceID sein!\n"
 "                REF: Seite 72, Kapitel 5.5\n"
+
+#, fuzzy, c-format
+msgid "Missing value on line %d!"
+msgstr "Vermisse Wert in Zeile %d!\n"
+
+#, fuzzy, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Vermisse doppelte Anführungszeichen in Zeile %d!\n"
+
+#, fuzzy, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Falscher Parameter + Auswahl in Zeile %d!\n"
+
+#, fuzzy
+msgid "Empty PPD file!"
+msgstr "Kann PPD Datei nicht kopieren!"
+
+#, fuzzy, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Kann Windows Druckertreiber nicht setzen (%d)!\n"
+
+#, fuzzy, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: Kann \"%s\" nicht ausführen: %s\n"
+
+#, fuzzy, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Auftrag #%d wurde bereits abgebrochen - abbrechen nicht möglich."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "Falscher port-monitor \"%s\"!"
+
+#, fuzzy, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FEHLGESCHLAGEN**  1284DeviceId muss 1284DeviceID sein!\n"
+"                REF: Seite 72, Kapitel 5.5\n"
+
+#, fuzzy, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: Kann PPD für %s nicht öffnen!\n"
index 7e736ba46429f99e592863e617399c85da3114b8..1c88e6ab4b24a7e7d507602ae3c78d450da3f818 100644 (file)
@@ -25,13 +25,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:07-0400\n"
-"PO-Revision-Date: 2006-06-12 19:01+0100\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
+"PO-Revision-Date: 2007-01-29 22:15+0100\n"
 "Last-Translator: Juan Pablo González Riopedre <riopedre@tiscali.es>\n"
 "Language-Team: Spanish\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Bookmarks: -1,-1,-1,-1,-1,693,-1,-1,-1,-1\n"
 
 msgid "Options Installed"
 msgstr "Opciones instaladas"
@@ -2818,3 +2819,54 @@ msgstr ""
 "      **FALLO**  1284DeviceId debe ser 1284DeviceID.\n"
 "                REF: Página 72, sección 5.5\n"
 
+#, c-format
+msgid "Missing value on line %d!"
+msgstr "Falta un valor en la línea %d."
+
+#, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Faltan dobles comillas en línea %d."
+
+#, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Opción incorrecta + preferencia en línea %d."
+
+msgid "Empty PPD file!"
+msgstr "Archivo PPD vacío."
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "No se ha podido configurar el controlador de impresora de Windows (%d)."
+
+#, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "No se ha podido ejecutar \"%s\": %s\n"
+
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "El trabajo #%d ya está cancelado - no se puede cancelar."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr "URI notify-recipient \"%s\" incorrecto."
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr "El URI notify-recipient \"%s\" usa un esquema desconocido."
+
+#, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "notify-pull-method \"%s\" incorrecto."
+
+#, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FALLO**  %s debe ser 1284DeviceID.\n"
+"                REF: Página 72, sección 5.5\n"
+
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: No se ha podido obtener el archivo PPD para %s: %s\n"
+
index 1a847e6e101a7eaa613f9635232c0245fe5d4b7f..f9a972bd78dec9633edcc0a4a1abf2a4ac8cd188 100644 (file)
@@ -25,12 +25,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:07-0400\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
 "PO-Revision-Date: 2006-09-93 01:41+0200\n"
 "Last-Translator: Marek Laane <bald@starman.ee>\n"
 "Language-Team: Estonian <et@li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 msgid "Options Installed"
@@ -75,8 +75,12 @@ msgstr "i"
 msgid "Auto"
 msgstr "Automaatne"
 
-msgid "Enter your username and password or the root username and password to access this page."
-msgstr "Selle lehekülje avamiseks andke enda või administraatori (root) kasutajanimi ja parool."
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page."
+msgstr ""
+"Selle lehekülje avamiseks andke enda või administraatori (root) kasutajanimi "
+"ja parool."
 
 msgid "You must use a https: URL to access this page."
 msgstr "Selle lehekülje avamiseks tuleb kasutada https: URL-i."
@@ -102,7 +106,8 @@ msgstr "%s pole toetatud!"
 msgid "The printer or class was not found."
 msgstr "Printerit või klassi ei leitud."
 
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr "printer-uri peab olema kujul \"ipp://MASINANIMI/classes/KLASSINIMI\"."
 
 #, c-format
@@ -140,21 +145,26 @@ msgstr "Keel \"%s\" pole toetatud!"
 msgid "The notify-user-data value is too large (%d > 63 octets)!"
 msgstr "notify-user-data väärtus on liiga suur (%d > 63 oktetti)!"
 
-msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr "notify-lease-duration atribuuti ei saa kasutada töötellimuste korral."
 
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr "printer-uri peab olema kujul \"ipp://MASINANIMI/printers/PRINTERINIMI\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"printer-uri peab olema kujul \"ipp://MASINANIMI/printers/PRINTERINIMI\"."
 
 #, c-format
 msgid "A class named \"%s\" already exists!"
 msgstr "Klass nimega \"%s\" on juba olemas!"
 
 #, c-format
-msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
+msgid ""
+"File device URIs have been disabled! To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
 msgstr ""
-"Failiseadme URI-d on keelatud! Nende lubamiseks vaadake FileDevice direktiivi failis "
-"\"%s/cupsd.conf\"."
+"Failiseadme URI-d on keelatud! Nende lubamiseks vaadake FileDevice "
+"direktiivi failis \"%s/cupsd.conf\"."
 
 #, c-format
 msgid "Bad device-uri \"%s\"!"
@@ -447,7 +457,8 @@ msgid "lpq: Unknown destination \"%s\"!\n"
 msgstr "lpq: tundmatu sihtkoht \"%s\"!\n"
 
 #, c-format
-msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid ""
+"lp: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "lp: viga - %s keskkonnamuutuja nimetab olematu sihtkoha \"%s\"!\n"
 
 msgid "lpq: error - no default destination available.\n"
@@ -457,8 +468,10 @@ msgstr "lpq: viga - vaikimisi sihtkoht pole saadaval.\n"
 msgid "lpq: get-jobs failed: %s\n"
 msgstr "lpq: get-jobs ebaõnnestus: %s\n"
 
-msgid "Rank   Owner      Pri  Job        Files                       Total Size\n"
-msgstr "Järk   Omanik      Prio  Töö        Failid                       Kogusuurus\n"
+msgid ""
+"Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgstr ""
+"Järk   Omanik      Prio  Töö        Failid                       Kogusuurus\n"
 
 msgid "Rank    Owner   Job     File(s)                         Total Size\n"
 msgstr "Järk    Omanik   Töö     Failid                         Kogusuurus\n"
@@ -506,8 +519,12 @@ msgid "lpr: error - expected value after -%c option!\n"
 msgstr "lpr: viga - oodati väärust pärast võtit -%c!\n"
 
 #, c-format
-msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "lpr: hoiatus - '%c' vormingus modifikaator pole toetatud - väljund võib olla vigane!\n"
+msgid ""
+"lpr: warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"lpr: hoiatus - '%c' vormingus modifikaator pole toetatud - väljund võib olla "
+"vigane!\n"
 
 msgid "lpr: error - expected option=value after -o option!\n"
 msgstr "lpr: viga - oodati võti=väärtus pärast võtit -o!\n"
@@ -541,7 +558,8 @@ msgid "lpr: error - too many files - \"%s\"\n"
 msgstr "lpr: viga - liiga palju faile - \"%s\"\n"
 
 #, c-format
-msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid ""
+"lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "lpr: viga - %s keskkonnamuutuja nimetab olematu sihtkoha \"%s\"!\n"
 
 msgid "lpr: error - no default destination available.\n"
@@ -667,23 +685,30 @@ msgstr "cupsaddsmb: ei õnnestunud teisendada PPD-faili %s jaoks - %s\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
-msgstr "cupsaddsmb: ei õnnestunud kopeerida Windows 2000 printeridraiverifaile (%d)!\n"
+msgstr ""
+"cupsaddsmb: ei õnnestunud kopeerida Windows 2000 printeridraiverifaile (%"
+"d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
-msgstr "cupsaddsmb: ei õnnestunud kopeerida CUPS-i printeridraiverifaile (%d)!\n"
+msgstr ""
+"cupsaddsmb: ei õnnestunud kopeerida CUPS-i printeridraiverifaile (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
-msgstr "cupsaddsmb: ei õnnestunud paigaldada Windows 2000 printeridraiverifaile (%d)!\n"
+msgstr ""
+"cupsaddsmb: ei õnnestunud paigaldada Windows 2000 printeridraiverifaile (%"
+"d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
-msgstr "cupsaddsmb: ei õnnestunud kopeerida Windows 9x printeridraiverifaile (%d)!\n"
+msgstr ""
+"cupsaddsmb: ei õnnestunud kopeerida Windows 9x printeridraiverifaile (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
-msgstr "cupsaddsmb: ei õnnestunud paigaldada Windows 9x printeridraiverifaile (%d)!\n"
+msgstr ""
+"cupsaddsmb: ei õnnestunud paigaldada Windows 9x printeridraiverifaile (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
@@ -815,10 +840,10 @@ msgstr ""
 msgid "        PASS    DefaultPaperDimension\n"
 msgstr "        SOORITATUD    DefaultPaperDimension\n"
 
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "      **FAIL**  BAD Default%s %s\n"
-"                Viide: Page 40, section 4.5.\n"
+"                REF: Page 40, section 4.5.\n"
 msgstr ""
 "      **EBAÕNN**  VIGANE Default%s %s\n"
 "                  Viide: lk 40, sektsioon 4.5.\n"
@@ -1066,10 +1091,12 @@ msgstr " SOORITATUD\n"
 
 #, c-format
 msgid ""
-"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"        WARN    Duplex option keyword %s should be named Duplex or "
+"JCLDuplex!\n"
 "                REF: Page 122, section 5.17\n"
 msgstr ""
-"        HOIATUS    Dupleksi võtme võtmesõna %s peab olema nimega Duplex või JCLDuplex!\n"
+"        HOIATUS    Dupleksi võtme võtmesõna %s peab olema nimega Duplex või "
+"JCLDuplex!\n"
 "                   Viide: lk 122, sektsioon 5.17\n"
 
 msgid "        WARN    Default choices conflicting!\n"
@@ -1087,7 +1114,8 @@ msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3.\n"
 msgstr ""
-"        HOIATUS    LanguageEncoding on PPD 4.3 spetsifikatsiooni järgi nõutav.\n"
+"        HOIATUS    LanguageEncoding on PPD 4.3 spetsifikatsiooni järgi "
+"nõutav.\n"
 "                   Viide: lk 56-57, sektsioon 5.3.\n"
 
 msgid ""
@@ -1101,7 +1129,8 @@ msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3.\n"
 msgstr ""
-"        HOIATUS    PCFileName pikem kui 8.3 läheb vastuollu PPD spetsifikatsiooniga.\n"
+"        HOIATUS    PCFileName pikem kui 8.3 läheb vastuollu PPD "
+"spetsifikatsiooniga.\n"
 "                   Viide: lk 61-62, sektsioon 5.3.\n"
 
 msgid ""
@@ -1122,7 +1151,8 @@ msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7.\n"
 msgstr ""
-"        HOIATUS    Protocols sisaldab PJL, kuid JCL atribuudid pole määratud.\n"
+"        HOIATUS    Protocols sisaldab PJL, kuid JCL atribuudid pole "
+"määratud.\n"
 "                   Viide: lk 78-79, sektsioon 5.7.\n"
 
 #, c-format
@@ -1149,10 +1179,12 @@ msgstr ""
 "                   (constraint=\"%s %s %s %s\")\n"
 
 msgid ""
-"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[."
+"gz]]\n"
 "       program | cupstestppd [-q] [-r] [-v[v]] -\n"
 msgstr ""
-"Kasutamine: cupstestppd [-q] [-r] [-v[v]] failinimi1.ppd[.gz] [... failinimiN.ppd[.gz]]\n"
+"Kasutamine: cupstestppd [-q] [-r] [-v[v]] failinimi1.ppd[.gz] [... "
+"failinimiN.ppd[.gz]]\n"
 "            program | cupstestppd [-q] [-r] [-v[v]] -\n"
 
 msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
@@ -1225,7 +1257,9 @@ msgid "system default destination: %s\n"
 msgstr "süsteemi vaikimisi sihtkoht: %s\n"
 
 #, c-format
-msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"!\n"
 msgstr "lpstat: viga - %s keskkonnamuutuja nimetab olematu sihtkoha \"%s\"!\n"
 
 msgid "no system default destination\n"
@@ -1521,7 +1555,8 @@ msgstr ""
 "    lpadmin [-h server] -p printer [-c add-class] [-i liides] [-m mudel]\n"
 "                       [-r remove-class] [-v seade] [-D kirjeldus]\n"
 "                       [-P ppd-fail] [-o nimi=väärtus]\n"
-"                       [-u allow:kasutaja,kasutaja] [-u deny:kasutaja,kasutaja]\n"
+"                       [-u allow:kasutaja,kasutaja] [-u deny:kasutaja,"
+"kasutaja]\n"
 
 #, c-format
 msgid "lpadmin: Unable to create temporary file: %s\n"
@@ -1620,8 +1655,11 @@ msgstr "lp: hoiatus - sisu tüübi võtit ignoreeritakse!\n"
 msgid "lp: Unknown option '%c'!\n"
 msgstr "lp: tundmatu võti '%c'!\n"
 
-msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "lp: viga - standardsisendist ei saa trükkida, kui on antud failid või töö ID!\n"
+msgid ""
+"lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"lp: viga - standardsisendist ei saa trükkida, kui on antud failid või töö "
+"ID!\n"
 
 #, c-format
 msgid "lp: Unable to access \"%s\" - %s\n"
@@ -1755,7 +1793,8 @@ msgstr ""
 "            lpoptions [-h server] [-E] -x printer\n"
 
 msgid "lppasswd: Only root can add or delete passwords!\n"
-msgstr "lppasswd: ainult administraator (root) võib paroole lisada või kustutada!\n"
+msgstr ""
+"lppasswd: ainult administraator (root) võib paroole lisada või kustutada!\n"
 
 msgid "Enter old password:"
 msgstr "Vana parool:"
@@ -1856,10 +1895,12 @@ msgstr "Klassi muutmine"
 msgid "Add Class"
 msgstr "Klassi lisamine"
 
-msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
 msgstr ""
-"Klassi nimes tohib olla ainult kuni 127 trükitavat märki ning selles ei tohi sisalduda tühikuid, "
-"kaldkriipse (/) ega trelle (#)."
+"Klassi nimes tohib olla ainult kuni 127 trükitavat märki ning selles ei tohi "
+"sisalduda tühikuid, kaldkriipse (/) ega trelle (#)."
 
 msgid "Unable to modify class:"
 msgstr "Klassi muutmine ebaõnnestus:"
@@ -1873,10 +1914,12 @@ msgstr "Printeri muutmine"
 msgid "Add Printer"
 msgstr "Printeri lisamine"
 
-msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
 msgstr ""
-"Printeri nimes tohib olla ainult kuni 127 trükitavat märki ning selles ei tohi sisalduda tühikuid, "
-"kaldkriipse (/) ega trelle (#)."
+"Printeri nimes tohib olla ainult kuni 127 trükitavat märki ning selles ei "
+"tohi sisalduda tühikuid, kaldkriipse (/) ega trelle (#)."
 
 msgid "Unable to get list of printer drivers:"
 msgstr "Printeridraiverite loendi hankimine ebaõnnestus:"
@@ -2163,7 +2206,9 @@ msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
 msgstr "cupsaddsmb: ühtegi Windowsi printeridraiverit pole paigaldatud!\n"
 
 msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
-msgstr "cupsaddsmb: hoiatus - ühtegi Windows 2000 printeridraiverit pole paigaldatud!\n"
+msgstr ""
+"cupsaddsmb: hoiatus - ühtegi Windows 2000 printeridraiverit pole "
+"paigaldatud!\n"
 
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s.\n"
@@ -2206,7 +2251,8 @@ msgid "Usage: lpmove job/src dest\n"
 msgstr "Kasutamine: lpmove töö/lähtekoht sihtkoht\n"
 
 msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
-msgstr "lpstat: pärast -W on vajalik \"completed\", \"not-completed\" või \"all\"!\n"
+msgstr ""
+"lpstat: pärast -W on vajalik \"completed\", \"not-completed\" või \"all\"!\n"
 
 #, c-format
 msgid "%s accepting requests since %s\n"
@@ -2256,15 +2302,19 @@ msgid "%s: Error - expected hostname after '-h' option!\n"
 msgstr "%s: viga - võtme '-h' järel oodati masinanime!\n"
 
 #, c-format
-msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid ""
+"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "%s: viga - %s keskkonnamuutuja nimetab olematu sihtkoha \"%s\"!\n"
 
 #, c-format
 msgid "%s: error - no default destination available.\n"
 msgstr "%s: viga - vaikimisi sihtkoht pole saadaval.\n"
 
-msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgstr "Kasutamine: lpq [-P sihtkoht] [-U kasutajanimi] [-h masinanimi[:port]] [-l] [+intervall]\n"
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr ""
+"Kasutamine: lpq [-P sihtkoht] [-U kasutajanimi] [-h masinanimi[:port]] [-l] "
+"[+intervall]\n"
 
 #, c-format
 msgid "%s: Error - expected hostname after '-H' option!\n"
@@ -2275,8 +2325,12 @@ msgid "%s: Error - expected value after '-%c' option!\n"
 msgstr "%s: viga - võtme '-%c' järel oodati väärtust!\n"
 
 #, c-format
-msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "%s: hoiatus - '%c' vormingus modifikaator pole toetatud - väljund võib olla vigane!\n"
+msgid ""
+"%s: Warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"%s: hoiatus - '%c' vormingus modifikaator pole toetatud - väljund võib olla "
+"vigane!\n"
 
 #, c-format
 msgid "%s: error - expected option=value after '-o' option!\n"
@@ -2307,7 +2361,8 @@ msgid "%s: Error - too many files - \"%s\"\n"
 msgstr "%s: viga - liiga palju faile - \"%s\"\n"
 
 #, c-format
-msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "%s: viga - %s keskkonnamuutuja nimetab olematu sihtkoha \"%s\"!\n"
 
 #, c-format
@@ -2427,12 +2482,19 @@ msgid "%s: Warning - content type option ignored!\n"
 msgstr "%s: hoiatus - sisu tüübi võtit ignoreeritakse!\n"
 
 #, c-format
-msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "%s: viga - standardsisendist ei saa trükkida, kui antud on failid või töö ID!\n"
+msgid ""
+"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: viga - standardsisendist ei saa trükkida, kui antud on failid või töö "
+"ID!\n"
 
 #, c-format
-msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
-msgstr "%s: viga - võtme '-W' järel on vajalik \"completed\", \"not-completed\" või \"all\"!\n"
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+"option!\n"
+msgstr ""
+"%s: viga - võtme '-W' järel on vajalik \"completed\", \"not-completed\" või "
+"\"all\"!\n"
 
 #, c-format
 msgid "%s: Error - expected destination after '-b' option!\n"
@@ -2492,7 +2554,8 @@ msgid "cupsd: Expected config filename after \"-c\" option!\n"
 msgstr "cupsd: võtme \"-c\" järel oodati seadistustefaili nime!\n"
 
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-msgstr "cupsd: launchd(8) toetus pole kompileeritud, käivitatakse tavarežiimis.\n"
+msgstr ""
+"cupsd: launchd(8) toetus pole kompileeritud, käivitatakse tavarežiimis.\n"
 
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting!\n"
@@ -2523,11 +2586,16 @@ msgstr ""
 msgid "        WARN    Line %d only contains whitespace!\n"
 msgstr "        HOIATUS    Rida %d sisaldab ainult tühikut!\n"
 
-msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgid ""
+"        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
 msgstr "        HOIATUS    Fail sisaldab CR. LF ja CR LF reavahetuste segu!\n"
 
-msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
-msgstr "        HOIATUS    Mitte-Windowsi PPD-failid peavad kasutama ainult LF, mitte CR LF reavahetusi!\n"
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF!\n"
+msgstr ""
+"        HOIATUS    Mitte-Windowsi PPD-failid peavad kasutama ainult LF, "
+"mitte CR LF reavahetusi!\n"
 
 msgid "Printer Maintenance"
 msgstr "Printeri hooldus"
@@ -2552,16 +2620,25 @@ msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
 msgstr "      **EBAÕNN**  Puudub \"%s\" tõlkestring võtmele %s!\n"
 
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
-msgstr "      **EBAÕNN**  Vaikimisi tõlkestring võtmele %s sisaldab 8-bitiseid märke!\n"
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters!\n"
+msgstr ""
+"      **EBAÕNN**  Vaikimisi tõlkestring võtmele %s sisaldab 8-bitiseid "
+"märke!\n"
 
 #, c-format
-msgid "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgid ""
+"      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
 msgstr "      **EBAÕNN**  Puudub \"%s\" tõlkestring võtmele %s, valikule %s!\n"
 
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
-msgstr "      **EBAÕNN**  Vaikimisi tõlkestring võtmele %s, valikule %s sisaldab 8-bitiseid märke!\n"
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters!\n"
+msgstr ""
+"      **EBAÕNN**  Vaikimisi tõlkestring võtmele %s, valikule %s sisaldab 8-"
+"bitiseid märke!\n"
 
 #, c-format
 msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
@@ -2686,8 +2763,12 @@ msgid "Job #%d is already completed - can't cancel."
 msgstr "Töö nr %d on juba lõpetatud - enam ei saa katkestada."
 
 #, c-format
-msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-msgstr "Sellele leheküljele pääseb URL-iga <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
+"s:%d%s</A>."
+msgstr ""
+"Sellele leheküljele pääseb URL-iga <A HREF=\"https://%s:%d%s\">https://%s:%d%"
+"s</A>."
 
 #, c-format
 msgid "Unsupported format '%s'!"
@@ -2801,7 +2882,8 @@ msgid ""
 "\n"
 "    -h       Show program usage\n"
 "\n"
-"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+"    Note: this program only validates the DSC comments, not the PostScript "
+"itself.\n"
 msgstr ""
 "Kasutamine: cupstestdsc [võtmed] failinimi.ps [... failinimi.ps]\n"
 "            cupstestdsc [võtmed] -\n"
@@ -2810,7 +2892,8 @@ msgstr ""
 "\n"
 "    -h       Programmi kasutamise näitamine\n"
 "\n"
-"    Märkus: see programm kontrollib ainult DSC kommentaare, mitte PostScripti ennast.\n"
+"    Märkus: see programm kontrollib ainult DSC kommentaare, mitte "
+"PostScripti ennast.\n"
 
 #, c-format
 msgid "Password for %s on %s? "
@@ -2823,4 +2906,54 @@ msgstr ""
 "      **EBAÕNN**  1284DeviceId peab olema 1284DeviceID!\n"
 "                  Viide: lk 72, sektsioon 5.5\n"
 
+#, fuzzy, c-format
+msgid "Missing value on line %d!"
+msgstr "Puudub väärtus real %d!\n"
+
+#, fuzzy, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Puuduvad topeltjutumärgid real %d!\n"
+
+#, fuzzy, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Vigane võti + valik real %d!\n"
+
+#, fuzzy
+msgid "Empty PPD file!"
+msgstr "PPD-faili kopeerimine ebaõnnestus!"
+
+#, fuzzy, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Ei õnnestu määrata Windowsi printeridraiverit (%d)!\n"
+
+#, fuzzy, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: \"%s\" käivitamine ebaõnnestus: %s\n"
+
+#, fuzzy, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Töö nr %d on juba katkestatud - enam ei saa katkestada."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr ""
 
+#, fuzzy, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "Vigane port-monitor \"%s\"!"
+
+#, fuzzy, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **EBAÕNN**  1284DeviceId peab olema 1284DeviceID!\n"
+"                  Viide: lk 72, sektsioon 5.5\n"
+
+#, fuzzy, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: ei õnnestu avada PPD-faili %s jaoks!\n"
diff --git a/locale/cups_fr.po b/locale/cups_fr.po
new file mode 100644 (file)
index 0000000..cb1e3e3
--- /dev/null
@@ -0,0 +1,5690 @@
+#
+# "$Id$"
+#
+#   Message catalog template for the Common UNIX Printing System (CUPS).
+#
+#   Copyright 2005-2006 by Easy Software Products.
+#
+#   These coded instructions, statements, and computer programs are the
+#   property of Easy Software Products and are protected by Federal
+#   copyright law.  Distribution and use rights are outlined in the file
+#   "LICENSE.txt" which should have been included with this file.  If this
+#   file is missing or damaged please contact Easy Software Products
+#   at:
+#
+#       Attn: CUPS Licensing Information
+#       Easy Software Products
+#       44141 Airport View Drive, Suite 204
+#       Hollywood, Maryland 20636 USA
+#
+#       Voice: (301) 373-9600
+#       EMail: cups-info@cups.org
+#         WWW: http://www.cups.org
+#
+#
+# NDT: I did not translate the messages used in conformance, DSC and PPD tests,
+#      because they are destined to developers only, as far as I understand.
+#
+
+msgid ""
+msgstr ""
+"Project-Id-Version: CUPS 1.2\n"
+"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
+"POT-Creation-Date: 2006-05-21 10:08-0400\n"
+"PO-Revision-Date: 2007-01-25 19:55+0200\n"
+"Last-Translator: Philippe Combes <Philippe.Combes@ens-lyon.fr>\n"
+"Language-Team: Français\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Options Installed"
+msgstr "Options Installées"
+
+msgid "Class"
+msgstr "Classe"
+
+msgid "Printer"
+msgstr "Imprimante"
+
+msgid "Extra"
+msgstr "Supplémentaire"
+
+msgid "General"
+msgstr "Généralités"
+
+msgid "Media Size"
+msgstr "Taille du support"
+
+msgid "Media Type"
+msgstr "Type de support"
+
+msgid "Media Source"
+msgstr "Source du support"
+
+msgid "Output Mode"
+msgstr "Mode de sortie"
+
+msgid "Resolution"
+msgstr "Résolution"
+
+msgid "Variable"
+msgstr "Variable"
+
+msgid "Yes"
+msgstr "Oui"
+
+msgid "No"
+msgstr "Non"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Enter your username and password or the root username and password to access this page."
+msgstr "Entrez votre nom d'utilisateur et votre mot de passe UNIX ou bien identifiez-vous en tant que « root » pour accéder à cette page."
+
+msgid "You must use a https: URL to access this page."
+msgstr "Vous devez utiliser une URL https: pour accéder à cette page."
+
+#, c-format
+msgid "Bad request version number %d.%d!"
+msgstr "La requête a un numéro de version erroné : %d.%d !"
+
+msgid "No attributes in request!"
+msgstr "Aucun attribut dans la requête !"
+
+#, c-format
+msgid "Attribute groups are out of order (%x < %x)!"
+msgstr "Les groupes d'attributs ne sont pas dans le bon ordre (%x < %x) !"
+
+msgid "Missing required attributes!"
+msgstr "Il manque des attributs indispensables !"
+
+#, c-format
+msgid "%s not supported!"
+msgstr "%s: opération non gérée !"
+
+msgid "The printer or class was not found."
+msgstr "L'imprimante ou la classe n'a pas été trouvée."
+
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr "L'URI de l'imprimante doit suivre le format « ipp://NOM_MACHINE/classes/NOM_CLASSE »."
+
+#, c-format
+msgid "The printer-uri \"%s\" contains invalid characters."
+msgstr "L'URI de l'imprimante « %s » contient des caractères ."
+
+#, c-format
+msgid "A printer named \"%s\" already exists!"
+msgstr "Il existe déjà une imprimante appelée « %s » !"
+
+#, c-format
+msgid "Attempt to set %s printer-state to bad value %d!"
+msgstr "Tentative de donner une valeur erronée au paramètre « printer-state » : %d !"
+
+#, c-format
+msgid "add_class: Unknown printer-op-policy \"%s\"."
+msgstr "add_class: L'attribut « printer-op-policy » a une valeur non comprise : « %s »."
+
+#, c-format
+msgid "add_class: Unknown printer-error-policy \"%s\"."
+msgstr "add_class: L'attribut « printer-error-policy » a une valeur non comprise : « %s »."
+
+msgid "Unable to allocate memory for file types!"
+msgstr "Impossible d'allouer de la mémoire pour les types de fichiers !"
+
+#, c-format
+msgid "Character set \"%s\" not supported!"
+msgstr "Jeu de caractères « %s » non géré !"
+
+#, c-format
+msgid "Language \"%s\" not supported!"
+msgstr "Langue « %s » non gérée !"
+
+#, c-format
+msgid "The notify-user-data value is too large (%d > 63 octets)!"
+msgstr "La valeur de l'attribut « notify-user-data » est trop grande ( %d > 63 octets ) !"
+
+msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr "L'attribut « notify-lease-duration » ne peut pas être utilisé dans une souscription de tâche."
+
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr "L'URI de l'imprimante doit suivre le format « ipp://NOM_MACHINE/printers/NOM_CLASSE »."
+
+#, c-format
+msgid "A class named \"%s\" already exists!"
+msgstr ""Il existe déjà une classe appelée « %s » !"
+
+#, c-format
+msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
+msgstr "L'impression dans un fichier a été désactivée ! Pour l'activer, cf. la directive « FileDevice » dans « %s/cupsd.conf »."
+
+#, c-format
+msgid "Bad device-uri \"%s\"!"
+msgstr "Valeur erronée pour le paramètre « device-uri » : « %s » !"
+
+#, c-format
+msgid "Bad port-monitor \"%s\"!"
+msgstr "Valeur erronée pour le paramètre « port-monitor » : « %s » !"
+
+#, c-format
+msgid "Bad printer-state value %d!"
+msgstr "Valeur erronée pour le paramètre « printer-state » : « %s » !"
+
+#, c-format
+msgid "Unknown printer-op-policy \"%s\"."
+msgstr "L'attribut « printer-op-policy » a une valeur non comprise : « %s »."
+
+#, c-format
+msgid "Unknown printer-error-policy \"%s\"."
+msgstr "L'attribut « printer-error-policy » a une valeur non comprise : « %s »."
+
+#, c-format
+msgid "Unable to copy interface script - %s!"
+msgstr "Impossible de copier le « script » d'interface - « %s » !"
+
+#, c-format
+msgid "Unable to copy PPD file - %s!"
+msgstr "Impossible de copier le fichier PPD - « %s » !"
+
+msgid "Unable to copy PPD file!"
+msgstr "Impossible de copier le fichier PPD !"
+
+msgid "Got a printer-uri attribute but no job-id!"
+msgstr "Attribut « printer-uri » trouvé mais pas de « job-id »"
+
+#, c-format
+msgid "Bad job-uri attribute \"%s\"!"
+msgstr "Valeur erronée pour l'attribut « job-uri » : « %s » !"
+
+#, c-format
+msgid "Job #%d doesn't exist!"
+msgstr "La tâche n°%d n'existe pas !"
+
+#, c-format
+msgid "Job #%d is not held for authentication!"
+msgstr "La tâche n°%d n'est pas en attente d'authentification !"
+
+#, c-format
+msgid "You are not authorized to authenticate job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation d'authentifier la tâche n°%d appartenant à « %s » !"
+
+msgid "The printer-uri attribute is required!"
+msgstr "L'attribut « printer-uri » est indispensable !"
+
+msgid "Missing requesting-user-name attribute!"
+msgstr "Il manque l'attribut « requesting-user-name » !"
+
+#, c-format
+msgid "The printer-uri \"%s\" is not valid."
+msgstr "L'attribut « printer-uri » est incorrect : « %s »."
+
+#, c-format
+msgid "No active jobs on %s!"
+msgstr "Il n'y a pas de tâche en cours sur « %s » !"
+
+#, c-format
+msgid "You are not authorized to delete job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de supprimer la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Job #%d is already %s - can't cancel."
+msgstr "La tâche n°%d est déjà « %s » - impossible de l'annuler."
+
+msgid "The printer or class is not shared!"
+msgstr "L'imprimante ou la classe n'est pas partagée !"
+
+#, c-format
+msgid "Destination \"%s\" is not accepting jobs."
+msgstr "La destination « %s » n'accepte aucune tâche."
+
+#, c-format
+msgid "Bad copies value %d."
+msgstr "Nombre de copies erroné : %d."
+
+#, c-format
+msgid "Bad page-ranges values %d-%d."
+msgstr "Intervalle de pages erroné : %d-%d."
+
+msgid "Too many active jobs."
+msgstr "Trop de tâches en cours."
+
+msgid "Quota limit reached."
+msgstr "Quota atteint."
+
+#, c-format
+msgid "Unable to add job for destination \"%s\"!"
+msgstr "Impossible d'ajouter une tâche pour la destination « %s » !"
+
+msgid "No subscription attributes in request!"
+msgstr "Pas d'attribut de souscription dans la requête !"
+
+msgid "notify-events not specified!"
+msgstr "Attribut « notify-events » non renseigné !"
+
+#, c-format
+msgid "Job %d not found!"
+msgstr "La tâche n°%d n'a pas été trouvée !"
+
+msgid "No default printer"
+msgstr "Pas d'imprimante par défaut"
+
+msgid "cups-deviced failed to execute."
+msgstr "L'exécution de « cups-deviced » a échouée."
+
+msgid "cups-driverd failed to execute."
+msgstr "L'exécution de « cups-driverd » a échouée."
+
+msgid "No destinations added."
+msgstr "Aucune destination ajoutée."
+
+#, c-format
+msgid "notify-subscription-id %d no good!"
+msgstr "Valeur erronée pour l'attribut « notify-subscription-id » : %d !"
+
+#, c-format
+msgid "Job #%s does not exist!"
+msgstr "La tâche n°%s n'existe pas !"
+
+#, c-format
+msgid "Job #%d does not exist!"
+msgstr "La tâche n°%d n'existe pas !"
+
+msgid "No subscriptions found."
+msgstr "Aucune souscription trouvée."
+
+#, c-format
+msgid "Not authorized to hold job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de retenir la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Job #%d is finished and cannot be altered!"
+msgstr "La tâche n°%d est terminée et ne peut plus être modifiée !"
+
+#, c-format
+msgid "You are not authorized to move job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de transférer la tâche n°%d appartenant à « %s » !"
+
+msgid "job-printer-uri attribute missing!"
+msgstr "Il manque l'attribut « job-printer-uri » !"
+
+#, c-format
+msgid "Unsupported compression \"%s\"!"
+msgstr "La compression « %s » n'est pas gérée !"
+
+msgid "No file!?!"
+msgstr "Pas de fichier !?!"
+
+#, c-format
+msgid "Could not scan type \"%s\"!"
+msgstr "Impossible de comprendre le format « %s » !"
+
+#, c-format
+msgid "Unsupported format '%s/%s'!"
+msgstr "Le format « %s » n'est pas géré !"
+
+msgid "Printer not shared!"
+msgstr "L'imprimante n'est pas partagée !"
+
+#, c-format
+msgid "Too many jobs - %d jobs, max jobs is %d."
+msgstr "Trop de tâches - %d tâches pour un maximum de %d."
+
+#, c-format
+msgid "Job #%d is not held!"
+msgstr "La tâche n°%d n'est pas retenue !"
+
+#, c-format
+msgid "You are not authorized to release job id %d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de libérer la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Job #%d is not complete!"
+msgstr "La tâche n°%d n'est pas terminée !"
+
+#, c-format
+msgid "Job #%d cannot be restarted - no files!"
+msgstr "La tâche n°%d ne peut être redémarrée - aucun fichier !"
+
+#, c-format
+msgid "You are not authorized to restart job id %d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de redémarrer la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "You are not authorized to send document for job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation d'envoyer un document pour la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Bad document-format \"%s\"!"
+msgstr "Format de document erroné : « %s » !"
+
+#, c-format
+msgid "You are not authorized to alter job id %d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de modifier la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "%s cannot be changed."
+msgstr "Impossible de modifier « %s »"
+
+msgid "Bad job-priority value!"
+msgstr "Valeur erronée pour l'attribut « job-priority » !"
+
+msgid "Job is completed and cannot be changed."
+msgstr "La tâche est terminée et ne peut être modifiée."
+
+msgid "Bad job-state value!"
+msgstr "Valeur erronée pour l'attribut « job-state » !"
+
+msgid "Job state cannot be changed."
+msgstr "L'état de la tâche ne peut être modifié."
+
+#, c-format
+msgid "Unsupported compression attribute %s!"
+msgstr "L'attribute de compression %s n'est pas géré !"
+
+#, c-format
+msgid "Unsupported format \"%s\"!"
+msgstr "Le format « %s » n'est pas géré !"
+
+#, c-format
+msgid "%s is not implemented by the CUPS version of lpc.\n"
+msgstr "« %s » n'est pas implanté dans la version CUPS de lpc.\n"
+
+msgid ""
+"Commands may be abbreviated.  Commands are:\n"
+"\n"
+"exit    help    quit    status  ?\n"
+msgstr ""
+"Les commandes peuvent être abrégée. Elles sont:\n"
+"\n"
+"exit    help    quit    status  ?\n"
+
+msgid "help\t\tget help on commands\n"
+msgstr "help\t\tobtenir de l'aide sur les commandes\n"
+
+msgid "status\t\tshow status of daemon and queue\n"
+msgstr "status\t\taffiche l'état du démon et de la file\n"
+
+msgid "?Invalid help command unknown\n"
+msgstr "?Commande d'aide inconnue\n"
+
+#, c-format
+msgid "\tprinter is on device '%s' speed -1\n"
+msgstr "\tl'imprimante est sur le périphérique '%s', vitesse -1\n"
+
+msgid "\tqueuing is enabled\n"
+msgstr "\tla mise en file d'attente est permise\n"
+
+msgid "\tqueuing is disabled\n"
+msgstr "\tla mise en file d'attente est refusée\n"
+
+msgid "\tprinting is enabled\n"
+msgstr "\tl'impression est permise\n"
+
+msgid "\tprinting is disabled\n"
+msgstr "\tl'impression est refusée\n"
+
+msgid "\tno entries\n"
+msgstr "\taucune entrée\n"
+
+#, c-format
+msgid "\t%d entries\n"
+msgstr "\t%d entrées\n"
+
+msgid "\tdaemon present\n"
+msgstr "\tdémon présent\n"
+
+msgid "lpq: Unable to contact server!\n"
+msgstr "lpq: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "%s: Sorry, no encryption support compiled in!\n"
+msgstr "%s: Désolé, la gestion du cryptage n'a pas été compilée !\n"
+
+#, c-format
+msgid "lpq: Unknown destination \"%s/%s\"!\n"
+msgstr lpq: Destination « %s/%s » inconnue !\n""
+
+#, c-format
+msgid "lpq: Unknown destination \"%s\"!\n"
+msgstr "lpq: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lp: erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+msgid "lpq: error - no default destination available.\n"
+msgstr "lpq: erreur - aucune destination par défaut n'est disponible.\n"
+
+#, c-format
+msgid "lpq: get-jobs failed: %s\n"
+msgstr "lpq: « get-jobs » a échoué: %s\n"
+
+msgid "Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgstr "Rang   Propr.     Prio Tâche      Fichiers                    Taille totale\n"
+
+msgid "Rank    Owner   Job     File(s)                         Total Size\n"
+msgstr "Rang    Propr.  Tâche  Fichiers                       Taille totale\n"
+
+#, c-format
+msgid "%s: %-33.33s [job %d localhost]\n"
+msgstr "%s: %-33.33s [tâche %d localhost]\n"
+
+#, c-format
+msgid "        %-39.39s %.0f bytes\n"
+msgstr "        %-39.39s %.0f octets\n"
+
+#, c-format
+msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
+msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f octets\n"
+
+#, c-format
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
+msgstr "%-7s %-7.7s %-7d %-31.31s %.0f octets\n"
+
+msgid "no entries\n"
+msgstr "aucune entrée\n"
+
+#, c-format
+msgid "lpq: get-printer-attributes failed: %s\n"
+msgstr "lpq: get-printer-attributes a échoué : %s\n"
+
+#, c-format
+msgid "%s is ready\n"
+msgstr "%s est prête\n"
+
+#, c-format
+msgid "%s is ready and printing\n"
+msgstr "%s est prête et en cours d'impression\n"
+
+#, c-format
+msgid "%s is not ready\n"
+msgstr "%s n'est pas prête\n"
+
+msgid "Usage: lpq [-P dest] [-l] [+interval]\n"
+msgstr "Utilisation : lpq [-P dest] [-l] [+intervalle]\n"
+
+#, c-format
+msgid "lpr: error - expected value after -%c option!\n"
+msgstr "lpr: erreur - il faut une valeur après l'option '-%c' !\n"
+
+#, c-format
+msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "lpr: attention - le modificateur de format '%c' n'est pas géré - l'affichage pourrait être incorrect !\n"
+
+msgid "lpr: error - expected option=value after -o option!\n"
+msgstr "lpr: erreur - il faut un argument du type option=valeur après l'option '-o' !\n"
+
+msgid "lpr: warning - email notification is not currently supported!\n"
+msgstr "lpr: attention - la notification par courriel n'est pas encore gérée !\n"
+
+msgid "lpr: error - expected destination after -P option!\n"
+msgstr "lpr: erreur - il faut une destination après l'option '-P' !\n"
+
+msgid "lpr: error - expected copy count after -# option!\n"
+msgstr "lpr: erreur - il faut un nombre de copies après l'option '-#' !\n"
+
+#, c-format
+msgid "lpr: error - expected name after -%c option!\n"
+msgstr "lpr: erreur - il faut un nom après l'option '-%c' !\n"
+
+msgid "lpr: error - expected username after -U option!\n"
+msgstr "lpr: erreur - il faut un nom d'utilisateur après l'option '-U' !\n"
+
+#, c-format
+msgid "lpr: error - unknown option '%c'!\n"
+msgstr "lpr: erreur - option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpr: error - unable to access \"%s\" - %s\n"
+msgstr "lpr: erreur - impossible d'accéder à « %s » - %s\n"
+
+#, c-format
+msgid "lpr: error - too many files - \"%s\"\n"
+msgstr "lpr: erreur - trop de fichiers - « %s »\n"
+
+#, c-format
+msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lpr: erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+msgid "lpr: error - no default destination available.\n"
+msgstr "lpr: erreur - aucune destination par défaut n'est disponible.\n"
+
+msgid "lpr: error - scheduler not responding!\n"
+msgstr "lpr: erreur - l'ordonnanceur ne répond pas !\n"
+
+#, c-format
+msgid "lpr: error - unable to create temporary file \"%s\" - %s\n"
+msgstr "lpr: erreur - impossible de créer le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "lpr: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lpr: erreur - impossible d'écrire dans le fichier temporaire « %s » - %s\n"
+
+msgid "lpr: error - stdin is empty, so no job has been sent.\n"
+msgstr "lpr: erreur - stdin est vide, donc aucune tâche n'a été envoyée.\n"
+
+#, c-format
+msgid "lpr: error - unable to print file: %s\n"
+msgstr "lpr: erreur - impossible d'imprimer le fichier : %s\n"
+
+msgid "lprm: Unable to contact server!\n"
+msgstr "lprm: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "lprm: Unknown destination \"%s\"!\n"
+msgstr "lprm: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "lprm: Unknown option '%c'!\n"
+msgstr "lprm: Option '%c' inconnue !\n"
+
+msgid "lprm: Job or printer not found!\n"
+msgstr "lprm: La tâche ou l'imprimante n'a pas été trouvée !\n"
+
+msgid "lprm: Not authorized to lprm job(s)!\n"
+msgstr "lprm: Vous n'avez pas l'autorisation de supprimer cette(ces) tâche(s) !\n"
+
+#, c-format
+msgid "lprm: You don't own job ID %d!\n"
+msgstr lprm: La tâche n°%d ne vous appartient pas !\n""
+
+msgid "lprm: Unable to lprm job(s)!\n"
+msgstr "lprm: Impossible de supprimer cette(ces) tâche(s) !\n"
+
+msgid "lprm: Unable to cancel job(s)!\n"
+msgstr "lprm: Impossible d'annuler cette(ces) tâche(s) !\n"
+
+#, c-format
+msgid "%s: Don't know what to do!\n"
+msgstr "%s: Je ne sais que faire !"
+
+#, c-format
+msgid "%s: Expected server name after -h!\n"
+msgstr "%s: Il faut un nom de serveur après l'option '-h' !\n"
+
+#, c-format
+msgid "%s: Expected reason text after -r!\n"
+msgstr "%s: Il faut le texte de la raison après l'option '-r' !\n"
+
+#, c-format
+msgid "%s: Unknown option '%c'!\n"
+msgstr "%s: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "%s: Unable to connect to server: %s\n"
+msgstr "%s: Impossible de se connecter au serveur : %s\n"
+
+#, c-format
+msgid "%s: Operation failed: %s\n"
+msgstr "%s: L'opération a échoué : %s\n"
+
+msgid "cancel: Error - expected hostname after '-h' option!\n"
+msgstr "annulation: erreur - il faut un nom de machine après l'option '-h' !\n"
+
+msgid "cancel: Error - expected username after '-u' option!\n"
+msgstr "annulation: erreur - il faut un nom d'utilisateur après l'option '-u' !\n"
+
+#, c-format
+msgid "cancel: Unknown option '%c'!\n"
+msgstr "annulation: Option '%c' inconnue !"
+
+#, c-format
+msgid "cancel: Unknown destination \"%s\"!\n"
+msgstr "annulation: Destination inconnue « %s » !"
+
+msgid "cancel: Unable to contact server!\n"
+msgstr "annulation: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "cancel: %s failed: %s\n"
+msgstr "annulation: %s a échoué :%s\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing value on line %d!\n"
+msgstr "cupsaddsmb: Il manque une valeur à la ligne n°%d !\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing double quote on line %d!\n"
+msgstr "cupsaddsmb: Il manque un \" à la ligne n°%d !\n"
+
+#, c-format
+msgid "cupsaddsmb: Bad option + choice on line %d!\n"
+msgstr "cupsaddsmb: Option et choix erronés à la ligne n°%d !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to connect to server \"%s\" for %s - %s\n"
+msgstr "cupsaddsmb: Impossible de se connecter au serveur « %s » pour %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - skipping!\n"
+msgstr "cupsaddsmb: Aucun fichier PPD pour l'imprimante « %s » - ignorée !\n"
+
+#, c-format
+msgid "cupsaddsmb: get-printer-attributes failed for \"%s\": %s\n"
+msgstr "cupsaddsmb: get-printer-attributes a échoué pour « %s » : %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to convert PPD file for %s - %s\n"
+msgstr "cupsaddsmb: Impossible de convertir le fichier PPD pour %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible de copier les fichiers du pilote d'impression pour Windows 2000 (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible de copier les fichiers du pilote d'impression pour CUPS (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible d'installer les fichiers du pilote d'impression pour Windows 2000 (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible de copier les fichiers du pilote d'impression pour Windows 9x (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible d'installer les fichiers du pilote d'impression pour Windows 9x (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
+msgstr "cupsaddsmb: Impossible de paramétrer le pilote d'impression pour Windows (%d) !\n"
+
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+"       cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -H samba-server  Use the named SAMBA server\n"
+"  -U samba-user    Authenticate using the named SAMBA user\n"
+"  -a               Export all printers\n"
+"  -h cups-server   Use the named CUPS server\n"
+"  -v               Be verbose (show commands)\n"
+msgstr ""
+"Utilisation : cupsaddsmb [options] imprimante1 ... imprimanteN\n"
+"              cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -H serveur-samba      Utiliser le serveur SAMBA désigné\n"
+"  -U utilisateur-samba  S'authentifier avec l'utilisateur SAMBA désigné\n"
+"  -a                    Exporter toutes les imprimantes\n"
+"  -h serveur-CUPS       Utiliser le serveur CUPS désigné\n"
+"  -v                    Être locace ( afficher les commandes )\n"
+
+msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
+msgstr "cupstestppd: L'option est -q incomptaible avec l'option -v.\n"
+
+msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
+msgstr "cupstestppd: L'option est -v incomptaible avec l'option -q.\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s\n"
+msgstr ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s on line %d.\n"
+msgstr ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s on line %d.\n"
+
+msgid "                REF: Page 42, section 5.2.\n"
+msgstr "                REF: Page 42, section 5.2.\n"
+
+msgid "                REF: Page 20, section 3.4.\n"
+msgstr "                REF: Page 20, section 3.4.\n"
+
+msgid "                REF: Pages 45-46, section 5.2.\n"
+msgstr "                REF: Pages 45-46, section 5.2.\n"
+
+msgid "                REF: Pages 42-45, section 5.2.\n"
+msgstr "                REF: Pages 42-45, section 5.2.\n"
+
+msgid "                REF: Pages 48-49, section 5.2.\n"
+msgstr "                REF: Pages 48-49, section 5.2.\n"
+
+msgid "                REF: Pages 52-54, section 5.2.\n"
+msgstr "                REF: Pages 52-54, section 5.2.\n"
+
+msgid "                REF: Page 15, section 3.2.\n"
+msgstr "                REF: Page 15, section 3.2.\n"
+
+msgid "                REF: Page 15, section 3.1.\n"
+msgstr "                REF: Page 15, section 3.1.\n"
+
+msgid "                REF: Pages 16-17, section 3.2.\n"
+msgstr "                REF: Pages 16-17, section 3.2.\n"
+
+msgid "                REF: Page 19, section 3.3.\n"
+msgstr "                REF: Page 19, section 3.3.\n"
+
+msgid "                REF: Page 27, section 3.5.\n"
+msgstr "                REF: Page 27, section 3.5.\n"
+
+msgid ""
+"\n"
+"    DETAILED CONFORMANCE TEST RESULTS\n"
+msgstr ""
+"\n"
+"    DETAILED CONFORMANCE TEST RESULTS\n"
+
+#, c-format
+msgid "        WARN    %s has no corresponding options!\n"
+msgstr "        WARN    %s has no corresponding options!\n"
+
+msgid " FAIL\n"
+msgstr " FAIL\n"
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultImageableArea\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED DefaultImageableArea\n"
+"                REF: Page 102, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD DefaultImageableArea %s!\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      **FAIL**  BAD DefaultImageableArea %s!\n"
+"                REF: Page 102, section 5.15.\n"
+
+msgid "        PASS    DefaultImageableArea\n"
+msgstr "        PASS    DefaultImageableArea\n"
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultPaperDimension\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED DefaultPaperDimension\n"
+"                REF: Page 103, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD DefaultPaperDimension %s!\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      **FAIL**  BAD DefaultPaperDimension %s!\n"
+"                REF: Page 103, section 5.15.\n"
+
+msgid "        PASS    DefaultPaperDimension\n"
+msgstr "        PASS    DefaultPaperDimension\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD Default%s %s\n"
+"                REF: Page 40, section 4.5.\n"
+msgstr ""
+"      **FAIL**  BAD Default%s %s\n"
+"                REF: Page 40, section 4.5.\n"
+
+#, c-format
+msgid "        PASS    Default%s\n"
+msgstr "        PASS    Default%s\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED Default%s\n"
+"                REF: Page 40, section 4.5.\n"
+msgstr ""
+"      **FAIL**  REQUIRED Default%s\n"
+"                REF: Page 40, section 4.5.\n"
+
+msgid "        PASS    FileVersion\n"
+msgstr "        PASS    FileVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED FileVersion\n"
+"                REF: Page 56, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED FileVersion\n"
+"                REF: Page 56, section 5.3.\n"
+
+msgid "        PASS    FormatVersion\n"
+msgstr "        PASS    FormatVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED FormatVersion\n"
+"                REF: Page 56, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED FormatVersion\n"
+"                REF: Page 56, section 5.3.\n"
+
+msgid "        PASS    LanguageEncoding\n"
+msgstr "        PASS    LanguageEncoding\n"
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageEncoding\n"
+"                REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED LanguageEncoding\n"
+"                REF: Pages 56-57, section 5.3.\n"
+
+msgid "        PASS    LanguageVersion\n"
+msgstr "        PASS    LanguageVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageVersion\n"
+"                REF: Pages 57-58, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED LanguageVersion\n"
+"                REF: Pages 57-58, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
+"                REF: Page 211, table D.1.\n"
+msgstr ""
+"      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
+"                REF: Page 211, table D.1.\n"
+
+msgid "        PASS    Manufacturer\n"
+msgstr "        PASS    Manufacturer\n"
+
+msgid ""
+"      **FAIL**  REQUIRED Manufacturer\n"
+"                REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED Manufacturer\n"
+"                REF: Pages 58-59, section 5.3.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
+"                REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
+"                REF: Pages 59-60, section 5.3.\n"
+
+msgid "        PASS    ModelName\n"
+msgstr "        PASS    ModelName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED ModelName\n"
+"                REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED ModelName\n"
+"                REF: Pages 59-60, section 5.3.\n"
+
+msgid "        PASS    NickName\n"
+msgstr "        PASS    NickName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED NickName\n"
+"                REF: Page 60, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED NickName\n"
+"                REF: Page 60, section 5.3.\n"
+
+msgid "        PASS    PageSize\n"
+msgstr "        PASS    PageSize\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Pages 99-100, section 5.14.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Pages 99-100, section 5.14.\n"
+
+msgid "        PASS    PageRegion\n"
+msgstr "        PASS    PageRegion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageRegion\n"
+"                REF: Page 100, section 5.14.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PageRegion\n"
+"                REF: Page 100, section 5.14.\n"
+
+msgid "        PASS    PCFileName\n"
+msgstr "        PASS    PCFileName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PCFileName\n"
+"                REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PCFileName\n"
+"                REF: Pages 61-62, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD Product - not \"(string)\".\n"
+"                REF: Page 62, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD Product - not \"(string)\".\n"
+"                REF: Page 62, section 5.3.\n"
+
+msgid "        PASS    Product\n"
+msgstr "        PASS    Product\n"
+
+msgid ""
+"      **FAIL**  REQUIRED Product\n"
+"                REF: Page 62, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED Product\n"
+"                REF: Page 62, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
+"                REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
+"                REF: Pages 62-64, section 5.3.\n"
+
+msgid "        PASS    PSVersion\n"
+msgstr "        PASS    PSVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PSVersion\n"
+"                REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PSVersion\n"
+"                REF: Pages 62-64, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+
+msgid "        PASS    ShortNickName\n"
+msgstr "        PASS    ShortNickName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED ShortNickName\n"
+"                REF: Page 64-65, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED ShortNickName\n"
+"                REF: Page 64-65, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD JobPatchFile attribute in file\n"
+"                REF: Page 24, section 3.4.\n"
+msgstr ""
+"      **FAIL**  BAD JobPatchFile attribute in file\n"
+"                REF: Page 24, section 3.4.\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 99, section 5.14.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Page 41, section 5.\n"\n"
+"                REF: Page 99, section 5.14.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 102, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 103, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 84, section 5.9\n"
+msgstr ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 84, section 5.9\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED %s does not define choice None!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"      **FAIL**  REQUIRED %s does not define choice None!\n"
+"                REF: Page 122, section 5.17\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 122, section 5.17\n"
+
+msgid " PASS\n"
+msgstr " PASS\n"
+
+#, c-format
+msgid ""
+"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"                REF: Page 122, section 5.17\n"
+
+msgid "        WARN    Default choices conflicting!\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"        WARN    Obsolete PPD version %.1f!\n"
+"                REF: Page 42, section 5.2.\n"
+msgstr ""
+"        WARN    Obsolete PPD version %.1f!\n"
+"                REF: Page 42, section 5.2.\n"
+
+msgid ""
+"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+"                REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+"                REF: Pages 56-57, section 5.3.\n"
+
+msgid ""
+"        WARN    Manufacturer required by PPD 4.3 spec.\n"
+"                REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+"        WARN    Manufacturer required by PPD 4.3 spec.\n"
+"                REF: Pages 58-59, section 5.3.\n"
+
+msgid ""
+"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+"                REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+"                REF: Pages 61-62, section 5.3.\n"
+
+msgid ""
+"        WARN    ShortNickName required by PPD 4.3 spec.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+"        WARN    ShortNickName required by PPD 4.3 spec.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+
+msgid ""
+"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+
+msgid ""
+"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+
+#, c-format
+msgid ""
+"        WARN    %s shares a common prefix with %s\n"
+"                REF: Page 15, section 3.2.\n"
+msgstr ""
+"        WARN    %s shares a common prefix with %s\n"
+"                REF: Page 15, section 3.2.\n"
+
+#, c-format
+msgid "    %d ERROR%s FOUND\n"
+msgstr "    %d ERROR%s FOUND\n"
+
+msgid "    NO ERRORS FOUND\n"
+msgstr "    NO ERRORS FOUND\n"
+
+#, c-format
+msgid ""
+"        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")\n"
+msgstr ""
+"        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")\n"
+msgid ""
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+"       program | cupstestppd [-q] [-r] [-v[v]] -\n"
+msgstr ""
+"Utilisation : cupstestppd [-q] [-r] [-v[v]] fichier1.ppd[.gz] [... fichierN.ppd[.gz]]\n"
+"              programme | cupstestppd [-q] [-r] [-v[v]] -\n"
+
+msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
+msgstr "lpstat: Il faut « completed » ou « not-completed » après l'option -W !\n"
+
+msgid "lpstat: The -b option requires a destination argument.\n"
+msgstr "lpstat: Il faut une destination après l'option '-b' !\n"
+
+msgid "Error: need hostname after '-h' option!\n"
+msgstr "Erreur : Il faut un nom d'hôte après l'option '-h' !\n"
+
+#, c-format
+msgid "lpstat: Unknown option '%c'!\n"
+msgstr "lpstat: Option '%c inconnue !\n"
+
+#, c-format
+msgid "lpstat: Invalid destination name in list \"%s\"!\n"
+msgstr "lpstat: Nom de destination incorrect dans la liste « %s » !\n"
+
+#, c-format
+msgid "lpstat: Unknown destination \"%s\"!\n"
+msgstr "lpstat: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "lpstat: Unable to connect to server %s on port %d: %s\n"
+msgstr "lpstat: Impossible de se connecter au serveur « %s » sur le port %d : %s\n"
+
+#, c-format
+msgid "lpstat: get-printers failed: %s\n"
+msgstr "lpstat: get-printers a échoué: %s\n"
+
+#, c-format
+msgid "%s accepting requests since Jan 01 00:00\n"
+msgstr "%s accepte les requêtes depuis le Jan 01 00:00\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s n'accepte pas les requêtes depuis le Jan 01 00:00 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since Jan 01 00:00\n"
+msgstr "%s/%s accepte les requêtes depuis le Jan 01 00:00\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s n'accepte pas les requêtes depuis le Jan 01 00:00 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "lpstat: get-classes failed: %s\n"
+msgstr "lpstat: get-classes a échoué : %s !\n"
+
+#, c-format
+msgid "members of class %s:\n"
+msgstr "membres de la classe %s :\n"
+
+#, c-format
+msgid "system default destination: %s/%s\n"
+msgstr "destination par défaut du système : %s/%s\n"
+
+#, c-format
+msgid "system default destination: %s\n"
+msgstr "destination par défaut du système : %s\n"
+
+#, c-format
+msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lpstat: erreur - la variable d'environnement désigne une destination\n"
+"                 inexistente « %s » !\n"
+
+msgid "no system default destination\n"
+msgstr "le système n'a pas de destination par défaut\n"
+
+#, c-format
+msgid "Output for printer %s is sent to remote printer %s on %s\n"
+msgstr ""
+"Ce qui est envoyé à l'imprimante %s est redirigé vers l'imprimante\n"
+"distante %s sur %s\n"
+
+#, c-format
+msgid "Output for printer %s is sent to %s\n"
+msgstr "Ce qui est envoyé à l'imprimante %s est redirigé vers %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
+msgstr ""
+"Ce qui est envoyé à l'imprimante %s/%s est redirigé vers l'imprimante\n"
+"distante %s sur %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to %s\n"
+msgstr "Ce qui est envoyé à l'imprimante %s/%s est redirigé vers %s\n"
+
+#, c-format
+msgid "device for %s: %s\n"
+msgstr "périphérique pour %s : %s\n"
+
+#, c-format
+msgid "device for %s/%s: %s\n"
+msgstr "périphérique pour %s/%s : %s \n"
+
+#, c-format
+msgid "lpstat: get-jobs failed: %s\n"
+msgstr "lpstat: get-jobs a échoué : %s !\n"
+
+#, c-format
+msgid "\tqueued for %s\n"
+msgstr "\tmis en file d'attente pour %s\n"
+
+#, c-format
+msgid "printer %s is idle.  enabled since %s\n"
+msgstr "l'imprimante %s ne fait rien ; elle est activée depuis le %s\n"
+
+#, c-format
+msgid "printer %s now printing %s-%d.  enabled since %s\n"
+msgstr "l'imprimante %s est en train d'imprimer %s-%d ; elle est activée depuis le %s\n""
+
+#, c-format
+msgid "printer %s disabled since %s -\n"
+msgstr "l'imprimante %s est désactivée depuis le %s -\n"
+
+msgid "\treason unknown\n"
+msgstr "\traison inconnue\n"
+
+msgid ""
+"\tForm mounted:\n"
+"\tContent types: any\n"
+"\tPrinter types: unknown\n"
+msgstr ""
+"\tFormat monté :\n"
+"\tTypes de contenu : any\n"
+"\tTypes d'imprimante : unknown\n"
+
+#, c-format
+msgid "\tDescription: %s\n"
+msgstr "\tDescription : %s\n"
+
+msgid "\tAlerts:"
+msgstr "\tAlertes :"
+
+#, c-format
+msgid "\tLocation: %s\n"
+msgstr "\tLieu : %s\n"
+
+msgid "\tConnection: remote\n"
+msgstr "\tConnexion : distante\n"
+
+#, c-format
+msgid "\tInterface: %s.ppd\n"
+msgstr "\tInterface : %s.ppd\n"
+
+msgid "\tConnection: direct\n"
+msgstr "\tConnexion : directe\n"
+
+#, c-format
+msgid "\tInterface: %s/interfaces/%s\n"
+msgstr "\tInterface : %s/interfaces/%s\n"
+
+#, c-format
+msgid "\tInterface: %s/ppd/%s.ppd\n"
+msgstr "\tInterface : %s/ppd/%s.ppd\n"
+
+msgid "\tOn fault: no alert\n"
+msgstr "\tEn cas d'erreur : pas d'alerte\n"
+
+msgid "\tAfter fault: continue\n"
+msgstr "\tAprès une erreur : poursuivre\n"
+
+msgid "\tUsers allowed:\n"
+msgstr "\tUtilisateurs autorisés :\n"
+
+msgid "\tUsers denied:\n"
+msgstr "\tUtilisateurs refusés :\n"
+
+msgid "\t\t(all)\n"
+msgstr "\t\t( tous )\n"
+
+msgid "\tForms allowed:\n"
+msgstr "\tFormats autorisés :\n"
+
+msgid "\t\t(none)\n"
+msgstr "\t\t( aucun )\n"
+
+msgid "\tBanner required\n"
+msgstr "\tBannière requise\n"
+
+msgid "\tCharset sets:\n"
+msgstr "\tJeux de caractères :\n"
+
+msgid "\tDefault pitch:\n"
+msgstr "\t« pitch » par défaut :\n"
+
+msgid "\tDefault page size:\n"
+msgstr "\tTaille de papier par défaut :\n"
+
+msgid "\tDefault port settings:\n"
+msgstr "\tParamètres par défaut du port :\n"
+
+#, c-format
+msgid "printer %s/%s is idle.  enabled since %s\n"
+msgstr "l'imprimante %s/%s ne fait rien ; elle est activée depuis le %s\n"
+
+#, c-format
+msgid "printer %s/%s now printing %s-%d.  enabled since %s\n"
+msgstr "l'imprimante %s/%s est en train d'imprimer %s-%d ; elle est activée depuis le %s\n""
+
+#, c-format
+msgid "printer %s/%s disabled since %s -\n"
+msgstr "l'imprimante %s/%s est désactivée depuis le %s -\n"
+
+msgid "scheduler is running\n"
+msgstr "l'ordonnanceur tourne\n"
+
+msgid "scheduler is not running\n"
+msgstr "l'ordonnanceur est arrêté\n"
+
+#, c-format
+msgid "lpadmin: Unable to connect to server: %s\n"
+msgstr "lpadmin: Impossible de se connecter au serveur « %s » !\n"
+
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible d'ajouter une imprimante à la classe :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected class name after '-c' option!\n"
+msgstr "lpadmin: Il faut un nom de classe après l'option '-c' !\n"
+
+msgid "lpadmin: Class name can only contain printable characters!\n"
+msgstr "lpadmin: Un nom de classe ne peut comporter que des caractères imprimables !\n"
+
+msgid "lpadmin: Expected printer name after '-d' option!\n"
+msgstr "lpadmin: Il faut un nom d'imprimante après l'option '-d' !\n"
+
+msgid "lpadmin: Printer name can only contain printable characters!\n"
+msgstr "lpadmin: Un nom d'imprimante ne peut comporter que des caractères imprimables !\n"
+
+msgid "lpadmin: Expected hostname after '-h' option!\n"
+msgstr "lpadmin: Il faut un nom d'hôte après l'option 'h' !\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le script d'interface :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected interface after '-i' option!\n"
+msgstr "lpadmin: Il faut une interface après l'option '-i' !\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script or PPD file:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le script d'interface ou le fichier PPD :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected model after '-m' option!\n"
+msgstr "lpadmin: Il faut un modèle après l'option '-m' !\n"
+
+msgid "lpadmin: Expected name=value after '-o' option!\n"
+msgstr "lpadmin: Il faut un argument du type option=valeur après l'option '-o' !\n"
+
+msgid "lpadmin: Expected printer after '-p' option!\n"
+msgstr "lpadmin: Il faut une imprimante après l'option '-p' !\n"
+
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de supprimer une imprimante de la classe :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected class after '-r' option!\n"
+msgstr "lpadmin: Il faut une classe après l'option '-r' !\n"
+
+msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
+msgstr ""
+"lpadmin: Il faut un argument du type allow/deny:liste_utilisateurs\n"
+"         après l'option '-u' !\n"
+
+#, c-format
+msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
+msgstr "lpadmin: Option allow/deny « %s » inconnue !\n"
+
+msgid ""
+"lpadmin: Unable to set the device URI:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir l'URI du périphérique :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected device URI after '-v' option!\n"
+msgstr "lpadmin: Il faut un URI de périphérique après l'option '-v' !\n"
+
+msgid "lpadmin: Expected printer or class after '-x' option!\n"
+msgstr "lpadmin: Il faut une imprimante ou une classe après l'option '-x' !\n"
+
+msgid ""
+"lpadmin: Unable to set the printer description:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir la description de l'imprimante :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected description after '-D' option!\n"
+msgstr "lpadmin: Il faut une description après l'option '-D' !\n"
+
+msgid "lpadmin: Expected file type(s) after '-I' option!\n"
+msgstr "lpadmin: Il faut un ou plusieurs types de fichier après l'option '-I' !\n"
+
+msgid "lpadmin: Warning - content type list ignored!\n"
+msgstr "lpadmin: Attention - les types de contenu sont ignorés !\n"
+
+msgid ""
+"lpadmin: Unable to set the printer location:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le lieu de l'imprimante :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected location after '-L' option!\n"
+msgstr "lpadmin: Il faut un lieu après l'option '-L' !\n"
+
+msgid ""
+"lpadmin: Unable to set the PPD file:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le fichier PPD :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected PPD after '-P' option!\n"
+msgstr "lpadmin: Il faut un fichier PPD après l'option '-P' !\n"
+
+#, c-format
+msgid "lpadmin: Unknown option '%c'!\n"
+msgstr "lpadmin: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpadmin: Unknown argument '%s'!\n"
+msgstr "lpadmin: Argument « %s » inconnu !\n"
+
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir les options de l'imprimante :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid ""
+"Usage:\n"
+"\n"
+"    lpadmin [-h server] -d destination\n"
+"    lpadmin [-h server] -x destination\n"
+"    lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
+"                       [-r remove-class] [-v device] [-D description]\n"
+"                       [-P ppd-file] [-o name=value]\n"
+"                       [-u allow:user,user] [-u deny:user,user]\n"
+"\n"
+msgstr ""
+"Utilisation :\n"
+"\n"
+"    lpadmin [-h serveur] -d destination\n"
+"    lpadmin [-h serveur] -x destination\n"
+"    lpadmin [-h serveur] -p imprimante [-c classe] [-i interface] [-m modèle]\n"
+"                        [-r classe] [-v URI] [-D description]\n"
+"                        [-P fichier-ppd] [-o option=valeur]\n"
+"                        [-u allow:util.,util.] [-u deny:util.,util.]\n"
+"\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file: %s\n"
+msgstr "lpadmin: Impossible de créer un fichier temporaire : %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open file \"%s\": %s\n"
+msgstr "lpadmin: Impossible d'ouvrir le fichier « %s » : %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set model) failed: %s\n"
+msgstr "lpadmin: add-printer ( définition du modèle ) a échoué : %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set description) failed: %s\n"
+msgstr "lpadmin: add-printer ( définition de la description ) a échoué : %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set location) failed: %s\n"
+msgstr "lpadmin: add-printer ( définition du lieu ) a échoué : %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file - %s\n"
+msgstr "lpadmin: Impossible de créer un fichier temporaire : %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
+msgstr "lpadmin: Impossible d'ouvrir le fichier PPD « %s » : %s\n"
+
+#, c-format
+msgid "lpadmin: %s failed: %s\n"
+msgstr "lpadmin: %s a échoué : %s\n"
+
+msgid "lp: Expected destination after -d option!\n"
+msgstr "lp: Il faut une destination après l'option '-d' !\n"
+
+msgid "lp: Expected form after -f option!\n"
+msgstr "lp: Il faut un format après l'option '-f' !\n"
+
+msgid "lp: Expected hostname after -h option!\n"
+msgstr "lp: Il faut un nom d'hôte après l'option '-h' !\n"
+
+msgid "lp: Expected job ID after -i option!\n"
+msgstr "lp: Il faut un numéro de tâche après l'option '-i' !\n"
+
+msgid "lp: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "lp: Erreur - impossible d'imprimer et modifier les tâches en même temps !\n"
+
+msgid "lp: Error - bad job ID!\n"
+msgstr "lp: Erreur - numéro de tâche incorrect !\n"
+
+msgid "lp: Expected copies after -n option!\n"
+msgstr "lp: Il faut un nombre de copies après l'option '-n' !\n"
+
+msgid "lp: Expected option string after -o option!\n"
+msgstr "lp: Il faut une chaîne d'option \"nom=valeur\" après l'option '-o' !\n"
+
+#, c-format
+msgid "lp: Expected priority after -%c option!\n"
+msgstr "lp: Il faut une priorité après l'option '-%c' !\n"
+
+msgid "lp: Priority must be between 1 and 100.\n"
+msgstr "lp: La priorité doit être comprise entre 1 et 100.\n"
+
+msgid "lp: Expected title after -t option!\n"
+msgstr "lp: Il faut un titre après l'option '-t' !\n"
+
+msgid "lp: Expected mode list after -y option!\n"
+msgstr "lp: Il faut une liste de modes après l'option '-y' !\n"
+
+msgid "lp: Warning - mode option ignored!\n"
+msgstr "lp: Attention - l'option « mode » est ignorée !\n"
+
+msgid "lp: Expected hold name after -H option!\n"
+msgstr "lp: Il faut un code de retenue après l'option '-H' !\n"
+
+msgid "lp: Need job ID (-i) before \"-H restart\"!\n"
+msgstr "lp: Il faut un numéro de tâche ( '-i' ) avant '-H restart' !\n"
+
+msgid "lp: Expected page list after -P option!\n"
+msgstr "lp: Il faut une liste de pages après l'option '-P' !\n"
+
+msgid "lp: Expected character set after -S option!\n"
+msgstr "lp: Il faut un jeu de caractères après l'option '-S' !\n"
+
+msgid "lp: Warning - character set option ignored!\n"
+msgstr "lp: Attention - l'option « jeu de caractères » est ignorée !\n"
+
+msgid "lp: Expected content type after -T option!\n"
+msgstr "lp: Il faut un type de contenu après l'option '-T' !\n"
+
+msgid "lp: Warning - content type option ignored!\n"
+msgstr "lp: Attention - l'option « type de contenu » est ignorée !\n"
+
+#, c-format
+msgid "lp: Unknown option '%c'!\n"
+msgstr "lp: Option '%c' inconnue !\n"
+
+msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"lp: Erreur - impossible d'imprimer depuis l'entrée standard si un fichier\n"
+"             ou un numéro de tâche est spécifié !\n"
+
+#, c-format
+msgid "lp: Unable to access \"%s\" - %s\n"
+msgstr "lp: Impossible d'accéder à « %s » - %s\n"
+
+#, c-format
+msgid "lp: Too many files - \"%s\"\n"
+msgstr "lp: Trop de fichiers - « %s »\n"
+
+msgid "lp: error - no default destination available.\n"
+msgstr "lp: Erreur - aucune destination par défaut n'est disponible.\n"
+
+msgid "lp: error - scheduler not responding!\n"
+msgstr "lp: Erreur - l'odonnanceur ne répond pas !\n"
+
+#, c-format
+msgid "lp: Error - unable to create temporary file \"%s\" - %s\n"
+msgstr "lp: Erreur - impossible de créer le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "lp: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lp: Erreur - impossible d'écrire dans le fichier temporaire « %s » - %s\n"
+
+msgid "lp: stdin is empty, so no job has been sent.\n"
+msgstr "lp: l'entrée standard est vide, donc aucune tâche n'a été envoyée.\n"
+
+#, c-format
+msgid "lp: unable to print file: %s\n"
+msgstr "lp: impossible d'imprimer le fichier - %s\n"
+
+#, c-format
+msgid "request id is %s-%d (%d file(s))\n"
+msgstr "l'identifiant de requête est %s-%d ( %d fichier(s) )\n"
+
+#, c-format
+msgid "lp: restart-job failed: %s\n"
+msgstr "lp: restart-job a échoué : %s\n"
+
+#, c-format
+msgid "lp: set-job-attributes failed: %s\n"
+msgstr "lp: set-job-attributes a échoué : %s\n"
+
+#, c-format
+msgid "lpinfo: Unable to connect to server: %s\n"
+msgstr "lpinfo: Impossible de se connecter au serveur : %s\n"
+
+#, c-format
+msgid "lpinfo: Unknown option '%c'!\n"
+msgstr "lpinfo: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpinfo: Unknown argument '%s'!\n"
+msgstr "lpinfo: Argument '%s' inconnu !\n"
+
+#, c-format
+msgid "lpinfo: cups-get-devices failed: %s\n"
+msgstr "lpinfo: cups-get-devices a échoué : %s\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+msgstr ""
+"Matériel :   URI = %s\n"
+"          classe = %s\n"
+"            info = %s\n"
+"   marque/modèle = %s\n"
+
+#, c-format
+msgid "lpinfo: cups-get-ppds failed: %s\n"
+msgstr "lpinfo: cups-get-ppds a échoué : %s\n"
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+msgstr ""
+"Modèle :        nom = %s\n"
+"   langue naturelle = %s\n"
+"      marque/modèle = %s\n"
+
+#, c-format
+msgid "lpmove: Unknown option '%c'!\n"
+msgstr "lpmove: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpmove: Unknown argument '%s'!\n"
+msgstr "lpmove: Argument '%s' inconnu !\n"
+
+msgid "Usage: lpmove job dest\n"
+msgstr "Utilisation : lpmove tâche destination\n"
+
+#, c-format
+msgid "lpmove: Unable to connect to server: %s\n"
+msgstr "lpmove: Impossible de se connecter au serveur : %s\n"
+
+#, c-format
+msgid "lpmove: move-job failed: %s\n"
+msgstr "lpmove: move-job a échoué : %s\n""
+
+msgid "lpoptions: Unknown printer or class!\n"
+msgstr "lpoptions: Imprimante ou classe inconnue !\n"
+
+msgid "lpoptions: No printers!?!\n"
+msgstr "lpoptions: Pas d'imprimante !?!\n"
+
+#, c-format
+msgid "lpoptions: Unable to add printer or instance: %s\n"
+msgstr "lpoptions: Impossible d'ajouter l'imprimante ou l'instance : %s\n"
+
+#, c-format
+msgid "lpoptions: Destination %s has no PPD file!\n"
+msgstr "lpoptions: La destination %s n'a pas de fichier PPD !\n"
+
+#, c-format
+msgid "lpoptions: Unable to open PPD file for %s!\n"
+msgstr "lpoptions: Impossible d'ouvrir le fichier PPD pour %s !\n"
+
+msgid ""
+"Usage: lpoptions [-h server] [-E] -d printer\n"
+"       lpoptions [-h server] [-E] [-p printer] -l\n"
+"       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
+"       lpoptions [-h server] [-E] -x printer\n"
+msgstr ""
+"Utilisation : lpoptions [-h serveur] [-E] -d imprimante\n"
+"              lpoptions [-h serveur] [-E] [-p imprimante] -l\n"
+"              lpoptions [-h serveur] [-E] -p imprimante -o option[=valeur] ...\n"
+"              lpoptions [-h serveur] [-E] -x imprimante\n"
+
+msgid "lppasswd: Only root can add or delete passwords!\n"
+msgstr "lppasswd: Seul l'utilisateur « root » peut ajouter ou supprimer des mots de passe !\n"
+
+msgid "Enter old password:"
+msgstr "Ancien mot de passe :"
+
+#, c-format
+msgid "lppasswd: Unable to copy password string: %s\n"
+msgstr "lppasswd: Impossible de copier le mot de passe : %s\n"
+
+msgid "Enter password:"
+msgstr "Entrez le nouveau mot de passe :"
+
+msgid "Enter password again:"
+msgstr "Confirmez le nouveau mot de passe :"
+
+msgid "lppasswd: Sorry, passwords don't match!\n"
+msgstr "lppasswd: Désolé, les mots de passe sont différents !\n"
+
+msgid ""
+"lppasswd: Sorry, password rejected.\n"
+"Your password must be at least 6 characters long, cannot contain\n"
+"your username, and must contain at least one letter and number.\n"
+msgstr ""
+"lppasswd: Désolé, mot de passe refusé.\n"
+"Votre mot de passe doit comporter au moins 6 caractères, au moins une lettre\n"
+"et un nombre, et ne peut contenir votre nom d'utilisateur.\n"
+
+msgid "lppasswd: Password file busy!\n"
+msgstr "lppasswd: Le fichier des mots de passe exidte déjà !\n"
+
+#, c-format
+msgid "lppasswd: Unable to open password file: %s\n"
+msgstr "lppasswd: Impossible d'ouvrir le fichier des mots de passe: %s\n"
+
+#, c-format
+msgid "lppasswd: Unable to write to password file: %s\n"
+msgstr "lppasswd: Impossible d'écrire dans le fichier des mots de passe : %s\n"
+
+#, c-format
+msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
+msgstr "lppasswd: l'utilisateur « %s » et/ou le groupe « %s » n'existe(nt) pas !\n"
+
+msgid "lppasswd: Sorry, password doesn't match!\n"
+msgstr "lppasswd: Désolé, le mot de passe est erroné !\n"
+
+msgid "lppasswd: Password file not updated!\n"
+msgstr "lppasswd: Le fichier des mots de passe n'a pas été mis-à-jour !\n"
+
+#, c-format
+msgid "lppasswd: failed to backup old password file: %s\n"
+msgstr "lppasswd: impossible de sauvegarder l'ancien fichier des mots de passe : %s\n"
+
+#, c-format
+msgid "lppasswd: failed to rename password file: %s\n"
+msgstr "lppasswd: impossible de renommer le fichier des mots de passe : %s\n"
+
+msgid "Usage: lppasswd [-g groupname]\n"
+msgstr "Utilisation : lppasswd [-g nom_groupe]\n"
+
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+"       lppasswd [-g groupname] -a [username]\n"
+"       lppasswd [-g groupname] -x [username]\n"
+msgstr ""
+"Utilisation : lppasswd [-g nom_groupe] [nom_utilisateur]\n"
+"              lppasswd [-g nom_groupe] -a [nom_utilisateur]\n"
+"              lppasswd [-g nom_groupe] -x [nom_utilisateur]\n"
+
+msgid "Start Printer"
+msgstr "Démarrer l'imprimante"
+
+msgid "Stop Printer"
+msgstr "Arrêter l'imprimante"
+
+msgid "Start Class"
+msgstr "Démarrer la classe"
+
+msgid "Stop Class"
+msgstr "Arrêter la classe"
+
+msgid "Accept Jobs"
+msgstr "Accepter les tâches"
+
+msgid "Reject Jobs"
+msgstr "Refuser les tâches"
+
+msgid "Purge Jobs"
+msgstr "Effacer les tâches"
+
+msgid "Set As Default"
+msgstr "Choisir par défaut"
+
+msgid "Administration"
+msgstr "Administration"
+
+msgid "Modify Class"
+msgstr "Modifier la classe"
+
+msgid "Add Class"
+msgstr "Ajouter une classe"
+
+msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgstr "Le nom de classe doit comporter au plus 127 caractères, tous imprimables, sans espace, '/' ni '#'."
+
+msgid "Unable to modify class:"
+msgstr "Impossible de modifier la classe :"
+
+msgid "Unable to add class:"
+msgstr "Impossible d'ajouter la classe :"
+
+msgid "Modify Printer"
+msgstr "Modifier l'imprimante"
+
+msgid "Add Printer"
+msgstr "Ajouter une imprimante"
+
+msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgstr "Le nom d'imprimante doit comporter au plus 127 caractères, tous imprimables, sans espace, '/' ni '#'."
+
+msgid "Unable to get list of printer drivers:"
+msgstr "Impossible d'obtenir la liste des pilotes pour l'imprimante:"
+
+msgid "Unable to modify printer:"
+msgstr "Impossible de modifier l'imprimante :"
+
+msgid "Unable to add printer:"
+msgstr "Impossible d'ajouter l'imprimante :"
+
+msgid "Set Printer Options"
+msgstr "Définir les options de l'imprimante"
+
+msgid "Missing form variable!"
+msgstr "Un champ du formulaire HTML n'a pas été rempli !"
+
+msgid "Unable to get PPD file!"
+msgstr "Impossible de trouver le fichier PPD !"
+
+msgid "Unable to open PPD file:"
+msgstr "Impossible d'ouvrir le fichier PPD :"
+
+msgid "Banners"
+msgstr "Bannières"
+
+msgid "Starting Banner"
+msgstr "Début de la bannière"
+
+msgid "Ending Banner"
+msgstr "Fin de la bannière"
+
+msgid "Policies"
+msgstr "Politiques"
+
+msgid "Error Policy"
+msgstr "Politique d'erreur"
+
+msgid "Operation Policy"
+msgstr "Politique des opérations"
+
+msgid "PS Binary Protocol"
+msgstr "Protocole binaire PS"
+
+msgid "None"
+msgstr "Auncun(e)"
+
+msgid "Unable to set options:"
+msgstr "Impossible de définir les options :"
+
+msgid "Change Settings"
+msgstr "Modifier les paramètres"
+
+msgid "Unable to change server settings:"
+msgstr "Impossible de modifier les paramètres du serveur :"
+
+msgid "Unable to upload cupsd.conf file:"
+msgstr "Impossible de transmettre le fichier cupsd.conf :"
+
+msgid "Edit Configuration File"
+msgstr "Éditer le fichier de configuration"
+
+msgid "Unable to create temporary file:"
+msgstr "Impossible de créer le fichier temporaire :"
+
+msgid "Unable to access cupsd.conf file:"
+msgstr "Impossible d'accéder au fichier cupsd.conf :"
+
+msgid "Unable to edit cupsd.conf files larger than 1MB!"
+msgstr "Impossible d'éditer des fichiers cupsd.conf de taille supérieure à 1Mo !"
+
+msgid "Delete Class"
+msgstr "Supprimer la classe"
+
+msgid "Unable to delete class:"
+msgstr "Impossible de supprimer la classe :"
+
+msgid "Delete Printer"
+msgstr "Supprimer l'imprimante"
+
+msgid "Unable to delete printer:"
+msgstr "Impossible de supprimer l'imprimante :"
+
+msgid "Export Printers to Samba"
+msgstr "Exporter les imprimantes vers SAMBA"
+
+msgid "Unable to fork process!"
+msgstr "Impossible de faire un « fork » !"
+
+msgid "Unable to connect to server!"
+msgstr "Impossible de se connecter au serveur !"
+
+msgid "Unable to get printer attributes!"
+msgstr "Impossible de récupérer les attributs de l'imprimante !"
+
+msgid "Unable to convert PPD file!"
+msgstr "Impossible de convertir le fichier PPD !"
+
+msgid "Unable to copy Windows 2000 printer driver files!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 2000 !"
+
+msgid "Unable to install Windows 2000 printer driver files!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 2000 !"
+
+msgid "Unable to copy Windows 9x printer driver files!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 9x !"
+
+msgid "Unable to install Windows 9x printer driver files!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 9x !"
+
+msgid "Unable to set Windows printer driver!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows !"
+
+msgid "No printer drivers found!"
+msgstr "Aucun pilote trouvé pour l'imprimante !"
+
+msgid "Unable to execute cupsaddsmb command!"
+msgstr "Impossible d'exécuter la commande cupsaddsmb !"
+
+#, c-format
+msgid "cupsaddsmb failed with status %d"
+msgstr "cupsaddsmb a échoué avec le statut %d"
+
+#, c-format
+msgid "cupsaddsmb crashed on signal %d"
+msgstr "cupsaddsmb s'est terminé inopinément sur réception du signal %d"
+
+msgid "A Samba username is required to export printer drivers!"
+msgstr "Il faut un nom d'utilisateur SAMBA pour exporter les pilotes d'imprimante !"
+
+msgid "A Samba password is required to export printer drivers!"
+msgstr "Il faut un mot de passe SAMBA pour exporter les pilotes d'imprimante !"
+
+msgid "Unable to open cupsd.conf file:"
+msgstr "Impossible d'ouvrir le fichier cupsd.conf :"
+
+msgid "Unable to change printer:"
+msgstr "Impossible de modifier l'imprimante :"
+
+msgid "Set Allowed Users"
+msgstr "Définir les autorisations"
+
+msgid "Unable to get printer attributes:"
+msgstr "Impossible de récupérer les attributs de l'imprimante :"
+
+msgid "Set Publishing"
+msgstr "Publier"
+
+msgid "Unable to change printer-is-shared attribute:"
+msgstr "Impossible de modifier l'attribut « printer-is-shared » :"
+
+msgid "Classes"
+msgstr "Classes"
+
+msgid "Unable to get class list:"
+msgstr "Impossible d'obtenir la liste des classes :"
+
+msgid "Unable to get class status:"
+msgstr "Impossible d'obtenir l'état de la classe :"
+
+msgid "Move Job"
+msgstr "Transférer la tâche"
+
+msgid "Unable to find destination for job!"
+msgstr "Impossible de trouver la destination de la tâche !"
+
+msgid "Move All Jobs"
+msgstr "Transférer toutes les tâches"
+
+msgid "Unable to move job"
+msgstr "Impossible de transférer la tâche !"
+
+msgid "Unable to move jobs"
+msgstr "Impossible de transférer les tâches !"
+
+msgid "Print Test Page"
+msgstr "Imprimer la page de test"
+
+msgid "Unable to print test page:"
+msgstr "Impossible d'imprimer la page de test :"
+
+msgid "Jobs"
+msgstr "Tâches"
+
+msgid "Job operation failed:"
+msgstr "L'opération sur la tâche a échoué :"
+
+msgid "Printers"
+msgstr "Imprimantes"
+
+msgid "Unable to get printer list:"
+msgstr "Impossible d'obtenir la liste des imprimantes :"
+
+msgid "Unable to get printer status:"
+msgstr "Impossible d'obtenir l'état de l'imprimante :"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Unable to open PPD file"
+msgstr "Impossible d'ouvrir le fichier PPD !"
+
+msgid "NULL PPD file pointer"
+msgstr "Pointeur de fichier PPD NUL !"
+
+msgid "Memory allocation error"
+msgstr "Problème d'allocation de mémoire"
+
+msgid "Missing PPD-Adobe-4.x header"
+msgstr "Il manque l'entête PPD-Adobe-4.x"
+
+msgid "Missing value string"
+msgstr "Il manque la valeur"
+
+msgid "Internal error"
+msgstr "Erreur interne"
+
+msgid "Bad OpenGroup"
+msgstr "OpenGroup erroné"
+
+msgid "OpenGroup without a CloseGroup first"
+msgstr "OpenGroup sans de CloseGroup d'abord"
+
+msgid "Bad OpenUI/JCLOpenUI"
+msgstr "OpenUI/JCLOpenUI erroné"
+
+msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
+msgstr "OpenUI/JCLOpenUI sans de CloseUI/JCLCloseUI d'abord"
+
+msgid "Bad OrderDependency"
+msgstr "OrderDependency erroné"
+
+msgid "Bad UIConstraints"
+msgstr "UIConstraints erroné"
+
+msgid "Missing asterisk in column 1"
+msgstr "Il manque un astérisque à la colonne 1"
+
+msgid "Line longer than the maximum allowed (255 characters)"
+msgstr "Ligne plus longue que les 255 caractères autorisés"
+
+msgid "Illegal control character"
+msgstr "Caractère de contrôle incorrect"
+
+msgid "Illegal main keyword string"
+msgstr "Mot-clé essentiel incorrect"
+
+msgid "Illegal option keyword string"
+msgstr "Mot-clé d'option incorrect"
+
+msgid "Illegal translation string"
+msgstr "Traduction incorrecte"
+
+msgid "Illegal whitespace character"
+msgstr "Caractère « espace blanc » incorrect"
+
+msgid "Bad custom parameter"
+msgstr "Paramètre de personnalisation incorrect"
+
+msgid "Unknown"
+msgstr "Inconnu(e)"
+
+msgid "Custom"
+msgstr "Personnalisation"
+
+msgid "JCL"
+msgstr "JCL ( Langage de contrôle de tâche )"
+
+msgid "No authentication information provided!"
+msgstr "Pas d'information d'authentification !"
+
+#, c-format
+msgid "Password for %s required to access %s via SAMBA: "
+msgstr "Il faut un mot de passe à %s pour accéder à %s via SAMBA : "
+
+#, c-format
+msgid "Running command: %s %s -N -U '%s%%%s' -c '%s'\n"
+msgstr "Exécute la commande : %s %s -N -U '%s%%%s' -c '%s'\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: Impossible d'exécuter « %s » : %s\n"
+
+msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
+msgstr "cupsaddsmb: Aucun pilote d'impression pour Windows n'est installé !\n"
+
+msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "cupsaddsmb: Attention, aucun pilote d'impression pour Windows 2000 n'est installé !\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is already a member of class %s.\n"
+msgstr "lpadmin: L'imprimante %s est déjà membre de la classe %s.\n"
+
+msgid "lpadmin: No member names were seen!\n"
+msgstr "lpadmin: Aucun nom de membre trouvé !\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is not a member of class %s.\n"
+msgstr "lpadmin: L'imprimante %s n'est pas membre de la classe %s.\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+msgstr ""
+"Matériel :   URI = %s\n"
+"          classe = %s\n"
+"            info = %s\n"
+"   marque/modèle = %s\n"
+"     ID matériel = %s\n"
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+msgstr ""
+"Modèle :        nom = %s\n"
+"   langue naturelle = %s\n"
+"      marque/modèle = %s\n"
+"     ID matériel = %s\n"
+
+
+msgid "Usage: lpmove job/src dest\n"
+msgstr "Utilisation : lpmove tâche/source destination\n"
+
+msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
+msgstr "lpstat: Il faut « completed » ou « not-completed » après l'option -W !\n"
+
+#, c-format
+msgid "%s accepting requests since %s\n"
+msgstr "%s accepte les requêtes depuis le %s\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s n'accepte pas les requêtes depuis le %s -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since %s\n"
+msgstr "%s/%s accepte les requêtes depuis le %s\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s n'accepte pas les requêtes depuis le %s -\n"
+"\t%s\n"
+
+msgid "lpc> "
+msgstr "lpc> "
+
+#, c-format
+msgid "%s: Unable to contact server!\n"
+msgstr "%s: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-U' option!\n"
+msgstr "%s: Erreur - il faut un nom d'utilisateur après l'option '-U' !\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s/%s\"!\n"
+msgstr "%s: Erreur - destination « %s/%s » inconnue !\n"
+
+#, c-format
+msgid "%s: Unknown destination \"%s\"!\n"
+msgstr "%s: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-h' option!\n"
+msgstr "%s: Erreur - il faut un nom de machine après l'option '-h' !\n"
+
+#, c-format
+msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: Erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+#, c-format
+msgid "%s: error - no default destination available.\n"
+msgstr "%s: Erreur - aucune destination par défaut n'est disponible.\n"
+
+msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr "Utilisation : lpq [-P dest] [-U nom_utilisateur] [-h nom_machine[:port]] [-l] [+intervalle]\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-H' option!\n"
+msgstr "%s: Erreur - il faut un nom de machine après l'option '-H' !\n"
+
+#, c-format
+msgid "%s: Error - expected value after '-%c' option!\n"
+msgstr "%s: Erreur - il faut une valeur après l'option '-%c' !\n"
+
+#, c-format
+msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "%s: Attention - le modificateur de format '%c' n'est pas géré - l'affichage pourrait être incorrect !\n"
+
+#, c-format
+msgid "%s: error - expected option=value after '-o' option!\n"
+msgstr "%s: Erreur - il faut un argument du type option=valeur après l'option '-o' !\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-P' option!\n"
+msgstr "%s: Erreur - il faut une destination après l'option '-P' !\n"
+
+#, c-format
+msgid "%s: Error - expected copy count after '-#' option!\n"
+msgstr "%s: Erreur - il faut un nombre de copies après l'option '-#' !\n"
+
+#, c-format
+msgid "%s: Error - expected name after '-%c' option!\n"
+msgstr "%s: Erreur - il faut un nom après l'option '-%c' !\n"
+
+#, c-format
+msgid "%s: Error - unknown option '%c'!\n"
+msgstr "%s: Erreur - option '%c' inconnue !\n"
+
+#, c-format
+msgid "%s: Error - unable to access \"%s\" - %s\n"
+msgstr "%s: Erreur - impossible d'accéder à « %s » - %s\n"
+
+#, c-format
+msgid "%s: Error - too many files - \"%s\"\n"
+msgstr "%s: Erreur - trop de fichiers - « %s »\n"
+
+#, c-format
+msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: Erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+#, c-format
+msgid "%s: Error - no default destination available.\n"
+msgstr "%s: Erreur - aucune destination par défaut n'est disponible.\n"
+
+#, c-format
+msgid "%s: Error - scheduler not responding!\n"
+msgstr "%s: Erreur - l'ordonnanceur ne répond pas !\n"
+
+#, c-format
+msgid "%s: Error - unable to create temporary file \"%s\" - %s\n"
+msgstr "%s: Erreur - impossible de créer le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "%s: Error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "%s: Erreur - impossible d'écrire dans le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "%s: Error - stdin is empty, so no job has been sent.\n"
+msgstr "%s: Erreur - stdin est vide, donc aucune tâche n'a été envoyée.\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s\"!\n"
+msgstr "%s: Erreur - destination « %s » inconnue !\n"
+
+#, c-format
+msgid "%s: Error - expected reason text after '-r' option!\n"
+msgstr "%s: Erreur - il faut le texte de la raison après l'option '-r' !\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-u' option!\n"
+msgstr "%s: Erreur - il faut un nom d'utilisateur après l'option '-u' !\n"
+
+#, c-format
+msgid "%s: %s failed: %s\n"
+msgstr ""%s: %s a échoué : %s"
+
+#, c-format
+msgid "%s: Error - expected destination after '-d' option!\n"
+msgstr "%s: Erreur - il faut une destination après l'option '-d' !\n"
+
+#, c-format
+msgid "%s: Error - expected form after '-f' option!\n"
+msgstr "%s: Erreur - il faut un format après l'option '-f' !\n"
+
+#, c-format
+msgid "%s: Warning - form option ignored!\n"
+msgstr "%s: Attention - l'option « format » est ignorée !\n"
+
+#, c-format
+msgid "%s: Expected job ID after '-i' option!\n"
+msgstr "%s: Il faut un numéro de tâche après l'option '-i' !\n"
+
+#, c-format
+msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "%s: Erreur - impossible d'imprimer et modifier les tâches en même temps !\n"
+
+#, c-format
+msgid "%s: Error - bad job ID!\n"
+msgstr "%s: Erreur - numéro de tâche incorrect !\n"
+
+#, c-format
+msgid "%s: Error - expected copies after '-n' option!\n"
+msgstr "%s: Erreur - il faut un nombre de copies après l'option '-n' !\n"
+
+#, c-format
+msgid "%s: Error - expected option string after '-o' option!\n"
+msgstr "%s: Erreur - il faut une chaîne d'option \"nom=valeur\" après l'option '-o' !\n"
+
+#, c-format
+msgid "%s: Error - expected priority after '-%c' option!\n"
+msgstr "%s: Erreur - il faut une priorité après l'option '-%c' !\n"
+
+#, c-format
+msgid "%s: Error - priority must be between 1 and 100.\n"
+msgstr "%s: Erreur - la priorité doit être comprise entre 1 et 100.\n"
+
+#, c-format
+msgid "%s: Error - expected title after '-t' option!\n"
+msgstr "%s: Erreur - il faut un titre après l'option '-t'  !\n"
+
+#, c-format
+msgid "%s: Error - expected mode list after '-y' option!\n"
+msgstr "%s: Erreur - il faut une liste de modes après l'option '-y' !\n"
+
+#, c-format
+msgid "%s: Warning - mode option ignored!\n"
+msgstr "%s: Attention - l'option « mode » est ignorée !\n"
+
+#, c-format
+msgid "%s: Error - expected hold name after '-H' option!\n"
+msgstr "%s: Erreur - il faut un code de retenue après l'option '-H' !\n"
+
+#, c-format
+msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
+msgstr "%s: Il faut un numéro de tâche ( '-i' ) avant '-H restart' !\n"
+
+#, c-format
+msgid "%s: Error - expected page list after '-P' option!\n"
+msgstr "%s: Erreur - il faut une liste de pages après l'option '-P' !\n"
+
+#, c-format
+msgid "%s: Error - expected character set after '-S' option!\n"
+msgstr "%s: Erreur - il faut un jeu de caractères après l'option '-S' !\n"
+
+#, c-format
+msgid "%s: Warning - character set option ignored!\n"
+msgstr "%s: Attention - l'option « jeu de caractères » est ignorée !\n"
+
+#, c-format
+msgid "%s: Error - expected content type after '-T' option!\n"
+msgstr "%s: Erreur - il faut un type de contenu après l'option '-T' !\n"
+
+#, c-format
+msgid "%s: Warning - content type option ignored!\n"
+msgstr "%s: Attention - l'option « type de contenu » est ignorée !\n"
+
+#, c-format
+msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: Erreur - impossible d'imprimer depuis l'entrée standard si un fichier\n"
+"             ou un numéro de tâche est spécifié !\n"
+
+#, c-format
+msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
+msgstr "%s: Erreur - il faut « completed », « not-completed », ou « all » après l'option -W !\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-b' option!\n"
+msgstr "%s: Erreur - il faut une destination après l'option '-b' !\n"
+
+#, c-format
+msgid "%s: Invalid destination name in list \"%s\"!\n"
+msgstr "%s: Erreur - nom de destination incorrect dans la liste « %s » !\n"
+
+#, c-format
+msgid "%s: Unable to connect to server\n"
+msgstr "%s: Impossible de se connecter au serveur !\n"
+
+msgid "Print Job:"
+msgstr "Imprimer la tâche :"
+
+msgid "pending"
+msgstr "en attente"
+
+msgid "held"
+msgstr "retenue"
+
+msgid "processing"
+msgstr "en cours"
+
+msgid "stopped"
+msgstr "arrêtée"
+
+msgid "canceled"
+msgstr "annulée"
+
+msgid "aborted"
+msgstr "abandonnée"
+
+msgid "completed"
+msgstr "terminée"
+
+msgid "unknown"
+msgstr "inconnue"
+
+msgid "untitled"
+msgstr "sans titre"
+
+msgid "Printer:"
+msgstr "Imprimante :"
+
+msgid "idle"
+msgstr "inactive"
+
+msgid "Missing notify-subscription-ids attribute!"
+msgstr "Il manque l'attibut notify-subscription-ids"
+
+msgid "Job subscriptions cannot be renewed!"
+msgstr "Les souscriptions de tâche ne peuvent être renouvelées !"
+
+
+I AM HERE
+
+
+msgid "cupsd: Expected config filename after \"-c\" option!\n"
+msgstr "cupsd: Il faut un nom de fichier de configuration après l'option '-c' !\n"
+
+msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
+msgstr "cupsd: la gestion de launchd(8) n'a pas été compilée - exécution en mode normal.\n"
+
+#, c-format
+msgid "cupsd: Unknown option \"%c\" - aborting!\n"
+msgstr "cupsd: Option « %c » inconnue - abandon !\n"
+
+#, c-format
+msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
+msgstr "cupsd: Argument « %s » inconnu - abandon !\n"
+
+msgid ""
+"Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c config-file      Load alternate configuration file\n"
+"-f                  Run in the foreground\n"
+"-F                  Run in the foreground but detach\n"
+"-h                  Show this usage message\n"
+"-l                  Run cupsd from launchd(8)\n"
+msgstr ""
+"Utilisation : cupsd [-c fichier-config] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c fichier-config   Charge un autre fichier de configuration\n"
+"-f                  Exécution au premier plan\n"
+"-F                  Exécution au premier plan mais détaché\n"
+"-h                  Affiche the message d'aide\n"
+"-l                  Exécute cupsd depuis launchd(8)\n"
+
+#, c-format
+msgid "        WARN    Line %d only contains whitespace!\n"
+msgstr "        WARN    Line %d only contains whitespace!\n"
+
+msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+
+msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
+msgstr "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
+
+msgid "Printer Maintenance"
+msgstr "Maintenance de l'imprimante"
+
+msgid "Unable to send maintenance job:"
+msgstr "Impossible d'envoyer la tâche de maintenance :"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
+msgstr "cupsaddsmb: Pas de fichier PPD pour l'imprimante « %s » - %s\n"
+
+#, c-format
+msgid "      **FAIL**  %s %s does not exist!\n"
+msgstr "      **FAIL**  %s %s does not exist!\n"
+
+#, c-format
+msgid "      **FAIL**  Bad language \"%s\"!\n"
+msgstr "      **FAIL**  Bad language \"%s\"!\n"
+
+#, c-format
+msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
+msgstr "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
+
+#, c-format
+msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
+msgstr "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
+
+#, c-format
+msgid "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+
+#, c-format
+msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
+msgstr "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
+
+#, c-format
+msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
+msgstr "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
+
+msgid "Help"
+msgstr "Aide"
+
+#, c-format
+msgid "Missing value on line %d!\n"
+msgstr "Il manque une valeur à la ligne %d !\n"
+
+#, c-format
+msgid "Missing double quote on line %d!\n"
+msgstr "Il manque un \" à la ligne %d !\n"
+
+#, c-format
+msgid "Bad option + choice on line %d!\n"
+msgstr "Couple option + choix incorrect à la ligne %d !\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 2000 ( %d ) !\n"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour CUPS ( %d ) !\n"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 2000 ( %d ) !\n"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 9x ( %d ) !\n"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 9x ( %d ) !\n"
+
+msgid "No Windows printer drivers are installed!\n"
+msgstr "Aucun pilote d'impression pour Windows n'est installé !\n"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "Attention, aucun pilote d'impression pour Windows 2000 n'est installé !\n"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!\n"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows ( %d ) !\n""
+
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+"       cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -E               Encrypt the connection to the server\n"
+"  -H samba-server  Use the named SAMBA server\n"
+"  -U samba-user    Authenticate using the named SAMBA user\n"
+"  -a               Export all printers\n"
+"  -h cups-server   Use the named CUPS server\n"
+"  -v               Be verbose (show commands)\n"
+msgstr ""
+"Utilisation : cupsaddsmb [options] imprimante1 ... imprimanteN\n"
+"              cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -E                    Crypter la connexion au serveur\n"
+"  -H serveur-samba      Utiliser le serveur SAMBA désigné\n"
+"  -U utilisateur-samba  S'authentifier avec l'utilisateur SAMBA désigné\n"
+"  -a                    Exporter toutes les imprimantes\n"
+"  -h serveur-CUPS       Utiliser le serveur CUPS désigné\n"
+"  -v                    Être locace ( afficher les commandes )\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 2000 ( %d ) !"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour CUPS ( %d ) !"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 2000 ( %d ) !"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 9x ( %d ) !"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 9x ( %d ) !"
+
+msgid "No Windows printer drivers are installed!"
+msgstr "Aucun pilote d'impression pour Windows n'est installé !"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!"
+msgstr "Attention, aucun pilote d'impression pour Windows 2000 n'est installé !"
+
+#, c-format
+msgid "open of %s failed: %s"
+msgstr "l'ouverture de %s a échoué : %s"
+
+#, c-format
+msgid "Running command: %s %s -N -A %s -c '%s'\n"
+msgstr "Exécution de la commande : %s %s -N -A %s -c '%s'\n"
+
+#, c-format
+msgid "stat of %s failed: %s"
+msgstr "stat sur %s a échoué : %s"
+
+#, c-format
+msgid "Job #%d is already cancelled - can't cancel."
+msgstr "La tâche n°%d est déjà annulée - impossible de l'annuler."
+
+#, c-format
+msgid "Job #%d is already aborted - can't cancel."
+msgstr "La tâche n°%d est déjà abandonnée - impossible de l'annuler."
+
+#, c-format
+msgid "Job #%d is already completed - can't cancel."
+msgstr "La tâche n°%d est déjà terminée - impossible de l'annuler."
+
+#, c-format
+msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgstr "Vous devez accéder à cette page avec l'URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+
+#, c-format
+msgid "Unsupported format '%s'!"
+msgstr "Format non géré '%s' !"
+
+msgid "FAIL\n"
+msgstr "ÉCHEC"
+
+#, c-format
+msgid ""
+"    Line %d is longer than 255 characters (%d)!\n"
+"        REF: Page 25, Line Length\n"
+msgstr ""
+"    Line %d is longer than 255 characters (%d)!\n"
+"        REF: Page 25, Line Length\n"
+
+msgid ""
+"    Missing %!PS-Adobe-3.0 on first line!\n"
+"        REF: Page 17, 3.1 Conforming Documents\n"
+msgstr ""
+"    Missing %!PS-Adobe-3.0 on first line!\n"
+"        REF: Page 17, 3.1 Conforming Documents\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%Pages: on line %d!\n"
+"        REF: Page 43, %%%%Pages:\n"
+msgstr ""
+"    Bad %%%%Pages: on line %d!\n"
+"        REF: Page 43, %%%%Pages:\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%BoundingBox: on line %d!\n"
+"        REF: Page 39, %%%%BoundingBox:\n"
+msgstr ""
+"    Bad %%%%BoundingBox: on line %d!\n"
+"        REF: Page 39, %%%%BoundingBox:\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%Page: on line %d!\n"
+"        REF: Page 53, %%%%Page:\n"
+msgstr ""
+"    Bad %%%%Page: on line %d!\n"
+"        REF: Page 53, %%%%Page:\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%BoundingBox: comment!\n"
+"        REF: Page 39, %%BoundingBox:\n"
+msgstr ""
+"    Missing or bad %%BoundingBox: comment!\n"
+"        REF: Page 39, %%BoundingBox:\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%Pages: comment!\n"
+"        REF: Page 43, %%Pages:\n"
+msgstr ""
+"    Missing or bad %%Pages: comment!\n"
+"        REF: Page 43, %%Pages:\n"
+
+#, c-format
+msgid ""
+"    Missing %%EndComments comment!\n"
+"        REF: Page 41, %%EndComments\n"
+msgstr ""
+"    Missing %%EndComments comment!\n"
+"        REF: Page 41, %%EndComments\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%Page: comments!\n"
+"        REF: Page 53, %%Page:\n"
+msgstr ""
+"    Missing or bad %%Page: comments!\n"
+"        REF: Page 53, %%Page:\n"
+
+#, c-format
+msgid "    Too many %%EndDocument comments!\n"
+msgstr "    Too many %%EndDocument comments!\n"
+
+#, c-format
+msgid "    Too many %%BeginDocument comments!\n"
+msgstr "    Too many %%BeginDocument comments!\n"
+
+#, c-format
+msgid "    Saw %d lines that exceeded 255 characters!\n"
+msgstr "    Saw %d lines that exceeded 255 characters!\n"
+
+msgid "PASS\n"
+msgstr "OK"
+
+msgid "    Warning: file contains binary data!\n"
+msgstr "    Warning: file contains binary data!\n"
+
+#, c-format
+msgid "    Warning: obsolete DSC version %.1f in file!\n"
+msgstr "    Warning: obsolete DSC version %.1f in file!\n"
+
+#, c-format
+msgid "    Warning: no %%EndComments comment in file!\n"
+msgstr "    Warning: no %%EndComments comment in file!\n"
+
+msgid ""
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
+"       cupstestdsc [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+"    -h       Show program usage\n"
+"\n"
+"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+msgstr ""
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
+"       cupstestdsc [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+"    -h       Show program usage\n"
+"\n"
+"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+
+
+#, c-format
+msgid "Password for %s on %s? "
+msgstr "Mot de passe pour %s sur %s? "
+
+msgid ""
+"      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+
+
+#
+# End of "$Id$".
+#
+#
+# "$Id$"
+#
+#   Message catalog template for the Common UNIX Printing System (CUPS).
+#
+#   Copyright 2005-2006 by Easy Software Products.
+#
+#   These coded instructions, statements, and computer programs are the
+#   property of Easy Software Products and are protected by Federal
+#   copyright law.  Distribution and use rights are outlined in the file
+#   "LICENSE.txt" which should have been included with this file.  If this
+#   file is missing or damaged please contact Easy Software Products
+#   at:
+#
+#       Attn: CUPS Licensing Information
+#       Easy Software Products
+#       44141 Airport View Drive, Suite 204
+#       Hollywood, Maryland 20636 USA
+#
+#       Voice: (301) 373-9600
+#       EMail: cups-info@cups.org
+#         WWW: http://www.cups.org
+#
+#
+# NDT: I did not translate the messages used in conformance, DSC and PPD tests,
+#      because they are destined to developers only, as far as I understand.
+#
+
+msgid ""
+msgstr ""
+"Project-Id-Version: CUPS 1.2\n"
+"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
+"POT-Creation-Date: 2006-05-21 10:08-0400\n"
+"PO-Revision-Date: 2007-01-25 19:55+0200\n"
+"Last-Translator: Philippe Combes <Philippe.Combes@ens-lyon.fr>\n"
+"Language-Team: Français\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Options Installed"
+msgstr "Options Installées"
+
+msgid "Class"
+msgstr "Classe"
+
+msgid "Printer"
+msgstr "Imprimante"
+
+msgid "Extra"
+msgstr "Supplémentaire"
+
+msgid "General"
+msgstr "Généralités"
+
+msgid "Media Size"
+msgstr "Taille du support"
+
+msgid "Media Type"
+msgstr "Type de support"
+
+msgid "Media Source"
+msgstr "Source du support"
+
+msgid "Output Mode"
+msgstr "Mode de sortie"
+
+msgid "Resolution"
+msgstr "Résolution"
+
+msgid "Variable"
+msgstr "Variable"
+
+msgid "Yes"
+msgstr "Oui"
+
+msgid "No"
+msgstr "Non"
+
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Enter your username and password or the root username and password to access this page."
+msgstr "Entrez votre nom d'utilisateur et votre mot de passe UNIX ou bien identifiez-vous en tant que « root » pour accéder à cette page."
+
+msgid "You must use a https: URL to access this page."
+msgstr "Vous devez utiliser une URL https: pour accéder à cette page."
+
+#, c-format
+msgid "Bad request version number %d.%d!"
+msgstr "La requête a un numéro de version erroné : %d.%d !"
+
+msgid "No attributes in request!"
+msgstr "Aucun attribut dans la requête !"
+
+#, c-format
+msgid "Attribute groups are out of order (%x < %x)!"
+msgstr "Les groupes d'attributs ne sont pas dans le bon ordre (%x < %x) !"
+
+msgid "Missing required attributes!"
+msgstr "Il manque des attributs indispensables !"
+
+#, c-format
+msgid "%s not supported!"
+msgstr "%s: opération non gérée !"
+
+msgid "The printer or class was not found."
+msgstr "L'imprimante ou la classe n'a pas été trouvée."
+
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr "L'URI de l'imprimante doit suivre le format « ipp://NOM_MACHINE/classes/NOM_CLASSE »."
+
+#, c-format
+msgid "The printer-uri \"%s\" contains invalid characters."
+msgstr "L'URI de l'imprimante « %s » contient des caractères ."
+
+#, c-format
+msgid "A printer named \"%s\" already exists!"
+msgstr "Il existe déjà une imprimante appelée « %s » !"
+
+#, c-format
+msgid "Attempt to set %s printer-state to bad value %d!"
+msgstr "Tentative de donner une valeur erronée au paramètre « printer-state » : %d !"
+
+#, c-format
+msgid "add_class: Unknown printer-op-policy \"%s\"."
+msgstr "add_class: L'attribut « printer-op-policy » a une valeur non comprise : « %s »."
+
+#, c-format
+msgid "add_class: Unknown printer-error-policy \"%s\"."
+msgstr "add_class: L'attribut « printer-error-policy » a une valeur non comprise : « %s »."
+
+msgid "Unable to allocate memory for file types!"
+msgstr "Impossible d'allouer de la mémoire pour les types de fichiers !"
+
+#, c-format
+msgid "Character set \"%s\" not supported!"
+msgstr "Jeu de caractères « %s » non géré !"
+
+#, c-format
+msgid "Language \"%s\" not supported!"
+msgstr "Langue « %s » non gérée !"
+
+#, c-format
+msgid "The notify-user-data value is too large (%d > 63 octets)!"
+msgstr "La valeur de l'attribut « notify-user-data » est trop grande ( %d > 63 octets ) !"
+
+msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr "L'attribut « notify-lease-duration » ne peut pas être utilisé dans une souscription de tâche."
+
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr "L'URI de l'imprimante doit suivre le format « ipp://NOM_MACHINE/printers/NOM_CLASSE »."
+
+#, c-format
+msgid "A class named \"%s\" already exists!"
+msgstr ""Il existe déjà une classe appelée « %s » !"
+
+#, c-format
+msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
+msgstr "L'impression dans un fichier a été désactivée ! Pour l'activer, cf. la directive « FileDevice » dans « %s/cupsd.conf »."
+
+#, c-format
+msgid "Bad device-uri \"%s\"!"
+msgstr "Valeur erronée pour le paramètre « device-uri » : « %s » !"
+
+#, c-format
+msgid "Bad port-monitor \"%s\"!"
+msgstr "Valeur erronée pour le paramètre « port-monitor » : « %s » !"
+
+#, c-format
+msgid "Bad printer-state value %d!"
+msgstr "Valeur erronée pour le paramètre « printer-state » : « %s » !"
+
+#, c-format
+msgid "Unknown printer-op-policy \"%s\"."
+msgstr "L'attribut « printer-op-policy » a une valeur non comprise : « %s »."
+
+#, c-format
+msgid "Unknown printer-error-policy \"%s\"."
+msgstr "L'attribut « printer-error-policy » a une valeur non comprise : « %s »."
+
+#, c-format
+msgid "Unable to copy interface script - %s!"
+msgstr "Impossible de copier le « script » d'interface - « %s » !"
+
+#, c-format
+msgid "Unable to copy PPD file - %s!"
+msgstr "Impossible de copier le fichier PPD - « %s » !"
+
+msgid "Unable to copy PPD file!"
+msgstr "Impossible de copier le fichier PPD !"
+
+msgid "Got a printer-uri attribute but no job-id!"
+msgstr "Attribut « printer-uri » trouvé mais pas de « job-id »"
+
+#, c-format
+msgid "Bad job-uri attribute \"%s\"!"
+msgstr "Valeur erronée pour l'attribut « job-uri » : « %s » !"
+
+#, c-format
+msgid "Job #%d doesn't exist!"
+msgstr "La tâche n°%d n'existe pas !"
+
+#, c-format
+msgid "Job #%d is not held for authentication!"
+msgstr "La tâche n°%d n'est pas en attente d'authentification !"
+
+#, c-format
+msgid "You are not authorized to authenticate job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation d'authentifier la tâche n°%d appartenant à « %s » !"
+
+msgid "The printer-uri attribute is required!"
+msgstr "L'attribut « printer-uri » est indispensable !"
+
+msgid "Missing requesting-user-name attribute!"
+msgstr "Il manque l'attribut « requesting-user-name » !"
+
+#, c-format
+msgid "The printer-uri \"%s\" is not valid."
+msgstr "L'attribut « printer-uri » est incorrect : « %s »."
+
+#, c-format
+msgid "No active jobs on %s!"
+msgstr "Il n'y a pas de tâche en cours sur « %s » !"
+
+#, c-format
+msgid "You are not authorized to delete job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de supprimer la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Job #%d is already %s - can't cancel."
+msgstr "La tâche n°%d est déjà « %s » - impossible de l'annuler."
+
+msgid "The printer or class is not shared!"
+msgstr "L'imprimante ou la classe n'est pas partagée !"
+
+#, c-format
+msgid "Destination \"%s\" is not accepting jobs."
+msgstr "La destination « %s » n'accepte aucune tâche."
+
+#, c-format
+msgid "Bad copies value %d."
+msgstr "Nombre de copies erroné : %d."
+
+#, c-format
+msgid "Bad page-ranges values %d-%d."
+msgstr "Intervalle de pages erroné : %d-%d."
+
+msgid "Too many active jobs."
+msgstr "Trop de tâches en cours."
+
+msgid "Quota limit reached."
+msgstr "Quota atteint."
+
+#, c-format
+msgid "Unable to add job for destination \"%s\"!"
+msgstr "Impossible d'ajouter une tâche pour la destination « %s » !"
+
+msgid "No subscription attributes in request!"
+msgstr "Pas d'attribut de souscription dans la requête !"
+
+msgid "notify-events not specified!"
+msgstr "Attribut « notify-events » non renseigné !"
+
+#, c-format
+msgid "Job %d not found!"
+msgstr "La tâche n°%d n'a pas été trouvée !"
+
+msgid "No default printer"
+msgstr "Pas d'imprimante par défaut"
+
+msgid "cups-deviced failed to execute."
+msgstr "L'exécution de « cups-deviced » a échouée."
+
+msgid "cups-driverd failed to execute."
+msgstr "L'exécution de « cups-driverd » a échouée."
+
+msgid "No destinations added."
+msgstr "Aucune destination ajoutée."
+
+#, c-format
+msgid "notify-subscription-id %d no good!"
+msgstr "Valeur erronée pour l'attribut « notify-subscription-id » : %d !"
+
+#, c-format
+msgid "Job #%s does not exist!"
+msgstr "La tâche n°%s n'existe pas !"
+
+#, c-format
+msgid "Job #%d does not exist!"
+msgstr "La tâche n°%d n'existe pas !"
+
+msgid "No subscriptions found."
+msgstr "Aucune souscription trouvée."
+
+#, c-format
+msgid "Not authorized to hold job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de retenir la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Job #%d is finished and cannot be altered!"
+msgstr "La tâche n°%d est terminée et ne peut plus être modifiée !"
+
+#, c-format
+msgid "You are not authorized to move job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de transférer la tâche n°%d appartenant à « %s » !"
+
+msgid "job-printer-uri attribute missing!"
+msgstr "Il manque l'attribut « job-printer-uri » !"
+
+#, c-format
+msgid "Unsupported compression \"%s\"!"
+msgstr "La compression « %s » n'est pas gérée !"
+
+msgid "No file!?!"
+msgstr "Pas de fichier !?!"
+
+#, c-format
+msgid "Could not scan type \"%s\"!"
+msgstr "Impossible de comprendre le format « %s » !"
+
+#, c-format
+msgid "Unsupported format '%s/%s'!"
+msgstr "Le format « %s » n'est pas géré !"
+
+msgid "Printer not shared!"
+msgstr "L'imprimante n'est pas partagée !"
+
+#, c-format
+msgid "Too many jobs - %d jobs, max jobs is %d."
+msgstr "Trop de tâches - %d tâches pour un maximum de %d."
+
+#, c-format
+msgid "Job #%d is not held!"
+msgstr "La tâche n°%d n'est pas retenue !"
+
+#, c-format
+msgid "You are not authorized to release job id %d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de libérer la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Job #%d is not complete!"
+msgstr "La tâche n°%d n'est pas terminée !"
+
+#, c-format
+msgid "Job #%d cannot be restarted - no files!"
+msgstr "La tâche n°%d ne peut être redémarrée - aucun fichier !"
+
+#, c-format
+msgid "You are not authorized to restart job id %d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de redémarrer la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "You are not authorized to send document for job #%d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation d'envoyer un document pour la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "Bad document-format \"%s\"!"
+msgstr "Format de document erroné : « %s » !"
+
+#, c-format
+msgid "You are not authorized to alter job id %d owned by \"%s\"!"
+msgstr "Vous n'avez pas l'autorisation de modifier la tâche n°%d appartenant à « %s » !"
+
+#, c-format
+msgid "%s cannot be changed."
+msgstr "Impossible de modifier « %s »"
+
+msgid "Bad job-priority value!"
+msgstr "Valeur erronée pour l'attribut « job-priority » !"
+
+msgid "Job is completed and cannot be changed."
+msgstr "La tâche est terminée et ne peut être modifiée."
+
+msgid "Bad job-state value!"
+msgstr "Valeur erronée pour l'attribut « job-state » !"
+
+msgid "Job state cannot be changed."
+msgstr "L'état de la tâche ne peut être modifié."
+
+#, c-format
+msgid "Unsupported compression attribute %s!"
+msgstr "L'attribute de compression %s n'est pas géré !"
+
+#, c-format
+msgid "Unsupported format \"%s\"!"
+msgstr "Le format « %s » n'est pas géré !"
+
+#, c-format
+msgid "%s is not implemented by the CUPS version of lpc.\n"
+msgstr "« %s » n'est pas implanté dans la version CUPS de lpc.\n"
+
+msgid ""
+"Commands may be abbreviated.  Commands are:\n"
+"\n"
+"exit    help    quit    status  ?\n"
+msgstr ""
+"Les commandes peuvent être abrégée. Elles sont:\n"
+"\n"
+"exit    help    quit    status  ?\n"
+
+msgid "help\t\tget help on commands\n"
+msgstr "help\t\tobtenir de l'aide sur les commandes\n"
+
+msgid "status\t\tshow status of daemon and queue\n"
+msgstr "status\t\taffiche l'état du démon et de la file\n"
+
+msgid "?Invalid help command unknown\n"
+msgstr "?Commande d'aide inconnue\n"
+
+#, c-format
+msgid "\tprinter is on device '%s' speed -1\n"
+msgstr "\tl'imprimante est sur le périphérique '%s', vitesse -1\n"
+
+msgid "\tqueuing is enabled\n"
+msgstr "\tla mise en file d'attente est permise\n"
+
+msgid "\tqueuing is disabled\n"
+msgstr "\tla mise en file d'attente est refusée\n"
+
+msgid "\tprinting is enabled\n"
+msgstr "\tl'impression est permise\n"
+
+msgid "\tprinting is disabled\n"
+msgstr "\tl'impression est refusée\n"
+
+msgid "\tno entries\n"
+msgstr "\taucune entrée\n"
+
+#, c-format
+msgid "\t%d entries\n"
+msgstr "\t%d entrées\n"
+
+msgid "\tdaemon present\n"
+msgstr "\tdémon présent\n"
+
+msgid "lpq: Unable to contact server!\n"
+msgstr "lpq: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "%s: Sorry, no encryption support compiled in!\n"
+msgstr "%s: Désolé, la gestion du cryptage n'a pas été compilée !\n"
+
+#, c-format
+msgid "lpq: Unknown destination \"%s/%s\"!\n"
+msgstr lpq: Destination « %s/%s » inconnue !\n""
+
+#, c-format
+msgid "lpq: Unknown destination \"%s\"!\n"
+msgstr "lpq: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lp: erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+msgid "lpq: error - no default destination available.\n"
+msgstr "lpq: erreur - aucune destination par défaut n'est disponible.\n"
+
+#, c-format
+msgid "lpq: get-jobs failed: %s\n"
+msgstr "lpq: « get-jobs » a échoué: %s\n"
+
+msgid "Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgstr "Rang   Propr.     Prio Tâche      Fichiers                    Taille totale\n"
+
+msgid "Rank    Owner   Job     File(s)                         Total Size\n"
+msgstr "Rang    Propr.  Tâche  Fichiers                       Taille totale\n"
+
+#, c-format
+msgid "%s: %-33.33s [job %d localhost]\n"
+msgstr "%s: %-33.33s [tâche %d localhost]\n"
+
+#, c-format
+msgid "        %-39.39s %.0f bytes\n"
+msgstr "        %-39.39s %.0f octets\n"
+
+#, c-format
+msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
+msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f octets\n"
+
+#, c-format
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
+msgstr "%-7s %-7.7s %-7d %-31.31s %.0f octets\n"
+
+msgid "no entries\n"
+msgstr "aucune entrée\n"
+
+#, c-format
+msgid "lpq: get-printer-attributes failed: %s\n"
+msgstr "lpq: get-printer-attributes a échoué : %s\n"
+
+#, c-format
+msgid "%s is ready\n"
+msgstr "%s est prête\n"
+
+#, c-format
+msgid "%s is ready and printing\n"
+msgstr "%s est prête et en cours d'impression\n"
+
+#, c-format
+msgid "%s is not ready\n"
+msgstr "%s n'est pas prête\n"
+
+msgid "Usage: lpq [-P dest] [-l] [+interval]\n"
+msgstr "Utilisation : lpq [-P dest] [-l] [+intervalle]\n"
+
+#, c-format
+msgid "lpr: error - expected value after -%c option!\n"
+msgstr "lpr: erreur - il faut une valeur après l'option '-%c' !\n"
+
+#, c-format
+msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "lpr: attention - le modificateur de format '%c' n'est pas géré - l'affichage pourrait être incorrect !\n"
+
+msgid "lpr: error - expected option=value after -o option!\n"
+msgstr "lpr: erreur - il faut un argument du type option=valeur après l'option '-o' !\n"
+
+msgid "lpr: warning - email notification is not currently supported!\n"
+msgstr "lpr: attention - la notification par courriel n'est pas encore gérée !\n"
+
+msgid "lpr: error - expected destination after -P option!\n"
+msgstr "lpr: erreur - il faut une destination après l'option '-P' !\n"
+
+msgid "lpr: error - expected copy count after -# option!\n"
+msgstr "lpr: erreur - il faut un nombre de copies après l'option '-#' !\n"
+
+#, c-format
+msgid "lpr: error - expected name after -%c option!\n"
+msgstr "lpr: erreur - il faut un nom après l'option '-%c' !\n"
+
+msgid "lpr: error - expected username after -U option!\n"
+msgstr "lpr: erreur - il faut un nom d'utilisateur après l'option '-U' !\n"
+
+#, c-format
+msgid "lpr: error - unknown option '%c'!\n"
+msgstr "lpr: erreur - option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpr: error - unable to access \"%s\" - %s\n"
+msgstr "lpr: erreur - impossible d'accéder à « %s » - %s\n"
+
+#, c-format
+msgid "lpr: error - too many files - \"%s\"\n"
+msgstr "lpr: erreur - trop de fichiers - « %s »\n"
+
+#, c-format
+msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lpr: erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+msgid "lpr: error - no default destination available.\n"
+msgstr "lpr: erreur - aucune destination par défaut n'est disponible.\n"
+
+msgid "lpr: error - scheduler not responding!\n"
+msgstr "lpr: erreur - l'ordonnanceur ne répond pas !\n"
+
+#, c-format
+msgid "lpr: error - unable to create temporary file \"%s\" - %s\n"
+msgstr "lpr: erreur - impossible de créer le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "lpr: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lpr: erreur - impossible d'écrire dans le fichier temporaire « %s » - %s\n"
+
+msgid "lpr: error - stdin is empty, so no job has been sent.\n"
+msgstr "lpr: erreur - stdin est vide, donc aucune tâche n'a été envoyée.\n"
+
+#, c-format
+msgid "lpr: error - unable to print file: %s\n"
+msgstr "lpr: erreur - impossible d'imprimer le fichier : %s\n"
+
+msgid "lprm: Unable to contact server!\n"
+msgstr "lprm: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "lprm: Unknown destination \"%s\"!\n"
+msgstr "lprm: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "lprm: Unknown option '%c'!\n"
+msgstr "lprm: Option '%c' inconnue !\n"
+
+msgid "lprm: Job or printer not found!\n"
+msgstr "lprm: La tâche ou l'imprimante n'a pas été trouvée !\n"
+
+msgid "lprm: Not authorized to lprm job(s)!\n"
+msgstr "lprm: Vous n'avez pas l'autorisation de supprimer cette(ces) tâche(s) !\n"
+
+#, c-format
+msgid "lprm: You don't own job ID %d!\n"
+msgstr lprm: La tâche n°%d ne vous appartient pas !\n""
+
+msgid "lprm: Unable to lprm job(s)!\n"
+msgstr "lprm: Impossible de supprimer cette(ces) tâche(s) !\n"
+
+msgid "lprm: Unable to cancel job(s)!\n"
+msgstr "lprm: Impossible d'annuler cette(ces) tâche(s) !\n"
+
+#, c-format
+msgid "%s: Don't know what to do!\n"
+msgstr "%s: Je ne sais que faire !"
+
+#, c-format
+msgid "%s: Expected server name after -h!\n"
+msgstr "%s: Il faut un nom de serveur après l'option '-h' !\n"
+
+#, c-format
+msgid "%s: Expected reason text after -r!\n"
+msgstr "%s: Il faut le texte de la raison après l'option '-r' !\n"
+
+#, c-format
+msgid "%s: Unknown option '%c'!\n"
+msgstr "%s: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "%s: Unable to connect to server: %s\n"
+msgstr "%s: Impossible de se connecter au serveur : %s\n"
+
+#, c-format
+msgid "%s: Operation failed: %s\n"
+msgstr "%s: L'opération a échoué : %s\n"
+
+msgid "cancel: Error - expected hostname after '-h' option!\n"
+msgstr "annulation: erreur - il faut un nom de machine après l'option '-h' !\n"
+
+msgid "cancel: Error - expected username after '-u' option!\n"
+msgstr "annulation: erreur - il faut un nom d'utilisateur après l'option '-u' !\n"
+
+#, c-format
+msgid "cancel: Unknown option '%c'!\n"
+msgstr "annulation: Option '%c' inconnue !"
+
+#, c-format
+msgid "cancel: Unknown destination \"%s\"!\n"
+msgstr "annulation: Destination inconnue « %s » !"
+
+msgid "cancel: Unable to contact server!\n"
+msgstr "annulation: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "cancel: %s failed: %s\n"
+msgstr "annulation: %s a échoué :%s\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing value on line %d!\n"
+msgstr "cupsaddsmb: Il manque une valeur à la ligne n°%d !\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing double quote on line %d!\n"
+msgstr "cupsaddsmb: Il manque un \" à la ligne n°%d !\n"
+
+#, c-format
+msgid "cupsaddsmb: Bad option + choice on line %d!\n"
+msgstr "cupsaddsmb: Option et choix erronés à la ligne n°%d !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to connect to server \"%s\" for %s - %s\n"
+msgstr "cupsaddsmb: Impossible de se connecter au serveur « %s » pour %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - skipping!\n"
+msgstr "cupsaddsmb: Aucun fichier PPD pour l'imprimante « %s » - ignorée !\n"
+
+#, c-format
+msgid "cupsaddsmb: get-printer-attributes failed for \"%s\": %s\n"
+msgstr "cupsaddsmb: get-printer-attributes a échoué pour « %s » : %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to convert PPD file for %s - %s\n"
+msgstr "cupsaddsmb: Impossible de convertir le fichier PPD pour %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible de copier les fichiers du pilote d'impression pour Windows 2000 (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible de copier les fichiers du pilote d'impression pour CUPS (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible d'installer les fichiers du pilote d'impression pour Windows 2000 (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible de copier les fichiers du pilote d'impression pour Windows 9x (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Impossible d'installer les fichiers du pilote d'impression pour Windows 9x (%d) !\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
+msgstr "cupsaddsmb: Impossible de paramétrer le pilote d'impression pour Windows (%d) !\n"
+
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+"       cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -H samba-server  Use the named SAMBA server\n"
+"  -U samba-user    Authenticate using the named SAMBA user\n"
+"  -a               Export all printers\n"
+"  -h cups-server   Use the named CUPS server\n"
+"  -v               Be verbose (show commands)\n"
+msgstr ""
+"Utilisation : cupsaddsmb [options] imprimante1 ... imprimanteN\n"
+"              cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -H serveur-samba      Utiliser le serveur SAMBA désigné\n"
+"  -U utilisateur-samba  S'authentifier avec l'utilisateur SAMBA désigné\n"
+"  -a                    Exporter toutes les imprimantes\n"
+"  -h serveur-CUPS       Utiliser le serveur CUPS désigné\n"
+"  -v                    Être locace ( afficher les commandes )\n"
+
+msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
+msgstr "cupstestppd: L'option est -q incomptaible avec l'option -v.\n"
+
+msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
+msgstr "cupstestppd: L'option est -v incomptaible avec l'option -q.\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s\n"
+msgstr ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s on line %d.\n"
+msgstr ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s on line %d.\n"
+
+msgid "                REF: Page 42, section 5.2.\n"
+msgstr "                REF: Page 42, section 5.2.\n"
+
+msgid "                REF: Page 20, section 3.4.\n"
+msgstr "                REF: Page 20, section 3.4.\n"
+
+msgid "                REF: Pages 45-46, section 5.2.\n"
+msgstr "                REF: Pages 45-46, section 5.2.\n"
+
+msgid "                REF: Pages 42-45, section 5.2.\n"
+msgstr "                REF: Pages 42-45, section 5.2.\n"
+
+msgid "                REF: Pages 48-49, section 5.2.\n"
+msgstr "                REF: Pages 48-49, section 5.2.\n"
+
+msgid "                REF: Pages 52-54, section 5.2.\n"
+msgstr "                REF: Pages 52-54, section 5.2.\n"
+
+msgid "                REF: Page 15, section 3.2.\n"
+msgstr "                REF: Page 15, section 3.2.\n"
+
+msgid "                REF: Page 15, section 3.1.\n"
+msgstr "                REF: Page 15, section 3.1.\n"
+
+msgid "                REF: Pages 16-17, section 3.2.\n"
+msgstr "                REF: Pages 16-17, section 3.2.\n"
+
+msgid "                REF: Page 19, section 3.3.\n"
+msgstr "                REF: Page 19, section 3.3.\n"
+
+msgid "                REF: Page 27, section 3.5.\n"
+msgstr "                REF: Page 27, section 3.5.\n"
+
+msgid ""
+"\n"
+"    DETAILED CONFORMANCE TEST RESULTS\n"
+msgstr ""
+"\n"
+"    DETAILED CONFORMANCE TEST RESULTS\n"
+
+#, c-format
+msgid "        WARN    %s has no corresponding options!\n"
+msgstr "        WARN    %s has no corresponding options!\n"
+
+msgid " FAIL\n"
+msgstr " FAIL\n"
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultImageableArea\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED DefaultImageableArea\n"
+"                REF: Page 102, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD DefaultImageableArea %s!\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      **FAIL**  BAD DefaultImageableArea %s!\n"
+"                REF: Page 102, section 5.15.\n"
+
+msgid "        PASS    DefaultImageableArea\n"
+msgstr "        PASS    DefaultImageableArea\n"
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultPaperDimension\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED DefaultPaperDimension\n"
+"                REF: Page 103, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD DefaultPaperDimension %s!\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      **FAIL**  BAD DefaultPaperDimension %s!\n"
+"                REF: Page 103, section 5.15.\n"
+
+msgid "        PASS    DefaultPaperDimension\n"
+msgstr "        PASS    DefaultPaperDimension\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD Default%s %s\n"
+"                REF: Page 40, section 4.5.\n"
+msgstr ""
+"      **FAIL**  BAD Default%s %s\n"
+"                REF: Page 40, section 4.5.\n"
+
+#, c-format
+msgid "        PASS    Default%s\n"
+msgstr "        PASS    Default%s\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED Default%s\n"
+"                REF: Page 40, section 4.5.\n"
+msgstr ""
+"      **FAIL**  REQUIRED Default%s\n"
+"                REF: Page 40, section 4.5.\n"
+
+msgid "        PASS    FileVersion\n"
+msgstr "        PASS    FileVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED FileVersion\n"
+"                REF: Page 56, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED FileVersion\n"
+"                REF: Page 56, section 5.3.\n"
+
+msgid "        PASS    FormatVersion\n"
+msgstr "        PASS    FormatVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED FormatVersion\n"
+"                REF: Page 56, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED FormatVersion\n"
+"                REF: Page 56, section 5.3.\n"
+
+msgid "        PASS    LanguageEncoding\n"
+msgstr "        PASS    LanguageEncoding\n"
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageEncoding\n"
+"                REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED LanguageEncoding\n"
+"                REF: Pages 56-57, section 5.3.\n"
+
+msgid "        PASS    LanguageVersion\n"
+msgstr "        PASS    LanguageVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageVersion\n"
+"                REF: Pages 57-58, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED LanguageVersion\n"
+"                REF: Pages 57-58, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
+"                REF: Page 211, table D.1.\n"
+msgstr ""
+"      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
+"                REF: Page 211, table D.1.\n"
+
+msgid "        PASS    Manufacturer\n"
+msgstr "        PASS    Manufacturer\n"
+
+msgid ""
+"      **FAIL**  REQUIRED Manufacturer\n"
+"                REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED Manufacturer\n"
+"                REF: Pages 58-59, section 5.3.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
+"                REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
+"                REF: Pages 59-60, section 5.3.\n"
+
+msgid "        PASS    ModelName\n"
+msgstr "        PASS    ModelName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED ModelName\n"
+"                REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED ModelName\n"
+"                REF: Pages 59-60, section 5.3.\n"
+
+msgid "        PASS    NickName\n"
+msgstr "        PASS    NickName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED NickName\n"
+"                REF: Page 60, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED NickName\n"
+"                REF: Page 60, section 5.3.\n"
+
+msgid "        PASS    PageSize\n"
+msgstr "        PASS    PageSize\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Pages 99-100, section 5.14.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Pages 99-100, section 5.14.\n"
+
+msgid "        PASS    PageRegion\n"
+msgstr "        PASS    PageRegion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageRegion\n"
+"                REF: Page 100, section 5.14.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PageRegion\n"
+"                REF: Page 100, section 5.14.\n"
+
+msgid "        PASS    PCFileName\n"
+msgstr "        PASS    PCFileName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PCFileName\n"
+"                REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PCFileName\n"
+"                REF: Pages 61-62, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD Product - not \"(string)\".\n"
+"                REF: Page 62, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD Product - not \"(string)\".\n"
+"                REF: Page 62, section 5.3.\n"
+
+msgid "        PASS    Product\n"
+msgstr "        PASS    Product\n"
+
+msgid ""
+"      **FAIL**  REQUIRED Product\n"
+"                REF: Page 62, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED Product\n"
+"                REF: Page 62, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
+"                REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
+"                REF: Pages 62-64, section 5.3.\n"
+
+msgid "        PASS    PSVersion\n"
+msgstr "        PASS    PSVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PSVersion\n"
+"                REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PSVersion\n"
+"                REF: Pages 62-64, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+"      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+
+msgid "        PASS    ShortNickName\n"
+msgstr "        PASS    ShortNickName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED ShortNickName\n"
+"                REF: Page 64-65, section 5.3.\n"
+msgstr ""
+"      **FAIL**  REQUIRED ShortNickName\n"
+"                REF: Page 64-65, section 5.3.\n"
+
+msgid ""
+"      **FAIL**  BAD JobPatchFile attribute in file\n"
+"                REF: Page 24, section 3.4.\n"
+msgstr ""
+"      **FAIL**  BAD JobPatchFile attribute in file\n"
+"                REF: Page 24, section 3.4.\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 99, section 5.14.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Page 41, section 5.\n"\n"
+"                REF: Page 99, section 5.14.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 102, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 103, section 5.15.\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 84, section 5.9\n"
+msgstr ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 84, section 5.9\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED %s does not define choice None!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"      **FAIL**  REQUIRED %s does not define choice None!\n"
+"                REF: Page 122, section 5.17\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 122, section 5.17\n"
+
+msgid " PASS\n"
+msgstr " PASS\n"
+
+#, c-format
+msgid ""
+"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"                REF: Page 122, section 5.17\n"
+
+msgid "        WARN    Default choices conflicting!\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"        WARN    Obsolete PPD version %.1f!\n"
+"                REF: Page 42, section 5.2.\n"
+msgstr ""
+"        WARN    Obsolete PPD version %.1f!\n"
+"                REF: Page 42, section 5.2.\n"
+
+msgid ""
+"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+"                REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+"                REF: Pages 56-57, section 5.3.\n"
+
+msgid ""
+"        WARN    Manufacturer required by PPD 4.3 spec.\n"
+"                REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+"        WARN    Manufacturer required by PPD 4.3 spec.\n"
+"                REF: Pages 58-59, section 5.3.\n"
+
+msgid ""
+"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+"                REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+"                REF: Pages 61-62, section 5.3.\n"
+
+msgid ""
+"        WARN    ShortNickName required by PPD 4.3 spec.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+"        WARN    ShortNickName required by PPD 4.3 spec.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+
+msgid ""
+"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+
+msgid ""
+"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+
+#, c-format
+msgid ""
+"        WARN    %s shares a common prefix with %s\n"
+"                REF: Page 15, section 3.2.\n"
+msgstr ""
+"        WARN    %s shares a common prefix with %s\n"
+"                REF: Page 15, section 3.2.\n"
+
+#, c-format
+msgid "    %d ERROR%s FOUND\n"
+msgstr "    %d ERROR%s FOUND\n"
+
+msgid "    NO ERRORS FOUND\n"
+msgstr "    NO ERRORS FOUND\n"
+
+#, c-format
+msgid ""
+"        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")\n"
+msgstr ""
+"        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")\n"
+msgid ""
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+"       program | cupstestppd [-q] [-r] [-v[v]] -\n"
+msgstr ""
+"Utilisation : cupstestppd [-q] [-r] [-v[v]] fichier1.ppd[.gz] [... fichierN.ppd[.gz]]\n"
+"              programme | cupstestppd [-q] [-r] [-v[v]] -\n"
+
+msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
+msgstr "lpstat: Il faut « completed » ou « not-completed » après l'option -W !\n"
+
+msgid "lpstat: The -b option requires a destination argument.\n"
+msgstr "lpstat: Il faut une destination après l'option '-b' !\n"
+
+msgid "Error: need hostname after '-h' option!\n"
+msgstr "Erreur : Il faut un nom d'hôte après l'option '-h' !\n"
+
+#, c-format
+msgid "lpstat: Unknown option '%c'!\n"
+msgstr "lpstat: Option '%c inconnue !\n"
+
+#, c-format
+msgid "lpstat: Invalid destination name in list \"%s\"!\n"
+msgstr "lpstat: Nom de destination incorrect dans la liste « %s » !\n"
+
+#, c-format
+msgid "lpstat: Unknown destination \"%s\"!\n"
+msgstr "lpstat: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "lpstat: Unable to connect to server %s on port %d: %s\n"
+msgstr "lpstat: Impossible de se connecter au serveur « %s » sur le port %d : %s\n"
+
+#, c-format
+msgid "lpstat: get-printers failed: %s\n"
+msgstr "lpstat: get-printers a échoué: %s\n"
+
+#, c-format
+msgid "%s accepting requests since Jan 01 00:00\n"
+msgstr "%s accepte les requêtes depuis le Jan 01 00:00\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s n'accepte pas les requêtes depuis le Jan 01 00:00 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since Jan 01 00:00\n"
+msgstr "%s/%s accepte les requêtes depuis le Jan 01 00:00\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s n'accepte pas les requêtes depuis le Jan 01 00:00 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "lpstat: get-classes failed: %s\n"
+msgstr "lpstat: get-classes a échoué : %s !\n"
+
+#, c-format
+msgid "members of class %s:\n"
+msgstr "membres de la classe %s :\n"
+
+#, c-format
+msgid "system default destination: %s/%s\n"
+msgstr "destination par défaut du système : %s/%s\n"
+
+#, c-format
+msgid "system default destination: %s\n"
+msgstr "destination par défaut du système : %s\n"
+
+#, c-format
+msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lpstat: erreur - la variable d'environnement désigne une destination\n"
+"                 inexistente « %s » !\n"
+
+msgid "no system default destination\n"
+msgstr "le système n'a pas de destination par défaut\n"
+
+#, c-format
+msgid "Output for printer %s is sent to remote printer %s on %s\n"
+msgstr ""
+"Ce qui est envoyé à l'imprimante %s est redirigé vers l'imprimante\n"
+"distante %s sur %s\n"
+
+#, c-format
+msgid "Output for printer %s is sent to %s\n"
+msgstr "Ce qui est envoyé à l'imprimante %s est redirigé vers %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
+msgstr ""
+"Ce qui est envoyé à l'imprimante %s/%s est redirigé vers l'imprimante\n"
+"distante %s sur %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to %s\n"
+msgstr "Ce qui est envoyé à l'imprimante %s/%s est redirigé vers %s\n"
+
+#, c-format
+msgid "device for %s: %s\n"
+msgstr "périphérique pour %s : %s\n"
+
+#, c-format
+msgid "device for %s/%s: %s\n"
+msgstr "périphérique pour %s/%s : %s \n"
+
+#, c-format
+msgid "lpstat: get-jobs failed: %s\n"
+msgstr "lpstat: get-jobs a échoué : %s !\n"
+
+#, c-format
+msgid "\tqueued for %s\n"
+msgstr "\tmis en file d'attente pour %s\n"
+
+#, c-format
+msgid "printer %s is idle.  enabled since %s\n"
+msgstr "l'imprimante %s ne fait rien ; elle est activée depuis le %s\n"
+
+#, c-format
+msgid "printer %s now printing %s-%d.  enabled since %s\n"
+msgstr "l'imprimante %s est en train d'imprimer %s-%d ; elle est activée depuis le %s\n""
+
+#, c-format
+msgid "printer %s disabled since %s -\n"
+msgstr "l'imprimante %s est désactivée depuis le %s -\n"
+
+msgid "\treason unknown\n"
+msgstr "\traison inconnue\n"
+
+msgid ""
+"\tForm mounted:\n"
+"\tContent types: any\n"
+"\tPrinter types: unknown\n"
+msgstr ""
+"\tFormat monté :\n"
+"\tTypes de contenu : any\n"
+"\tTypes d'imprimante : unknown\n"
+
+#, c-format
+msgid "\tDescription: %s\n"
+msgstr "\tDescription : %s\n"
+
+msgid "\tAlerts:"
+msgstr "\tAlertes :"
+
+#, c-format
+msgid "\tLocation: %s\n"
+msgstr "\tLieu : %s\n"
+
+msgid "\tConnection: remote\n"
+msgstr "\tConnexion : distante\n"
+
+#, c-format
+msgid "\tInterface: %s.ppd\n"
+msgstr "\tInterface : %s.ppd\n"
+
+msgid "\tConnection: direct\n"
+msgstr "\tConnexion : directe\n"
+
+#, c-format
+msgid "\tInterface: %s/interfaces/%s\n"
+msgstr "\tInterface : %s/interfaces/%s\n"
+
+#, c-format
+msgid "\tInterface: %s/ppd/%s.ppd\n"
+msgstr "\tInterface : %s/ppd/%s.ppd\n"
+
+msgid "\tOn fault: no alert\n"
+msgstr "\tEn cas d'erreur : pas d'alerte\n"
+
+msgid "\tAfter fault: continue\n"
+msgstr "\tAprès une erreur : poursuivre\n"
+
+msgid "\tUsers allowed:\n"
+msgstr "\tUtilisateurs autorisés :\n"
+
+msgid "\tUsers denied:\n"
+msgstr "\tUtilisateurs refusés :\n"
+
+msgid "\t\t(all)\n"
+msgstr "\t\t( tous )\n"
+
+msgid "\tForms allowed:\n"
+msgstr "\tFormats autorisés :\n"
+
+msgid "\t\t(none)\n"
+msgstr "\t\t( aucun )\n"
+
+msgid "\tBanner required\n"
+msgstr "\tBannière requise\n"
+
+msgid "\tCharset sets:\n"
+msgstr "\tJeux de caractères :\n"
+
+msgid "\tDefault pitch:\n"
+msgstr "\t« pitch » par défaut :\n"
+
+msgid "\tDefault page size:\n"
+msgstr "\tTaille de papier par défaut :\n"
+
+msgid "\tDefault port settings:\n"
+msgstr "\tParamètres par défaut du port :\n"
+
+#, c-format
+msgid "printer %s/%s is idle.  enabled since %s\n"
+msgstr "l'imprimante %s/%s ne fait rien ; elle est activée depuis le %s\n"
+
+#, c-format
+msgid "printer %s/%s now printing %s-%d.  enabled since %s\n"
+msgstr "l'imprimante %s/%s est en train d'imprimer %s-%d ; elle est activée depuis le %s\n""
+
+#, c-format
+msgid "printer %s/%s disabled since %s -\n"
+msgstr "l'imprimante %s/%s est désactivée depuis le %s -\n"
+
+msgid "scheduler is running\n"
+msgstr "l'ordonnanceur tourne\n"
+
+msgid "scheduler is not running\n"
+msgstr "l'ordonnanceur est arrêté\n"
+
+#, c-format
+msgid "lpadmin: Unable to connect to server: %s\n"
+msgstr "lpadmin: Impossible de se connecter au serveur « %s » !\n"
+
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible d'ajouter une imprimante à la classe :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected class name after '-c' option!\n"
+msgstr "lpadmin: Il faut un nom de classe après l'option '-c' !\n"
+
+msgid "lpadmin: Class name can only contain printable characters!\n"
+msgstr "lpadmin: Un nom de classe ne peut comporter que des caractères imprimables !\n"
+
+msgid "lpadmin: Expected printer name after '-d' option!\n"
+msgstr "lpadmin: Il faut un nom d'imprimante après l'option '-d' !\n"
+
+msgid "lpadmin: Printer name can only contain printable characters!\n"
+msgstr "lpadmin: Un nom d'imprimante ne peut comporter que des caractères imprimables !\n"
+
+msgid "lpadmin: Expected hostname after '-h' option!\n"
+msgstr "lpadmin: Il faut un nom d'hôte après l'option 'h' !\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le script d'interface :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected interface after '-i' option!\n"
+msgstr "lpadmin: Il faut une interface après l'option '-i' !\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script or PPD file:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le script d'interface ou le fichier PPD :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected model after '-m' option!\n"
+msgstr "lpadmin: Il faut un modèle après l'option '-m' !\n"
+
+msgid "lpadmin: Expected name=value after '-o' option!\n"
+msgstr "lpadmin: Il faut un argument du type option=valeur après l'option '-o' !\n"
+
+msgid "lpadmin: Expected printer after '-p' option!\n"
+msgstr "lpadmin: Il faut une imprimante après l'option '-p' !\n"
+
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de supprimer une imprimante de la classe :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected class after '-r' option!\n"
+msgstr "lpadmin: Il faut une classe après l'option '-r' !\n"
+
+msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
+msgstr ""
+"lpadmin: Il faut un argument du type allow/deny:liste_utilisateurs\n"
+"         après l'option '-u' !\n"
+
+#, c-format
+msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
+msgstr "lpadmin: Option allow/deny « %s » inconnue !\n"
+
+msgid ""
+"lpadmin: Unable to set the device URI:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir l'URI du périphérique :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected device URI after '-v' option!\n"
+msgstr "lpadmin: Il faut un URI de périphérique après l'option '-v' !\n"
+
+msgid "lpadmin: Expected printer or class after '-x' option!\n"
+msgstr "lpadmin: Il faut une imprimante ou une classe après l'option '-x' !\n"
+
+msgid ""
+"lpadmin: Unable to set the printer description:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir la description de l'imprimante :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected description after '-D' option!\n"
+msgstr "lpadmin: Il faut une description après l'option '-D' !\n"
+
+msgid "lpadmin: Expected file type(s) after '-I' option!\n"
+msgstr "lpadmin: Il faut un ou plusieurs types de fichier après l'option '-I' !\n"
+
+msgid "lpadmin: Warning - content type list ignored!\n"
+msgstr "lpadmin: Attention - les types de contenu sont ignorés !\n"
+
+msgid ""
+"lpadmin: Unable to set the printer location:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le lieu de l'imprimante :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected location after '-L' option!\n"
+msgstr "lpadmin: Il faut un lieu après l'option '-L' !\n"
+
+msgid ""
+"lpadmin: Unable to set the PPD file:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir le fichier PPD :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid "lpadmin: Expected PPD after '-P' option!\n"
+msgstr "lpadmin: Il faut un fichier PPD après l'option '-P' !\n"
+
+#, c-format
+msgid "lpadmin: Unknown option '%c'!\n"
+msgstr "lpadmin: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpadmin: Unknown argument '%s'!\n"
+msgstr "lpadmin: Argument « %s » inconnu !\n"
+
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Impossible de définir les options de l'imprimante :\n"
+"         Vous devez d'abord préciser un nom d'imprimante !\n"
+
+msgid ""
+"Usage:\n"
+"\n"
+"    lpadmin [-h server] -d destination\n"
+"    lpadmin [-h server] -x destination\n"
+"    lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
+"                       [-r remove-class] [-v device] [-D description]\n"
+"                       [-P ppd-file] [-o name=value]\n"
+"                       [-u allow:user,user] [-u deny:user,user]\n"
+"\n"
+msgstr ""
+"Utilisation :\n"
+"\n"
+"    lpadmin [-h serveur] -d destination\n"
+"    lpadmin [-h serveur] -x destination\n"
+"    lpadmin [-h serveur] -p imprimante [-c classe] [-i interface] [-m modèle]\n"
+"                        [-r classe] [-v URI] [-D description]\n"
+"                        [-P fichier-ppd] [-o option=valeur]\n"
+"                        [-u allow:util.,util.] [-u deny:util.,util.]\n"
+"\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file: %s\n"
+msgstr "lpadmin: Impossible de créer un fichier temporaire : %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open file \"%s\": %s\n"
+msgstr "lpadmin: Impossible d'ouvrir le fichier « %s » : %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set model) failed: %s\n"
+msgstr "lpadmin: add-printer ( définition du modèle ) a échoué : %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set description) failed: %s\n"
+msgstr "lpadmin: add-printer ( définition de la description ) a échoué : %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set location) failed: %s\n"
+msgstr "lpadmin: add-printer ( définition du lieu ) a échoué : %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file - %s\n"
+msgstr "lpadmin: Impossible de créer un fichier temporaire : %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
+msgstr "lpadmin: Impossible d'ouvrir le fichier PPD « %s » : %s\n"
+
+#, c-format
+msgid "lpadmin: %s failed: %s\n"
+msgstr "lpadmin: %s a échoué : %s\n"
+
+msgid "lp: Expected destination after -d option!\n"
+msgstr "lp: Il faut une destination après l'option '-d' !\n"
+
+msgid "lp: Expected form after -f option!\n"
+msgstr "lp: Il faut un format après l'option '-f' !\n"
+
+msgid "lp: Expected hostname after -h option!\n"
+msgstr "lp: Il faut un nom d'hôte après l'option '-h' !\n"
+
+msgid "lp: Expected job ID after -i option!\n"
+msgstr "lp: Il faut un numéro de tâche après l'option '-i' !\n"
+
+msgid "lp: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "lp: Erreur - impossible d'imprimer et modifier les tâches en même temps !\n"
+
+msgid "lp: Error - bad job ID!\n"
+msgstr "lp: Erreur - numéro de tâche incorrect !\n"
+
+msgid "lp: Expected copies after -n option!\n"
+msgstr "lp: Il faut un nombre de copies après l'option '-n' !\n"
+
+msgid "lp: Expected option string after -o option!\n"
+msgstr "lp: Il faut une chaîne d'option \"nom=valeur\" après l'option '-o' !\n"
+
+#, c-format
+msgid "lp: Expected priority after -%c option!\n"
+msgstr "lp: Il faut une priorité après l'option '-%c' !\n"
+
+msgid "lp: Priority must be between 1 and 100.\n"
+msgstr "lp: La priorité doit être comprise entre 1 et 100.\n"
+
+msgid "lp: Expected title after -t option!\n"
+msgstr "lp: Il faut un titre après l'option '-t' !\n"
+
+msgid "lp: Expected mode list after -y option!\n"
+msgstr "lp: Il faut une liste de modes après l'option '-y' !\n"
+
+msgid "lp: Warning - mode option ignored!\n"
+msgstr "lp: Attention - l'option « mode » est ignorée !\n"
+
+msgid "lp: Expected hold name after -H option!\n"
+msgstr "lp: Il faut un code de retenue après l'option '-H' !\n"
+
+msgid "lp: Need job ID (-i) before \"-H restart\"!\n"
+msgstr "lp: Il faut un numéro de tâche ( '-i' ) avant '-H restart' !\n"
+
+msgid "lp: Expected page list after -P option!\n"
+msgstr "lp: Il faut une liste de pages après l'option '-P' !\n"
+
+msgid "lp: Expected character set after -S option!\n"
+msgstr "lp: Il faut un jeu de caractères après l'option '-S' !\n"
+
+msgid "lp: Warning - character set option ignored!\n"
+msgstr "lp: Attention - l'option « jeu de caractères » est ignorée !\n"
+
+msgid "lp: Expected content type after -T option!\n"
+msgstr "lp: Il faut un type de contenu après l'option '-T' !\n"
+
+msgid "lp: Warning - content type option ignored!\n"
+msgstr "lp: Attention - l'option « type de contenu » est ignorée !\n"
+
+#, c-format
+msgid "lp: Unknown option '%c'!\n"
+msgstr "lp: Option '%c' inconnue !\n"
+
+msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"lp: Erreur - impossible d'imprimer depuis l'entrée standard si un fichier\n"
+"             ou un numéro de tâche est spécifié !\n"
+
+#, c-format
+msgid "lp: Unable to access \"%s\" - %s\n"
+msgstr "lp: Impossible d'accéder à « %s » - %s\n"
+
+#, c-format
+msgid "lp: Too many files - \"%s\"\n"
+msgstr "lp: Trop de fichiers - « %s »\n"
+
+msgid "lp: error - no default destination available.\n"
+msgstr "lp: Erreur - aucune destination par défaut n'est disponible.\n"
+
+msgid "lp: error - scheduler not responding!\n"
+msgstr "lp: Erreur - l'odonnanceur ne répond pas !\n"
+
+#, c-format
+msgid "lp: Error - unable to create temporary file \"%s\" - %s\n"
+msgstr "lp: Erreur - impossible de créer le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "lp: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lp: Erreur - impossible d'écrire dans le fichier temporaire « %s » - %s\n"
+
+msgid "lp: stdin is empty, so no job has been sent.\n"
+msgstr "lp: l'entrée standard est vide, donc aucune tâche n'a été envoyée.\n"
+
+#, c-format
+msgid "lp: unable to print file: %s\n"
+msgstr "lp: impossible d'imprimer le fichier - %s\n"
+
+#, c-format
+msgid "request id is %s-%d (%d file(s))\n"
+msgstr "l'identifiant de requête est %s-%d ( %d fichier(s) )\n"
+
+#, c-format
+msgid "lp: restart-job failed: %s\n"
+msgstr "lp: restart-job a échoué : %s\n"
+
+#, c-format
+msgid "lp: set-job-attributes failed: %s\n"
+msgstr "lp: set-job-attributes a échoué : %s\n"
+
+#, c-format
+msgid "lpinfo: Unable to connect to server: %s\n"
+msgstr "lpinfo: Impossible de se connecter au serveur : %s\n"
+
+#, c-format
+msgid "lpinfo: Unknown option '%c'!\n"
+msgstr "lpinfo: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpinfo: Unknown argument '%s'!\n"
+msgstr "lpinfo: Argument '%s' inconnu !\n"
+
+#, c-format
+msgid "lpinfo: cups-get-devices failed: %s\n"
+msgstr "lpinfo: cups-get-devices a échoué : %s\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+msgstr ""
+"Matériel :   URI = %s\n"
+"          classe = %s\n"
+"            info = %s\n"
+"   marque/modèle = %s\n"
+
+#, c-format
+msgid "lpinfo: cups-get-ppds failed: %s\n"
+msgstr "lpinfo: cups-get-ppds a échoué : %s\n"
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+msgstr ""
+"Modèle :        nom = %s\n"
+"   langue naturelle = %s\n"
+"      marque/modèle = %s\n"
+
+#, c-format
+msgid "lpmove: Unknown option '%c'!\n"
+msgstr "lpmove: Option '%c' inconnue !\n"
+
+#, c-format
+msgid "lpmove: Unknown argument '%s'!\n"
+msgstr "lpmove: Argument '%s' inconnu !\n"
+
+msgid "Usage: lpmove job dest\n"
+msgstr "Utilisation : lpmove tâche destination\n"
+
+#, c-format
+msgid "lpmove: Unable to connect to server: %s\n"
+msgstr "lpmove: Impossible de se connecter au serveur : %s\n"
+
+#, c-format
+msgid "lpmove: move-job failed: %s\n"
+msgstr "lpmove: move-job a échoué : %s\n""
+
+msgid "lpoptions: Unknown printer or class!\n"
+msgstr "lpoptions: Imprimante ou classe inconnue !\n"
+
+msgid "lpoptions: No printers!?!\n"
+msgstr "lpoptions: Pas d'imprimante !?!\n"
+
+#, c-format
+msgid "lpoptions: Unable to add printer or instance: %s\n"
+msgstr "lpoptions: Impossible d'ajouter l'imprimante ou l'instance : %s\n"
+
+#, c-format
+msgid "lpoptions: Destination %s has no PPD file!\n"
+msgstr "lpoptions: La destination %s n'a pas de fichier PPD !\n"
+
+#, c-format
+msgid "lpoptions: Unable to open PPD file for %s!\n"
+msgstr "lpoptions: Impossible d'ouvrir le fichier PPD pour %s !\n"
+
+msgid ""
+"Usage: lpoptions [-h server] [-E] -d printer\n"
+"       lpoptions [-h server] [-E] [-p printer] -l\n"
+"       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
+"       lpoptions [-h server] [-E] -x printer\n"
+msgstr ""
+"Utilisation : lpoptions [-h serveur] [-E] -d imprimante\n"
+"              lpoptions [-h serveur] [-E] [-p imprimante] -l\n"
+"              lpoptions [-h serveur] [-E] -p imprimante -o option[=valeur] ...\n"
+"              lpoptions [-h serveur] [-E] -x imprimante\n"
+
+msgid "lppasswd: Only root can add or delete passwords!\n"
+msgstr "lppasswd: Seul l'utilisateur « root » peut ajouter ou supprimer des mots de passe !\n"
+
+msgid "Enter old password:"
+msgstr "Ancien mot de passe :"
+
+#, c-format
+msgid "lppasswd: Unable to copy password string: %s\n"
+msgstr "lppasswd: Impossible de copier le mot de passe : %s\n"
+
+msgid "Enter password:"
+msgstr "Entrez le nouveau mot de passe :"
+
+msgid "Enter password again:"
+msgstr "Confirmez le nouveau mot de passe :"
+
+msgid "lppasswd: Sorry, passwords don't match!\n"
+msgstr "lppasswd: Désolé, les mots de passe sont différents !\n"
+
+msgid ""
+"lppasswd: Sorry, password rejected.\n"
+"Your password must be at least 6 characters long, cannot contain\n"
+"your username, and must contain at least one letter and number.\n"
+msgstr ""
+"lppasswd: Désolé, mot de passe refusé.\n"
+"Votre mot de passe doit comporter au moins 6 caractères, au moins une lettre\n"
+"et un nombre, et ne peut contenir votre nom d'utilisateur.\n"
+
+msgid "lppasswd: Password file busy!\n"
+msgstr "lppasswd: Le fichier des mots de passe exidte déjà !\n"
+
+#, c-format
+msgid "lppasswd: Unable to open password file: %s\n"
+msgstr "lppasswd: Impossible d'ouvrir le fichier des mots de passe: %s\n"
+
+#, c-format
+msgid "lppasswd: Unable to write to password file: %s\n"
+msgstr "lppasswd: Impossible d'écrire dans le fichier des mots de passe : %s\n"
+
+#, c-format
+msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
+msgstr "lppasswd: l'utilisateur « %s » et/ou le groupe « %s » n'existe(nt) pas !\n"
+
+msgid "lppasswd: Sorry, password doesn't match!\n"
+msgstr "lppasswd: Désolé, le mot de passe est erroné !\n"
+
+msgid "lppasswd: Password file not updated!\n"
+msgstr "lppasswd: Le fichier des mots de passe n'a pas été mis-à-jour !\n"
+
+#, c-format
+msgid "lppasswd: failed to backup old password file: %s\n"
+msgstr "lppasswd: impossible de sauvegarder l'ancien fichier des mots de passe : %s\n"
+
+#, c-format
+msgid "lppasswd: failed to rename password file: %s\n"
+msgstr "lppasswd: impossible de renommer le fichier des mots de passe : %s\n"
+
+msgid "Usage: lppasswd [-g groupname]\n"
+msgstr "Utilisation : lppasswd [-g nom_groupe]\n"
+
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+"       lppasswd [-g groupname] -a [username]\n"
+"       lppasswd [-g groupname] -x [username]\n"
+msgstr ""
+"Utilisation : lppasswd [-g nom_groupe] [nom_utilisateur]\n"
+"              lppasswd [-g nom_groupe] -a [nom_utilisateur]\n"
+"              lppasswd [-g nom_groupe] -x [nom_utilisateur]\n"
+
+msgid "Start Printer"
+msgstr "Démarrer l'imprimante"
+
+msgid "Stop Printer"
+msgstr "Arrêter l'imprimante"
+
+msgid "Start Class"
+msgstr "Démarrer la classe"
+
+msgid "Stop Class"
+msgstr "Arrêter la classe"
+
+msgid "Accept Jobs"
+msgstr "Accepter les tâches"
+
+msgid "Reject Jobs"
+msgstr "Refuser les tâches"
+
+msgid "Purge Jobs"
+msgstr "Effacer les tâches"
+
+msgid "Set As Default"
+msgstr "Choisir par défaut"
+
+msgid "Administration"
+msgstr "Administration"
+
+msgid "Modify Class"
+msgstr "Modifier la classe"
+
+msgid "Add Class"
+msgstr "Ajouter une classe"
+
+msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgstr "Le nom de classe doit comporter au plus 127 caractères, tous imprimables, sans espace, '/' ni '#'."
+
+msgid "Unable to modify class:"
+msgstr "Impossible de modifier la classe :"
+
+msgid "Unable to add class:"
+msgstr "Impossible d'ajouter la classe :"
+
+msgid "Modify Printer"
+msgstr "Modifier l'imprimante"
+
+msgid "Add Printer"
+msgstr "Ajouter une imprimante"
+
+msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgstr "Le nom d'imprimante doit comporter au plus 127 caractères, tous imprimables, sans espace, '/' ni '#'."
+
+msgid "Unable to get list of printer drivers:"
+msgstr "Impossible d'obtenir la liste des pilotes pour l'imprimante:"
+
+msgid "Unable to modify printer:"
+msgstr "Impossible de modifier l'imprimante :"
+
+msgid "Unable to add printer:"
+msgstr "Impossible d'ajouter l'imprimante :"
+
+msgid "Set Printer Options"
+msgstr "Définir les options de l'imprimante"
+
+msgid "Missing form variable!"
+msgstr "Un champ du formulaire HTML n'a pas été rempli !"
+
+msgid "Unable to get PPD file!"
+msgstr "Impossible de trouver le fichier PPD !"
+
+msgid "Unable to open PPD file:"
+msgstr "Impossible d'ouvrir le fichier PPD :"
+
+msgid "Banners"
+msgstr "Bannières"
+
+msgid "Starting Banner"
+msgstr "Début de la bannière"
+
+msgid "Ending Banner"
+msgstr "Fin de la bannière"
+
+msgid "Policies"
+msgstr "Politiques"
+
+msgid "Error Policy"
+msgstr "Politique d'erreur"
+
+msgid "Operation Policy"
+msgstr "Politique des opérations"
+
+msgid "PS Binary Protocol"
+msgstr "Protocole binaire PS"
+
+msgid "None"
+msgstr "Auncun(e)"
+
+msgid "Unable to set options:"
+msgstr "Impossible de définir les options :"
+
+msgid "Change Settings"
+msgstr "Modifier les paramètres"
+
+msgid "Unable to change server settings:"
+msgstr "Impossible de modifier les paramètres du serveur :"
+
+msgid "Unable to upload cupsd.conf file:"
+msgstr "Impossible de transmettre le fichier cupsd.conf :"
+
+msgid "Edit Configuration File"
+msgstr "Éditer le fichier de configuration"
+
+msgid "Unable to create temporary file:"
+msgstr "Impossible de créer le fichier temporaire :"
+
+msgid "Unable to access cupsd.conf file:"
+msgstr "Impossible d'accéder au fichier cupsd.conf :"
+
+msgid "Unable to edit cupsd.conf files larger than 1MB!"
+msgstr "Impossible d'éditer des fichiers cupsd.conf de taille supérieure à 1Mo !"
+
+msgid "Delete Class"
+msgstr "Supprimer la classe"
+
+msgid "Unable to delete class:"
+msgstr "Impossible de supprimer la classe :"
+
+msgid "Delete Printer"
+msgstr "Supprimer l'imprimante"
+
+msgid "Unable to delete printer:"
+msgstr "Impossible de supprimer l'imprimante :"
+
+msgid "Export Printers to Samba"
+msgstr "Exporter les imprimantes vers SAMBA"
+
+msgid "Unable to fork process!"
+msgstr "Impossible de faire un « fork » !"
+
+msgid "Unable to connect to server!"
+msgstr "Impossible de se connecter au serveur !"
+
+msgid "Unable to get printer attributes!"
+msgstr "Impossible de récupérer les attributs de l'imprimante !"
+
+msgid "Unable to convert PPD file!"
+msgstr "Impossible de convertir le fichier PPD !"
+
+msgid "Unable to copy Windows 2000 printer driver files!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 2000 !"
+
+msgid "Unable to install Windows 2000 printer driver files!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 2000 !"
+
+msgid "Unable to copy Windows 9x printer driver files!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 9x !"
+
+msgid "Unable to install Windows 9x printer driver files!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 9x !"
+
+msgid "Unable to set Windows printer driver!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows !"
+
+msgid "No printer drivers found!"
+msgstr "Aucun pilote trouvé pour l'imprimante !"
+
+msgid "Unable to execute cupsaddsmb command!"
+msgstr "Impossible d'exécuter la commande cupsaddsmb !"
+
+#, c-format
+msgid "cupsaddsmb failed with status %d"
+msgstr "cupsaddsmb a échoué avec le statut %d"
+
+#, c-format
+msgid "cupsaddsmb crashed on signal %d"
+msgstr "cupsaddsmb s'est terminé inopinément sur réception du signal %d"
+
+msgid "A Samba username is required to export printer drivers!"
+msgstr "Il faut un nom d'utilisateur SAMBA pour exporter les pilotes d'imprimante !"
+
+msgid "A Samba password is required to export printer drivers!"
+msgstr "Il faut un mot de passe SAMBA pour exporter les pilotes d'imprimante !"
+
+msgid "Unable to open cupsd.conf file:"
+msgstr "Impossible d'ouvrir le fichier cupsd.conf :"
+
+msgid "Unable to change printer:"
+msgstr "Impossible de modifier l'imprimante :"
+
+msgid "Set Allowed Users"
+msgstr "Définir les autorisations"
+
+msgid "Unable to get printer attributes:"
+msgstr "Impossible de récupérer les attributs de l'imprimante :"
+
+msgid "Set Publishing"
+msgstr "Publier"
+
+msgid "Unable to change printer-is-shared attribute:"
+msgstr "Impossible de modifier l'attribut « printer-is-shared » :"
+
+msgid "Classes"
+msgstr "Classes"
+
+msgid "Unable to get class list:"
+msgstr "Impossible d'obtenir la liste des classes :"
+
+msgid "Unable to get class status:"
+msgstr "Impossible d'obtenir l'état de la classe :"
+
+msgid "Move Job"
+msgstr "Transférer la tâche"
+
+msgid "Unable to find destination for job!"
+msgstr "Impossible de trouver la destination de la tâche !"
+
+msgid "Move All Jobs"
+msgstr "Transférer toutes les tâches"
+
+msgid "Unable to move job"
+msgstr "Impossible de transférer la tâche !"
+
+msgid "Unable to move jobs"
+msgstr "Impossible de transférer les tâches !"
+
+msgid "Print Test Page"
+msgstr "Imprimer la page de test"
+
+msgid "Unable to print test page:"
+msgstr "Impossible d'imprimer la page de test :"
+
+msgid "Jobs"
+msgstr "Tâches"
+
+msgid "Job operation failed:"
+msgstr "L'opération sur la tâche a échoué :"
+
+msgid "Printers"
+msgstr "Imprimantes"
+
+msgid "Unable to get printer list:"
+msgstr "Impossible d'obtenir la liste des imprimantes :"
+
+msgid "Unable to get printer status:"
+msgstr "Impossible d'obtenir l'état de l'imprimante :"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Unable to open PPD file"
+msgstr "Impossible d'ouvrir le fichier PPD !"
+
+msgid "NULL PPD file pointer"
+msgstr "Pointeur de fichier PPD NUL !"
+
+msgid "Memory allocation error"
+msgstr "Problème d'allocation de mémoire"
+
+msgid "Missing PPD-Adobe-4.x header"
+msgstr "Il manque l'entête PPD-Adobe-4.x"
+
+msgid "Missing value string"
+msgstr "Il manque la valeur"
+
+msgid "Internal error"
+msgstr "Erreur interne"
+
+msgid "Bad OpenGroup"
+msgstr "OpenGroup erroné"
+
+msgid "OpenGroup without a CloseGroup first"
+msgstr "OpenGroup sans de CloseGroup d'abord"
+
+msgid "Bad OpenUI/JCLOpenUI"
+msgstr "OpenUI/JCLOpenUI erroné"
+
+msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
+msgstr "OpenUI/JCLOpenUI sans de CloseUI/JCLCloseUI d'abord"
+
+msgid "Bad OrderDependency"
+msgstr "OrderDependency erroné"
+
+msgid "Bad UIConstraints"
+msgstr "UIConstraints erroné"
+
+msgid "Missing asterisk in column 1"
+msgstr "Il manque un astérisque à la colonne 1"
+
+msgid "Line longer than the maximum allowed (255 characters)"
+msgstr "Ligne plus longue que les 255 caractères autorisés"
+
+msgid "Illegal control character"
+msgstr "Caractère de contrôle incorrect"
+
+msgid "Illegal main keyword string"
+msgstr "Mot-clé essentiel incorrect"
+
+msgid "Illegal option keyword string"
+msgstr "Mot-clé d'option incorrect"
+
+msgid "Illegal translation string"
+msgstr "Traduction incorrecte"
+
+msgid "Illegal whitespace character"
+msgstr "Caractère « espace blanc » incorrect"
+
+msgid "Bad custom parameter"
+msgstr "Paramètre de personnalisation incorrect"
+
+msgid "Unknown"
+msgstr "Inconnu(e)"
+
+msgid "Custom"
+msgstr "Personnalisation"
+
+msgid "JCL"
+msgstr "JCL ( Langage de contrôle de tâche )"
+
+msgid "No authentication information provided!"
+msgstr "Pas d'information d'authentification !"
+
+#, c-format
+msgid "Password for %s required to access %s via SAMBA: "
+msgstr "Il faut un mot de passe à %s pour accéder à %s via SAMBA : "
+
+#, c-format
+msgid "Running command: %s %s -N -U '%s%%%s' -c '%s'\n"
+msgstr "Exécute la commande : %s %s -N -U '%s%%%s' -c '%s'\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: Impossible d'exécuter « %s » : %s\n"
+
+msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
+msgstr "cupsaddsmb: Aucun pilote d'impression pour Windows n'est installé !\n"
+
+msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "cupsaddsmb: Attention, aucun pilote d'impression pour Windows 2000 n'est installé !\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is already a member of class %s.\n"
+msgstr "lpadmin: L'imprimante %s est déjà membre de la classe %s.\n"
+
+msgid "lpadmin: No member names were seen!\n"
+msgstr "lpadmin: Aucun nom de membre trouvé !\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is not a member of class %s.\n"
+msgstr "lpadmin: L'imprimante %s n'est pas membre de la classe %s.\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+msgstr ""
+"Matériel :   URI = %s\n"
+"          classe = %s\n"
+"            info = %s\n"
+"   marque/modèle = %s\n"
+"     ID matériel = %s\n"
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+msgstr ""
+"Modèle :        nom = %s\n"
+"   langue naturelle = %s\n"
+"      marque/modèle = %s\n"
+"     ID matériel = %s\n"
+
+
+msgid "Usage: lpmove job/src dest\n"
+msgstr "Utilisation : lpmove tâche/source destination\n"
+
+msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
+msgstr "lpstat: Il faut « completed » ou « not-completed » après l'option -W !\n"
+
+#, c-format
+msgid "%s accepting requests since %s\n"
+msgstr "%s accepte les requêtes depuis le %s\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s n'accepte pas les requêtes depuis le %s -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since %s\n"
+msgstr "%s/%s accepte les requêtes depuis le %s\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s n'accepte pas les requêtes depuis le %s -\n"
+"\t%s\n"
+
+msgid "lpc> "
+msgstr "lpc> "
+
+#, c-format
+msgid "%s: Unable to contact server!\n"
+msgstr "%s: Impossible de contacter le serveur !\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-U' option!\n"
+msgstr "%s: Erreur - il faut un nom d'utilisateur après l'option '-U' !\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s/%s\"!\n"
+msgstr "%s: Erreur - destination « %s/%s » inconnue !\n"
+
+#, c-format
+msgid "%s: Unknown destination \"%s\"!\n"
+msgstr "%s: Destination « %s » inconnue !\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-h' option!\n"
+msgstr "%s: Erreur - il faut un nom de machine après l'option '-h' !\n"
+
+#, c-format
+msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: Erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+#, c-format
+msgid "%s: error - no default destination available.\n"
+msgstr "%s: Erreur - aucune destination par défaut n'est disponible.\n"
+
+msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr "Utilisation : lpq [-P dest] [-U nom_utilisateur] [-h nom_machine[:port]] [-l] [+intervalle]\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-H' option!\n"
+msgstr "%s: Erreur - il faut un nom de machine après l'option '-H' !\n"
+
+#, c-format
+msgid "%s: Error - expected value after '-%c' option!\n"
+msgstr "%s: Erreur - il faut une valeur après l'option '-%c' !\n"
+
+#, c-format
+msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "%s: Attention - le modificateur de format '%c' n'est pas géré - l'affichage pourrait être incorrect !\n"
+
+#, c-format
+msgid "%s: error - expected option=value after '-o' option!\n"
+msgstr "%s: Erreur - il faut un argument du type option=valeur après l'option '-o' !\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-P' option!\n"
+msgstr "%s: Erreur - il faut une destination après l'option '-P' !\n"
+
+#, c-format
+msgid "%s: Error - expected copy count after '-#' option!\n"
+msgstr "%s: Erreur - il faut un nombre de copies après l'option '-#' !\n"
+
+#, c-format
+msgid "%s: Error - expected name after '-%c' option!\n"
+msgstr "%s: Erreur - il faut un nom après l'option '-%c' !\n"
+
+#, c-format
+msgid "%s: Error - unknown option '%c'!\n"
+msgstr "%s: Erreur - option '%c' inconnue !\n"
+
+#, c-format
+msgid "%s: Error - unable to access \"%s\" - %s\n"
+msgstr "%s: Erreur - impossible d'accéder à « %s » - %s\n"
+
+#, c-format
+msgid "%s: Error - too many files - \"%s\"\n"
+msgstr "%s: Erreur - trop de fichiers - « %s »\n"
+
+#, c-format
+msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: Erreur - la variable d'environnement %s désigne une destination inexistente « %s » !\n"
+
+#, c-format
+msgid "%s: Error - no default destination available.\n"
+msgstr "%s: Erreur - aucune destination par défaut n'est disponible.\n"
+
+#, c-format
+msgid "%s: Error - scheduler not responding!\n"
+msgstr "%s: Erreur - l'ordonnanceur ne répond pas !\n"
+
+#, c-format
+msgid "%s: Error - unable to create temporary file \"%s\" - %s\n"
+msgstr "%s: Erreur - impossible de créer le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "%s: Error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "%s: Erreur - impossible d'écrire dans le fichier temporaire « %s » - %s\n"
+
+#, c-format
+msgid "%s: Error - stdin is empty, so no job has been sent.\n"
+msgstr "%s: Erreur - stdin est vide, donc aucune tâche n'a été envoyée.\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s\"!\n"
+msgstr "%s: Erreur - destination « %s » inconnue !\n"
+
+#, c-format
+msgid "%s: Error - expected reason text after '-r' option!\n"
+msgstr "%s: Erreur - il faut le texte de la raison après l'option '-r' !\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-u' option!\n"
+msgstr "%s: Erreur - il faut un nom d'utilisateur après l'option '-u' !\n"
+
+#, c-format
+msgid "%s: %s failed: %s\n"
+msgstr ""%s: %s a échoué : %s"
+
+#, c-format
+msgid "%s: Error - expected destination after '-d' option!\n"
+msgstr "%s: Erreur - il faut une destination après l'option '-d' !\n"
+
+#, c-format
+msgid "%s: Error - expected form after '-f' option!\n"
+msgstr "%s: Erreur - il faut un format après l'option '-f' !\n"
+
+#, c-format
+msgid "%s: Warning - form option ignored!\n"
+msgstr "%s: Attention - l'option « format » est ignorée !\n"
+
+#, c-format
+msgid "%s: Expected job ID after '-i' option!\n"
+msgstr "%s: Il faut un numéro de tâche après l'option '-i' !\n"
+
+#, c-format
+msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "%s: Erreur - impossible d'imprimer et modifier les tâches en même temps !\n"
+
+#, c-format
+msgid "%s: Error - bad job ID!\n"
+msgstr "%s: Erreur - numéro de tâche incorrect !\n"
+
+#, c-format
+msgid "%s: Error - expected copies after '-n' option!\n"
+msgstr "%s: Erreur - il faut un nombre de copies après l'option '-n' !\n"
+
+#, c-format
+msgid "%s: Error - expected option string after '-o' option!\n"
+msgstr "%s: Erreur - il faut une chaîne d'option \"nom=valeur\" après l'option '-o' !\n"
+
+#, c-format
+msgid "%s: Error - expected priority after '-%c' option!\n"
+msgstr "%s: Erreur - il faut une priorité après l'option '-%c' !\n"
+
+#, c-format
+msgid "%s: Error - priority must be between 1 and 100.\n"
+msgstr "%s: Erreur - la priorité doit être comprise entre 1 et 100.\n"
+
+#, c-format
+msgid "%s: Error - expected title after '-t' option!\n"
+msgstr "%s: Erreur - il faut un titre après l'option '-t'  !\n"
+
+#, c-format
+msgid "%s: Error - expected mode list after '-y' option!\n"
+msgstr "%s: Erreur - il faut une liste de modes après l'option '-y' !\n"
+
+#, c-format
+msgid "%s: Warning - mode option ignored!\n"
+msgstr "%s: Attention - l'option « mode » est ignorée !\n"
+
+#, c-format
+msgid "%s: Error - expected hold name after '-H' option!\n"
+msgstr "%s: Erreur - il faut un code de retenue après l'option '-H' !\n"
+
+#, c-format
+msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
+msgstr "%s: Il faut un numéro de tâche ( '-i' ) avant '-H restart' !\n"
+
+#, c-format
+msgid "%s: Error - expected page list after '-P' option!\n"
+msgstr "%s: Erreur - il faut une liste de pages après l'option '-P' !\n"
+
+#, c-format
+msgid "%s: Error - expected character set after '-S' option!\n"
+msgstr "%s: Erreur - il faut un jeu de caractères après l'option '-S' !\n"
+
+#, c-format
+msgid "%s: Warning - character set option ignored!\n"
+msgstr "%s: Attention - l'option « jeu de caractères » est ignorée !\n"
+
+#, c-format
+msgid "%s: Error - expected content type after '-T' option!\n"
+msgstr "%s: Erreur - il faut un type de contenu après l'option '-T' !\n"
+
+#, c-format
+msgid "%s: Warning - content type option ignored!\n"
+msgstr "%s: Attention - l'option « type de contenu » est ignorée !\n"
+
+#, c-format
+msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: Erreur - impossible d'imprimer depuis l'entrée standard si un fichier\n"
+"             ou un numéro de tâche est spécifié !\n"
+
+#, c-format
+msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
+msgstr "%s: Erreur - il faut « completed », « not-completed », ou « all » après l'option -W !\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-b' option!\n"
+msgstr "%s: Erreur - il faut une destination après l'option '-b' !\n"
+
+#, c-format
+msgid "%s: Invalid destination name in list \"%s\"!\n"
+msgstr "%s: Erreur - nom de destination incorrect dans la liste « %s » !\n"
+
+#, c-format
+msgid "%s: Unable to connect to server\n"
+msgstr "%s: Impossible de se connecter au serveur !\n"
+
+msgid "Print Job:"
+msgstr "Imprimer la tâche :"
+
+msgid "pending"
+msgstr "en attente"
+
+msgid "held"
+msgstr "retenue"
+
+msgid "processing"
+msgstr "en cours"
+
+msgid "stopped"
+msgstr "arrêtée"
+
+msgid "canceled"
+msgstr "annulée"
+
+msgid "aborted"
+msgstr "abandonnée"
+
+msgid "completed"
+msgstr "terminée"
+
+msgid "unknown"
+msgstr "inconnue"
+
+msgid "untitled"
+msgstr "sans titre"
+
+msgid "Printer:"
+msgstr "Imprimante :"
+
+msgid "idle"
+msgstr "inactive"
+
+msgid "Missing notify-subscription-ids attribute!"
+msgstr "Il manque l'attibut notify-subscription-ids"
+
+msgid "Job subscriptions cannot be renewed!"
+msgstr "Les souscriptions de tâche ne peuvent être renouvelées !"
+
+
+I AM HERE
+
+
+msgid "cupsd: Expected config filename after \"-c\" option!\n"
+msgstr "cupsd: Il faut un nom de fichier de configuration après l'option '-c' !\n"
+
+msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
+msgstr "cupsd: la gestion de launchd(8) n'a pas été compilée - exécution en mode normal.\n"
+
+#, c-format
+msgid "cupsd: Unknown option \"%c\" - aborting!\n"
+msgstr "cupsd: Option « %c » inconnue - abandon !\n"
+
+#, c-format
+msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
+msgstr "cupsd: Argument « %s » inconnu - abandon !\n"
+
+msgid ""
+"Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c config-file      Load alternate configuration file\n"
+"-f                  Run in the foreground\n"
+"-F                  Run in the foreground but detach\n"
+"-h                  Show this usage message\n"
+"-l                  Run cupsd from launchd(8)\n"
+msgstr ""
+"Utilisation : cupsd [-c fichier-config] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c fichier-config   Charge un autre fichier de configuration\n"
+"-f                  Exécution au premier plan\n"
+"-F                  Exécution au premier plan mais détaché\n"
+"-h                  Affiche the message d'aide\n"
+"-l                  Exécute cupsd depuis launchd(8)\n"
+
+#, c-format
+msgid "        WARN    Line %d only contains whitespace!\n"
+msgstr "        WARN    Line %d only contains whitespace!\n"
+
+msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+
+msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
+msgstr "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
+
+msgid "Printer Maintenance"
+msgstr "Maintenance de l'imprimante"
+
+msgid "Unable to send maintenance job:"
+msgstr "Impossible d'envoyer la tâche de maintenance :"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
+msgstr "cupsaddsmb: Pas de fichier PPD pour l'imprimante « %s » - %s\n"
+
+#, c-format
+msgid "      **FAIL**  %s %s does not exist!\n"
+msgstr "      **FAIL**  %s %s does not exist!\n"
+
+#, c-format
+msgid "      **FAIL**  Bad language \"%s\"!\n"
+msgstr "      **FAIL**  Bad language \"%s\"!\n"
+
+#, c-format
+msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
+msgstr "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
+
+#, c-format
+msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
+msgstr "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
+
+#, c-format
+msgid "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+
+#, c-format
+msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
+msgstr "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
+
+#, c-format
+msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
+msgstr "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
+
+msgid "Help"
+msgstr "Aide"
+
+#, c-format
+msgid "Missing value on line %d!\n"
+msgstr "Il manque une valeur à la ligne %d !\n"
+
+#, c-format
+msgid "Missing double quote on line %d!\n"
+msgstr "Il manque un \" à la ligne %d !\n"
+
+#, c-format
+msgid "Bad option + choice on line %d!\n"
+msgstr "Couple option + choix incorrect à la ligne %d !\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 2000 ( %d ) !\n"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour CUPS ( %d ) !\n"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 2000 ( %d ) !\n"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 9x ( %d ) !\n"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 9x ( %d ) !\n"
+
+msgid "No Windows printer drivers are installed!\n"
+msgstr "Aucun pilote d'impression pour Windows n'est installé !\n"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "Attention, aucun pilote d'impression pour Windows 2000 n'est installé !\n"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!\n"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows ( %d ) !\n""
+
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+"       cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -E               Encrypt the connection to the server\n"
+"  -H samba-server  Use the named SAMBA server\n"
+"  -U samba-user    Authenticate using the named SAMBA user\n"
+"  -a               Export all printers\n"
+"  -h cups-server   Use the named CUPS server\n"
+"  -v               Be verbose (show commands)\n"
+msgstr ""
+"Utilisation : cupsaddsmb [options] imprimante1 ... imprimanteN\n"
+"              cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+"  -E                    Crypter la connexion au serveur\n"
+"  -H serveur-samba      Utiliser le serveur SAMBA désigné\n"
+"  -U utilisateur-samba  S'authentifier avec l'utilisateur SAMBA désigné\n"
+"  -a                    Exporter toutes les imprimantes\n"
+"  -h serveur-CUPS       Utiliser le serveur CUPS désigné\n"
+"  -v                    Être locace ( afficher les commandes )\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 2000 ( %d ) !"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour CUPS ( %d ) !"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 2000 ( %d ) !"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!"
+msgstr "Impossible de copier les fichiers de pilote d'impression pour Windows 9x ( %d ) !"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!"
+msgstr "Impossible d'installer les fichiers de pilote d'impression pour Windows 9x ( %d ) !"
+
+msgid "No Windows printer drivers are installed!"
+msgstr "Aucun pilote d'impression pour Windows n'est installé !"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!"
+msgstr "Attention, aucun pilote d'impression pour Windows 2000 n'est installé !"
+
+#, c-format
+msgid "open of %s failed: %s"
+msgstr "l'ouverture de %s a échoué : %s"
+
+#, c-format
+msgid "Running command: %s %s -N -A %s -c '%s'\n"
+msgstr "Exécution de la commande : %s %s -N -A %s -c '%s'\n"
+
+#, c-format
+msgid "stat of %s failed: %s"
+msgstr "stat sur %s a échoué : %s"
+
+#, c-format
+msgid "Job #%d is already cancelled - can't cancel."
+msgstr "La tâche n°%d est déjà annulée - impossible de l'annuler."
+
+#, c-format
+msgid "Job #%d is already aborted - can't cancel."
+msgstr "La tâche n°%d est déjà abandonnée - impossible de l'annuler."
+
+#, c-format
+msgid "Job #%d is already completed - can't cancel."
+msgstr "La tâche n°%d est déjà terminée - impossible de l'annuler."
+
+#, c-format
+msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgstr "Vous devez accéder à cette page avec l'URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+
+#, c-format
+msgid "Unsupported format '%s'!"
+msgstr "Format non géré '%s' !"
+
+msgid "FAIL\n"
+msgstr "ÉCHEC"
+
+#, c-format
+msgid ""
+"    Line %d is longer than 255 characters (%d)!\n"
+"        REF: Page 25, Line Length\n"
+msgstr ""
+"    Line %d is longer than 255 characters (%d)!\n"
+"        REF: Page 25, Line Length\n"
+
+msgid ""
+"    Missing %!PS-Adobe-3.0 on first line!\n"
+"        REF: Page 17, 3.1 Conforming Documents\n"
+msgstr ""
+"    Missing %!PS-Adobe-3.0 on first line!\n"
+"        REF: Page 17, 3.1 Conforming Documents\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%Pages: on line %d!\n"
+"        REF: Page 43, %%%%Pages:\n"
+msgstr ""
+"    Bad %%%%Pages: on line %d!\n"
+"        REF: Page 43, %%%%Pages:\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%BoundingBox: on line %d!\n"
+"        REF: Page 39, %%%%BoundingBox:\n"
+msgstr ""
+"    Bad %%%%BoundingBox: on line %d!\n"
+"        REF: Page 39, %%%%BoundingBox:\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%Page: on line %d!\n"
+"        REF: Page 53, %%%%Page:\n"
+msgstr ""
+"    Bad %%%%Page: on line %d!\n"
+"        REF: Page 53, %%%%Page:\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%BoundingBox: comment!\n"
+"        REF: Page 39, %%BoundingBox:\n"
+msgstr ""
+"    Missing or bad %%BoundingBox: comment!\n"
+"        REF: Page 39, %%BoundingBox:\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%Pages: comment!\n"
+"        REF: Page 43, %%Pages:\n"
+msgstr ""
+"    Missing or bad %%Pages: comment!\n"
+"        REF: Page 43, %%Pages:\n"
+
+#, c-format
+msgid ""
+"    Missing %%EndComments comment!\n"
+"        REF: Page 41, %%EndComments\n"
+msgstr ""
+"    Missing %%EndComments comment!\n"
+"        REF: Page 41, %%EndComments\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%Page: comments!\n"
+"        REF: Page 53, %%Page:\n"
+msgstr ""
+"    Missing or bad %%Page: comments!\n"
+"        REF: Page 53, %%Page:\n"
+
+#, c-format
+msgid "    Too many %%EndDocument comments!\n"
+msgstr "    Too many %%EndDocument comments!\n"
+
+#, c-format
+msgid "    Too many %%BeginDocument comments!\n"
+msgstr "    Too many %%BeginDocument comments!\n"
+
+#, c-format
+msgid "    Saw %d lines that exceeded 255 characters!\n"
+msgstr "    Saw %d lines that exceeded 255 characters!\n"
+
+msgid "PASS\n"
+msgstr "OK"
+
+msgid "    Warning: file contains binary data!\n"
+msgstr "    Warning: file contains binary data!\n"
+
+#, c-format
+msgid "    Warning: obsolete DSC version %.1f in file!\n"
+msgstr "    Warning: obsolete DSC version %.1f in file!\n"
+
+#, c-format
+msgid "    Warning: no %%EndComments comment in file!\n"
+msgstr "    Warning: no %%EndComments comment in file!\n"
+
+msgid ""
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
+"       cupstestdsc [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+"    -h       Show program usage\n"
+"\n"
+"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+msgstr ""
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
+"       cupstestdsc [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+"    -h       Show program usage\n"
+"\n"
+"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+
+
+#, c-format
+msgid "Password for %s on %s? "
+msgstr "Mot de passe pour %s sur %s? "
+
+msgid ""
+"      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+
+
+#
+# End of "$Id$".
+#
index 4ea69f070519a7f71f0765ba1ff2dd55b907c4e9..60d920327b819b7925aeb6147484cfbfa851a955 100644 (file)
@@ -22,7 +22,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: cups_it\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:08-0400\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
 "PO-Revision-Date: 2006-11-16 00:34+0100\n"
 "Last-Translator: Vincenzo Reale <smart2128@baslug.org>\n"
 "Language-Team: Italian <kde-i18n-it@mail.kde.org>\n"
@@ -73,8 +73,12 @@ msgstr "No"
 msgid "Auto"
 msgstr "Auto"
 
-msgid "Enter your username and password or the root username and password to access this page."
-msgstr "Inserisci il tuo nome utente e la tua password o il nome utente e la password di root per accedere a questa pagina."
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page."
+msgstr ""
+"Inserisci il tuo nome utente e la tua password o il nome utente e la "
+"password di root per accedere a questa pagina."
 
 msgid "You must use a https: URL to access this page."
 msgstr "Devi usare un URL https: per accedere a questa pagina."
@@ -100,8 +104,10 @@ msgstr "%s non supportato!"
 msgid "The printer or class was not found."
 msgstr "La stampante o la classe non è stata trovata."
 
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr "printer-uri deve essere nella forma \"ipp://NOMEHOST/classes/NOMECLASSE\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr ""
+"printer-uri deve essere nella forma \"ipp://NOMEHOST/classes/NOMECLASSE\"."
 
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
@@ -138,19 +144,29 @@ msgstr "Lingua \"%s\" non supportata!"
 msgid "The notify-user-data value is too large (%d > 63 octets)!"
 msgstr "Il valore notify-user-data è troppo grande (%d > 63 ottetti)!"
 
-msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr "L'attributo notify-lease-duration non può essere usato con le sottoscrizioni delle operazioni."
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr ""
+"L'attributo notify-lease-duration non può essere usato con le sottoscrizioni "
+"delle operazioni."
 
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr "printer-uri deve essere nella forma \"ipp://NOMEHOST/printers/NOMESTAMPANTE\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"printer-uri deve essere nella forma \"ipp://NOMEHOST/printers/NOMESTAMPANTE"
+"\"."
 
 #, c-format
 msgid "A class named \"%s\" already exists!"
 msgstr "Una classe con nome \"%s\" già esiste!"
 
 #, c-format
-msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
-msgstr "Gli URI del file di dispositivo sono stati disabilitati! Per abilitarli, vedere la direttiva FileDevice in \"%s/cupsd.conf\"."
+msgid ""
+"File device URIs have been disabled! To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
+msgstr ""
+"Gli URI del file di dispositivo sono stati disabilitati! Per abilitarli, "
+"vedere la direttiva FileDevice in \"%s/cupsd.conf\"."
 
 #, c-format
 msgid "Bad device-uri \"%s\"!"
@@ -200,7 +216,8 @@ msgstr "L'operazione #%d non è bloccata per l'autenticazione!"
 
 #, c-format
 msgid "You are not authorized to authenticate job #%d owned by \"%s\"!"
-msgstr "Non sei autorizzato ad autenticare l'operazione #%d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzato ad autenticare l'operazione #%d di proprietà di \"%s\"!"
 
 msgid "The printer-uri attribute is required!"
 msgstr "L'attributo printer-uri è richiesto!"
@@ -218,7 +235,8 @@ msgstr "Nessuna operazione attiva su %s!"
 
 #, c-format
 msgid "You are not authorized to delete job #%d owned by \"%s\"!"
-msgstr "Non sei autorizzato ad eliminare l'operazione #%d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzato ad eliminare l'operazione #%d di proprietà di \"%s\"!"
 
 #, c-format
 msgid "Job #%d is already %s - can't cancel."
@@ -296,7 +314,8 @@ msgstr "L'operazione #%d è terminata e non può essere modificata!"
 
 #, c-format
 msgid "You are not authorized to move job #%d owned by \"%s\"!"
-msgstr "Non sei autorizzato a spostare l'operazione #%d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzato a spostare l'operazione #%d di proprietà di \"%s\"!"
 
 msgid "job-printer-uri attribute missing!"
 msgstr "attributo job-printer-uri mancante!"
@@ -329,7 +348,9 @@ msgstr "L'operazione #%d non è bloccata!"
 
 #, c-format
 msgid "You are not authorized to release job id %d owned by \"%s\"!"
-msgstr "Non sei autorizzata a rilasciare l'operazione con id %d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzata a rilasciare l'operazione con id %d di proprietà di \"%s"
+"\"!"
 
 #, c-format
 msgid "Job #%d is not complete!"
@@ -341,11 +362,15 @@ msgstr "L'operazione #%d non può essere riavviata - nessun file!"
 
 #, c-format
 msgid "You are not authorized to restart job id %d owned by \"%s\"!"
-msgstr "Non sei autorizzato a riavviare l'operazione con id %d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzato a riavviare l'operazione con id %d di proprietà di \"%s"
+"\"!"
 
 #, c-format
 msgid "You are not authorized to send document for job #%d owned by \"%s\"!"
-msgstr "Non sei autorizzato a inviare il documento per l'operazione #%d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzato a inviare il documento per l'operazione #%d di proprietà "
+"di \"%s\"!"
 
 #, c-format
 msgid "Bad document-format \"%s\"!"
@@ -353,7 +378,9 @@ msgstr "document-format \"%s\" errato!"
 
 #, c-format
 msgid "You are not authorized to alter job id %d owned by \"%s\"!"
-msgstr "Non sei autorizzato a modificare l'operazione con id %d di proprietà di \"%s\"!"
+msgstr ""
+"Non sei autorizzato a modificare l'operazione con id %d di proprietà di \"%s"
+"\"!"
 
 #, c-format
 msgid "%s cannot be changed."
@@ -443,8 +470,11 @@ msgid "lpq: Unknown destination \"%s\"!\n"
 msgstr "lpq: Destinazione \"%s\" sconosciuta!\n"
 
 #, c-format
-msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lp: errore - i nomi della variabile d'ambiente %s non esistono nella destinazione \"%s\"!\n"
+msgid ""
+"lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lp: errore - i nomi della variabile d'ambiente %s non esistono nella "
+"destinazione \"%s\"!\n"
 
 msgid "lpq: error - no default destination available.\n"
 msgstr "lpq: errore - nessuna destinazione predefinita disponibile.\n"
@@ -453,7 +483,8 @@ msgstr "lpq: errore - nessuna destinazione predefinita disponibile.\n"
 msgid "lpq: get-jobs failed: %s\n"
 msgstr "lpq: get-jobs fallito: %s\n"
 
-msgid "Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgid ""
+"Rank   Owner      Pri  Job        Files                       Total Size\n"
 msgstr "Posiz.   Proprietario  Stamp.  Operaz.   File         Dim. totali\n"
 
 msgid "Rank    Owner   Job     File(s)                         Total Size\n"
@@ -502,14 +533,19 @@ msgid "lpr: error - expected value after -%c option!\n"
 msgstr "lpr: errore - valore atteso dopo l'opzione -%c!\n"
 
 #, c-format
-msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "lpr: attenzione - il modificatore di formato '%c' non è supportato - il risultato potrebbe non essere corretto!\n"
+msgid ""
+"lpr: warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"lpr: attenzione - il modificatore di formato '%c' non è supportato - il "
+"risultato potrebbe non essere corretto!\n"
 
 msgid "lpr: error - expected option=value after -o option!\n"
 msgstr "lpr: errore - attesa opzione=valore dopo l'opzione -o !\n"
 
 msgid "lpr: warning - email notification is not currently supported!\n"
-msgstr "lpr: attenzione - le notifiche via email non sono al momento supportate!\n"
+msgstr ""
+"lpr: attenzione - le notifiche via email non sono al momento supportate!\n"
 
 msgid "lpr: error - expected destination after -P option!\n"
 msgstr "lpr: errore - destinazione attesa dopo l'opzione -P!\n"
@@ -537,8 +573,11 @@ msgid "lpr: error - too many files - \"%s\"\n"
 msgstr "lpr: errore - troppi file - \"%s\"\n"
 
 #, c-format
-msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lpr: errore - i nomi della variabile d'ambiente %s non esistono nella destinazione \"%s\"!\n"
+msgid ""
+"lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lpr: errore - i nomi della variabile d'ambiente %s non esistono nella "
+"destinazione \"%s\"!\n"
 
 msgid "lpr: error - no default destination available.\n"
 msgstr "lpr: errore - nessuna destinazione predefinita disponibile.\n"
@@ -663,27 +702,38 @@ msgstr "cupsaddsmb: Impossibile convertire il file PPD per %s - %s\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Impossibile copiare i file del driver di stampa di Windows 2000 (%d)!\n"
+msgstr ""
+"cupsaddsmb: Impossibile copiare i file del driver di stampa di Windows 2000 "
+"(%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Impossibile copiare i file del driver di stampa di CUPS (%d)!\n"
+msgstr ""
+"cupsaddsmb: Impossibile copiare i file del driver di stampa di CUPS (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Impossibile installare i file del driver di stampa di Windows 2000 (%d)!\n"
+msgstr ""
+"cupsaddsmb: Impossibile installare i file del driver di stampa di Windows "
+"2000 (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Impossibile copiare i file del driver di stampa di Windows 9x (%d)!\n"
+msgstr ""
+"cupsaddsmb: Impossibile copiare i file del driver di stampa di Windows 9x (%"
+"d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
-msgstr "cupsaddsmb: Impossibile installare i file del driver di stampa di Windows 9x (%d)!\n"
+msgstr ""
+"cupsaddsmb: Impossibile installare i file del driver di stampa di Windows 9x "
+"(%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
-msgstr "cupsaddsmb: Impossibile configurare i file del driver di stampa di Windows (%d)!\n"
+msgstr ""
+"cupsaddsmb: Impossibile configurare i file del driver di stampa di Windows (%"
+"d)!\n"
 
 msgid ""
 "Usage: cupsaddsmb [options] printer1 ... printerN\n"
@@ -1062,10 +1112,12 @@ msgstr " PASS\n"
 
 #, c-format
 msgid ""
-"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
+"        WARN    Duplex option keyword %s should be named Duplex or "
+"JCLDuplex!\n"
 "                REF: Page 122, section 5.17\n"
 msgstr ""
-"        WARN    La parola chiave Duplex %s dovrebbe essere Duplex o JCLDuplex!\n"
+"        WARN    La parola chiave Duplex %s dovrebbe essere Duplex o "
+"JCLDuplex!\n"
 "                RIF: Pagina 122, sezione 5.17\n"
 
 msgid "        WARN    Default choices conflicting!\n"
@@ -1097,7 +1149,8 @@ msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3.\n"
 msgstr ""
-"        WARN    PCFileName maggiore di 8.3 in violazione della specifica PPD.\n"
+"        WARN    PCFileName maggiore di 8.3 in violazione della specifica "
+"PPD.\n"
 "                RIF: Pagine 61-62, sezione 5.3.\n"
 
 msgid ""
@@ -1118,7 +1171,8 @@ msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7.\n"
 msgstr ""
-"        WARN    Protocols contiene PJL, ma gli attributi JCL non sono impostati.\n"
+"        WARN    Protocols contiene PJL, ma gli attributi JCL non sono "
+"impostati.\n"
 "                RIF: Pagine 78-79, sezione 5.7.\n"
 
 #, c-format
@@ -1129,8 +1183,7 @@ msgstr ""
 "        WARN    %s condivide un prefisso comune con %s\n"
 "                RIF: Pagina 15, sezione 3.2.\n"
 
-#, c-format
-#, fuzzy
+#, fuzzy, c-format
 msgid "    %d ERROR%s FOUND\n"
 msgstr "    %d ERROR%s TROVATI\n"
 
@@ -1146,10 +1199,12 @@ msgstr ""
 "                (restrizione=\"%s %s %s %s\")\n"
 
 msgid ""
-"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[."
+"gz]]\n"
 "       program | cupstestppd [-q] [-r] [-v[v]] -\n"
 msgstr ""
-"Uso: cupstestppd [-q] [-r] [-v[v]] nomefile1.ppd[.gz] [... nomefileN.ppd[.gz]]\n"
+"Uso: cupstestppd [-q] [-r] [-v[v]] nomefile1.ppd[.gz] [... nomefileN.ppd[."
+"gz]]\n"
 "       programma | cupstestppd [-q] [-r] [-v[v]] -\n"
 
 msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
@@ -1222,15 +1277,20 @@ msgid "system default destination: %s\n"
 msgstr "destinazione predefinita di sistema: %s\n"
 
 #, c-format
-msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lpstat: errore - i nomi della variabile d'ambiente %s non esistono nella destinazione \"%s\"!\n"
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"!\n"
+msgstr ""
+"lpstat: errore - i nomi della variabile d'ambiente %s non esistono nella "
+"destinazione \"%s\"!\n"
 
 msgid "no system default destination\n"
 msgstr "nessuna destinazione predefinita di sistema\n"
 
 #, c-format
 msgid "Output for printer %s is sent to remote printer %s on %s\n"
-msgstr "L'uscita per la stampante %s è inviata alla stampante remota %s su %s\n"
+msgstr ""
+"L'uscita per la stampante %s è inviata alla stampante remota %s su %s\n"
 
 #, c-format
 msgid "Output for printer %s is sent to %s\n"
@@ -1238,7 +1298,8 @@ msgstr "L'uscita per la stampante %s è inviata a %s\n"
 
 #, c-format
 msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-msgstr "L'uscita per la stampante %s/%s è inviata alla stampante remota %s su %s\n"
+msgstr ""
+"L'uscita per la stampante %s/%s è inviata alla stampante remota %s su %s\n"
 
 #, c-format
 msgid "Output for printer %s/%s is sent to %s\n"
@@ -1382,13 +1443,15 @@ msgid "lpadmin: Expected class name after '-c' option!\n"
 msgstr "lpadmin: Atteso nome classe dopo l'opzione '-c'!\n"
 
 msgid "lpadmin: Class name can only contain printable characters!\n"
-msgstr "lpadmin: Il nome della classe può contenere solo caratteri stampabili!\n"
+msgstr ""
+"lpadmin: Il nome della classe può contenere solo caratteri stampabili!\n"
 
 msgid "lpadmin: Expected printer name after '-d' option!\n"
 msgstr "lpadmin: Atteso nome stampante dopo l'opzione '-d'!\n"
 
 msgid "lpadmin: Printer name can only contain printable characters!\n"
-msgstr "lpadmin: Il nome della stampante può contenere solo caratteri stampabili!\n"
+msgstr ""
+"lpadmin: Il nome della stampante può contenere solo caratteri stampabili!\n"
 
 msgid "lpadmin: Expected hostname after '-h' option!\n"
 msgstr "lpadmin: Atteso nome host dopo l'opzione '-h'!\n"
@@ -1515,8 +1578,10 @@ msgstr ""
 "\n"
 "    lpadmin [-h server] -d destinazione\n"
 "    lpadmin [-h server] -x destinazione\n"
-"    lpadmin [-h server] -p stampante [-c aggiungi-classe] [-i interfaccia] [-m modello]\n"
-"                       [-r rimuovi-classe] [-v dispositivo] [-D descrizione]\n"
+"    lpadmin [-h server] -p stampante [-c aggiungi-classe] [-i interfaccia] [-"
+"m modello]\n"
+"                       [-r rimuovi-classe] [-v dispositivo] [-D "
+"descrizione]\n"
 "                       [-P file-ppd] [-o nome=valore]\n"
 "                       [-u allow:user,user] [-u deny:user,user]\n"
 "\n"
@@ -1566,7 +1631,9 @@ msgid "lp: Expected job ID after -i option!\n"
 msgstr "lp: Atteso ID dell'operazione dopo l'opzione -i!\n"
 
 msgid "lp: Error - cannot print files and alter jobs simultaneously!\n"
-msgstr "lp: Errore- impossibile stampare file e modificare operazioni simultaneamente!\n"
+msgstr ""
+"lp: Errore- impossibile stampare file e modificare operazioni "
+"simultaneamente!\n"
 
 msgid "lp: Error - bad job ID!\n"
 msgstr "lp: Errore - ID dell'operazione errato!\n"
@@ -1618,8 +1685,10 @@ msgstr "lp: Attenzione - opzione del tipo di contenuto ignorata!\n"
 msgid "lp: Unknown option '%c'!\n"
 msgstr "lp: Opzione '%c' sconosciuta!\n"
 
-msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "lp: Errore - impossibile stampare da stdin senza file o ID dell'operazione!\n"
+msgid ""
+"lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"lp: Errore - impossibile stampare da stdin senza file o ID dell'operazione!\n"
 
 #, c-format
 msgid "lp: Unable to access \"%s\" - %s\n"
@@ -1803,7 +1872,8 @@ msgstr "lppasswd: File delle password non aggiornato!\n"
 
 #, c-format
 msgid "lppasswd: failed to backup old password file: %s\n"
-msgstr "lppasswd: copia di sicurezza del vecchio file delle password fallita: %s\n"
+msgstr ""
+"lppasswd: copia di sicurezza del vecchio file delle password fallita: %s\n"
 
 #, c-format
 msgid "lppasswd: failed to rename password file: %s\n"
@@ -1854,8 +1924,12 @@ msgstr "Modifica classe"
 msgid "Add Class"
 msgstr "Aggiungi classe"
 
-msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "Il nome della classe può contenere fino a 127 caratteri stampabili e non può contenere spazi, barre (/), o cancelletti (#)."
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Il nome della classe può contenere fino a 127 caratteri stampabili e non può "
+"contenere spazi, barre (/), o cancelletti (#)."
 
 msgid "Unable to modify class:"
 msgstr "Impossibile modificare la classe:"
@@ -1869,8 +1943,12 @@ msgstr "Modifica stampante"
 msgid "Add Printer"
 msgstr "Aggiungi stampante"
 
-msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "Il nome della stampante può contenere fino a 127 caratteri stampabili e non può contenere spazi, barre (/), o cancelletti (#)."
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Il nome della stampante può contenere fino a 127 caratteri stampabili e non "
+"può contenere spazi, barre (/), o cancelletti (#)."
 
 msgid "Unable to get list of printer drivers:"
 msgstr "Impossibile ottenere l'elenco dei driver della stampante:"
@@ -2157,7 +2235,9 @@ msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
 msgstr "cupsaddsmb: Nessun driver di stampa di Windows è installato!\n"
 
 msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
-msgstr "cupsaddsmb: Attenzione, nessun driver di stampa di Windows 2000 è installato!\n"
+msgstr ""
+"cupsaddsmb: Attenzione, nessun driver di stampa di Windows 2000 è "
+"installato!\n"
 
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s.\n"
@@ -2250,15 +2330,20 @@ msgid "%s: Error - expected hostname after '-h' option!\n"
 msgstr "%s: Errore - atteso nome host dopo l'opzione '-h'!\n"
 
 #, c-format
-msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%s: errore - i nomi della variabile d'ambiente %s non esistono nella destinazione \"%s\"!\n"
+msgid ""
+"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: errore - i nomi della variabile d'ambiente %s non esistono nella "
+"destinazione \"%s\"!\n"
 
 #, c-format
 msgid "%s: error - no default destination available.\n"
 msgstr "%s: errore - nessuna destinazione predefinita disponibile.\n"
 
-msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgstr "Uso: lpq [-P dest] [-U nomeutente] [-h nomehost[:porta]] [-l] [+intervallo]\n"
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr ""
+"Uso: lpq [-P dest] [-U nomeutente] [-h nomehost[:porta]] [-l] [+intervallo]\n"
 
 #, c-format
 msgid "%s: Error - expected hostname after '-H' option!\n"
@@ -2269,8 +2354,12 @@ msgid "%s: Error - expected value after '-%c' option!\n"
 msgstr "%s: Errore - atteso valore dopo l'opzione '-%c'!\n"
 
 #, c-format
-msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "%s: Attenzione - Modificatore di formato '%c' non supportato - il risultato potrebbe non essere corretto!\n"
+msgid ""
+"%s: Warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"%s: Attenzione - Modificatore di formato '%c' non supportato - il risultato "
+"potrebbe non essere corretto!\n"
 
 #, c-format
 msgid "%s: error - expected option=value after '-o' option!\n"
@@ -2301,8 +2390,11 @@ msgid "%s: Error - too many files - \"%s\"\n"
 msgstr "%s: Errore - troppi file - \"%s\"\n"
 
 #, c-format
-msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%s: Errore - i nomi della variabile d'ambiente %s non esistono nella destinazione \"%s\"!\n"
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: Errore - i nomi della variabile d'ambiente %s non esistono nella "
+"destinazione \"%s\"!\n"
 
 #, c-format
 msgid "%s: Error - no default destination available.\n"
@@ -2358,7 +2450,9 @@ msgstr "%s: Atteso ID dell'operazione dopo l'opzione '-i'!\n"
 
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
-msgstr "%s: Errore - impossibile stampare file e modificare operazioni contemporaneamente!\n"
+msgstr ""
+"%s: Errore - impossibile stampare file e modificare operazioni "
+"contemporaneamente!\n"
 
 #, c-format
 msgid "%s: Error - bad job ID!\n"
@@ -2398,7 +2492,8 @@ msgstr "%s: Errore - atteso nome di blocco dopo l'opzione '-H'!\n"
 
 #, c-format
 msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
-msgstr "%s: Usare l'ID dell'operazione ('-i idoperazione') prima di '-H restart'!\n"
+msgstr ""
+"%s: Usare l'ID dell'operazione ('-i idoperazione') prima di '-H restart'!\n"
 
 #, c-format
 msgid "%s: Error - expected page list after '-P' option!\n"
@@ -2421,12 +2516,18 @@ msgid "%s: Warning - content type option ignored!\n"
 msgstr "%s: Attenzione - opzione del tipo di contenuto ignorata!\n"
 
 #, c-format
-msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "%s: Errore - impossibile stampare da stdin senza file o ID dell'operazione!\n"
+msgid ""
+"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: Errore - impossibile stampare da stdin senza file o ID dell'operazione!\n"
 
 #, c-format
-msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
-msgstr "%s: Errore - usare \"completed\", \"not-completed\", o \"all\" dopo l'opzione '-W'!\n"
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+"option!\n"
+msgstr ""
+"%s: Errore - usare \"completed\", \"not-completed\", o \"all\" dopo "
+"l'opzione '-W'!\n"
 
 #, c-format
 msgid "%s: Error - expected destination after '-b' option!\n"
@@ -2486,7 +2587,8 @@ msgid "cupsd: Expected config filename after \"-c\" option!\n"
 msgstr "cupsd: Atteso nome file di configurazione dopo l'opzione \"-c\"!\n"
 
 msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-msgstr "cupsd: supporto launchd(8) non compilato, esecuzione in modalità normale.\n"
+msgstr ""
+"cupsd: supporto launchd(8) non compilato, esecuzione in modalità normale.\n"
 
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting!\n"
@@ -2517,11 +2619,18 @@ msgstr ""
 msgid "        WARN    Line %d only contains whitespace!\n"
 msgstr "        WARN    La riga %d contiene solamente spazi bianchi!\n"
 
-msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
-msgstr "        WARN    Il file contiene un misto di interruzioni di riga CR, LF, e CR LF!\n"
+msgid ""
+"        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr ""
+"        WARN    Il file contiene un misto di interruzioni di riga CR, LF, e "
+"CR LF!\n"
 
-msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
-msgstr "        WARN    I file PPD per sistemi diversi da Windows dovrebbero usare solo interruzioni di riga LF, non CR LF!\n"
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF!\n"
+msgstr ""
+"        WARN    I file PPD per sistemi diversi da Windows dovrebbero usare "
+"solo interruzioni di riga LF, non CR LF!\n"
 
 msgid "Printer Maintenance"
 msgstr "Manutenzione stampanti"
@@ -2543,19 +2652,31 @@ msgstr "      **FAIL**  Lingua \"%s\" errata!\n"
 
 #, c-format
 msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
-msgstr "      **FAIL**  Stringa di traduzione \"%s\" mancante per l'opzione %s!\n"
+msgstr ""
+"      **FAIL**  Stringa di traduzione \"%s\" mancante per l'opzione %s!\n"
 
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
-msgstr "      **FAIL**  La stringa di traduzione predefinita per l'opzione %s contiene caratteri di 8-bit!\n"
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters!\n"
+msgstr ""
+"      **FAIL**  La stringa di traduzione predefinita per l'opzione %s "
+"contiene caratteri di 8-bit!\n"
 
 #, c-format
-msgid "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
-msgstr "      **FAIL**  Stringa di traduzione \"%s\" mancante per l'opzione %s, scelta %s!\n"
+msgid ""
+"      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr ""
+"      **FAIL**  Stringa di traduzione \"%s\" mancante per l'opzione %s, "
+"scelta %s!\n"
 
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
-msgstr "      **FAIL**  La stringa di traduzione predefinita per l'opzione %s scelta %s contiene caratteri di 8-bit!\n"
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters!\n"
+msgstr ""
+"      **FAIL**  La stringa di traduzione predefinita per l'opzione %s scelta "
+"%s contiene caratteri di 8-bit!\n"
 
 #, c-format
 msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
@@ -2578,7 +2699,8 @@ msgstr "Opzione + scelta errata alla riga %d!\n"
 
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)!\n"
-msgstr "Impossibile copiare i file dei driver di stampa di Windows 2000 (%d)!\n"
+msgstr ""
+"Impossibile copiare i file dei driver di stampa di Windows 2000 (%d)!\n"
 
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)!\n"
@@ -2586,7 +2708,8 @@ msgstr "Impossibile copiare i file dei driver di stampa di CUPS (%d)!\n"
 
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)!\n"
-msgstr "Impossibile installare i file dei driver di stampa di Windows 2000 (%d)!\n"
+msgstr ""
+"Impossibile installare i file dei driver di stampa di Windows 2000 (%d)!\n"
 
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)!\n"
@@ -2594,7 +2717,8 @@ msgstr "Impossibile copiare i file dei driver di stampa di Windows 9x (%d)!\n"
 
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)!\n"
-msgstr "Impossibile installare i file dei driver di stampa di Windows 9x (%d)!\n"
+msgstr ""
+"Impossibile installare i file dei driver di stampa di Windows 9x (%d)!\n"
 
 msgid "No Windows printer drivers are installed!\n"
 msgstr "Nessun driver di stampa di Windows è installato!\n"
@@ -2639,7 +2763,8 @@ msgstr "Impossibile copiare i file dei driver di stampa di CUPS (%d)!"
 
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)!"
-msgstr "Impossibile installare i file dei driver di stampa di Windows 2000 (%d)!"
+msgstr ""
+"Impossibile installare i file dei driver di stampa di Windows 2000 (%d)!"
 
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)!"
@@ -2680,8 +2805,12 @@ msgid "Job #%d is already completed - can't cancel."
 msgstr "L'operazione #%d è già completata - impossibile annullare."
 
 #, c-format
-msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-msgstr "Devi accedere a questa pagina usando l'URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
+"s:%d%s</A>."
+msgstr ""
+"Devi accedere a questa pagina usando l'URL <A HREF=\"https://%s:%d%s"
+"\">https://%s:%d%s</A>."
 
 #, c-format
 msgid "Unsupported format '%s'!"
@@ -2795,7 +2924,8 @@ msgid ""
 "\n"
 "    -h       Show program usage\n"
 "\n"
-"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
+"    Note: this program only validates the DSC comments, not the PostScript "
+"itself.\n"
 msgstr ""
 "Uso: cupstestdsc [opzioni] nomefile.ps [... nomefile.ps]\n"
 "       cupstestdsc [opzioni] -\n"
@@ -2804,7 +2934,8 @@ msgstr ""
 "\n"
 "    -h       Mostra l'utilizzo del programma\n"
 "\n"
-"    Nota: questo programma valida solo i commenti DSC, non il PostScript stesso.\n"
+"    Nota: questo programma valida solo i commenti DSC, non il PostScript "
+"stesso.\n"
 
 #, c-format
 msgid "Password for %s on %s? "
@@ -2817,3 +2948,54 @@ msgstr ""
 "      **FAIL**  1284DeviceId deve essere 1284DeviceID!\n"
 "                RIF: Pagina 72, sezione 5.5\n"
 
+#, fuzzy, c-format
+msgid "Missing value on line %d!"
+msgstr "Valore mancante alla riga %d!\n"
+
+#, fuzzy, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Doppi apici mancanti alla riga %d!\n"
+
+#, fuzzy, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Opzione + scelta errata alla riga %d!\n"
+
+#, fuzzy
+msgid "Empty PPD file!"
+msgstr "Impossibile copiare il file PPD!"
+
+#, fuzzy, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Impossibile configurare il driver di stampa di Windows (%d)!\n"
+
+#, fuzzy, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: Impossibile eseguire \"%s\": %s\n"
+
+#, fuzzy, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "L'operazione #%d è già annullata - impossibile annullare."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "port-monitor \"%s\" errato!"
+
+#, fuzzy, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FAIL**  1284DeviceId deve essere 1284DeviceID!\n"
+"                RIF: Pagina 72, sezione 5.5\n"
+
+#, fuzzy, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: Impossibile aprire il file PPD per %s!\n"
index 7dbe5334a9c2ca559e1a187fd625a5018b97ff0f..377b899231bb8b65e333a9e24f1baed214f1f35c 100644 (file)
@@ -25,8 +25,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:08-0400\n"
-"PO-Revision-Date: 2006-06-27 22:55+0900\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
+"PO-Revision-Date: 2007-01-27 13:43+0900\n"
 "Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
 "Language-Team: Japanese <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -2937,3 +2937,54 @@ msgid ""
 msgstr ""
 "      **FAIL**  1284DeviceId は 1284DeviceID でなければなりません!\n"
 "                REF: 72 ページ、セクション 5.5\n"
+
+#, c-format
+msgid "Missing value on line %d!"
+msgstr "%d 行に値がありません!"
+
+#, c-format
+msgid "Missing double quote on line %d!"
+msgstr "%d 行に二重引用符がありません!"
+
+#, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "%d 行に不正なオプションと選択があります!"
+
+msgid "Empty PPD file!"
+msgstr "PPD ファイルが空です!"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Windows プリンタドライバを設定できません (%d)!"
+
+#, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "\"%s\" を実行できません: %s\n"
+
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "ジョブ #%d はすでにキャンセルされています - キャンセルできません。"
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr "\"%s\" は不正な notify-recipient URI です!"
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr "notify-recipient URI \"%s\" には未知のスキームが使われています!"
+
+#, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "\"%s\" は無効な notify-pull-method です!"
+
+#, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FAIL**  %s は 1284DeviceID でなければなりません!\n"
+"                REF: 72 ページ、セクション 5.5\n"
+
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: %s の PPD ファイルを開くことができません!: %s\n"
index d10a852c4af355972b6b2d01310d616238a29874..7ee8c6b2f70e3921673b40790ac614fa3f1b2b6d 100644 (file)
@@ -25,7 +25,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:08-0400\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
 "PO-Revision-Date: 2006-05-09 17:20+0200\n"
 "Last-Translator: Piotr Drąg <raven@pmail.pl>\n"
 "Language-Team: Polish <pl@li.org>\n"
@@ -2947,3 +2947,55 @@ msgid ""
 msgstr ""
 "      **ZAWIÓDŁ**  Błędny %s wybór %s!\n"
 "                REF: strona 122, sekcja 5.17\n"
+
+#, fuzzy, c-format
+msgid "Missing value on line %d!"
+msgstr "Brakująca wartość w wierszu %d!\n"
+
+#, fuzzy, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Brakujący cudzysłów w wierszu %d!\n"
+
+#, fuzzy, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Błędna opcja + wybór w wierszu %d!\n"
+
+#, fuzzy
+msgid "Empty PPD file!"
+msgstr "Nie można skopiować pliku PPD!"
+
+#, fuzzy, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Nie można ustawić sterownika drukarki Windows (%d)!\n"
+
+#, fuzzy, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: nie można uruchomić \"%s\": %s\n"
+
+#, fuzzy, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Zadanie #%d zostało już anulowane - nie można anulować."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "Błędne \"%s\" port-monitor!"
+
+#, fuzzy, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **ZAWIÓDŁ**  Błędny %s wybór %s!\n"
+"                REF: strona 122, sekcja 5.17\n"
+
+#, fuzzy, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: nie można otworzyć pliku PPD dla %s!\n"
index 21b3c01498027a0975ddfe41d9a4857a2044a094..4e03b07c85e675d5f29950cd166fee9f04258f2c 100644 (file)
 #         WWW: http://www.cups.org
 #
 # Translated by:
-# Daniel Nylander <po@danielnylander.se>, 2006.
+# Daniel Nylander <po@danielnylander.se>, 2006, 2007.
 msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2006-05-21 10:08-0400\n"
-"PO-Revision-Date: 2006-04-16 00:55+0100\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
+"PO-Revision-Date: 2007-01-23 16:23+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
@@ -78,12 +78,8 @@ msgstr "Nej"
 msgid "Auto"
 msgstr "Auto"
 
-msgid ""
-"Enter your username and password or the root username and password to access "
-"this page."
-msgstr ""
-"Ange ditt användarnamn och lösenord eller root-användnamnet och lösenord för "
-"att komma åt denna sida."
+msgid "Enter your username and password or the root username and password to access this page."
+msgstr "Ange ditt användarnamn och lösenord eller root-användnamnet och lösenord för att komma åt denna sida."
 
 msgid "You must use a https: URL to access this page."
 msgstr "Du måste använda en https:-url för att komma åt denna sida."
@@ -109,10 +105,8 @@ msgstr "%s stöds inte!"
 msgid "The printer or class was not found."
 msgstr "Skrivaren eller klassen hittades inte."
 
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr ""
-"Printer-uri måste vara i formatet \"ipp://VÄRDNAMN/classes/KLASSNAMN\"."
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr "Printer-uri måste vara i formatet \"ipp://VÄRDNAMN/classes/KLASSNAMN\"."
 
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
@@ -149,27 +143,19 @@ msgstr "Språket \"%s\" stöds inte!"
 msgid "The notify-user-data value is too large (%d > 63 octets)!"
 msgstr "Värdet för notify-user-data är för stort (%d > 63 okteter)!"
 
-msgid ""
-"The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr ""
-"Attributet notify-lease-duration kan inte användas med jobbprenumerationer."
+msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr "Attributet notify-lease-duration kan inte användas med jobbprenumerationer."
 
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr ""
-"Printer-uri måste vara i formatet \"ipp://VÄRDNAMN/printers/SKRIVARNAMN\"."
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr "Printer-uri måste vara i formatet \"ipp://VÄRDNAMN/printers/SKRIVARNAMN\"."
 
 #, c-format
 msgid "A class named \"%s\" already exists!"
 msgstr "En klass med namnet \"%s\" finns redan!"
 
 #, c-format
-msgid ""
-"File device URIs have been disabled! To enable, see the FileDevice directive "
-"in \"%s/cupsd.conf\"."
-msgstr ""
-"Felenhets URI:er har blivit inaktiverat! För att aktivera, se direktivet "
-"FileDevice i \"%s/cupsd.conf\"."
+msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
+msgstr "Felenhets URI:er har blivit inaktiverat! För att aktivera, se direktivet FileDevice i \"%s/cupsd.conf\"."
 
 #, c-format
 msgid "Bad device-uri \"%s\"!"
@@ -462,8 +448,7 @@ msgid "lpq: Unknown destination \"%s\"!\n"
 msgstr "lpq: Okänt mål \"%s\"!\n"
 
 #, c-format
-msgid ""
-"lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid "lp: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "lp: fel - miljövariabeln %s namnger icke-existerande mål \"%s\"!\n"
 
 msgid "lpq: error - no default destination available.\n"
@@ -473,14 +458,11 @@ msgstr "lpq: fel - inget standardmål tillgängligt.\n"
 msgid "lpq: get-jobs failed: %s\n"
 msgstr "lpq: get-jobs misslyckades: %s\n"
 
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size\n"
-msgstr ""
-"Rank   Ägare      Pri  Jobb       Filer                       Total storlek\n"
+msgid "Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgstr "Rank   Ägare      Pri  Jobb       Filer                       Total storlek\n"
 
 msgid "Rank    Owner   Job     File(s)                         Total Size\n"
-msgstr ""
-"Rank    Ägare   Jobb    Fil(er)                         Total storlek\n"
+msgstr "Rank    Ägare   Jobb    Fil(er)                         Total storlek\n"
 
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]\n"
@@ -525,12 +507,8 @@ msgid "lpr: error - expected value after -%c option!\n"
 msgstr "lpr: fel - förväntade värde efter flaggan -%c!\n"
 
 #, c-format
-msgid ""
-"lpr: warning - '%c' format modifier not supported - output may not be "
-"correct!\n"
-msgstr ""
-"lpr: varning - \"%c\"-formatmodifierare stöds inte - utmatning kanske inte "
-"blir korrekt!\n"
+msgid "lpr: warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "lpr: varning - \"%c\"-formatmodifierare stöds inte - utmatning kanske inte blir korrekt!\n"
 
 msgid "lpr: error - expected option=value after -o option!\n"
 msgstr "lpr: fel - förväntade alternativ=värde efter flaggan -o!\n"
@@ -564,8 +542,7 @@ msgid "lpr: error - too many files - \"%s\"\n"
 msgstr "lpr: fel - för många filer - \"%s\"\n"
 
 #, c-format
-msgid ""
-"lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid "lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "lpr: fel - miljövariabeln %s namnger icke-existerande mål \"%s\"!\n"
 
 msgid "lpr: error - no default destination available.\n"
@@ -667,7 +644,7 @@ msgstr "cupsaddsmb: Saknar värde på rad %d!\n"
 
 #, c-format
 msgid "cupsaddsmb: Missing double quote on line %d!\n"
-msgstr "cupsaddsmb: Saknar citattecken på rad %d!\n"
+msgstr "cupsaddsmb: Saknar citationstecken på rad %d!\n"
 
 #, c-format
 msgid "cupsaddsmb: Bad option + choice on line %d!\n"
@@ -691,9 +668,7 @@ msgstr "cupsaddsmb: Kunde inte konvertera PPD-fil för %s - %s\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
-msgstr ""
-"cupsaddsmb: Kunde inte kopiera filer för Windows 2000-skrivardrivrutin (%"
-"d)!\n"
+msgstr "cupsaddsmb: Kunde inte kopiera filer för Windows 2000-skrivardrivrutin (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
@@ -701,20 +676,15 @@ msgstr "cupsaddsmb: Kunde inte kopiera filer för CUPS-skrivardrivrutin (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
-msgstr ""
-"cupsaddsmb: Kunde inte installera filer för Windows 2000-skrivardrivrutin (%"
-"d)!\n"
+msgstr "cupsaddsmb: Kunde inte installera filer för Windows 2000-skrivardrivrutin (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
-msgstr ""
-"cupsaddsmb: Kunde inte kopiera filer för Windows 9x-skrivardrivrutin (%d)!\n"
+msgstr "cupsaddsmb: Kunde inte kopiera filer för Windows 9x-skrivardrivrutin (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
-msgstr ""
-"cupsaddsmb: Kunde inte installera filer för Windows 9x-skrivardrivrutin (%"
-"d)!\n"
+msgstr "cupsaddsmb: Kunde inte installera filer för Windows 9x-skrivardrivrutin (%d)!\n"
 
 #, c-format
 msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
@@ -1097,12 +1067,10 @@ msgstr " OK\n"
 
 #, c-format
 msgid ""
-"        WARN    Duplex option keyword %s should be named Duplex or "
-"JCLDuplex!\n"
+"        WARN    Duplex option keyword %s should be named Duplex or JCLDuplex!\n"
 "                REF: Page 122, section 5.17\n"
 msgstr ""
-"        VARN    Nyckelord för Duplex-alternativet %s bör vara Duplex eller "
-"JCLDuplex!\n"
+"        VARN    Nyckelord för Duplex-alternativet %s bör vara Duplex eller JCLDuplex!\n"
 "                REF: Sida 122, sektion 5.17\n"
 
 msgid "        WARN    Default choices conflicting!\n"
@@ -1155,8 +1123,7 @@ msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7.\n"
 msgstr ""
-"        VARN    Protokollen innehåller PJL men JCL-attributen är inte "
-"inställda.\n"
+"        VARN    Protokollen innehåller PJL men JCL-attributen är inte inställda.\n"
 "                REF: Sidorna 78-79, sektion 5.7.\n"
 
 #, c-format
@@ -1183,12 +1150,10 @@ msgstr ""
 "                (begränsare=\"%s %s %s %s\")\n"
 
 msgid ""
-"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[."
-"gz]]\n"
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
 "       program | cupstestppd [-q] [-r] [-v[v]] -\n"
 msgstr ""
-"Användning: cupstestppd [-q] [-r] [-v[v]] filnamn1.ppd[.gz] [... filnamnN.ppd"
-"[.gz]]\n"
+"Användning: cupstestppd [-q] [-r] [-v[v]] filnamn1.ppd[.gz] [... filnamnN.ppd[.gz]]\n"
 "            program | cupstestppd [-q] [-r] [-v[v]] -\n"
 
 msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
@@ -1261,9 +1226,7 @@ msgid "system default destination: %s\n"
 msgstr "systemstandardmål: %s\n"
 
 #, c-format
-msgid ""
-"lpstat: error - %s environment variable names non-existent destination \"%s"
-"\"!\n"
+msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "lpstat: fel - miljövariabeln %s namnger icke-existerande mål \"%s\"!\n"
 
 msgid "no system default destination\n"
@@ -1381,7 +1344,7 @@ msgstr "\tBanner krävs\n"
 msgid "\tCharset sets:\n"
 msgstr "\tTeckenkodningar:\n"
 
-# Pitch är ett svårt att kort förklara.. 
+# Pitch är ett svårt att kort förklara..
 msgid "\tDefault pitch:\n"
 msgstr "\tStandardavstånd mellan bildpunkter:\n"
 
@@ -1557,12 +1520,10 @@ msgstr ""
 "\n"
 "    lpadmin [-h server] -d mål\n"
 "    lpadmin [-h server] -x mål\n"
-"    lpadmin [-h server] -p skrivare [-c lägg-till-klass] [-i gränssnitt] [-m "
-"modell]\n"
+"    lpadmin [-h server] -p skrivare [-c lägg-till-klass] [-i gränssnitt] [-m modell]\n"
 "                       [-r ta-bort-klass] [-v enhet] [-D beskrivning]\n"
 "                       [-P ppd-fil] [-o namn=värde]\n"
-"                       [-u allow:användare,användare] [-u deny:användare,"
-"användare]\n"
+"                       [-u allow:användare,användare] [-u deny:användare,användare]\n"
 "\n"
 
 #, c-format
@@ -1662,11 +1623,8 @@ msgstr "lp: Varning - flagga för innehållstyp ignorerades!\n"
 msgid "lp: Unknown option '%c'!\n"
 msgstr "lp: Okänd flagga \"%c\"!\n"
 
-msgid ""
-"lp: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr ""
-"lp: Fel - kan inte skriva ut från standard in om filer eller ett jobb-id "
-"anges!\n"
+msgid "lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr "lp: Fel - kan inte skriva ut från standard in om filer eller ett jobb-id anges!\n"
 
 #, c-format
 msgid "lp: Unable to access \"%s\" - %s\n"
@@ -1850,8 +1808,7 @@ msgstr "lppasswd: Lösenordsfil inte uppdaterad!\n"
 
 #, c-format
 msgid "lppasswd: failed to backup old password file: %s\n"
-msgstr ""
-"lppasswd: misslyckades med att säkerhetskopiera gamla lösenordsfilen: %s\n"
+msgstr "lppasswd: misslyckades med att säkerhetskopiera gamla lösenordsfilen: %s\n"
 
 #, c-format
 msgid "lppasswd: failed to rename password file: %s\n"
@@ -1902,12 +1859,8 @@ msgstr "Ändra klass"
 msgid "Add Class"
 msgstr "Lägg till klass"
 
-msgid ""
-"The class name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"Klassnamnet får endast innehålla upp till 127 skrivbara tecken och får inte "
-"innehålla blanksteg, snedstreck (/) eller fyrkantstecknet (#)."
+msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgstr "Klassnamnet får endast innehålla upp till 127 skrivbara tecken och får inte innehålla blanksteg, snedstreck (/) eller fyrkantstecknet (#)."
 
 msgid "Unable to modify class:"
 msgstr "Kunde inte ändra klass:"
@@ -1921,12 +1874,8 @@ msgstr "Ändra skrivare"
 msgid "Add Printer"
 msgstr "Lägg till skrivare"
 
-msgid ""
-"The printer name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"Skrivarnamnet får endast innehålla upp till 127 skrivbara tecken och får "
-"inte innehålla blanksteg, snedstreck (/) eller fyrkantstecknet (#)."
+msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
+msgstr "Skrivarnamnet får endast innehålla upp till 127 skrivbara tecken och får inte innehålla blanksteg, snedstreck (/) eller fyrkantstecknet (#)."
 
 msgid "Unable to get list of printer drivers:"
 msgstr "Kunde inte få tag på listan av skrivardrivrutiner:"
@@ -2213,8 +2162,7 @@ msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
 msgstr "cupsaddsmb: Inga Windows-skrivardrivrutiner är installerade!\n"
 
 msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
-msgstr ""
-"cupsaddsmb: Varning, inga Windows 2000-skrivardrivrutiner är installerade!\n"
+msgstr "cupsaddsmb: Varning, inga Windows 2000-skrivardrivrutiner är installerade!\n"
 
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s.\n"
@@ -2257,8 +2205,7 @@ msgid "Usage: lpmove job/src dest\n"
 msgstr "Användning: lpmove jobb/källa mål\n"
 
 msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
-msgstr ""
-"lpstat: Behöver \"completed\", \"not-completed\" eller \"all\" efter -W!\n"
+msgstr "lpstat: Behöver \"completed\", \"not-completed\" eller \"all\" efter -W!\n"
 
 #, c-format
 msgid "%s accepting requests since %s\n"
@@ -2308,19 +2255,15 @@ msgid "%s: Error - expected hostname after '-h' option!\n"
 msgstr "%s: Fel - förväntade värdnamn efter flaggan \"-h\"!\n"
 
 #, c-format
-msgid ""
-"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "%s: fel - miljövariabeln %s namnger icke-existerande mål \"%s\"!\n"
 
 #, c-format
 msgid "%s: error - no default destination available.\n"
 msgstr "%s: fel - inget standardmål tillgängligt.\n"
 
-msgid ""
-"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgstr ""
-"Användning: lpq [-P mål] [-U användarnamn] [-h värdnamn[:port]] [-l] "
-"[+intervall]\n"
+msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr "Användning: lpq [-P mål] [-U användarnamn] [-h värdnamn[:port]] [-l] [+intervall]\n"
 
 #, c-format
 msgid "%s: Error - expected hostname after '-H' option!\n"
@@ -2331,12 +2274,8 @@ msgid "%s: Error - expected value after '-%c' option!\n"
 msgstr "%s: Fel - förväntade värde efter flaggan \"-%c\"!\n"
 
 #, c-format
-msgid ""
-"%s: Warning - '%c' format modifier not supported - output may not be "
-"correct!\n"
-msgstr ""
-"%s: Varning - \"'%c\"- formatmodifieraren stöds inte - utmatning kanske inte "
-"blir korrekt!\n"
+msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
+msgstr "%s: Varning - \"'%c\"- formatmodifieraren stöds inte - utmatning kanske inte blir korrekt!\n"
 
 #, c-format
 msgid "%s: error - expected option=value after '-o' option!\n"
@@ -2367,8 +2306,7 @@ msgid "%s: Error - too many files - \"%s\"\n"
 msgstr "%s: Fel - för många filer - \"%s\"\n"
 
 #, c-format
-msgid ""
-"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
 msgstr "%s: Fel - miljövariabeln %s namnger icke-existerande mål \"%s\"!\n"
 
 #, c-format
@@ -2488,19 +2426,12 @@ msgid "%s: Warning - content type option ignored!\n"
 msgstr "%s: Varning - flagga för innehållstyp ignorerades!\n"
 
 #, c-format
-msgid ""
-"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr ""
-"%s: Fel - kan inte skriva ut från standard in om filer eller ett jobb-id "
-"anges!\n"
+msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr "%s: Fel - kan inte skriva ut från standard in om filer eller ett jobb-id anges!\n"
 
 #, c-format
-msgid ""
-"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
-"option!\n"
-msgstr ""
-"%s: Fel - behöver \"completed\", \"not-completed\" eller \"all\" efter "
-"flaggan \"-W\"!\n"
+msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
+msgstr "%s: Fel - behöver \"completed\", \"not-completed\" eller \"all\" efter flaggan \"-W\"!\n"
 
 #, c-format
 msgid "%s: Error - expected destination after '-b' option!\n"
@@ -2591,17 +2522,11 @@ msgstr ""
 msgid "        WARN    Line %d only contains whitespace!\n"
 msgstr "        VARN    Rad %d innehåller endast blanktecken!\n"
 
-msgid ""
-"        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
-msgstr ""
-"        VARN    Filen innehåller en blandning av CR, LF och CR LF-radslut!\n"
+msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr "        VARN    Filen innehåller en blandning av CR, LF och CR LF-radslut!\n"
 
-msgid ""
-"        WARN    Non-Windows PPD files should use lines ending with only LF, "
-"not CR LF!\n"
-msgstr ""
-"        VARN    Icke-Windows PPD-filer bör använda radslut med endast LF, "
-"inte CR LF!\n"
+msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
+msgstr "        VARN    Icke-Windows PPD-filer bör använda radslut med endast LF, inte CR LF!\n"
 
 msgid "Printer Maintenance"
 msgstr "Skrivarunderhåll"
@@ -2626,26 +2551,16 @@ msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
 msgstr "      **FEL**   Saknar översättningssträng \"%s\" för flaggan %s!\n"
 
 #, c-format
-msgid ""
-"      **FAIL**  Default translation string for option %s contains 8-bit "
-"characters!\n"
-msgstr ""
-"      **FEL**   Standardöversättningssträng för flaggan %s innehåller 8-"
-"bitars tecken!\n"
+msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters!\n"
+msgstr "      **FEL**   Standardöversättningssträng för flaggan %s innehåller 8-bitars tecken!\n"
 
 #, c-format
-msgid ""
-"      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
-msgstr ""
-"      **FEL**   Saknar översättningssträng \"%s\" för flaggan %s, val %s!\n"
+msgid "      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr "      **FEL**   Saknar översättningssträng \"%s\" för flaggan %s, val %s!\n"
 
 #, c-format
-msgid ""
-"      **FAIL**  Default translation string for option %s choice %s contains "
-"8-bit characters!\n"
-msgstr ""
-"      **FEL**   Standardöversättningssträng för flaggan %s val %s innehåller "
-"8-bitars tecken!\n"
+msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters!\n"
+msgstr "      **FEL**   Standardöversättningssträng för flaggan %s val %s innehåller 8-bitars tecken!\n"
 
 #, c-format
 msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
@@ -2660,7 +2575,7 @@ msgstr "Saknar värde på rad %d!\n"
 
 #, c-format
 msgid "Missing double quote on line %d!\n"
-msgstr "Saknar citattecken på rad %d!\n"
+msgstr "Saknar citationstecken på rad %d!\n"
 
 #, c-format
 msgid "Bad option + choice on line %d!\n"
@@ -2676,8 +2591,7 @@ msgstr "Kunde inte kopiera filer för CUPS-skrivardrivrutiner (%d)!\n"
 
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)!\n"
-msgstr ""
-"Kunde inte installera filer för Windows 2000-skrivardrivrutiner (%d)!\n"
+msgstr "Kunde inte installera filer för Windows 2000-skrivardrivrutiner (%d)!\n"
 
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)!\n"
@@ -2771,12 +2685,8 @@ msgid "Job #%d is already completed - can't cancel."
 msgstr "Jobb #%d är redan färdigt - kan inte avbryta."
 
 #, c-format
-msgid ""
-"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
-"s:%d%s</A>."
-msgstr ""
-"Du måste komma åt sidan med url:en <A HREF=\"https://%s:%d%s\">https://%s:%d%"
-"s</A>."
+msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
+msgstr "Du måste komma åt sidan med url:en <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
 
 #, c-format
 msgid "Unsupported format '%s'!"
@@ -2890,8 +2800,7 @@ msgid ""
 "\n"
 "    -h       Show program usage\n"
 "\n"
-"    Note: this program only validates the DSC comments, not the PostScript "
-"itself.\n"
+"    Note: this program only validates the DSC comments, not the PostScript itself.\n"
 msgstr ""
 "Användning: cupstestdsc [flaggor] filnamn.ps [... filnamn.ps]\n"
 "       cupstestdsc [flaggor] -\n"
@@ -2900,17 +2809,67 @@ msgstr ""
 "\n"
 "    -h       Visa programanvändning\n"
 "\n"
-"    Notera: detta program validerar endast DSC-kommentarer, inte själva "
-"PostScript.\n"
+"    Notera: detta program validerar endast DSC-kommentarer, inte själva PostScript.\n"
 
 #, c-format
 msgid "Password for %s on %s? "
-msgstr ""
+msgstr "Lösenord för %s på %s? "
 
-#, fuzzy
 msgid ""
 "      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
 "                REF: Page 72, section 5.5\n"
 msgstr ""
-"      **FEL**   Felaktigt %s val %s!\n"
-"                REF: Sida 122, sektion 5.17\n"
+"      **FEL**   1284DeviceId måste vara 1284DeviceID!\n"
+"                REF: Sida 72, sektion 5.5\n"
+
+#, c-format
+msgid "Missing value on line %d!"
+msgstr "Saknar värde på rad %d!"
+
+#, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Saknar citationstecken på rad %d!\n"
+
+#, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Felaktigt alternativ + val på rad %d!"
+
+msgid "Empty PPD file!"
+msgstr "Tom PPD-fil!"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Kunde inte ställa in Windows-skrivardrivrutin (%d)!"
+
+#, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "Kunde inte köra \"%s\": %s\n"
+
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Jobb #%d är redan avbrutet - kan inte avbryta."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr "Felaktig URI för notify-recipient \"%s\"!"
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr "URI för notify-recipient \"%s\" använder okänt schema!"
+
+#, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "Felaktig notify-pull-method \"%s\"!"
+
+#, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      **FEL**   %s måste vara 1284DeviceID!\n"
+"                REF: Sida 72, sektion 5.5\n"
+
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: Kunde inte hämta PPD-fil för %s: %s\n"
+
index 51d3158638b5175e9df8473d1e888c599f9a0f89..24f6235132296c42033de8e716eec64519ecdd72 100644 (file)
@@ -1,10 +1,10 @@
 #
-# "$Id: cups.list.in 6118 2006-11-16 13:34:44Z mike $"
+# "$Id: cups.list.in 6234 2007-02-05 20:25:50Z mike $"
 #
 #   ESP Package Manager (EPM) file list for the Common UNIX Printing
 #   System (CUPS).
 #
-#   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+#   Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
 #   These coded instructions, statements, and computer programs are the
 #   property of Easy Software Products and are protected by Federal
 
 # Product information
 %product Common UNIX Printing System
-%copyright 1993-2006 by Easy Software Products, All Rights Reserved.
+%copyright 1993-2007 by Easy Software Products, All Rights Reserved.
 %vendor Easy Software Products
-%license LICENSE.txt
-%readme packaging/cups.readme
+#%license LICENSE.txt
+%readme LICENSE.txt
 %format rpm
 # Red Hat and their epochs...
 %version 1:@CUPS_VERSION@
 %subpackage et
 %description Estonian support
 
+%subpackage fr
+%description French support
+
 %subpackage it
 %description Italian support
 
@@ -361,6 +364,8 @@ f 0644 root sys $LOCALEDIR/de/cups_de.po locale/cups_de.po
 f 0644 root sys $LOCALEDIR/es/cups_es.po locale/cups_es.po
 %subpackage et
 f 0644 root sys $LOCALEDIR/et/cups_et.po locale/cups_et.po
+%subpackage fr
+f 0644 root sys $LOCALEDIR/fr/cups_fr.po locale/cups_fr.po
 %subpackage it
 f 0644 root sys $LOCALEDIR/it/cups_it.po locale/cups_it.po
 %subpackage ja
@@ -435,6 +440,9 @@ f 0644 root sys $DATADIR/templates/es templates/es/*.tmpl
 %subpackage et
 d 0755 root sys $DATADIR/templates/et
 f 0644 root sys $DATADIR/templates/et templates/et/*.tmpl
+%subpackage fr
+d 0755 root sys $DATADIR/templates/fr
+f 0644 root sys $DATADIR/templates/fr templates/fr/*.tmpl
 %subpackage it
 d 0755 root sys $DATADIR/templates/it
 f 0644 root sys $DATADIR/templates/it templates/it/*.tmpl
@@ -533,6 +541,11 @@ d 0755 root sys $DOCDIR/et
 f 0644 root sys $DOCDIR/et doc/et/*.html
 d 0755 root sys $DOCDIR/et/images -
 f 0644 root sys $DOCDIR/et/images doc/et/images/*.gif
+%subpackage fr
+d 0755 root sys $DOCDIR/fr
+f 0644 root sys $DOCDIR/fr doc/fr/*.html
+d 0755 root sys $DOCDIR/fr/images -
+f 0644 root sys $DOCDIR/fr/images doc/fr/images/*.gif
 %subpackage it
 d 0755 root sys $DOCDIR/it
 f 0644 root sys $DOCDIR/it doc/it/*.html
@@ -630,5 +643,5 @@ f 0644 root sys $XINETD/cups-lpd init/cups-lpd
 %subpackage
 
 #
-# End of "$Id: cups.list.in 6118 2006-11-16 13:34:44Z mike $".
+# End of "$Id: cups.list.in 6234 2007-02-05 20:25:50Z mike $".
 #
index db75b6bc555293d369022b1b02fe827ee5b2238e..0c00b8cd18e599abea36abcc9a6dd14ce32c9803 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cups.spec.in 6118 2006-11-16 13:34:44Z mike $"
+# "$Id: cups.spec.in 6240 2007-02-06 16:09:05Z mike $"
 #
 #   RPM "spec" file for the Common UNIX Printing System (CUPS).
 #
@@ -91,6 +91,11 @@ Summary: Common UNIX Printing System - Estonian support
 Group: System Environment/Daemons
 Requires: %{name} = %{epoch}:%{version}
 
+%package fr
+Summary: Common UNIX Printing System - French support
+Group: System Environment/Daemons
+Requires: %{name} = %{epoch}:%{version}
+
 %package it
 Summary: Common UNIX Printing System - Italian support
 Group: System Environment/Daemons
@@ -149,6 +154,10 @@ UNIX
 The Common UNIX Printing System provides a portable printing layer for 
 UNIX® operating systems. This package provides Estonian support.
 
+%description fr
+The Common UNIX Printing System provides a portable printing layer for 
+UNIX® operating systems. This package provides French support.
+
 %description it
 The Common UNIX Printing System provides a portable printing layer for 
 UNIX® operating systems. This package provides Italian support.
@@ -430,6 +439,16 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/cups/templates/et/*
 /usr/share/locale/et/cups_et.po
 
+%files fr
+%defattr(-,root,root)
+%dir /usr/share/doc/cups/fr
+/usr/share/doc/cups/fr/index.html
+%dir /usr/share/doc/cups/fr/images
+/usr/share/doc/cups/fr/images/*
+%dir /usr/share/cups/templates/fr
+/usr/share/cups/templates/fr/*
+/usr/share/locale/fr/cups_fr.po
+
 %files it
 %defattr(-,root,root)
 %dir /usr/share/doc/cups/it
@@ -478,5 +497,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 #
-# End of "$Id: cups.spec.in 6118 2006-11-16 13:34:44Z mike $".
+# End of "$Id: cups.spec.in 6240 2007-02-06 16:09:05Z mike $".
 #
index 21dc65f919f40f8ca072704632d7038e8b226b53..15d371fda4908d4a7c051ea9c3e4fb44acd3f356 100644 (file)
@@ -1158,6 +1158,9 @@ void PSOutputDev::writeHeader(int firstPage, int lastPage,
     break;
   }
 
+  // Tell CUPS pstops filter not to do its own rotation...
+  writePSFmt("%%cupsRotation: %d\n", pageRotate);
+
   writePSFmt("%%Producer: xpdf/pdftops %s\n", xpdfVersion);
   xref->getDocInfo(&info);
   if (info.isDict() && info.dictLookup("Creator", &obj1)->isString()) {
@@ -2509,14 +2512,16 @@ GBool PSOutputDev::startPage(int pageNum, GfxState *state) {
     } else {
       rotate = (360 - state->getRotate()) % 360;
       if (rotate == 0 || rotate == 180) {
-       if (width > height && width > imgWidth) {
+       if ((width > height && imgWidth < imgHeight) ||
+           (height > width && imgHeight < imgWidth)) {
          rotate += 90;
          landscape = gTrue;
        } else {
          landscape = gFalse;
        }
       } else { // rotate == 90 || rotate == 270
-       if (height > width && height > imgWidth) {
+       if ((width > height && imgWidth < imgHeight) ||
+           (height > width && imgHeight < imgWidth)) {
          rotate = 270 - rotate;
          landscape = gTrue;
        } else {
index 8a338d412224a365e7980a47e16f92a3f0e19c79..44a76f49e9a9e614c42036121730691da7e0305b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: client.c 6111 2006-11-15 20:28:39Z mike $"
+ * "$Id: client.c 6247 2007-02-07 20:54:37Z mike $"
  *
  *   Client routines for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -35,7 +35,7 @@
  *   cupsdWriteClient()      - Write data to a client as needed.
  *   check_if_modified()     - Decode an "If-Modified-Since" line.
  *   encrypt_client()        - Enable encryption for the client...
- *   get_cdsa_server_certs() - Convert a keychain name into the CFArrayRef
+ *   get_cdsa_certificate()  - Convert a keychain name into the CFArrayRef
  *                            required by SSLSetCertificate.
  *   get_file()              - Get a filename and state info.
  *   install_conf_file()     - Install a configuration file.
 
 #ifdef HAVE_CDSASSL
 #  include <Security/Security.h>
+#  ifdef HAVE_SECIDENTITYSEARCHPRIV_H
+#    include <Security/SecIdentitySearchPriv.h>
+#  else /* Declare prototype for function in that header... */
+extern OSStatus SecIdentitySearchCreateWithPolicy(SecPolicyRef policy, 
+                               CFStringRef idString, CSSM_KEYUSE keyUsage, 
+                               CFTypeRef keychainOrArray, 
+                               Boolean returnOnlyValidIdentities, 
+                               SecIdentitySearchRef* searchRef);
+#  endif /* HAVE_SECIDENTITYSEARCHPRIV_H */
+#  ifdef HAVE_SECPOLICYPRIV_H
+#    include <Security/SecPolicyPriv.h>
+#  else /* Declare prototype for function in that header... */
+extern OSStatus SecPolicySetValue(SecPolicyRef policyRef, 
+                                  const CSSM_DATA *value);
+#  endif /* HAVE_SECPOLICYPRIV_H */
 #  ifdef HAVE_SECBASEPRIV_H
 #    include <Security/SecBasePriv.h>
-#  else
-     extern const char *cssmErrorString(int error);
+#  else /* Declare prototype for function in that header... */
+extern const char *cssmErrorString(int error);
 #  endif /* HAVE_SECBASEPRIV_H */
 #endif /* HAVE_CDSASSL */
+
 #ifdef HAVE_GNUTLS
 #  include <gnutls/x509.h>
 #endif /* HAVE_GNUTLS */
@@ -76,7 +92,7 @@ static int            check_if_modified(cupsd_client_t *con,
 static int             encrypt_client(cupsd_client_t *con);
 #endif /* HAVE_SSL */
 #ifdef HAVE_CDSASSL
-static CFArrayRef      get_cdsa_server_certs(void);
+static CFArrayRef      get_cdsa_certificate(cupsd_client_t *con);
 #endif /* HAVE_CDSASSL */
 static char            *get_file(cupsd_client_t *con, struct stat *filestats, 
                                  char *filename, int len);
@@ -85,7 +101,7 @@ static int           is_cgi(cupsd_client_t *con, const char *filename,
                               struct stat *filestats, mime_type_t *type);
 static int             is_path_absolute(const char *path);
 #ifdef HAVE_SSL
-static int             make_certificate(void);
+static int             make_certificate(cupsd_client_t *con);
 #endif /* HAVE_SSL */
 static int             pipe_command(cupsd_client_t *con, int infile, int *outfile,
                                     char *command, char *options, int root);
@@ -635,6 +651,7 @@ cupsdCloseClient(cupsd_client_t *con)       /* I - Client to close */
     cupsdClearString(&con->filename);
     cupsdClearString(&con->command);
     cupsdClearString(&con->options);
+    cupsdClearString(&con->query_string);
 
     if (con->request)
     {
@@ -798,6 +815,7 @@ cupsdReadClient(cupsd_client_t *con)        /* I - Client to read from */
 
        cupsdClearString(&con->command);
        cupsdClearString(&con->options);
+       cupsdClearString(&con->query_string);
 
        if (con->request)
        {
@@ -2087,7 +2105,8 @@ cupsdSendError(cupsd_client_t *con,       /* I - Connection */
               con->servername, con->serverport, con->uri);
 
       snprintf(redirect, sizeof(redirect),
-               "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"3;https://%s:%d%s\">\n",
+               "<META HTTP-EQUIV=\"Refresh\" "
+              "CONTENT=\"3;URL=https://%s:%d%s\">\n",
               con->servername, con->serverport, con->uri);
     }
     else
@@ -2494,6 +2513,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
 
     cupsdClearString(&con->command);
     cupsdClearString(&con->options);
+    cupsdClearString(&con->query_string);
 
     if (!con->http.keep_alive)
     {
@@ -2606,7 +2626,7 @@ encrypt_client(cupsd_client_t *con)       /* I - Client to encrypt */
     * Nope, make a self-signed certificate...
     */
 
-    if (!make_certificate())
+    if (!make_certificate(con))
       return (0);
   }
 
@@ -2665,7 +2685,7 @@ encrypt_client(cupsd_client_t *con)       /* I - Client to encrypt */
     * Nope, make a self-signed certificate...
     */
 
-    if (!make_certificate())
+    if (!make_certificate(con))
       return (0);
   }
 
@@ -2737,7 +2757,7 @@ encrypt_client(cupsd_client_t *con)       /* I - Client to encrypt */
 
   error            = 0;
   conn->session    = NULL;
-  conn->certsArray = get_cdsa_server_certs();
+  conn->certsArray = get_cdsa_certificate(con);
 
   if (!conn->certsArray)
   {
@@ -2745,8 +2765,8 @@ encrypt_client(cupsd_client_t *con)       /* I - Client to encrypt */
     * No keychain (yet), make a self-signed certificate...
     */
 
-    if (make_certificate())
-      conn->certsArray = get_cdsa_server_certs();
+    if (make_certificate(con))
+      conn->certsArray = get_cdsa_certificate(con);
   }
 
   if (!conn->certsArray)
@@ -2825,90 +2845,120 @@ encrypt_client(cupsd_client_t *con)    /* I - Client to encrypt */
 
 #ifdef HAVE_CDSASSL
 /*
- * 'get_cdsa_server_certs()' - Convert a keychain name into the CFArrayRef
- *                            required by SSLSetCertificate.
- *
- * For now we assumes that there is exactly one SecIdentity in the
- * keychain - i.e. there is exactly one matching cert/private key pair.
- * In the future we will search a keychain for a SecIdentity matching a
- * specific criteria.  We also skip the operation of adding additional
- * non-signing certs from the keychain to the CFArrayRef.
- *
- * To create a self-signed certificate for testing use the certtool.
- * Executing the following as root will do it:
- *
- *     certtool c k=/Library/Keychains/System.keychain
+ * 'get_cdsa_certificate()' - Get a SSL/TLS certificate from the System keychain.
  */
 
-static CFArrayRef                      /* O - Array of certificates */
-get_cdsa_server_certs(void)
+static CFArrayRef                              /* O - Array of certificates */
+get_cdsa_certificate(cupsd_client_t *con)      /* I - Client connection */
 {
   OSStatus             err;            /* Error info */
-  SecKeychainRef       kcRef;          /* Keychain reference */
-  SecIdentitySearchRef srchRef;        /* Search reference */
+  SecKeychainRef       keychain;       /* Keychain reference */
+  SecIdentitySearchRef search;         /* Search reference */
   SecIdentityRef       identity;       /* Identity */
-  CFArrayRef           ca;             /* Certificate array */
+  CFArrayRef           certificates = NULL;
+                                       /* Certificate array */
 
 
-  kcRef    = NULL;
-  srchRef  = NULL;
-  identity = NULL;
-  ca      = NULL;
-  err      = SecKeychainOpen(ServerCertificate, &kcRef);
+  if ((err = SecKeychainOpen(ServerCertificate, &keychain)))
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot open keychain \"%s\", %s",
+                   ServerCertificate, cssmErrorString(err));
+    return (NULL);
+  }
 
-  if (err)
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot open keychain \"%s\", error %d.",
-                   ServerCertificate, (int)err);
-  else
+#  if HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
+ /*
+  * Use a policy to search for valid certificates who's common name matches the
+  * servername...
+  */
+
+  SecPolicySearchRef   policy_search;  /* Policy search ref */
+  SecPolicyRef         policy;         /* Policy ref */
+  CSSM_DATA            options;        /* Policy options */
+  CSSM_APPLE_TP_SSL_OPTIONS
+                       ssl_options;    /* SSL Option for hostname */
+
+
+  if ((err = SecPolicySearchCreate(CSSM_CERT_X_509v3, &CSSMOID_APPLE_TP_SSL, 
+                             NULL, &policy_search)))
   {
-   /*
-    * Search for "any" identity matching specified key use; 
-    * in this app, we expect there to be exactly one. 
-    */
+    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create a policy search reference");
+    CFRelease(keychain);
+    return (NULL);
+  }
 
-    err = SecIdentitySearchCreate(kcRef, CSSM_KEYUSE_SIGN, &srchRef);
+  if ((err = SecPolicySearchCopyNext(policy_search, &policy)))
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, 
+                   "Cannot find a policy to use for searching");
+    CFRelease(keychain);
+    CFRelease(policy_search);
+    return (NULL);
+  }
 
-    if (err)
-      cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                     "Cannot find signing key in keychain \"%s\", error %d",
-                     ServerCertificate, (int)err);
-    else
-    {
-      err = SecIdentitySearchCopyNext(srchRef, &identity);
+  memset(&ssl_options, 0, sizeof(ssl_options));
+  ssl_options.Version = CSSM_APPLE_TP_SSL_OPTS_VERSION;
+  ssl_options.ServerName = con->servername;
+  ssl_options.ServerNameLen = strlen(con->servername);
 
-      if (err)
-       cupsdLogMessage(CUPSD_LOG_DEBUG2,
+  options.Data = (uint8 *)&ssl_options;
+  options.Length = sizeof(ssl_options);
+
+  if ((err = SecPolicySetValue(policy, &options)))
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, 
+                   "Cannot set policy value to use for searching");
+    CFRelease(keychain);
+    CFRelease(policy_search);
+    return (NULL);
+  }
+
+  err = SecIdentitySearchCreateWithPolicy(policy, NULL, CSSM_KEYUSE_SIGN,
+                                         keychain, FALSE, &search);
+#  else
+ /*
+  * Assume there is exactly one SecIdentity in the keychain...
+  */
+
+  err = SecIdentitySearchCreate(keychain, CSSM_KEYUSE_SIGN, &search);
+#  endif /* HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY */
+
+  if (err)
+    cupsdLogMessage(CUPSD_LOG_DEBUG,
+                   "Cannot create keychain search reference: %s", 
+                   cssmErrorString(err));
+  else
+  {
+    if ((err = SecIdentitySearchCopyNext(search, &identity)))
+    {
+      cupsdLogMessage(CUPSD_LOG_DEBUG,
                        "Cannot find signing key in keychain \"%s\", error %d",
                        ServerCertificate, (int)err);
+    }
+    else
+    {
+      if (CFGetTypeID(identity) != SecIdentityGetTypeID())
+       cupsdLogMessage(CUPSD_LOG_ERROR,
+                       "SecIdentitySearchCopyNext CFTypeID failure!");
       else
       {
-       if (CFGetTypeID(identity) != SecIdentityGetTypeID())
-         cupsdLogMessage(CUPSD_LOG_ERROR,
-                         "SecIdentitySearchCopyNext CFTypeID failure!");
-       else
-       {
-        /* 
-         * Found one. Place it in a CFArray. 
-         * TBD: snag other (non-identity) certs from keychain and add them
-         * to array as well.
-         */
-
-         ca = CFArrayCreate(NULL, (const void **)&identity, 1, &kCFTypeArrayCallBacks);
-
-         if (ca == nil)
-           cupsdLogMessage(CUPSD_LOG_ERROR, "CFArrayCreate error");
-       }
-
-       CFRelease(identity);
+      if ((certificates = CFArrayCreate(NULL, (const void **)&identity, 
+                                     1, &kCFTypeArrayCallBacks)) == NULL)
+       cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create certificate array");
       }
 
-      CFRelease(srchRef);
+      CFRelease(identity);
     }
 
-    CFRelease(kcRef);
+    CFRelease(search);
   }
 
-  return (ca);
+#  if HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY
+  CFRelease(policy);
+  CFRelease(policy_search);
+#  endif /* HAVE_SECIDENTITYSEARCHCREATEWITHPOLICY */
+
+  return (certificates);
 }
 #endif /* HAVE_CDSASSL */
 
@@ -3248,8 +3298,13 @@ is_cgi(cupsd_client_t *con,              /* I - Client connection */
   */
 
   if ((options = strchr(con->uri, '?')) != NULL)
+  {
     options ++;
 
+    if (strchr(options, '='))
+      cupsdSetStringf(&(con->query_string), "QUERY_STRING=%s", options);
+  }
+
  /*
   * Check for known types...
   */
@@ -3411,7 +3466,7 @@ is_path_absolute(const char *path)        /* I - Input path */
  */
 
 static int                             /* O - 1 on success, 0 on failure */
-make_certificate(void)
+make_certificate(cupsd_client_t *con)  /* I - Client connection */
 {
 #if defined(HAVE_LIBSSL) && defined(HAVE_WAITPID)
   int          pid,                    /* Process ID of command */
@@ -3748,18 +3803,19 @@ make_certificate(void)
   return (1);
 
 #elif defined(HAVE_CDSASSL) && defined(HAVE_WAITPID)
-  int  pid,                            /* Process ID of command */
-       status;                         /* Status of command */
-  char command[1024],                  /* Command */
-       keychain[1024],                 /* Keychain argument */
-       *argv[5],                       /* Command-line arguments */
-       *envp[MAX_ENV];                 /* Environment variables */
+  int          pid,                    /* Process ID of command */
+               status;                 /* Status of command */
+  char         command[1024],          /* Command */
+               *argv[4],               /* Command-line arguments */
+               *envp[MAX_ENV + 1],     /* Environment variables */
+               keychain[1024],         /* Keychain argument */
+               infofile[1024];         /* Type-in information for cert */
+  cups_file_t  *fp;                    /* Seed/info file */
+  int          infofd;                 /* Info file descriptor */
 
 
  /*
-  * Run the "certtool" command to generate a self-signed certificate:
-  *
-  *     certtool c Z k=ServerCertificate
+  * Run the "certtool" command to generate a self-signed certificate...
   */
 
   if (!cupsFileFind("certtool", getenv("PATH"), 1, command, sizeof(command)))
@@ -3769,6 +3825,25 @@ make_certificate(void)
     return (0);
   }
 
+ /*
+  * Create a file with the certificate information fields...
+  *
+  * Note: This assumes that the default questions are asked by the certtool
+  * command...
+  */
+
+  if ((fp = cupsTempFile2(infofile, sizeof(infofile))) == NULL)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR,
+                    "Unable to create certificate information file %s - %s",
+                    infofile, strerror(errno));
+    return (0);
+  }
+
+  cupsFilePrintf(fp, "%s\nr\n\ny\nb\ns\ny\n%s\n\n\n\n\n%s\ny\n", 
+                con->servername, con->servername, ServerAdmin);
+  cupsFileClose(fp);
+
   cupsdLogMessage(CUPSD_LOG_INFO,
                   "Generating SSL server key and certificate...");
 
@@ -3776,14 +3851,22 @@ make_certificate(void)
 
   argv[0] = "certtool";
   argv[1] = "c";
-  argv[2] = "Z";
-  argv[3] = keychain;
-  argv[4] = NULL;
+  argv[2] = keychain;
+  argv[3] = NULL;
 
   cupsdLoadEnv(envp, MAX_ENV);
 
-  if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, 1, &pid))
+  infofd = open(infofile, O_RDONLY);
+
+  if (!cupsdStartProcess(command, argv, envp, infofd, -1, -1, -1, 1, &pid))
+  {
+    close(infofd);
+    unlink(infofile);
     return (0);
+  }
+
+  close(infofd);
+  unlink(infofile);
 
   while (waitpid(pid, &status, 0) < 0)
     if (errno != EINTR)
@@ -3852,7 +3935,6 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
                http_user_agent[1024],  /* HTTP_USER_AGENT environment variable */
                lang[1024],             /* LANG environment variable */
                path_info[1024],        /* PATH_INFO environment variable */
-               *query_string,          /* QUERY_STRING env variable */
                remote_addr[1024],      /* REMOTE_ADDR environment variable */
                remote_host[1024],      /* REMOTE_HOST environment variable */
                remote_user[1024],      /* REMOTE_USER environment variable */
@@ -3883,8 +3965,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
                   "pipe_command: command=\"%s\", options=\"%s\"",
                   command, options ? options : "(null)");
 
-  argv[0]      = command;
-  query_string = NULL;
+  argv[0] = command;
 
   if (options)
     strlcpy(argbuf, options, sizeof(argbuf));
@@ -3911,10 +3992,12 @@ pipe_command(cupsd_client_t *con,       /* I - Client connection */
     path_info[0] = '\0';
   }
 
-  if (*commptr == '?' && con->operation == HTTP_GET)
+  cupsdLogMessage(CUPSD_LOG_INFO, "commptr=\"%s\"", commptr);
+
+  if (*commptr == '?' && con->operation == HTTP_GET && !con->query_string)
   {
     commptr ++;
-    cupsdSetStringf(&query_string, "QUERY_STRING=%s", commptr);
+    cupsdSetStringf(&(con->query_string), "QUERY_STRING=%s", commptr);
   }
 
   argc = 1;
@@ -4045,18 +4128,15 @@ pipe_command(cupsd_client_t *con,       /* I - Client connection */
 
   if (con->operation == HTTP_GET)
   {
-    for (i = 0; i < argc; i ++)
-      cupsdLogMessage(CUPSD_LOG_DEBUG2, "argv[%d] = \"%s\"", i, argv[i]);
-
     envp[envc ++] = "REQUEST_METHOD=GET";
 
-    if (query_string)
+    if (con->query_string)
     {
      /*
       * Add GET form variables after ?...
       */
 
-      envp[envc ++] = query_string;
+      envp[envc ++] = con->query_string;
     }
   }
   else
@@ -4100,8 +4180,6 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
 
   if (cupsdOpenPipe(fds))
   {
-    cupsdClearString(&query_string);
-
     cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create pipes for CGI %s - %s",
                     argv[0], strerror(errno));
     return (0);
@@ -4139,8 +4217,6 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
     close(fds[1]);
   }
 
-  cupsdClearString(&query_string);
-
   return (pid);
 }
 
@@ -4201,5 +4277,5 @@ write_file(cupsd_client_t *con,           /* I - Client connection */
 
 
 /*
- * End of "$Id: client.c 6111 2006-11-15 20:28:39Z mike $".
+ * End of "$Id: client.c 6247 2007-02-07 20:54:37Z mike $".
  */
index 9f98df2aedcedf50d354a46388e43e6a548e8e5c..d11feb836c36f95190e31067d4d6ed98cf124eff 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: client.h 5932 2006-09-11 14:21:23Z mike $"
+ * "$Id: client.h 6205 2007-01-22 22:04:43Z mike $"
  *
  *   Client definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -41,7 +41,8 @@ struct cupsd_client_s
                                        /* Localized URL/URI for GET/PUT */
                        *filename,      /* Filename of output file */
                        *command,       /* Command to run */
-                       *options;       /* Options for command */
+                       *options,       /* Options for command */
+                       *query_string;  /* QUERY_STRING environment variable */
   int                  file;           /* Input/output file */
   int                  file_ready;     /* Input ready on file/pipe? */
   int                  pipe_pid;       /* Pipe process ID (or 0 if not a pipe) */
@@ -122,5 +123,5 @@ extern int  cupsdWriteClient(cupsd_client_t *con);
 
 
 /*
- * End of "$Id: client.h 5932 2006-09-11 14:21:23Z mike $".
+ * End of "$Id: client.h 6205 2007-01-22 22:04:43Z mike $".
  */
index 4d4f1cf853039a166e872996d8fa832a59fbf0c9..c8a3afa43b554d86aa65357ff6a4c58e2b2dd1b2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: conf.c 5905 2006-08-29 20:48:59Z mike $"
+ * "$Id: conf.c 6205 2007-01-22 22:04:43Z mike $"
  *
  *   Configuration routines for the Common UNIX Printing System (CUPS).
  *
@@ -1316,7 +1316,7 @@ get_addr_and_mask(const char *value,      /* I - String from config file */
   * Get the address...
   */
 
-  ip[0]   = ip[1]   = ip[2]   = ip[2]   = 0x00000000;
+  ip[0]   = ip[1]   = ip[2]   = ip[3]   = 0x00000000;
   mask[0] = mask[1] = mask[2] = mask[3] = 0xffffffff;
 
   if ((maskval = strchr(value, '/')) != NULL)
@@ -1501,7 +1501,7 @@ get_addr_and_mask(const char *value,      /* I - String from config file */
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "get_addr_and_mask(value=\"%s\", "
-                  "ip=[%08x:%08x:%08x:%08x], mask=[%08x:%08x:%08x:%08x]",
+                  "ip=[%08x:%08x:%08x:%08x], mask=[%08x:%08x:%08x:%08x])",
              value, ip[0], ip[1], ip[2], ip[3], mask[0], mask[1], mask[2],
             mask[3]);
 
@@ -1990,7 +1990,7 @@ parse_protocols(const char *s)            /* I - Space-delimited protocols */
       protocols |= BROWSE_DNSSD;
     else if (!strcasecmp(valstart, "all"))
       protocols |= BROWSE_ALL;
-    else
+    else if (strcasecmp(valstart, "none"))
       return (-1);
 
     for (valstart = valend; *valstart; valstart ++)
@@ -3289,5 +3289,5 @@ read_policy(cups_file_t *fp,              /* I - Configuration file */
 
 
 /*
- * End of "$Id: conf.c 5905 2006-08-29 20:48:59Z mike $".
+ * End of "$Id: conf.c 6205 2007-01-22 22:04:43Z mike $".
  */
index 1e0b1e45b59c95e25bde1e2070fb697ee375b593..a51e4a9341ea1b4c6e0b28a51539d9231a794338 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cups-driverd.c 5422 2006-04-18 15:16:00Z mike $"
+ * "$Id: cups-driverd.c 6214 2007-01-23 17:01:48Z mike $"
  *
  *   PPD/driver support for the Common UNIX Printing System (CUPS).
  *
@@ -147,6 +147,7 @@ add_ppd(const char *name,           /* I - PPD name */
        size_t     size)                /* I - File size */
 {
   ppd_info_t   *ppd;                   /* PPD */
+  char         *recommended;           /* Foomatic driver string */
 
 
  /*
@@ -197,6 +198,14 @@ add_ppd(const char *name,          /* I - PPD name */
           sizeof(ppd->record.make_and_model));
   strlcpy(ppd->record.device_id, device_id, sizeof(ppd->record.device_id));
 
+ /*
+  * Strip confusing (and often wrong) "recommended" suffix added by
+  * Foomatic drivers...
+  */
+
+  if ((recommended = strstr(ppd->record.make_and_model, " (recommended)")) != NULL)
+    *recommended = '\0';
+
  /*
   * Return the new PPD pointer...
   */
@@ -1113,5 +1122,5 @@ load_drivers(void)
 
 
 /*
- * End of "$Id: cups-driverd.c 5422 2006-04-18 15:16:00Z mike $".
+ * End of "$Id: cups-driverd.c 6214 2007-01-23 17:01:48Z mike $".
  */
index 4dff6f6348e8c3c85551965b869ac10ed7ad906c..bc5b3a4669d3befaf152ab3c5e78152769a286a5 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: dirsvc.c 6090 2006-11-14 16:35:27Z mike $"
+ * "$Id: dirsvc.c 6205 2007-01-22 22:04:43Z mike $"
  *
  *   Directory services routines for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -163,7 +163,7 @@ cupsdLoadRemoteCache(void)
   * Don't load the cache if the CUPS remote protocol is disabled...
   */
 
-  if (!(BrowseRemoteProtocols & BROWSE_CUPS))
+  if (!Browsing || !(BrowseRemoteProtocols & BROWSE_CUPS))
   {
     cupsdLogMessage(CUPSD_LOG_DEBUG,
                     "cupsdLoadRemoteCache: Not loading remote cache.");
@@ -3192,5 +3192,5 @@ slp_url_callback(
 
 
 /*
- * End of "$Id: dirsvc.c 6090 2006-11-14 16:35:27Z mike $".
+ * End of "$Id: dirsvc.c 6205 2007-01-22 22:04:43Z mike $".
  */
index 15803a4338edc49966396553c344eeb85b954792..f96d2bf133b4a3219a59f6a5e661fb9c32c3280f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp.c 6052 2006-10-20 20:35:41Z mike $"
+ * "$Id: ipp.c 6145 2006-12-06 20:10:16Z mike $"
  *
  *   IPP routines for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -5372,7 +5372,10 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
     return;
   }
   else
+  {
+    dtype &= CUPS_PRINTER_CLASS;
     dmask = CUPS_PRINTER_CLASS;
+  }
 
  /*
   * Check policy...
@@ -9158,5 +9161,5 @@ validate_user(cupsd_job_t    *job,        /* I - Job */
 
 
 /*
- * End of "$Id: ipp.c 6052 2006-10-20 20:35:41Z mike $".
+ * End of "$Id: ipp.c 6145 2006-12-06 20:10:16Z mike $".
  */
index 47a8375647bcd24009e3c242152af53b07efc3dc..f219c6980400b34703a255d6d7ba19259bd223e9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: job.c 6061 2006-10-23 00:26:52Z mike $"
+ * "$Id: job.c 6234 2007-02-05 20:25:50Z mike $"
  *
  *   Job management routines for the Common UNIX Printing System (CUPS).
  *
@@ -373,13 +373,11 @@ cupsdCheckJobs(void)
 
         pclass = printer;
 
-        if (!(pclass->type & CUPS_PRINTER_REMOTE))
-       {
-         if (pclass->state != IPP_PRINTER_STOPPED)
-           printer = cupsdFindAvailablePrinter(job->dest);
-         else
-           printer = NULL;
-       }
+        if (!(pclass->type & CUPS_PRINTER_REMOTE) &&
+           pclass->state != IPP_PRINTER_STOPPED)
+          printer = cupsdFindAvailablePrinter(job->dest);
+       else
+         printer = NULL;
       }
 
       if (!printer && !pclass)
@@ -1497,7 +1495,7 @@ cupsdSetJobHoldUntil(cupsd_job_t *job,    /* I - Job */
     */
 
     if (job->hold_until < curtime)
-      job->hold_until += 24 * 60 * 60 * 60;
+      job->hold_until += 24 * 60 * 60;
   }
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSetJobHoldUntil: hold_until = %d",
@@ -3469,5 +3467,5 @@ unload_job(cupsd_job_t *job)              /* I - Job */
 
 
 /*
- * End of "$Id: job.c 6061 2006-10-23 00:26:52Z mike $".
+ * End of "$Id: job.c 6234 2007-02-05 20:25:50Z mike $".
  */
diff --git a/scripting/java/src/com/easysw/cups/Base64Coder.java b/scripting/java/src/com/easysw/cups/Base64Coder.java
new file mode 100644 (file)
index 0000000..0b2958d
--- /dev/null
@@ -0,0 +1,145 @@
+package com.easysw.cups;
+
+/**
+* A Base64 Encoder/Decoder.
+*
+* <p>
+* This class is used to encode and decode data in Base64 format as described in RFC 1521.
+*
+* <p>
+* This is "Open Source" software and released under the <a href="http://www.gnu.org/licenses/lgpl.html">GNU/LGPL</a> license.<br>
+* It is provided "as is" without warranty of any kind.<br>
+* Copyright 2003: Christian d'Heureuse, Inventec Informatik AG, Switzerland.<br>
+* Home page: <a href="http://www.source-code.biz">www.source-code.biz</a><br>
+*
+* <p>
+* Version history:<br>
+* 2003-07-22 Christian d'Heureuse (chdh): Module created.<br>
+* 2005-08-11 chdh: Lincense changed from GPL to LGPL.<br>
+* 2006-11-21 chdh:<br>
+*  &nbsp; Method encode(String) renamed to encodeString(String).<br>
+*  &nbsp; Method decode(String) renamed to decodeString(String).<br>
+*  &nbsp; New method encode(byte[],int) added.<br>
+*  &nbsp; New method decode(String) added.<br>
+*/
+
+public class Base64Coder {
+
+// Mapping table from 6-bit nibbles to Base64 characters.
+private static char[]    map1 = new char[64];
+   static {
+      int i=0;
+      for (char c='A'; c<='Z'; c++) map1[i++] = c;
+      for (char c='a'; c<='z'; c++) map1[i++] = c;
+      for (char c='0'; c<='9'; c++) map1[i++] = c;
+      map1[i++] = '+'; map1[i++] = '/'; }
+
+// Mapping table from Base64 characters to 6-bit nibbles.
+private static byte[]    map2 = new byte[128];
+   static {
+      for (int i=0; i<map2.length; i++) map2[i] = -1;
+      for (int i=0; i<64; i++) map2[map1[i]] = (byte)i; }
+
+/**
+* Encodes a string into Base64 format.
+* No blanks or line breaks are inserted.
+* @param s  a String to be encoded.
+* @return   A String with the Base64 encoded data.
+*/
+public static String encodeString (String s) {
+   return new String(encode(s.getBytes())); }
+
+/**
+* Encodes a byte array into Base64 format.
+* No blanks or line breaks are inserted.
+* @param in  an array containing the data bytes to be encoded.
+* @return    A character array with the Base64 encoded data.
+*/
+public static char[] encode (byte[] in) {
+   return encode(in,in.length); }
+
+/**
+* Encodes a byte array into Base64 format.
+* No blanks or line breaks are inserted.
+* @param in   an array containing the data bytes to be encoded.
+* @param iLen number of bytes to process in <code>in</code>.
+* @return     A character array with the Base64 encoded data.
+*/
+public static char[] encode (byte[] in, int iLen) {
+   int oDataLen = (iLen*4+2)/3;       // output length without padding
+   int oLen = ((iLen+2)/3)*4;         // output length including padding
+   char[] out = new char[oLen];
+   int ip = 0;
+   int op = 0;
+   while (ip < iLen) {
+      int i0 = in[ip++] & 0xff;
+      int i1 = ip < iLen ? in[ip++] & 0xff : 0;
+      int i2 = ip < iLen ? in[ip++] & 0xff : 0;
+      int o0 = i0 >>> 2;
+      int o1 = ((i0 &   3) << 4) | (i1 >>> 4);
+      int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
+      int o3 = i2 & 0x3F;
+      out[op++] = map1[o0];
+      out[op++] = map1[o1];
+      out[op] = op < oDataLen ? map1[o2] : '='; op++;
+      out[op] = op < oDataLen ? map1[o3] : '='; op++; }
+   return out; }
+
+/**
+* Decodes a string from Base64 format.
+* @param s  a Base64 String to be decoded.
+* @return   A String containing the decoded data.
+* @throws   IllegalArgumentException if the input is not valid Base64 encoded data.
+*/
+public static String decodeString (String s) {
+   return new String(decode(s)); }
+
+/**
+* Decodes a byte array from Base64 format.
+* @param s  a Base64 String to be decoded.
+* @return   An array containing the decoded data bytes.
+* @throws   IllegalArgumentException if the input is not valid Base64 encoded data.
+*/
+public static byte[] decode (String s) {
+   return decode(s.toCharArray()); }
+
+/**
+* Decodes a byte array from Base64 format.
+* No blanks or line breaks are allowed within the Base64 encoded data.
+* @param in  a character array containing the Base64 encoded data.
+* @return    An array containing the decoded data bytes.
+* @throws    IllegalArgumentException if the input is not valid Base64 encoded data.
+*/
+public static byte[] decode (char[] in) {
+   int iLen = in.length;
+   if (iLen%4 != 0) throw new IllegalArgumentException ("Length of Base64 encoded input string is not a multiple of 4.");
+   while (iLen > 0 && in[iLen-1] == '=') iLen--;
+   int oLen = (iLen*3) / 4;
+   byte[] out = new byte[oLen];
+   int ip = 0;
+   int op = 0;
+   while (ip < iLen) {
+      int i0 = in[ip++];
+      int i1 = in[ip++];
+      int i2 = ip < iLen ? in[ip++] : 'A';
+      int i3 = ip < iLen ? in[ip++] : 'A';
+      if (i0 > 127 || i1 > 127 || i2 > 127 || i3 > 127)
+         throw new IllegalArgumentException ("Illegal character in Base64 encoded data.");
+      int b0 = map2[i0];
+      int b1 = map2[i1];
+      int b2 = map2[i2];
+      int b3 = map2[i3];
+      if (b0 < 0 || b1 < 0 || b2 < 0 || b3 < 0)
+         throw new IllegalArgumentException ("Illegal character in Base64 encoded data.");
+      int o0 = ( b0       <<2) | (b1>>>4);
+      int o1 = ((b1 & 0xf)<<4) | (b2>>>2);
+      int o2 = ((b2 &   3)<<6) |  b3;
+      out[op++] = (byte)o0;
+      if (op<oLen) out[op++] = (byte)o1;
+      if (op<oLen) out[op++] = (byte)o2; }
+   return out; }
+
+// Dummy constructor.
+private Base64Coder() {}
+
+} // end class Base64Coder
index 7e63b83a43b25f20ff281a9064a20498438e9772..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,46 +0,0 @@
-package com.easysw.cups;
-
-/**
- * @version 1.00 06-NOV-2002
- * @author  Easy Software Products
- *
- *   Internet Printing Protocol definitions for the Common UNIX Printing
- *   System (CUPS).
- *
- *   Copyright 1997-2002 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Easy Software Products and are protected by Federal
- *   copyright law.  Distribution and use rights are outlined in the file
- *   "LICENSE.txt" which should have been included with this file.  If this
- *   file is missing or damaged please contact Easy Software Products
- *   at:
- *
- *       Attn: CUPS Licensing Information
- *       Easy Software Products
- *       44141 Airport View Drive, Suite 204
- *       Hollywood, Maryland 20636-3111 USA
- *
- *       Voice: (301) 373-9603
- *       EMail: cups-info@cups.org
- *         WWW: http://www.cups.org
- */
-
-/**
- * The <code>IPPBase64Encoder</code> overrides part of the sun encoder.
- *
- * @author     TDB
- * @version    1.0
- * @since      JDK1.3
- */
-
-
-class IPPBase64Encoder extends sun.misc.BASE64Encoder
-{
-  protected void encodeLineSuffix(java.io.OutputStream out)
-            throws java.io.IOException
-  {
-    // do nothing. 
-  }
-}
-
index f53bdff7bf406e613ee36a832db915c96c0bf6ab..e5307399f9e686587e8d5c0d9bad5b26c53a6cbd 100644 (file)
@@ -1,13 +1,13 @@
 package com.easysw.cups;
 
 /**
- * @version 1.00 06-NOV-2002
+ * @version 1.1 23-JAN-2007
  * @author  Easy Software Products
  *
  *   Internet Printing Protocol definitions for the Common UNIX Printing
  *   System (CUPS).
  *
- *   Copyright 1997-2002 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -19,11 +19,11 @@ package com.easysw.cups;
  *       Attn: CUPS Licensing Information
  *       Easy Software Products
  *       44141 Airport View Drive, Suite 204
- *       Hollywood, Maryland 20636-3111 USA
+ *       Hollywood, Maryland 20636 USA
  *
- *       Voice: (301) 373-9603
+ *       Voice: (301) 373-9600
  *       EMail: cups-info@cups.org
- *         WWW: http://www.cups.org
+ *         WWW: http://www.cups.org/
  */
 
 /**
@@ -31,7 +31,7 @@ package com.easysw.cups;
  * server, and processing responses.
  *
  * @author     TDB
- * @version    1.0
+ * @version    1.1
  * @since      JDK1.3
  */
 
@@ -483,8 +483,7 @@ public class IPPHttp
       if (auth_type.compareTo("basic") == 0)
       {
         s1 = user + ":" + passwd;
-        IPPBase64Encoder encoder = new IPPBase64Encoder();
-        String auth_string = encoder.encode(s1.getBytes());
+        String auth_string = Base64Coder.encodeString(s1);
         s1 = "Authorization: Basic " + auth_string + "\r\n";
         os.write(s1.getBytes(), 0, s1.length());
       }
index 8211b4644206a30dd205f80e7b96c0342b07b2fd..fec319bbf4a68e967d4d34bda4173153ef5fdb42 100644 (file)
@@ -1,4 +1,4 @@
-IPPBase64Encoder
+Base64Coder
 IPPDefs
 IPPError
 IPPStatus
index 3eec93def0690ccbe1f7b9346859d52b34cab793..e69bd5a6f14978d9c7be1eb32688c7480734f339 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: lpoptions.c 5926 2006-09-05 20:45:47Z mike $"
+ * "$Id: lpoptions.c 6205 2007-01-22 22:04:43Z mike $"
  *
  *   Printer option program for the Common UNIX Printing System (CUPS).
  *
@@ -440,8 +440,8 @@ list_options(cups_dest_t *dest)     /* I - Destination to list */
   if ((filename = cupsGetPPD(dest->name)) == NULL)
   {
     _cupsLangPrintf(stderr,
-                    _("lpoptions: Destination %s has no PPD file!\n"),
-                   dest->name);
+                    _("lpoptions: Unable to get PPD file for %s: %s\n"),
+                   dest->name, cupsLastErrorString());
     return;
   }
 
@@ -484,5 +484,5 @@ usage(void)
 
 
 /*
- * End of "$Id: lpoptions.c 5926 2006-09-05 20:45:47Z mike $".
+ * End of "$Id: lpoptions.c 6205 2007-01-22 22:04:43Z mike $".
  */
index 6ece4d7b10640003e448acfb4d233993f81e4b98..82692caaebdfc41146e5be23b3087368646b7d4d 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index 0553eb70045ce3504df584e5a70d21611090a83d..15ea37ca90ce22890ed74e0e76b2845a7ffeac3c 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Unbekannt:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?schwebend seit<BR>{time_at_creation}:{job_state=4?angehalten seit<BR>{time_at_creation}:
 {job_state=5?verarbeitet seit<BR>{time_at_processing}:{job_state=6?gestoppt um<BR>{time_at_completed}:
 {job_state=7?abgebrochen um<BR>{time_at_completed}:{job_state=8?aborted:beendet um<BR>{time_at_completed}}}}}}}&nbsp;</TD>
index eaf19b524e1248e47a5e593c84180a323dd63aa7..570be1b6ae6dc7c4f4731de869d4dc0f08da369a 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index 97cc2bef03e4896817a37a0aaea8b395289d18d4..2338888512ebdcf4abb7d208d4391d8368663f80 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Desconocido:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Desconocido:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Desconocido:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?pendiente desde<BR>{time_at_creation}:{job_state=4?retenido desde<BR>{time_at_creation}:
 {job_state=5?en proceso desde<BR>{time_at_processing}:{job_state=6?parado:
 {job_state=7?cancelado el<BR>{time_at_completed}:{job_state=8?abandonado:completado el<BR>{time_at_completed}}}}}}}&nbsp;</TD>
index 33e0b966b64d5275574f2705f07bfe5b2e3774c6..24243d41f9a389ffc17629c320c4f4f549e05360 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index 4f1fba728b692f9c48558889b47658b5bb9ac3e8..67d4ad25c42e92c6ff7ac59a1fa0ed5d1153fa1f 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Teadmata:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Teadmata:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Teadmata:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?ootel alates<BR>{time_at_creation}:{job_state=4?hoitakse alates<BR>{time_at_creation}:
 {job_state=5?töötluses alates<BR>{time_at_processing}:{job_state=6?peatatud:
 {job_state=7?katkestatud<BR>{time_at_completed}:{job_state=8?loobutud:lõpetatud<BR>{time_at_completed}}}}}}}&nbsp;</TD>
diff --git a/templates/fr/add-class.tmpl b/templates/fr/add-class.tmpl
new file mode 100644 (file)
index 0000000..0fca49e
--- /dev/null
@@ -0,0 +1,66 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Ajouter une classe</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Membres :</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-add-class.gif" ALT="Ajouter une classe"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Ajouter une classe</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Membres :</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-add-class.gif" ALT="Ajouter une classe"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/add-printer.tmpl b/templates/fr/add-printer.tmpl
new file mode 100644 (file)
index 0000000..f039b95
--- /dev/null
@@ -0,0 +1,56 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Ajouter une nouvelle imprimante</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Peut comporter tout caractère imprimable, "/", "#", et espace exceptés )</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Lieu compréhensible pour un utilisateur, comme "Labo 1" )</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Description compréhensible pour un utilisateur, comme "HP LaserJet recto/verso" )</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Ajouter une nouvelle imprimante</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Peut comporter tout caractère imprimable, "/", "#", et espace exceptés )</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Lieu compréhensible pour un utilisateur, comme "Labo 1" )</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Description compréhensible pour un utilisateur, comme "HP LaserJet recto/verso" )</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/admin.tmpl b/templates/fr/admin.tmpl
new file mode 100644 (file)
index 0000000..a76ce36
--- /dev/null
@@ -0,0 +1,166 @@
+<TABLE CELLPADDING="0" CELLSPACING="0" WIDTH="100%" SUMMARY="Tâches d'administration">
+<TR><TD VALIGN="TOP" NOWRAP>
+
+<H2 CLASS="title">Imprimantes</H2>
+
+<P>
+<A HREF="/admin?op=add-printer"><IMG
+SRC="/images/button-add-printer.gif" ALT="Ajouter une imprimante" CLASS="button"></A>
+<A HREF="/printers/"><IMG SRC="/images/button-manage-printers.gif"
+ALT="Administrer les imprimantes" CLASS="button"></A>
+{have_samba?<A HREF="/admin/?op=export-samba"><IMG
+SRC="/images/button-export-samba.gif" ALT="Exporter les imprimantes vers SAMBA"
+CLASS="button"></A>:}
+</P>
+
+{#device_uri=0?:<P><B>Nouvelles imprimantes détectées:</B></P><UL>{[device_uri]
+<LI><A HREF="/admin?op=add-printer&amp;{device_options}"><IMG
+SRC="/images/button-add-this-printer.gif" ALT="Ajouter cette imprimante" CLASS="button"
+ALIGN="MIDDLE"></A>
+{device_make_and_model} ({device_info})</LI>
+}</UL>}
+
+<H2 CLASS="title">Classes</H2>
+
+<P>
+<A HREF="/admin?op=add-class"><IMG SRC="/images/button-add-class.gif"
+ALT="Ajouter une classe" CLASS="button"></A>
+<A HREF="/classes/"><IMG SRC="/images/button-manage-classes.gif"
+ALT="Administrer les classes" CLASS="button"></A>
+</P>
+
+<H2 CLASS="title">Tâches d'impression</H2>
+
+<P>
+<A HREF="/jobs/"><IMG SRC="/images/button-manage-jobs.gif" ALT="Administrer les
+tâches" CLASS="button"></A>
+</P>
+
+</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+
+<H2 CLASS="title">Serveur</H2>
+
+<P>
+<A HREF="/admin?op=config-server"><IMG
+SRC="/images/button-edit-configuration-file.gif" ALT="Éditer le fichier de
+configuration" CLASS="button"></A>
+<A HREF="/admin/log/access_log" TARGET="_blank"><IMG
+SRC="/images/button-view-access-log.gif" ALT="Liste des accès"
+CLASS="button"></A>
+<A HREF="/admin/log/error_log" TARGET="_blank"><IMG
+SRC="/images/button-view-error-log.gif" ALT="Liste des erreurs"
+CLASS="button"></A>
+<A HREF="/admin/log/page_log" TARGET="_blank"><IMG
+SRC="/images/button-view-page-log.gif" ALT="Liste des pages"
+CLASS="button"></A>
+</P>
+
+{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+<FORM METHOD="POST" ACTION="/admin">
+
+<P><B>Paramètres de base du serveur :</B></P>
+
+<P><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Afficher les
+imprimantes partagées par d'autres systèmes<BR>
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Partager les
+imprimantes publiques connectées à ce système<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Autoriser
+l'administration à distance<BR>
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Autoriser les
+utilisateurs à annuler n'importe quelle tâche ( pas seulement les leurs )<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Enregistrer les
+informations de <I>debug</I> pour la résolution de problèmes</P>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-change-settings.gif" ALT="Modifier
+les paramètres"></P>
+
+</FORM>}
+
+</TD></TR>
+</TABLE>
+<TABLE CELLPADDING="0" CELLSPACING="0" WIDTH="100%" SUMMARY="Tâches d'administration">
+<TR><TD VALIGN="TOP" NOWRAP>
+
+<H2 CLASS="title">Imprimantes</H2>
+
+<P>
+<A HREF="/admin?op=add-printer"><IMG
+SRC="/images/button-add-printer.gif" ALT="Ajouter une imprimante" CLASS="button"></A>
+<A HREF="/printers/"><IMG SRC="/images/button-manage-printers.gif"
+ALT="Administrer les imprimantes" CLASS="button"></A>
+{have_samba?<A HREF="/admin/?op=export-samba"><IMG
+SRC="/images/button-export-samba.gif" ALT="Exporter les imprimantes vers SAMBA"
+CLASS="button"></A>:}
+</P>
+
+{#device_uri=0?:<P><B>Nouvelles imprimantes détectées:</B></P><UL>{[device_uri]
+<LI><A HREF="/admin?op=add-printer&amp;{device_options}"><IMG
+SRC="/images/button-add-this-printer.gif" ALT="Ajouter cette imprimante" CLASS="button"
+ALIGN="MIDDLE"></A>
+{device_make_and_model} ({device_info})</LI>
+}</UL>}
+
+<H2 CLASS="title">Classes</H2>
+
+<P>
+<A HREF="/admin?op=add-class"><IMG SRC="/images/button-add-class.gif"
+ALT="Ajouter une classe" CLASS="button"></A>
+<A HREF="/classes/"><IMG SRC="/images/button-manage-classes.gif"
+ALT="Administrer les classes" CLASS="button"></A>
+</P>
+
+<H2 CLASS="title">Tâches d'impression</H2>
+
+<P>
+<A HREF="/jobs/"><IMG SRC="/images/button-manage-jobs.gif" ALT="Administrer les
+tâches" CLASS="button"></A>
+</P>
+
+</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+
+<H2 CLASS="title">Serveur</H2>
+
+<P>
+<A HREF="/admin?op=config-server"><IMG
+SRC="/images/button-edit-configuration-file.gif" ALT="Éditer le fichier de
+configuration" CLASS="button"></A>
+<A HREF="/admin/log/access_log" TARGET="_blank"><IMG
+SRC="/images/button-view-access-log.gif" ALT="Liste des accès"
+CLASS="button"></A>
+<A HREF="/admin/log/error_log" TARGET="_blank"><IMG
+SRC="/images/button-view-error-log.gif" ALT="Liste des erreurs"
+CLASS="button"></A>
+<A HREF="/admin/log/page_log" TARGET="_blank"><IMG
+SRC="/images/button-view-page-log.gif" ALT="Liste des pages"
+CLASS="button"></A>
+</P>
+
+{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+<FORM METHOD="POST" ACTION="/admin">
+
+<P><B>Paramètres de base du serveur :</B></P>
+
+<P><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Afficher les
+imprimantes partagées par d'autres systèmes<BR>
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Partager les
+imprimantes publiques connectées à ce système<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Autoriser
+l'administration à distance<BR>
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Autoriser les
+utilisateurs à annuler n'importe quelle tâche ( pas seulement les leurs )<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Enregistrer les
+informations de <I>debug</I> pour la résolution de problèmes</P>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-change-settings.gif" ALT="Modifier
+les paramètres"></P>
+
+</FORM>}
+
+</TD></TR>
+</TABLE>
diff --git a/templates/fr/choose-device.tmpl b/templates/fr/choose-device.tmpl
new file mode 100644 (file)
index 0000000..89f774b
--- /dev/null
@@ -0,0 +1,52 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">Matériel pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Matériel :</TH>
+<TD>
+<SELECT NAME="DEVICE_URI">
+{[device_uri]<OPTION VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}" {?current_device_uri={device_uri}?SELECTED:{current_device_scheme={device_uri}?SELECTED:}}>
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</OPTION>
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">Matériel pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Matériel :</TH>
+<TD>
+<SELECT NAME="DEVICE_URI">
+{[device_uri]<OPTION VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}" {?current_device_uri={device_uri}?SELECTED:{current_device_scheme={device_uri}?SELECTED:}}>
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</OPTION>
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/choose-make.tmpl b/templates/fr/choose-make.tmpl
new file mode 100644 (file)
index 0000000..c8b216a
--- /dev/null
@@ -0,0 +1,84 @@
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<H2 CLASS="title">Marque/Fabricant pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Marque :</TH>
+<TD>
+<SELECT NAME="PPD_MAKE" SIZE="10">
+{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TH CLASS="label">Ou donnez un fichier PPD :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?Ajouter une imprimante:Modifier l'imprimante}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<H2 CLASS="title">Marque/Fabricant pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Marque :</TH>
+<TD>
+<SELECT NAME="PPD_MAKE" SIZE="10">
+{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TH CLASS="label">Ou donnez un fichier PPD :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?Ajouter une imprimante:Modifier l'imprimante}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/choose-model.tmpl b/templates/fr/choose-model.tmpl
new file mode 100644 (file)
index 0000000..1ee051e
--- /dev/null
@@ -0,0 +1,68 @@
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<H2 CLASS="title">Modèle/Pilote pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Modèle:</TH>
+<TD>
+<SELECT NAME="PPD_NAME" SIZE="10">
+{[ppd_name]<OPTION VALUE="{ppd_name}" {?current_make_and_model={ppd_make_and_model}?SELECTED:}>{ppd_make_and_model} ({ppd_natural_language})
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Ou donnez un fichier PPD :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?Ajouter une imprimante:Modifier l'imprimante}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<H2 CLASS="title">Modèle/Pilote pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Modèle:</TH>
+<TD>
+<SELECT NAME="PPD_NAME" SIZE="10">
+{[ppd_name]<OPTION VALUE="{ppd_name}" {?current_make_and_model={ppd_make_and_model}?SELECTED:}>{ppd_make_and_model} ({ppd_natural_language})
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Ou donnez un fichier PPD :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?Ajouter une imprimante:Modifier l'imprimante}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/choose-serial.tmpl b/templates/fr/choose-serial.tmpl
new file mode 100644 (file)
index 0000000..14cc4a3
--- /dev/null
@@ -0,0 +1,94 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+
+<H2 CLASS="title">Paramètres du port série pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Baud/s :</TH>
+<TD><SELECT NAME="BAUDRATE">
+{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Parité :</TH>
+<TD><SELECT NAME="PARITY">
+<OPTION VALUE="none" {?parity=none?SELECTED:}>Aucune
+<OPTION VALUE="even" {?parity=even?SELECTED:}>Paire
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Impaire
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Bits données :</TH>
+<TD><SELECT NAME="BITS">
+<OPTION {?bits=8?SELECTED:}>8
+<OPTION {?bits=7?SELECTED:}>7
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Contrôle de flux :</TH>
+<TD><SELECT NAME="FLOW">
+<OPTION VALUE="none" {?flow=none?SELECTED:}>Auncun
+<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF ( Logiciel )
+<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS ( Matériel )
+<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR ( Matériel )
+</SELECT></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+
+<H2 CLASS="title">Paramètres du port série pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Baud/s :</TH>
+<TD><SELECT NAME="BAUDRATE">
+{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Parité :</TH>
+<TD><SELECT NAME="PARITY">
+<OPTION VALUE="none" {?parity=none?SELECTED:}>Aucune
+<OPTION VALUE="even" {?parity=even?SELECTED:}>Paire
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Impaire
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Bits données :</TH>
+<TD><SELECT NAME="BITS">
+<OPTION {?bits=8?SELECTED:}>8
+<OPTION {?bits=7?SELECTED:}>7
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Contrôle de flux :</TH>
+<TD><SELECT NAME="FLOW">
+<OPTION VALUE="none" {?flow=none?SELECTED:}>Auncun
+<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF ( Logiciel )
+<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS ( Matériel )
+<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR ( Matériel )
+</SELECT></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/choose-uri.tmpl b/templates/fr/choose-uri.tmpl
new file mode 100644 (file)
index 0000000..f9d2873
--- /dev/null
@@ -0,0 +1,84 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">URI du matériel pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">URI du matériel :</TH>
+<TD><INPUT TYPE="TEXT" SIZE="60" MAXLENGTH="1024" NAME="DEVICE_URI" VALUE="{device_uri}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>Exemples :
+<PRE>
+    http://nom_machine:631/ipp/
+    http://nom_machine:631/ipp/port1
+
+    ipp://nom_machine/ipp/
+    ipp://nom_machine/ipp/port1
+
+    lpd://nom_machine/queue
+
+    socket://nom_machine
+    socket://nom_machine:9100
+</PRE>
+
+<P>cf. <A HREF="/help/network.html" TARGET="_blank">"Network
+Printers"</A> pour construire l'URI à employer avec votre imprimante.</P>
+
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">URI du matériel pour {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">URI du matériel :</TH>
+<TD><INPUT TYPE="TEXT" SIZE="60" MAXLENGTH="1024" NAME="DEVICE_URI" VALUE="{device_uri}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>Exemples :
+<PRE>
+    http://nom_machine:631/ipp/
+    http://nom_machine:631/ipp/port1
+
+    ipp://nom_machine/ipp/
+    ipp://nom_machine/ipp/port1
+
+    lpd://nom_machine/queue
+
+    socket://nom_machine
+    socket://nom_machine:9100
+</PRE>
+
+<P>cf. <A HREF="/help/network.html" TARGET="_blank">"Network
+Printers"</A> pour construire l'URI à employer avec votre imprimante.</P>
+
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/class-added.tmpl b/templates/fr/class-added.tmpl
new file mode 100644 (file)
index 0000000..be95a0a
--- /dev/null
@@ -0,0 +1,2 @@
+<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a bien été ajoutée.
+<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a bien été ajoutée.
diff --git a/templates/fr/class-confirm.tmpl b/templates/fr/class-confirm.tmpl
new file mode 100644 (file)
index 0000000..4b8081e
--- /dev/null
@@ -0,0 +1,14 @@
+<P><B>Attention :</B> Êtes vous sûr(e) de vouloir supprimer la classe
+{printer_name}?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-class&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-class.gif" ALT="Supprimer la classe"
+CLASS="button"></A></P>
+<P><B>Attention :</B> Êtes vous sûr(e) de vouloir supprimer la classe
+{printer_name}?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-class&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-class.gif" ALT="Supprimer la classe"
+CLASS="button"></A></P>
diff --git a/templates/fr/class-deleted.tmpl b/templates/fr/class-deleted.tmpl
new file mode 100644 (file)
index 0000000..9cd00fd
--- /dev/null
@@ -0,0 +1,2 @@
+<P>La classe {printer_name} a bien été supprimée.
+<P>La classe {printer_name} a bien été supprimée.
diff --git a/templates/fr/class-jobs-header.tmpl b/templates/fr/class-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..481b044
--- /dev/null
@@ -0,0 +1,2 @@
+<H3 CLASS="title">Tâches d'impression</H3>
+<H3 CLASS="title">Tâches d'impression</H3>
diff --git a/templates/fr/class-modified.tmpl b/templates/fr/class-modified.tmpl
new file mode 100644 (file)
index 0000000..0915550
--- /dev/null
@@ -0,0 +1,2 @@
+<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a bien été modifiée.
+<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a bien été modifiée.
diff --git a/templates/fr/classes-header.tmpl b/templates/fr/classes-header.tmpl
new file mode 100644 (file)
index 0000000..0d8009c
--- /dev/null
@@ -0,0 +1,2 @@
+<P ALIGN="CENTER">{total=0?Aucune classe:Affichage de {#printer_name} classe{#printer_name=1?:s} sur {total}}.</P>
+<P ALIGN="CENTER">{total=0?Aucune classe:Affichage de {#printer_name} classe{#printer_name=1?:s} sur {total}}.</P>
diff --git a/templates/fr/classes.tmpl b/templates/fr/classes.tmpl
new file mode 100644 (file)
index 0000000..99706b9
--- /dev/null
@@ -0,0 +1,108 @@
+{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? ( Imprimante par défaut ) :}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN=TOP><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/classes.gif" CLASS="button" ALT=""></A></TD>
+<TD VALIGN=TOP><B>Description :</B> {printer_info}<BR>
+<B>Lieu :</B> {printer_location}<BR>
+<B>État de la classe:</B> {printer_state=3?ne fait rien:{printer_state=4?en cours d'impression:arrêtée}},
+{printer_is_accepting_jobs=0?rejette les tâches:accepte les tâches}, {printer_is_shared=0?cachée:publique}.
+{?member_uris=?:<BR>Membres : {member_uris}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="Imprimer une page de test" CLASS="button"></A>
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-start-class.gif" ALT="Démarrer la classe" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-stop-class.gif" ALT="Arrêter la classe" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="Accepter les tâches" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="Rejeter les tâches" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Annuler toutes les tâches" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1&amp;is_class=Y">
+<IMG SRC="/images/button-publish-printer.gif" ALT="Publier l'imprimante" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0&amp;is_class=Y">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="Cacher l'imprimante" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-class.gif" ALT="Modifier la classe" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-class.gif" ALT="Supprimer la classe" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-as-default.gif" ALT="Choisir par défaut" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="Définir les autorisations" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
+{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? ( Imprimante par défaut ) :}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN=TOP><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/classes.gif" CLASS="button" ALT=""></A></TD>
+<TD VALIGN=TOP><B>Description :</B> {printer_info}<BR>
+<B>Lieu :</B> {printer_location}<BR>
+<B>État de la classe:</B> {printer_state=3?ne fait rien:{printer_state=4?en cours d'impression:arrêtée}},
+{printer_is_accepting_jobs=0?rejette les tâches:accepte les tâches}, {printer_is_shared=0?cachée:publique}.
+{?member_uris=?:<BR>Membres : {member_uris}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="Imprimer une page de test" CLASS="button"></A>
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-start-class.gif" ALT="Démarrer la classe" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-stop-class.gif" ALT="Arrêter la classe" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="Accepter les tâches" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="Rejeter les tâches" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Annuler toutes les tâches" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1&amp;is_class=Y">
+<IMG SRC="/images/button-publish-printer.gif" ALT="Publier l'imprimante" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0&amp;is_class=Y">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="Cacher l'imprimante" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-class.gif" ALT="Modifier la classe" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-class.gif" ALT="Supprimer la classe" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-as-default.gif" ALT="Choisir par défaut" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="Définir les autorisations" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
diff --git a/templates/fr/edit-config.tmpl.in b/templates/fr/edit-config.tmpl.in
new file mode 100644 (file)
index 0000000..95163c0
--- /dev/null
@@ -0,0 +1,182 @@
+<SCRIPT TYPE="text/javascript">
+function reset_config()
+{
+  document.cups.CUPSDCONF.value =
+"# Écrire des informations générales dans error_log - changez \\"info\\" en \\"debug\\"\\n" +
+"# pour la résolution de problème...\\n" +
+"LogLevel info\\n" +
+"\\n" +
+"\\n" +
+"# Groupe des utilisateurs UNIX pour les administrateurs CUPS...\\n" +
+"SystemGroup @CUPS_SYSTEM_GROUPS@\\n" +
+"\\n" +
+"\\n" +
+"# N'accepter que les connexions de la machine locale.\\n" +
+"Listen localhost:@DEFAULT_IPP_PORT@\\n" +
+"@CUPS_LISTEN_DOMAINSOCKET@\\n" +
+"\\n" +
+"\\n" +
+"# Publier les imprimantes partagées sur le réseau local.\\n" +
+"Browsing On\\n" +
+"BrowseOrder allow,deny\\n" +
+"BrowseAllow @LOCAL\\n" +
+"\\n" +
+"\\n" +
+"# S'authentifier par défaut via les comptes UNIX...\\n" +
+"DefaultAuthType Basic\\n" +
+"\\n" +
+"# Restreindre l'accès au serveur...\\n" +
+"<Location />\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restreindre l'accès aux pages d'administration...\\n" +
+"<Location /admin>\\n" +
+"@ENCRYPTION_REQUIRED@\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restreindre l'accès au ficher de configuration...\\n" +
+"<Location /admin/conf>\\n" +
+"  AuthType Basic\\n" +
+"  Require user @SYSTEM\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Définir la politique par défaut des tâches d'impression...\\n" +
+"<Policy default>\\n" +
+"  # Les opérations sur les tâches doivent être faites par leur propriétaire ou un adminstrateur...\\n" +
+"  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # Toutes les opérations d'administration nécessite l'authentification d'un adminstrateur...\\n" +
+"  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>\\n" +
+"    AuthType Basic\\n" +
+"    Require user @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # Seuls le propriétaire et un administrateur peuvent annuler ou authentifier une tâche...\\n" +
+"  <Limit Cancel-Job CUPS-Authenticate-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  <Limit All>\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"</Policy>\\n";
+}
+</SCRIPT>
+
+<H2 CLASS="title">Ficher de configuration du serveur</H2>
+
+<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
+
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+
+<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-save-changes.gif"
+ALT="Enregistrer les modifications"> <A
+HREF="javascript:reset_config();"><IMG
+SRC="/images/button-use-default-config.gif" CLASS="button"
+ALT="Utiliser la configuration par défaut"></A></P>
+
+</FORM>
+<SCRIPT TYPE="text/javascript">
+function reset_config()
+{
+  document.cups.CUPSDCONF.value =
+"# Écrire des informations générales dans error_log - changez \\"info\\" en \\"debug\\"\\n" +
+"# pour la résolution de problème...\\n" +
+"LogLevel info\\n" +
+"\\n" +
+"\\n" +
+"# Groupe des utilisateurs UNIX pour les administrateurs CUPS...\\n" +
+"SystemGroup @CUPS_SYSTEM_GROUPS@\\n" +
+"\\n" +
+"\\n" +
+"# N'accepter que les connexions de la machine locale.\\n" +
+"Listen localhost:@DEFAULT_IPP_PORT@\\n" +
+"@CUPS_LISTEN_DOMAINSOCKET@\\n" +
+"\\n" +
+"\\n" +
+"# Publier les imprimantes partagées sur le réseau local.\\n" +
+"Browsing On\\n" +
+"BrowseOrder allow,deny\\n" +
+"BrowseAllow @LOCAL\\n" +
+"\\n" +
+"\\n" +
+"# S'authentifier par défaut via les comptes UNIX...\\n" +
+"DefaultAuthType Basic\\n" +
+"\\n" +
+"# Restreindre l'accès au serveur...\\n" +
+"<Location />\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restreindre l'accès aux pages d'administration...\\n" +
+"<Location /admin>\\n" +
+"@ENCRYPTION_REQUIRED@\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restreindre l'accès au ficher de configuration...\\n" +
+"<Location /admin/conf>\\n" +
+"  AuthType Basic\\n" +
+"  Require user @SYSTEM\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Définir la politique par défaut des tâches d'impression...\\n" +
+"<Policy default>\\n" +
+"  # Les opérations sur les tâches doivent être faites par leur propriétaire ou un adminstrateur...\\n" +
+"  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # Toutes les opérations d'administration nécessite l'authentification d'un adminstrateur...\\n" +
+"  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>\\n" +
+"    AuthType Basic\\n" +
+"    Require user @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # Seuls le propriétaire et un administrateur peuvent annuler ou authentifier une tâche...\\n" +
+"  <Limit Cancel-Job CUPS-Authenticate-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  <Limit All>\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"</Policy>\\n";
+}
+</SCRIPT>
+
+<H2 CLASS="title">Ficher de configuration du serveur</H2>
+
+<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
+
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+
+<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-save-changes.gif"
+ALT="Enregistrer les modifications"> <A
+HREF="javascript:reset_config();"><IMG
+SRC="/images/button-use-default-config.gif" CLASS="button"
+ALT="Utiliser la configuration par défaut"></A></P>
+
+</FORM>
diff --git a/templates/fr/error-op.tmpl b/templates/fr/error-op.tmpl
new file mode 100644 (file)
index 0000000..dac3e7a
--- /dev/null
@@ -0,0 +1,6 @@
+<P>Erreur :</P>
+
+<BLOCKQUOTE>Opération inconnue : "{op}"!</BLOCKQUOTE>
+<P>Erreur :</P>
+
+<BLOCKQUOTE>Opération inconnue : "{op}"!</BLOCKQUOTE>
diff --git a/templates/fr/error.tmpl b/templates/fr/error.tmpl
new file mode 100644 (file)
index 0000000..d51750e
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{?message?{message}:Erreur :}</P>
+
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>{?message?{message}:Erreur :}</P>
+
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
diff --git a/templates/fr/header.tmpl.in b/templates/fr/header.tmpl.in
new file mode 100644 (file)
index 0000000..39b44f9
--- /dev/null
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <!-- Prevent caching of CGI content -->
+       <META HTTP-EQUIV="Expires" CONTENT="now">
+       <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
+       {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
+<TR CLASS="HEADER">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
+WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Accueil&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=admin?:un}sel" HREF="/admin"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Administration&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=classes?:un}sel" HREF="/classes/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Classes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=help?:un}sel" HREF="/help/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Documentation/Aide&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=jobs?:un}sel" HREF="/jobs/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Tâches&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=printers?:un}sel" HREF="/printers/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="height: 100%;" VALIGN="TOP" CLASS="page">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <!-- Prevent caching of CGI content -->
+       <META HTTP-EQUIV="Expires" CONTENT="now">
+       <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
+       {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
+<TR CLASS="HEADER">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
+WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;Accueil&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=admin?:un}sel" HREF="/admin"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Administration&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=classes?:un}sel" HREF="/classes/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Classes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=help?:un}sel" HREF="/help/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Documentation/Aide&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=jobs?:un}sel" HREF="/jobs/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Tâches&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=printers?:un}sel" HREF="/printers/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="height: 100%;" VALIGN="TOP" CLASS="page">
diff --git a/templates/fr/help-header.tmpl b/templates/fr/help-header.tmpl
new file mode 100644 (file)
index 0000000..89e3673
--- /dev/null
@@ -0,0 +1,104 @@
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
+{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
+
+<P ALIGN="CENTER"><B>Rechercher dans 
+{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Tous les Documents}}:</B> <INPUT
+TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Search">
+<A HREF="/help/{?HELPFILE}{QUERY?{TOPIC??TOPIC={TOPIC}:}:}"><IMG
+SRC="/images/button-clear.gif" ALT="Clear" CLASS="button"></A></P>
+
+</FORM>
+
+<!-- Bookmarks -->
+<DIV CLASS="sidebar">
+<H3 CLASS="title">Documents d'aide en ligne</H3>
+
+<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tous les documents</A></P>
+<HR>
+
+{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
+}
+</DIV>
+
+{QUERY?<P>Résultats de la recherche dans {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Tous les Documents}}\:</P>
+{QTEXT?<UL>
+{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
+{QTEXT?</UL>:}
+:<P>Aucun résultat.</P>}
+<HR NOSHADE>:}
+{HELPTITLE?<H1>{HELPTITLE}
+<A HREF="/help/{HELPFILE}?PRINTABLE=YES" TARGET="_blank"><IMG
+SRC="/images/button-view-printable-version.gif" ALT="Version imprimable"
+CLASS="button"></A></H1>:<H1>Pages d'aide de CUPS</H1>
+
+<P>Voici l'interface d'aide en ligne de CUPS. Entrez ci-dessus les mots à rechercher
+ou cliquez sur un lien ci-contre pour afficher l'ade en ligne du document.</P>
+
+<P><SMALL><B>NDT:</B> Cette interface n'a pas été traduite en Français. Si vous souhaitez vous
+atteler à cette tâche, merci d'aller au préalable sur le forum <A
+HREF="http://www.cups.org/newsgroups.php?gcups.development">cups.development</A>
+pour en informer les développeurs.</SMALL></P>
+
+<P>Si vous êtes un nouvel utilisateur de CUPS, lisez la page "<a
+href="overview.html">Overview of CUPS</a>". Il est conseillé aux utilisateurs
+habitués de lire la page "<a href="whatsnew.html">What's New in CUPS
+1.2</a>".</P>
+
+<P>La <A HREF="http://www.cups.org/">page d'accueil de CUPS</A> donne aussi
+accès à de nombreuses ressources, comme des forums de discussion pour les
+utilisateurs, des réponses aux questions fréquentes, et un formulaire pour
+soumettre des rapports de <I>bug</I> ou des demandes pour de nouvelles
+fonctionnalités.</P>}
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
+{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
+
+<P ALIGN="CENTER"><B>Rechercher dans 
+{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Tous les Documents}}:</B> <INPUT
+TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Search">
+<A HREF="/help/{?HELPFILE}{QUERY?{TOPIC??TOPIC={TOPIC}:}:}"><IMG
+SRC="/images/button-clear.gif" ALT="Clear" CLASS="button"></A></P>
+
+</FORM>
+
+<!-- Bookmarks -->
+<DIV CLASS="sidebar">
+<H3 CLASS="title">Documents d'aide en ligne</H3>
+
+<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tous les documents</A></P>
+<HR>
+
+{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
+}
+</DIV>
+
+{QUERY?<P>Résultats de la recherche dans {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Tous les Documents}}\:</P>
+{QTEXT?<UL>
+{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
+{QTEXT?</UL>:}
+:<P>Aucun résultat.</P>}
+<HR NOSHADE>:}
+{HELPTITLE?<H1>{HELPTITLE}
+<A HREF="/help/{HELPFILE}?PRINTABLE=YES" TARGET="_blank"><IMG
+SRC="/images/button-view-printable-version.gif" ALT="Version imprimable"
+CLASS="button"></A></H1>:<H1>Pages d'aide de CUPS</H1>
+
+<P>Voici l'interface d'aide en ligne de CUPS. Entrez ci-dessus les mots à rechercher
+ou cliquez sur un lien ci-contre pour afficher l'ade en ligne du document.</P>
+
+<P><SMALL><B>NDT:</B> Cette interface n'a pas été traduite en Français. Si vous souhaitez vous
+atteler à cette tâche, merci d'aller au préalable sur le forum <A
+HREF="http://www.cups.org/newsgroups.php?gcups.development">cups.development</A>
+pour en informer les développeurs.</SMALL></P>
+
+<P>Si vous êtes un nouvel utilisateur de CUPS, lisez la page "<a
+href="overview.html">Overview of CUPS</a>". Il est conseillé aux utilisateurs
+habitués de lire la page "<a href="whatsnew.html">What's New in CUPS
+1.2</a>".</P>
+
+<P>La <A HREF="http://www.cups.org/">page d'accueil de CUPS</A> donne aussi
+accès à de nombreuses ressources, comme des forums de discussion pour les
+utilisateurs, des réponses aux questions fréquentes, et un formulaire pour
+soumettre des rapports de <I>bug</I> ou des demandes pour de nouvelles
+fonctionnalités.</P>}
diff --git a/templates/fr/help-printable.tmpl b/templates/fr/help-printable.tmpl
new file mode 100644 (file)
index 0000000..6661768
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{HELPTITLE}</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+
+<H1>{HELPTITLE}</H1>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{HELPTITLE}</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+
+<H1>{HELPTITLE}</H1>
diff --git a/templates/fr/job-cancel.tmpl b/templates/fr/job-cancel.tmpl
new file mode 100644 (file)
index 0000000..9c2b220
--- /dev/null
@@ -0,0 +1,2 @@
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> a été annulée.
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> a été annulée.
diff --git a/templates/fr/job-hold.tmpl b/templates/fr/job-hold.tmpl
new file mode 100644 (file)
index 0000000..17e11a4
--- /dev/null
@@ -0,0 +1,2 @@
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> est retenue en attente.
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> est retenue en attente.
diff --git a/templates/fr/job-move.tmpl b/templates/fr/job-move.tmpl
new file mode 100644 (file)
index 0000000..46ff20b
--- /dev/null
@@ -0,0 +1,44 @@
+<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
+
+<H2 CLASS="title">{job_id?Transférer la tâche n°{job_id}:Transférer toutes les tâches}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nouvelle destination :</TH>
+<TD>
+<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
+{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-move-job{job_id?:s}.gif" ALT="Transférer {job_id?la tâche:les tâches}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
+
+<H2 CLASS="title">{job_id?Transférer la tâche n°{job_id}:Transférer toutes les tâches}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nouvelle destination :</TH>
+<TD>
+<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
+{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-move-job{job_id?:s}.gif" ALT="Transférer {job_id?la tâche:les tâches}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/job-moved.tmpl b/templates/fr/job-moved.tmpl
new file mode 100644 (file)
index 0000000..acde4b9
--- /dev/null
@@ -0,0 +1,4 @@
+<P>{job_id?<A HREF="/jobs/{job_id}">La tâche n°{job_id}</A>:Toutes les tâches}
+ont été transférées vers <A HREF="{job_printer_uri}">{job_printer_name}</A>.</P>
+<P>{job_id?<A HREF="/jobs/{job_id}">La tâche n°{job_id}</A>:Toutes les tâches}
+ont été transférées vers <A HREF="{job_printer_uri}">{job_printer_name}</A>.</P>
diff --git a/templates/fr/job-release.tmpl b/templates/fr/job-release.tmpl
new file mode 100644 (file)
index 0000000..99768e0
--- /dev/null
@@ -0,0 +1,2 @@
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> a été libérée pour l'impression.
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> a été libérée pour l'impression.
diff --git a/templates/fr/job-restart.tmpl b/templates/fr/job-restart.tmpl
new file mode 100644 (file)
index 0000000..eec3223
--- /dev/null
@@ -0,0 +1,2 @@
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> a été redémarrée.
+<P><A HREF="{job_printer_uri}">La tâche n°{job_id}</A> a été redémarrée.
diff --git a/templates/fr/jobs-header.tmpl b/templates/fr/jobs-header.tmpl
new file mode 100644 (file)
index 0000000..fef8f08
--- /dev/null
@@ -0,0 +1,32 @@
+<P>{?which_jobs=?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="Montrer les tâches terminées"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="Montrer toutes les tâches">:{which_jobs=all?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="Montrer les tâches terminées"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="Montrer les tâches en cours">:<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="Montrer les tâches en cours"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="Montrer toutes les tâches">}}</A></P>
+
+<P ALIGN="CENTER">{total=0?Aucune tâche:Affichage de {#job_id}
+tâche{#job_id=1?:s} {?which_jobs=?en cours:{which_jobs=all?:terminée{#job_id=1?:s}}} sur {total}}.</P>
+<P>{?which_jobs=?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="Montrer les tâches terminées"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="Montrer toutes les tâches">:{which_jobs=all?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="Montrer les tâches terminées"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="Montrer les tâches en cours">:<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="Montrer les tâches en cours"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="Montrer toutes les tâches">}}</A></P>
+
+<P ALIGN="CENTER">{total=0?Aucune tâche:Affichage de {#job_id}
+tâche{#job_id=1?:s} {?which_jobs=?en cours:{which_jobs=all?:terminée{#job_id=1?:s}}} sur {total}}.</P>
diff --git a/templates/fr/jobs.tmpl b/templates/fr/jobs.tmpl
new file mode 100644 (file)
index 0000000..65e9fa8
--- /dev/null
@@ -0,0 +1,84 @@
+{#job_id=0?:
+<TABLE CELLPADDING="0" CELLSPACING="0" CLASS="button" WIDTH="100%" SUMMARY="Liste de tâches">
+<TR CLASS="data">
+<TH>N°&nbsp;</TH>
+<TH>Nom&nbsp;</TH>
+<TH>Utilisateur&nbsp;</TH>
+<TH>Taille&nbsp;</TH>
+<TH>Pages&nbsp;</TH>
+<TH>État&nbsp;</TH>
+<TH>Contrôle&nbsp;</TH>
+</TR>
+
+{[job_id]
+<TR CLASS="data" VALIGN="TOP">
+<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
+<TD>{?job_name=?Inconnue:{job_name}}&nbsp;</TD>
+<TD>{job_originating_user_name}&nbsp;</TD>
+<TD>{job_k_octets}ko&nbsp;</TD>
+<TD>{job_media_sheets_completed=0?Inconnue:{?job_media_sheets_completed}}&nbsp;</TD>
+<TD>{job_state=3?en attente depuis le<BR>{time_at_creation}:{job_state=4?retenue depuis le<BR>{time_at_creation}:
+{job_state=5?en cours depuis le<BR>{time_at_processing}:{job_state=6?arrêtée:
+{job_state=7?annulée le<BR>{time_at_completed}:{job_state=8?abandonnée:terminée le<BR>{time_at_completed}}}}}}}&nbsp;</TD>
+<TD>
+{job_preserved>0?
+<A HREF="/jobs/?op=restart-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-restart-job.gif" ALT="Redémarrer la tâche" CLASS="button"></A>:}
+{job_state=4?
+<A HREF="/jobs/?op=release-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-release-job.gif" ALT="Libérer la tâche" CLASS="button"></A>:}
+{job_state=3?
+<A HREF="/jobs/?op=hold-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-hold-job.gif" ALT="Retenir la tâche" CLASS="button"></A>:}
+{job_state<7?
+<A HREF="/jobs/?op=cancel-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-cancel-job.gif" ALT="Annuler la tâche" CLASS="button"></A>
+<A HREF="/jobs/?op=move-job&amp;job_id={job_id}"><IMG
+SRC="/images/button-move-job.gif" ALT="Transférer la tâche" CLASS="button"></A>:}
+&nbsp;</TD>
+</TR>
+}
+</TABLE>
+}
+{#job_id=0?:
+<TABLE CELLPADDING="0" CELLSPACING="0" CLASS="button" WIDTH="100%" SUMMARY="Liste de tâches">
+<TR CLASS="data">
+<TH>N°&nbsp;</TH>
+<TH>Nom&nbsp;</TH>
+<TH>Utilisateur&nbsp;</TH>
+<TH>Taille&nbsp;</TH>
+<TH>Pages&nbsp;</TH>
+<TH>État&nbsp;</TH>
+<TH>Contrôle&nbsp;</TH>
+</TR>
+
+{[job_id]
+<TR CLASS="data" VALIGN="TOP">
+<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
+<TD>{?job_name=?Inconnue:{job_name}}&nbsp;</TD>
+<TD>{job_originating_user_name}&nbsp;</TD>
+<TD>{job_k_octets}ko&nbsp;</TD>
+<TD>{job_media_sheets_completed=0?Inconnue:{?job_media_sheets_completed}}</TD>
+<TD>{job_state=3?en attente depuis le<BR>{time_at_creation}:{job_state=4?retenue depuis le<BR>{time_at_creation}:
+{job_state=5?en cours depuis le<BR>{time_at_processing}:{job_state=6?arrêtée:
+{job_state=7?annulée le<BR>{time_at_completed}:{job_state=8?abandonnée:terminée le<BR>{time_at_completed}}}}}}}&nbsp;</TD>
+<TD>
+{job_preserved>0?
+<A HREF="/jobs/?op=restart-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-restart-job.gif" ALT="Redémarrer la tâche" CLASS="button"></A>:}
+{job_state=4?
+<A HREF="/jobs/?op=release-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-release-job.gif" ALT="Libérer la tâche" CLASS="button"></A>:}
+{job_state=3?
+<A HREF="/jobs/?op=hold-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-hold-job.gif" ALT="Retenir la tâche" CLASS="button"></A>:}
+{job_state<7?
+<A HREF="/jobs/?op=cancel-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-cancel-job.gif" ALT="Annuler la tâche" CLASS="button"></A>
+<A HREF="/jobs/?op=move-job&amp;job_id={job_id}"><IMG
+SRC="/images/button-move-job.gif" ALT="Transférer la tâche" CLASS="button"></A>:}
+&nbsp;</TD>
+</TR>
+}
+</TABLE>
+}
diff --git a/templates/fr/maintenance.tmpl b/templates/fr/maintenance.tmpl
new file mode 100644 (file)
index 0000000..25c8f20
--- /dev/null
@@ -0,0 +1,4 @@
+<P>Les commandes de maintenance ont été envoyées ; l'identifiant de tâche est <A
+HREF="/printers/{printer_name}"> {printer_name}-{job_id}</A>.</P>
+<P>Les commandes de maintenance ont été envoyées ; l'identifiant de tâche est <A
+HREF="/printers/{printer_name}"> {printer_name}-{job_id}</A>.</P>
diff --git a/templates/fr/modify-class.tmpl b/templates/fr/modify-class.tmpl
new file mode 100644 (file)
index 0000000..68a4747
--- /dev/null
@@ -0,0 +1,68 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Modifier la classe {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Membres :</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-modify-class.gif" ALT="Modifier la classe"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">Modifier la classe {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Membres :</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-modify-class.gif" ALT="Modifier la classe"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/modify-printer.tmpl b/templates/fr/modify-printer.tmpl
new file mode 100644 (file)
index 0000000..583e60a
--- /dev/null
@@ -0,0 +1,58 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{?device_uri=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_DEVICE_URI" VALUE="{device_uri}">}
+{?printer_make_and_model=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{printer_make_and_model}">}
+
+<H2 CLASS="title">Modifier l'imprimante {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Lieu compréhensible pour un utilisateur, comme "Labo 1" )</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Description compréhensible pour un utilisateur, comme "HP LaserJet recto/verso" )</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{?device_uri=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_DEVICE_URI" VALUE="{device_uri}">}
+{?printer_make_and_model=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{printer_make_and_model}">}
+
+<H2 CLASS="title">Modifier l'imprimante {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nom :</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Lieu :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Lieu compréhensible pour un utilisateur, comme "Labo 1" )</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Description :</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>( Description compréhensible pour un utilisateur, comme "HP LaserJet recto/verso" )</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="Poursuivre"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/norestart.tmpl b/templates/fr/norestart.tmpl
new file mode 100644 (file)
index 0000000..ebf7a03
--- /dev/null
@@ -0,0 +1,2 @@
+<p>Le serveur n'a pas été redémarré parce que la configuration n'a pas été modifiée...</p>
+<p>Le serveur n'a pas été redémarré parce que la configuration n'a pas été modifiée...</p>
diff --git a/templates/fr/option-boolean.tmpl b/templates/fr/option-boolean.tmpl
new file mode 100644 (file)
index 0000000..044d628
--- /dev/null
@@ -0,0 +1,14 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A
+NAME="{keyword}">{keytext}</A> :</TH>
+<TD>
+{[choices]<INPUT TYPE="RADIO" NAME="{keyword}" {choices={defchoice}?CHECKED:} VALUE="{choices}">{text}}
+</TD>
+</TR>
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A
+NAME="{keyword}">{keytext}</A> :</TH>
+<TD>
+{[choices]<INPUT TYPE="RADIO" NAME="{keyword}" {choices={defchoice}?CHECKED:} VALUE="{choices}">{text}}
+</TD>
+</TR>
diff --git a/templates/fr/option-conflict.tmpl b/templates/fr/option-conflict.tmpl
new file mode 100644 (file)
index 0000000..1742255
--- /dev/null
@@ -0,0 +1,14 @@
+<P><B>Erreur :</B> Les options suivantes sont incompatibles entre elles :</P>
+
+<UL>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+}</UL>
+
+<P>Veuillez modifier une ou plusieurs des ces options pour résoudre les conflits.</P>
+<P><B>Erreur :</B> Les options suivantes sont incompatibles entre elles :</P>
+
+<UL>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+}</UL>
+
+<P>Veuillez modifier une ou plusieurs des ces options pour résoudre les conflits.</P>
diff --git a/templates/fr/option-header.tmpl b/templates/fr/option-header.tmpl
new file mode 100644 (file)
index 0000000..b1b90cc
--- /dev/null
@@ -0,0 +1,6 @@
+<H2 CLASS="title">{printer_name} : {group}</H2>
+
+<TABLE>
+<H2 CLASS="title">{printer_name} : {group}</H2>
+
+<TABLE>
diff --git a/templates/fr/option-pickmany.tmpl b/templates/fr/option-pickmany.tmpl
new file mode 100644 (file)
index 0000000..0ec733d
--- /dev/null
@@ -0,0 +1,14 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A
+NAME="{keyword}">{keytext}</A> :</TH>
+<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A
+NAME="{keyword}">{keytext}</A> :</TH>
+<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/fr/option-pickone.tmpl b/templates/fr/option-pickone.tmpl
new file mode 100644 (file)
index 0000000..780340d
--- /dev/null
@@ -0,0 +1,14 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A
+NAME="{keyword}">{keytext}</A> :</TH>
+<TD><SELECT NAME="{keyword}">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A
+NAME="{keyword}">{keytext}</A> :</TH>
+<TD><SELECT NAME="{keyword}">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/fr/option-trailer.tmpl b/templates/fr/option-trailer.tmpl
new file mode 100644 (file)
index 0000000..7a72a47
--- /dev/null
@@ -0,0 +1,12 @@
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-set-printer-options.gif"
+ALT="Définir les options de l'imprimante"></TD>
+</TR>
+</TABLE>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-set-printer-options.gif"
+ALT="Définir les options de l'imprimante"></TD>
+</TR>
+</TABLE>
diff --git a/templates/fr/pager.tmpl b/templates/fr/pager.tmpl
new file mode 100644 (file)
index 0000000..39dc846
--- /dev/null
@@ -0,0 +1,22 @@
+<TABLE WIDTH="100%" CLASS="pager" SUMMARY="Mise en page">
+<TR>
+       <TD WIDTH="33%">{PREVURL?<A HREF="{PREVURL}"><IMG
+        SRC="/images/button-show-previous.gif" ALT="Montrer les précédentes" CLASS="button"></A>:&nbsp;}</TD>
+       <TD WIDTH="34%" ALIGN="CENTER">{ORDER=dec?<A
+        HREF="{THISURL}&amp;ORDER=asc"><IMG
+        SRC="/images/button-sort-ascending.gif" ALT="Par ordre croissant" CLASS="button"></A>:<A HREF="{THISURL}&amp;ORDER=dec"><IMG SRC="/images/button-sort-descending.gif" ALT="Par ordre décroissant" CLASS="button"></A>}</TD>
+       <TD WIDTH="33%" ALIGN="RIGHT">{NEXTURL?<A HREF="{NEXTURL}"><IMG
+        SRC="/images/button-show-next.gif" ALT="Montrer les suivantes" CLASS="button"></A>:&nbsp;}</TD>
+</TR>
+</TABLE>
+<TABLE WIDTH="100%" CLASS="pager" SUMMARY="Mise en page">
+<TR>
+       <TD WIDTH="33%">{PREVURL?<A HREF="{PREVURL}"><IMG
+        SRC="/images/button-show-previous.gif" ALT="Montrer les précédentes" CLASS="button"></A>:&nbsp;}</TD>
+       <TD WIDTH="34%" ALIGN="CENTER">{ORDER=dec?<A
+        HREF="{THISURL}&amp;ORDER=asc"><IMG
+        SRC="/images/button-sort-ascending.gif" ALT="Par ordre croissant" CLASS="button"></A>:<A HREF="{THISURL}&amp;ORDER=dec"><IMG SRC="/images/button-sort-descending.gif" ALT="Par ordre décroissant" CLASS="button"></A>}</TD>
+       <TD WIDTH="33%" ALIGN="RIGHT">{NEXTURL?<A HREF="{NEXTURL}"><IMG
+        SRC="/images/button-show-next.gif" ALT="Montrer les suivantes" CLASS="button"></A>:&nbsp;}</TD>
+</TR>
+</TABLE>
diff --git a/templates/fr/printer-accept.tmpl b/templates/fr/printer-accept.tmpl
new file mode 100644 (file)
index 0000000..da26c7b
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{is_class?Class:Printer} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+accepte désormais les tâches d'impression.</P>
+<P>{is_class?Class:Printer} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+accepte désormais les tâches d'impression.</P>
diff --git a/templates/fr/printer-added.tmpl b/templates/fr/printer-added.tmpl
new file mode 100644 (file)
index 0000000..14302a3
--- /dev/null
@@ -0,0 +1,2 @@
+<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a bien été ajoutée.
+<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a bien été ajoutée.
diff --git a/templates/fr/printer-configured.tmpl b/templates/fr/printer-configured.tmpl
new file mode 100644 (file)
index 0000000..284b753
--- /dev/null
@@ -0,0 +1,2 @@
+<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a bien été configurée.
+<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a bien été configurée.
diff --git a/templates/fr/printer-confirm.tmpl b/templates/fr/printer-confirm.tmpl
new file mode 100644 (file)
index 0000000..c1010d7
--- /dev/null
@@ -0,0 +1,14 @@
+<P><B>Attention :</B> Êtes-vous sûr(e) de vouloir supprimer l'imprimante
+{printer_name} ?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-printer&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-printer.gif" ALT="Supprimer l'imprimante"
+CLASS="button"></A></P>
+<P><B>Attention :</B> Êtes-vous sûr(e) de vouloir supprimer l'imprimante
+{printer_name} ?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-printer&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-printer.gif" ALT="Supprimer l'imprimante"
+CLASS="button"></A></P>
diff --git a/templates/fr/printer-default.tmpl b/templates/fr/printer-default.tmpl
new file mode 100644 (file)
index 0000000..fbdcbf2
--- /dev/null
@@ -0,0 +1,14 @@
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été définie comme imprimante par défaut sur le serveur.</P>
+
+<BLOCKQUOTE><B>NB:</B> Pour un utilisateur qui a défini un paramètre par défaut
+via la commande <TT>lpoptions</TT>, le paramètre du serveur sera
+ignoré.</BLOCKQUOTE>
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été définie comme imprimante par défaut sur le serveur.</P>
+
+<BLOCKQUOTE><B>NB:</B> Pour un utilisateur qui a défini un paramètre par défaut
+via la commande <TT>lpoptions</TT>, le paramètre du serveur sera
+ignoré.</BLOCKQUOTE>
diff --git a/templates/fr/printer-deleted.tmpl b/templates/fr/printer-deleted.tmpl
new file mode 100644 (file)
index 0000000..c1fc3a1
--- /dev/null
@@ -0,0 +1,2 @@
+<P>L'imprimante {printer_name} a bien été supprimée.
+<P>L'imprimante {printer_name} a bien été supprimée.
diff --git a/templates/fr/printer-jobs-header.tmpl b/templates/fr/printer-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..481b044
--- /dev/null
@@ -0,0 +1,2 @@
+<H3 CLASS="title">Tâches d'impression</H3>
+<H3 CLASS="title">Tâches d'impression</H3>
diff --git a/templates/fr/printer-modified.tmpl b/templates/fr/printer-modified.tmpl
new file mode 100644 (file)
index 0000000..07b1033
--- /dev/null
@@ -0,0 +1,2 @@
+<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a bien été modifiée.
+<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a bien été modifiée.
diff --git a/templates/fr/printer-purge.tmpl b/templates/fr/printer-purge.tmpl
new file mode 100644 (file)
index 0000000..e3550fe
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été nettoyée de toute tâche... d'impression !</P>
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été nettoyée de toute tâche... d'impression !</P>
diff --git a/templates/fr/printer-reject.tmpl b/templates/fr/printer-reject.tmpl
new file mode 100644 (file)
index 0000000..78fb124
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+n'accepte plus les tâches d'impression.</P>
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+n'accepte plus les tâches d'impression.</P>
diff --git a/templates/fr/printer-start.tmpl b/templates/fr/printer-start.tmpl
new file mode 100644 (file)
index 0000000..38af566
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été démarrée.</P>
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été démarrée.</P>
diff --git a/templates/fr/printer-stop.tmpl b/templates/fr/printer-stop.tmpl
new file mode 100644 (file)
index 0000000..dd7bb22
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été arrêtée.</P>
+<P>{is_class?La classe:L'imprimante} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+a été arrêtée.</P>
diff --git a/templates/fr/printers-header.tmpl b/templates/fr/printers-header.tmpl
new file mode 100644 (file)
index 0000000..87754f4
--- /dev/null
@@ -0,0 +1,2 @@
+<P ALIGN="CENTER">{total=0?Aucune imprimante:Affichage de {#printer_name} imprimante{#printer_name=1?:s}} sur {total}.</P>
+<P ALIGN="CENTER">{total=0?Aucune imprimante:Affichage de {#printer_name} imprimante{#printer_name=1?:s}} sur {total}.</P>
diff --git a/templates/fr/printers.tmpl b/templates/fr/printers.tmpl
new file mode 100644 (file)
index 0000000..ac7d249
--- /dev/null
@@ -0,0 +1,132 @@
+{printer_type?:}{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A
+HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? (
+imprimante par défaut ) :}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN="TOP"><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/printer-{printer_state=3?idle:{printer_state=4?processing:stopped}}.gif" CLASS="button" ALT=""></A>
+</TD>
+<TD VALIGN="TOP"><B>Description :</B> {printer_info}<BR>
+<B>Lieu :</B> {printer_location}<BR>
+<B>Marque et modèle :</B> {printer_make_and_model}<BR>
+<B>État de l'imprimante :</B> {printer_state=3?ne fait rien:{printer_state=4?en cours d'impression:arrêtée}},
+{printer_is_accepting_jobs=0?rejette les tâches:accepte les tâches}, {printer_is_shared=0?cachée:publique}.
+{?device_uri=?:<BR><B>URI du matériel :</B> {device_uri}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="Imprimer la page de test CUPS" CLASS="button"></A>
+{?cupscommand=1?<A HREF="{printer_uri_supported}?op=clean-print-heads">
+<IMG SRC="/images/button-clean-print-heads.gif" ALT="Nettoyer les têtes d'impression" CLASS="button"></A>
+<A HREF="{printer_uri_supported}?op=print-self-test-page">
+<IMG SRC="/images/button-print-self-test-page.gif" ALT="Imprimer la page de test de l'imprimante" CLASS="button"></A>:}
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-start-printer.gif" ALT="Démarrer l'imprimante" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-stop-printer.gif" ALT="Arrêter l'imprimante" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="Accepter les tâches" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="Rejeter les tâches" CLASS="button"></A>
+}
+<A HREF="{printer_uri_supported}?op=move-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-move-jobs.gif" ALT="Transférer toutes les tâches" CLASS="button"></A>
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Annuler toutes les tâches" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1">
+<IMG SRC="/images/button-publish-printer.gif" ALT="Publier l'imprimante" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="Cacher l'imprimante" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-printer.gif" ALT="Modifier l'imprimante" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-printer-options&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-printer-options.gif" ALT="Définir les options de l'imprimante" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-printer.gif" ALT="Supprimer l'imprimante" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-as-default.gif" ALT="Définir par défaut" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="Définir les autorisations" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
+{printer_type?:}{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A
+HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? (
+imprimante par défaut ) :}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN="TOP"><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/printer-{printer_state=3?idle:{printer_state=4?processing:stopped}}.gif" CLASS="button" ALT=""></A>
+</TD>
+<TD VALIGN="TOP"><B>Description :</B> {printer_info}<BR>
+<B>Lieu :</B> {printer_location}<BR>
+<B>Marque et modèle :</B> {printer_make_and_model}<BR>
+<B>État de l'imprimante :</B> {printer_state=3?ne fait rien:{printer_state=4?en cours d'impression:arrêtée}},
+{printer_is_accepting_jobs=0?rejette les tâches:accepte les tâches}, {printer_is_shared=0?cachée:publique}.
+{?device_uri=?:<BR><B>URI du matériel :</B> {device_uri}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="Imprimer la page de test CUPS" CLASS="button"></A>
+{?cupscommand=1?<A HREF="{printer_uri_supported}?op=clean-print-heads">
+<IMG SRC="/images/button-clean-print-heads.gif" ALT="Nettoyer les têtes d'impression" CLASS="button"></A>
+<A HREF="{printer_uri_supported}?op=print-self-test-page">
+<IMG SRC="/images/button-print-self-test-page.gif" ALT="Imprimer la page de test de l'imprimante" CLASS="button"></A>:}
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-start-printer.gif" ALT="Démarrer l'imprimante" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-stop-printer.gif" ALT="Arrêter l'imprimante" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="Accepter les tâches" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="Rejeter les tâches" CLASS="button"></A>
+}
+<A HREF="{printer_uri_supported}?op=move-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-move-jobs.gif" ALT="Transférer toutes les tâches" CLASS="button"></A>
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="Annuler toutes les tâches" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1">
+<IMG SRC="/images/button-publish-printer.gif" ALT="Publier l'imprimante" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="Cacher l'imprimante" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-printer.gif" ALT="Modifier l'imprimante" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-printer-options&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-printer-options.gif" ALT="Définir les options de l'imprimante" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-printer.gif" ALT="Supprimer l'imprimante" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-as-default.gif" ALT="Définir par défaut" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="Définir les autorisations" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
diff --git a/templates/fr/restart.tmpl b/templates/fr/restart.tmpl
new file mode 100644 (file)
index 0000000..f2485c5
--- /dev/null
@@ -0,0 +1,2 @@
+<p>Attendez s'il vous plaît, que le serveur redémarre...</p>
+<p>Attendez s'il vous plaît, que le serveur redémarre...</p>
diff --git a/templates/fr/samba-export.tmpl b/templates/fr/samba-export.tmpl
new file mode 100644 (file)
index 0000000..9ed3259
--- /dev/null
@@ -0,0 +1,106 @@
+<SCRIPT TYPE="text/javascript"><!--
+function select_printers() {
+  var list = document.export_samba.EXPORT_NAME;
+  var sel = document.export_samba.EXPORT_ALL.checked;
+
+  for (i = 0; i < list.length; i ++) {
+    list.options[i].selected = sel;
+  }
+}
+--></SCRIPT>
+
+<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
+
+<H2 CLASS="title">Exporter des imprimantes vers SAMBA</H2>
+
+{error?<P>Impossible d'exporter les imprimantes vers SAMBA \:</P>
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>Regardez le fichier <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> pour plus d'informations.</P>:
+<P>Cette page vous permet d'exporter des imprimantes vers SAMBA de sorte que des
+clients Windows puissent y accéder via l'icône <VAR>Voisinage réseau</VAR> ou
+<VAR>Favoris réseau</VAR> du bureau. Vous devez au préalable installer les
+pilotes Windows d'imprimante PostScript : cf. la page <i>man</i> <A
+HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A>.</P>}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Imprimantes :</TH>
+<TD>
+<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
+{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
+</SELECT><BR>
+<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
+onChange="select_printers()"> Exporter toutes les imprimantes
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Utilisateur SAMBA :</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> ( indispensable )</TD>
+</TR>
+<TR>
+<TH CLASS="label">Mot-de-passe SAMBA :</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> ( indispensable )</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-export-samba.gif"
+ALT="Exporter les imprimantes vers SAMBA"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+<SCRIPT TYPE="text/javascript"><!--
+function select_printers() {
+  var list = document.export_samba.EXPORT_NAME;
+  var sel = document.export_samba.EXPORT_ALL.checked;
+
+  for (i = 0; i < list.length; i ++) {
+    list.options[i].selected = sel;
+  }
+}
+--></SCRIPT>
+
+<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
+
+<H2 CLASS="title">Exporter des imprimantes vers SAMBA</H2>
+
+{error?<P>Impossible d'exporter les imprimantes vers SAMBA \:</P>
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>Regardez le fichier <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> pour plus d'informations.</P>:
+<P>Cette page vous permet d'exporter des imprimantes vers SAMBA de sorte que des
+clients Windows puissent y accéder via l'icône <VAR>Voisinage réseau</VAR> ou
+<VAR>Favoris réseau</VAR> du bureau. Vous devez au préalable installer les
+pilotes Windows d'imprimante PostScript : cf. la page <i>man</i> <A
+HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A>.</P>}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Imprimantes :</TH>
+<TD>
+<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
+{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
+</SELECT><BR>
+<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
+onChange="select_printers()"> Exporter toutes les imprimantes
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Utilisateur SAMBA :</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> ( indispensable )</TD>
+</TR>
+<TR>
+<TH CLASS="label">Mot-de-passe SAMBA :</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> ( indispensable )</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-export-samba.gif"
+ALT="Exporter les imprimantes vers SAMBA"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/fr/samba-exported.tmpl b/templates/fr/samba-exported.tmpl
new file mode 100644 (file)
index 0000000..cac3084
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Les imprimantes ont bien été exportées vers SAMBA.</P>
+<P>Les imprimantes ont bien été exportées vers SAMBA.</P>
diff --git a/templates/fr/search.tmpl b/templates/fr/search.tmpl
new file mode 100644 (file)
index 0000000..91f673e
--- /dev/null
@@ -0,0 +1,26 @@
+<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
+{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
+{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
+
+<P ALIGN="CENTER"><B>Rechercher dans 
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?les classes:{SECTION=jobs?les tâches:les imprimantes}}} :</B>
+<INPUT TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Rechercher">
+<A
+HREF="/{SECTION}/{?SEARCH_DEST}{WHICH_JOBS??WHICH_JOBS={WHICH_JOBS}{ORDER?&amp;ORDER={ORDER}:}:{ORDER??ORDER={ORDER}:}}"><IMG
+SRC="/images/button-clear.gif" ALT="Nettoyer" CLASS="button"></A></P>
+
+</FORM>
+<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
+{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
+{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
+
+<P ALIGN="CENTER"><B>Rechercher dans 
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?les classes:{SECTION=jobs?les tâches:les imprimantes}}} :</B>
+<INPUT TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Rechercher">
+<A
+HREF="/{SECTION}/{?SEARCH_DEST}{WHICH_JOBS??WHICH_JOBS={WHICH_JOBS}{ORDER?&amp;ORDER={ORDER}:}:{ORDER??ORDER={ORDER}:}}"><IMG
+SRC="/images/button-clear.gif" ALT="Nettoyer" CLASS="button"></A></P>
+
+</FORM>
diff --git a/templates/fr/set-printer-options-header.tmpl b/templates/fr/set-printer-options-header.tmpl
new file mode 100644 (file)
index 0000000..84536d5
--- /dev/null
@@ -0,0 +1,6 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
diff --git a/templates/fr/set-printer-options-trailer.tmpl b/templates/fr/set-printer-options-trailer.tmpl
new file mode 100644 (file)
index 0000000..3f6f64a
--- /dev/null
@@ -0,0 +1,2 @@
+</FORM>
+</FORM>
diff --git a/templates/fr/test-page.tmpl b/templates/fr/test-page.tmpl
new file mode 100644 (file)
index 0000000..bf79bd9
--- /dev/null
@@ -0,0 +1,4 @@
+<P>La page de test a été envoyée ; l'identifiant de la tâche est <A HREF="/{SECTION}/{printer_name}">
+{printer_name}-{job_id}</A>.</P>
+<P>La page de test a été envoyée ; l'identifiant de la tâche est <A HREF="/{SECTION}/{printer_name}">
+{printer_name}-{job_id}</A>.</P>
diff --git a/templates/fr/trailer.tmpl b/templates/fr/trailer.tmpl
new file mode 100644 (file)
index 0000000..d9b74c3
--- /dev/null
@@ -0,0 +1,42 @@
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="trailer">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Le logiciel CUPS ( Common UNIX Printing System ) et son logo sont
+propriété commerciale de <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS est sous copyright 1997-2006 par Easy Software Products, Tous
+Droits Réservés.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="trailer">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Le logiciel CUPS ( Common UNIX Printing System ) et son logo sont
+propriété commerciale de <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS est sous copyright 1997-2006 par Easy Software Products, Tous
+Droits Réservés.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/templates/fr/users.tmpl b/templates/fr/users.tmpl
new file mode 100644 (file)
index 0000000..b2d2914
--- /dev/null
@@ -0,0 +1,52 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
+
+<H2 CLASS="title">Utilisateurs autorisés à utiliser {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Utilisateurs :</TH>
+<TD>
+<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
+<BR>
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Autoriser ces utilisateurs à imprimer
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Empêcher ces utilisateurs d'imprimer
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>
+<INPUT TYPE="IMAGE" SRC="/images/button-set-allowed-users.gif" ALT="Définir les autorisations">
+</TD>
+</TR>
+</TABLE>
+
+</FORM>
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
+
+<H2 CLASS="title">Utilisateurs autorisés à utiliser {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Utilisateurs :</TH>
+<TD>
+<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
+<BR>
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Autoriser ces utilisateurs à imprimer
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Empêcher ces utilisateurs d'imprimer
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>
+<INPUT TYPE="IMAGE" SRC="/images/button-set-allowed-users.gif" ALT="Définir les autorisations">
+</TD>
+</TR>
+</TABLE>
+
+</FORM>
index e0fa574ce977b24c2aa12bea9de524c5762b9177..10966a70b95d1b22150bfd8f8fce3057db4cf4ba 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index 9256e8130c0847224f43d5a5d7460b39124c532c..cec48bb9c9d93296e52e7366228924fb41998a58 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index 6f8f555ec6d3b36b4d70d9ef62ad3f82846fc232..e4a36c2675da3ce63deeb1e84199277b039e199a 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Sconosciuto:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Sconosciuto:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Sconosciuto:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?in sospeso da<BR>{time_at_creation}:{job_state=4?bloccata da<BR>{time_at_creation}:
 {job_state=5?elaborazione in corso da<BR>{time_at_processing}:{job_state=6?fermata:
 {job_state=7?annullata a<BR>{time_at_completed}:{job_state=8?interrotta:completata a<BR>{time_at_completed}}}}}}}&nbsp;</TD>
index 03653ed98b7138af2dfdd7c16fcd444f9d6ec6c9..2e7274b4b52155bf16fad923eb750727bf5bcee3 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index be029120e67f36734a8fe8c6389a61f8a44f4530..086b8f29263896ad21491e84e15060bac2e9a061 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?未知:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?不明:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?不明:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?{time_at_creation}<BR>から保留中:{job_state=4?{time_at_creation}<BR>からホールド中:
 {job_state=5?{time_at_processing}<BR>から処理中:{job_state=6?に停止:
 {job_state=7?{time_at_completed}<BR>にキャンセル:{time_at_completed}<BR>{job_state=8?に中断:に完了}}}}}}&nbsp;</TD>
index 1827d77a9b872718770ad1ad27b19313830792bb..498decf07f2416497968d7926565f4603c334d9d 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Unknown:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Unknown:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Unknown:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?pending since<BR>{time_at_creation}:{job_state=4?held since<BR>{time_at_creation}:
 {job_state=5?processing since<BR>{time_at_processing}:{job_state=6?stopped:
 {job_state=7?canceled at<BR>{time_at_completed}:{job_state=8?aborted:completed at<BR>{time_at_completed}}}}}}}&nbsp;</TD>
index 7eb232b971ac40fc5632eae5a5b7d9c8e4f83a31..7028f7085746865064f1ba592fb99f28f7f2a6fc 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index ff583b986b6d7eb1ae726b46ec414177c3fff86b..ccd1ab0b83977ff1c3abf269671205f604bc1427 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Nieznane:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Nieznane:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Nieznane:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?oczekiwanie od<BR>{time_at_creation}:{job_state=4?wstrzymane od<BR>{time_at_creation}:
 {job_state=5?przetwarzanie od<BR>{time_at_processing}:{job_state=6?zatrzymane:
 {job_state=7?anulowane o<BR>{time_at_completed}:{job_state=8?przerwane:zakończone o<BR>{time_at_completed}}}}}}}&nbsp;</TD>
index 3258ce05f4bc763e8e72ff837de3e10651cb24b6..50e0e09df3bd59219a3b8c87841043a8f388ac75 100644 (file)
 </HEAD>
 <BODY>
 <TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
-<TR CLASS="HEADER">
+<TR CLASS="header">
 <TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
 <TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
 <TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
 <TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
 SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
 </TR>
-<TR CLASS="HEADER"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
 
 <A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
 WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
index af5fc474dd2286ca4f3e6b9557839d6a2e74a756..7626273ec816488a48c059be56387eab854c1920 100644 (file)
@@ -16,7 +16,7 @@
 <TD>{?job_name=?Okänt:{job_name}}&nbsp;</TD>
 <TD>{job_originating_user_name}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Okänt:{?job_media_sheets_completed}}</TD>
+<TD>{job_media_sheets_completed=0?Okänt:{?job_media_sheets_completed}}&nbsp;</TD>
 <TD>{job_state=3?väntar sedan<BR>{time_at_creation}:{job_state=4?hålls kvar sedan<BR>{time_at_creation}:
 {job_state=5?behandlas sedan<BR>{time_at_processing}:{job_state=6?stoppad:
 {job_state=7?cancelled at<BR>{time_at_completed}:{job_state=8?aborted:färdig kl<BR>{time_at_completed}}}}}}}&nbsp;</TD>
index 9fe5f6788b043698dc490089265d7519aa8e0f80..4a37de776eed431274a231b9a1bc6d23ac6d5287 100644 (file)
@@ -8,7 +8,7 @@ WIDTH="15" HEIGHT="15" ALT=""></TD>
 
 <P><SMALL>The Common UNIX Printing System, CUPS, and the CUPS logo are the
 trademark property of <A HREF="http://www.easysw.com">Easy Software
-Products</A>. CUPS is copyright 1997-2006 by Easy Software Products,
+Products</A>. CUPS is copyright 1997-2007 by Easy Software Products,
 All Rights Reserved.</SMALL></P>
 
 </TD>
diff --git a/tools/checkpo b/tools/checkpo
new file mode 100755 (executable)
index 0000000..9746ee7
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Check .po files to see if there are untranslated or fuzzy strings.
+#
+# Usage: checkpo filename.po [ ... filenameN.po]
+#
+
+if test $# = 1; then
+       echo Usage: checkpo filename.po ... filenameN.po
+       exit 1
+fi
+
+echo "Catalog               Untrans  Fuzzy"
+echo "--------------------  -------  -------"
+
+for file in $*; do
+       untranslated=`msgattrib --untranslated $file | grep 'msgid "..*"' | wc -l`
+       fuzzy=`grep fuzzy $file | wc -l`
+
+       printf "%-20.20s  %7d  %7d\n" $file $untranslated $fuzzy
+done
+
index c5f1752d08b49a5856326b9972b12bde5ddee325..6a4613d71602b1a16359cf8527dc3f40d5b2cc1f 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: config.h 4828 2005-11-11 12:53:38Z mike $"
+ * "$Id: config.h 6189 2007-01-10 16:30:34Z mike $"
  *
  *   Configuration file for the Common UNIX Printing System (CUPS).
  *
- *   Copyright 1997-2005 by Easy Software Products.
+ *   Copyright 1997-2007 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
  * Version of software...
  */
 
-#define CUPS_SVERSION          "CUPS v1.2svn"
-#define CUPS_MINIMAL           "CUPS/1.2svn"
+#define CUPS_SVERSION          "CUPS v1.2.8"
+#define CUPS_MINIMAL           "CUPS/1.2.8"
 
 
 /*
- * Default user and group...
+ * Default user and groups...
  */
 
-#define CUPS_DEFAULT_USER      "lp"
-#define CUPS_DEFAULT_GROUP     "sys"
+#define CUPS_DEFAULT_USER "lp"
+#define CUPS_DEFAULT_GROUP "lp"
+#define CUPS_DEFAULT_SYSTEM_GROUPS "sys root"
+
+
+/*
+ * Default file permissions...
+ */
+
+#define CUPS_DEFAULT_CONFIG_FILE_PERM 0640
+#define CUPS_DEFAULT_LOG_FILE_PERM 0644
+
+
+/*
+ * Default browsing settings...
+ */
+
+#define CUPS_DEFAULT_BROWSING 1
+#define CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS "CUPS"
+#define CUPS_DEFAULT_BROWSE_REMOTE_PROTOCOLS "CUPS"
+#define CUPS_DEFAULT_BROWSE_SHORT_NAMES 1
+#define CUPS_DEFAULT_DEFAULT_SHARED 1
+#define CUPS_DEFAULT_IMPLICIT_CLASSES 1
+#define CUPS_DEFAULT_USE_NETWORK_DEFAULT 1
 
 
 /*
 #undef HAVE_CRYPT_H
 
 
+/*
+ * Do we have <scsi/sg.h>?
+ */
+
+#undef HAVE_SCSI_SG_H
+
+
 /*
  * Use <string.h>, <strings.h>, and/or <bstring.h>?
  */
 #undef HAVE_MALLOC_H
 
 
+/*
+ * Do we have the POSIX ACL functions?
+ */
+
+#undef HAVE_ACL_INIT
+
+
 /*
  * Do we have the langinfo.h header file?
  */
 
 #undef HAVE_CDSASSL
 #undef HAVE_GNUTLS
-#undef HAVE_LIBSSL
-#undef HAVE_SSL
+#define HAVE_LIBSSL 1
+#define HAVE_SSL 1
 
 
 /*
 #undef HAVE_LIBSLP
 
 
+/*
+ * Do we have an LDAP library?
+ */
+
+#undef HAVE_LDAP
+#undef HAVE_OPENLDAP
+
+
 /*
  * Do we have libpaper?
  */
 #undef HAVE_PTHREAD_H
 
 
+/*
+ * Do we have launchd support?
+ */
+
+/* #undef HAVE_LAUNCH_H */
+/* #undef HAVE_LAUNCHD */
+#define CUPS_DEFAULT_LAUNCHD_CONF ""
+
+
 /*
  * Various scripting languages...
  */
 #define CUPS_PYTHON    "/usr/bin/python"
 
 
+/*
+ * Do we have Darwin's CoreFoundation and SystemConfiguration frameworks?
+ */
+
+/* #undef HAVE_COREFOUNDATION */
+/* #undef HAVE_SYSTEMCONFIGURATION */
+
+
+/*
+ * Do we have CoreFoundation public and private headers?
+ */
+
+/* #undef HAVE_COREFOUNDATION_H */
+/* #undef HAVE_CFPRIV_H */
+/* #undef HAVE_CFBUNDLEPRIV_H */
+
+
+/*
+ * Do we have CFLocaleCreateCanonicalLocaleIdentifierFromString()?
+ */
+
+/* #undef HAVE_CF_LOCALE_ID */
+
+
+/*
+ * Do we have MacOSX 10.4's mbr_XXX functions()?
+ */
+
+/* #undef HAVE_MEMBERSHIP_H */
+/* #undef HAVE_MBR_UID_TO_UUID */
+
+
+/*
+ * Do we have Darwin's notify_post() header and function?
+ */
+
+/* #undef HAVE_NOTIFY_H */
+/* #undef HAVE_NOTIFY_POST */
+
+
+/*
+ * Do we have DBUS?
+ */
+
+/* #undef HAVE_DBUS */
+/* #undef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND */
+
+
+/*
+ * Do we have the AppleTalk/at_proto.h header?
+ */
+
+/* #undef HAVE_APPLETALK_AT_PROTO_H */
+
+
 #endif /* !_CUPS_CONFIG_H_ */
 
 /*
- * End of "$Id: config.h 4828 2005-11-11 12:53:38Z mike $".
+ * End of "$Id: config.h 6189 2007-01-10 16:30:34Z mike $".
  */
index 093265c9d5bb17608441697e7dc094628eebec1b..24e837d6736dfee447bf8d0536242c7c35377d0d 100644 (file)
@@ -3,16 +3,36 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcups2", "libcups2.vcproj
        ProjectSection(ProjectDependencies) = postProject\r
        EndProjectSection\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "testfile.vcproj", "{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
+       EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testhttp", "testhttp.vcproj", "{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
+       EndProjectSection\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfiguration) = preSolution\r
                Debug = Debug\r
                Release = Release\r
        EndGlobalSection\r
+       GlobalSection(ProjectDependencies) = postSolution\r
+       EndGlobalSection\r
        GlobalSection(ProjectConfiguration) = postSolution\r
                {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}.Debug.ActiveCfg = Debug|Win32\r
                {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}.Debug.Build.0 = Debug|Win32\r
                {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}.Release.ActiveCfg = Release|Win32\r
                {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}.Release.Build.0 = Release|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug.ActiveCfg = Debug|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug.Build.0 = Debug|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release.ActiveCfg = Release|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release.Build.0 = Release|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug.ActiveCfg = Debug|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug.Build.0 = Debug|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release.ActiveCfg = Release|Win32\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release.Build.0 = Release|Win32\r
        EndGlobalSection\r
        GlobalSection(ExtensibilityGlobals) = postSolution\r
        EndGlobalSection\r
index 3aa6c9cb7bf5848beb5a30ec44393980865756fc..6849f29f258901b725a719d416cc1bae21e9994f 100644 (file)
@@ -1,8 +1,44 @@
 LIBRARY libcups2
-VERSION 2.6
+VERSION 2.7
 EXPORTS
+_cupsAdminGetServerSettings
+_cupsAdminSetServerSettings
+_cupsCharmapFlush
+_cupsCharmapFree
+_cupsCharmapGet
+_cupsEncodingName
+_cupsGetPassword
+_cupsGlobals
+_cupsLangPrintf
+_cupsLangPuts
+_cupsLangString
+_cupsMD5Append
+_cupsMD5Finish
+_cupsMD5Init
+_cupsMessageFree
+_cupsMessageLoad
+_cupsMessageLookup
+_cupsSetError
+_cupsSetLocale
+_cupsStrAlloc
+_cupsStrFlush
+_cupsStrFormatd
+_cupsStrFree
+_cupsStrScand
+_cupsStrStatistics
+_cups_snprintf
+_cups_strcpy
+_cups_strlcat
+_cups_strlcpy
+_cups_vsnprintf
+_ippAddAttr
+_ippFindOption
+_ippFreeAttr
+_ppdGetEncoding
 cupsAddDest
 cupsAddOption
+cupsAdminCreateWindowsPPD
+cupsAdminExportSamba
 cupsArrayAdd
 cupsArrayClear
 cupsArrayCount
@@ -11,6 +47,8 @@ cupsArrayDelete
 cupsArrayDup
 cupsArrayFind
 cupsArrayFirst
+cupsArrayIndex
+cupsArrayInsert
 cupsArrayLast
 cupsArrayNew
 cupsArrayNext
@@ -18,12 +56,11 @@ cupsArrayPrev
 cupsArrayRemove
 cupsArrayRestore
 cupsArraySave
-cupsBackchannelRead
-cupsBackchannelWrite
+cupsArrayUserData
+cupsBackChannelRead
+cupsBackChannelWrite
+cupsBackendDeviceURI
 cupsCancelJob
-cupsCharmapFlush
-cupsCharmapFree
-cupsCharmapGet
 cupsCharsetToUTF8
 cupsDirClose
 cupsDirOpen
@@ -31,16 +68,18 @@ cupsDirRead
 cupsDirRewind
 cupsDoAuthentication
 cupsDoFileRequest
+cupsDoRequest
 cupsEncodeOptions
 cupsEncodeOptions2
-cupsEncodingName
 cupsEncryption
 cupsFileClose
 cupsFileCompression
 cupsFileEOF
+cupsFileFind
 cupsFileFlush
 cupsFileGetChar
 cupsFileGetConf
+cupsFileGetLine
 cupsFileGets
 cupsFileLock
 cupsFileNumber
@@ -53,6 +92,9 @@ cupsFilePuts
 cupsFileRead
 cupsFileRewind
 cupsFileSeek
+cupsFileStderr
+cupsFileStdin
+cupsFileStdout
 cupsFileTell
 cupsFileUnlock
 cupsFileWrite
@@ -70,24 +112,20 @@ cupsGetFile
 cupsGetJobs
 cupsGetJobs2
 cupsGetOption
-cupsGetPassword
 cupsGetPPD
 cupsGetPPD2
+cupsGetPassword
 cupsGetPrinters
+cupsLangDefault
 cupsLangEncoding
 cupsLangFlush
 cupsLangFree
 cupsLangGet
-cupsLangPrintf
-cupsLangPuts
 cupsLastError
+cupsLastErrorString
 cupsMarkOptions
-_cups_md5_append
-_cups_md5_finish
-_cups_md5_init
-cupsNormalizeMapsFlush
-cupsNormalizeMapsFree
-cupsNormalizeMapsGet
+cupsNotifySubject
+cupsNotifyText
 cupsParseOptions
 cupsPrintFile
 cupsPrintFile2
@@ -95,8 +133,7 @@ cupsPrintFiles
 cupsPrintFiles2
 cupsPutFd
 cupsPutFile
-_cupsRestoreLocale
-_cupsSaveLocale
+cupsRemoveOption
 cupsServer
 cupsSetDests
 cupsSetDests2
@@ -104,29 +141,13 @@ cupsSetEncryption
 cupsSetPasswordCB
 cupsSetServer
 cupsSetUser
-_cups_strcpy
-_cups_strlcat
-_cups_strlcpy
 cupsTempFd
 cupsTempFile
 cupsTempFile2
-cupsUser
-cupsUTF16ToUTF32
-cupsUTF16ToUTF8
-cupsUTF32CaseFold
-cupsUTF32CharacterProperty
-cupsUTF32CompareCaseless
-cupsUTF32CompareIdentifier
-cupsUTF32Normalize
-cupsUTF32ToUTF16
 cupsUTF32ToUTF8
-cupsUTF8CaseFold
-cupsUTF8CompareCaseless
-cupsUTF8CompareIdentifier
-cupsUTF8Normalize
 cupsUTF8ToCharset
-cupsUTF8ToUTF16
 cupsUTF8ToUTF32
+cupsUser
 httpAddrAny
 httpAddrConnect
 httpAddrEqual
@@ -138,8 +159,10 @@ httpAddrLookup
 httpAddrString
 httpAssembleURI
 httpAssembleURIf
+httpBlocking
 httpCheck
 httpClearCookie
+httpClearFields
 httpClose
 httpConnect
 httpConnectEncrypt
@@ -149,19 +172,25 @@ httpDelete
 httpEncode64
 httpEncode64_2
 httpEncryption
+httpError
 httpFlush
 httpFlushWrite
 httpGet
+httpGetBlocking
+httpGetCookie
 httpGetDateString
 httpGetDateString2
 httpGetDateTime
+httpGetFd
+httpGetField
 httpGetHostByName
 httpGetHostname
 httpGetLength
 httpGetLength2
-httpGets
+httpGetStatus
 httpGetSubField
 httpGetSubField2
+httpGets
 httpHead
 httpInitialize
 httpMD5
@@ -172,11 +201,13 @@ httpPost
 httpPrintf
 httpPut
 httpRead
+httpRead2
 httpReconnect
 httpSeparate
 httpSeparate2
 httpSeparateURI
 httpSetCookie
+httpSetExpect
 httpSetField
 httpSetLength
 httpStatus
@@ -184,7 +215,7 @@ httpTrace
 httpUpdate
 httpWait
 httpWrite
-_ipp_add_attr
+httpWrite2
 ippAddBoolean
 ippAddBooleans
 ippAddCollection
@@ -192,6 +223,7 @@ ippAddCollections
 ippAddDate
 ippAddInteger
 ippAddIntegers
+ippAddOctetString
 ippAddRange
 ippAddRanges
 ippAddResolution
@@ -206,9 +238,9 @@ ippErrorString
 ippErrorValue
 ippFindAttribute
 ippFindNextAttribute
-_ipp_free_attr
 ippLength
 ippNew
+ippNewRequest
 ippOpString
 ippOpValue
 ippPort
@@ -222,21 +254,31 @@ ippWriteFile
 ippWriteIO
 ppdClose
 ppdCollect
+ppdCollect2
 ppdConflicts
 ppdEmit
+ppdEmitAfterOrder
 ppdEmitFd
 ppdEmitJCL
 ppdEmitJCLEnd
+ppdEmitString
 ppdErrorString
 ppdFindAttr
 ppdFindChoice
+ppdFindCustomOption
+ppdFindCustomParam
 ppdFindMarkedChoice
 ppdFindNextAttr
 ppdFindOption
+ppdFirstCustomParam
+ppdFirstOption
 ppdIsMarked
 ppdLastError
+ppdLocalize
 ppdMarkDefaults
 ppdMarkOption
+ppdNextCustomParam
+ppdNextOption
 ppdOpen
 ppdOpen2
 ppdOpenFd
index af3d2deb397f545514155e30f9aaafafae698d35..af51e1e0b55fe59c1f471966d059585f850bc3a4 100644 (file)
                                Name="VCCustomBuildTool"/>\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib"\r
-                               OutputFile="$(OutDir)/libcups2.dll"\r
+                               AdditionalDependencies="ssleay32.lib libeay32.lib ws2_32.lib"\r
+                               OutputFile="Debug\libcups2.dll"\r
                                LinkIncremental="2"\r
                                ModuleDefinitionFile="..\vcnet\libcups2.def"\r
                                GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(OutDir)/libcups2.pdb"\r
+                               ProgramDatabaseFile="Debug\libcups2.pdb"\r
                                SubSystem="2"\r
-                               ImportLibrary="$(OutDir)/libcups2.lib"\r
+                               ImportLibrary="Debug\libcups2.lib"\r
                                TargetMachine="1"/>\r
                        <Tool\r
                                Name="VCMIDLTool"/>\r
                                Name="VCCustomBuildTool"/>\r
                        <Tool\r
                                Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib"\r
-                               OutputFile="$(OutDir)/libcups2.dll"\r
+                               AdditionalDependencies="ssleay32.lib libeay32.lib ws2_32.lib"\r
+                               OutputFile="libcups2.dll"\r
                                LinkIncremental="1"\r
                                ModuleDefinitionFile="..\vcnet\libcups2.def"\r
                                GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="libcups2.pdb"\r
                                SubSystem="2"\r
                                OptimizeReferences="2"\r
                                EnableCOMDATFolding="2"\r
-                               ImportLibrary="$(OutDir)/libcups2.lib"\r
+                               ImportLibrary="libcups2.lib"\r
                                TargetMachine="1"/>\r
                        <Tool\r
                                Name="VCMIDLTool"/>\r
                        Name="Source Files"\r
                        Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
                        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">\r
+                       <File\r
+                               RelativePath="..\cups\adminutil.c">\r
+                       </File>\r
                        <File\r
                                RelativePath="..\cups\array.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\attr.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\auth.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\backchannel.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\cups\backend.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\cups\custom.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\dest.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\dir.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\emit.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\encode.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\file.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\getputfile.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\globals.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\http-addr.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\http-addrlist.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\http-support.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\http.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\ipp-support.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\ipp.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\langprintf.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\language.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\cups\localize.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\mark.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\md5.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\md5passwd.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
-                               RelativePath="..\cups\normalize.c">\r
+                               RelativePath="..\cups\notify.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\options.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\page.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\ppd.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\cups\request.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\snprintf.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\string.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\tempfile.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\transcode.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\usersys.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\util.c">\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32">\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions="WIN32"/>\r
+                               </FileConfiguration>\r
                        </File>\r
                </Filter>\r
                <Filter\r
                        Name="Header Files"\r
                        Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
                        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">\r
+                       <File\r
+                               RelativePath="..\cups\adminutil.h">\r
+                       </File>\r
                        <File\r
                                RelativePath="..\cups\array.h">\r
                        </File>\r
                        <File\r
                                RelativePath="..\cups\http.h">\r
                        </File>\r
+                       <File\r
+                               RelativePath="..\cups\i18n.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\cups\ipp-private.h">\r
+                       </File>\r
                        <File\r
                                RelativePath="..\cups\ipp.h">\r
                        </File>\r
diff --git a/vcnet/testfile.vcproj b/vcnet/testfile.vcproj
new file mode 100644 (file)
index 0000000..30473a7
--- /dev/null
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.10"\r
+       Name="testfile"\r
+       ProjectGUID="{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}"\r
+       Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="Debug"\r
+                       IntermediateDirectory="Debug"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\vcnet;.."\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="TRUE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="5"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="4"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="Debug\testfile.exe"\r
+                               LinkIncremental="2"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(OutDir)/testfile.pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="Release"\r
+                       IntermediateDirectory="Release"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalIncludeDirectories="..\vcnet;.."\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+                               RuntimeLibrary="0"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="testfile.exe"\r
+                               LinkIncremental="1"\r
+                               GenerateDebugInformation="TRUE"\r
+                               SubSystem="1"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">\r
+                       <File\r
+                               RelativePath="..\cups\testfile.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/vcnet/testhttp.vcproj b/vcnet/testhttp.vcproj
new file mode 100644 (file)
index 0000000..310f641
--- /dev/null
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.10"\r
+       Name="testhttp"\r
+       ProjectGUID="{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}"\r
+       Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="Debug"\r
+                       IntermediateDirectory="Debug"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\vcnet;.."\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="TRUE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="5"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="4"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="Debug\testhttp.exe"\r
+                               LinkIncremental="2"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(OutDir)/testhttp.pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="Release"\r
+                       IntermediateDirectory="Release"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalIncludeDirectories="..\vcnet;.."\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+                               RuntimeLibrary="0"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="testhttp.exe"\r
+                               LinkIncremental="1"\r
+                               GenerateDebugInformation="TRUE"\r
+                               SubSystem="1"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">\r
+                       <File\r
+                               RelativePath="..\cups\testhttp.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r