]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Load cups into easysw/current.
authorjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 30 Aug 2006 16:09:13 +0000 (16:09 +0000)
committerjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 30 Aug 2006 16:09:13 +0000 (16:09 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@211 a1ca3aef-8c08-0410-bb20-df032aa958be

95 files changed:
CHANGES.txt
Makedefs.in
Makefile
README.txt
backend/backend-private.h
backend/ieee1284.c
backend/ipp.c
backend/lpd.c
backend/runloop.c
backend/snmp.c
berkeley/lpc.c
berkeley/lpq.c
berkeley/lpr.c
berkeley/lprm.c
cgi-bin/admin.c
cgi-bin/ipp-var.c
config-scripts/cups-common.m4
config-scripts/cups-defaults.m4
config-scripts/cups-directories.m4
config-scripts/cups-manpages.m4
configure.in
cups-config.in
cups/Makefile
cups/adminutil.c
cups/attr.c
cups/cups.h
cups/dir.h
cups/file.c
cups/file.h
cups/http.c
cups/http.h
cups/i18n.h
cups/ipp-support.c
cups/ipp.h
cups/langprintf.c
cups/language.c
cups/libcups_s.exp
cups/localize.c
cups/notify.c
cups/ppd.c
cups/testi18n.c
cups/testppd.c
cups/transcode.c
cups/usersys.c
desktop/cups.desktop
doc/help/ref-snmp-conf.html
doc/help/translation.html
filter/pstops.c
init/org.cups.cups-lpd.plist [new file with mode: 0644]
man/cups-snmp.conf.man
packaging/cups.list.in
packaging/installer.gif [new file with mode: 0644]
scheduler/Dependencies
scheduler/Makefile
scheduler/auth.c
scheduler/client.c
scheduler/client.h
scheduler/conf.c
scheduler/cups-lpd.c
scheduler/cups-polld.c
scheduler/dirsvc.c
scheduler/dirsvc.h
scheduler/ipp.c
scheduler/job.c
scheduler/job.h
scheduler/main.c
scheduler/mime.h
scheduler/policy.c
scheduler/printers.c
scheduler/printers.h
scheduler/statbuf.c
scheduler/subscriptions.c
scheduler/sysman.c
scheduler/testlpd.c [new file with mode: 0644]
systemv/accept.c
systemv/cancel.c
systemv/cupsaddsmb.c
systemv/cupstestdsc.c
systemv/cupstestppd.c
systemv/lp.c
systemv/lpadmin.c
systemv/lpinfo.c
systemv/lpmove.c
systemv/lpoptions.c
systemv/lppasswd.c
systemv/lpstat.c
templates/Makefile
templates/es/norestart.tmpl [new file with mode: 0644]
templates/job-cancel.tmpl
templates/jobs.tmpl
templates/norestart.tmpl [new file with mode: 0644]
test/4.2-cups-printer-ops.test
test/4.4-subscription-ops.test
test/ipptest.c
tools/testosx

index f55439e5f1445614adb1b7f007f7dd8133a396c9..5ac921349098cd4a12807060beec7017cd54f435 100644 (file)
@@ -1,6 +1,80 @@
-CHANGES.txt - 2006-07-18
+CHANGES.txt - 2006-08-29
 ------------------------
 
 ------------------------
 
+CHANGES IN CUPS V1.2.3
+
+       - The scheduler did not send job-state or
+         job-config-changed events when a job was held,
+         released, or changed (STR #1947)
+       - The scheduler now aborts if the configuration file and
+         directory checks fail (STR #1941)
+       - Fixed a problem with ippPort() not using the port
+         number that was set via the client.conf file or
+         CUPS_SERVER environment variable (STR #1945)
+       - HTTP headers were not buffered (STR #1899)
+       - Some IPP printers (HP) did not like UTF-8 job names
+         (STR #1837)
+       - The CUPS desktop icon is now localized for Polish (STR
+         #1920)
+       - Printer options were not always honored when printing
+         from Windows clients (STR #1839)
+       - The openssl command would lock up the scheduler when
+         generating an encryption certificate on some platforms
+         due to a lack of entropy for the random number
+         generator (STR #1876)
+       - The web admin page did not recognize that "Listen 631"
+         enabled remote access (STR #1908)
+       - The web admin page did not check whether changes were
+         made to the Basic Server Settings check boxes (STR
+         #1908)
+       - The IPP backend could generate N*N copies in certain
+         edge cases.
+       - The scheduler did not restore remote printers properly
+         when BrowseShortNames was enabled (STR #1893)
+       - Polling did not handle changes to the network
+         environment on Mac OS X (STR #1896)
+       - The "make test" subscription tests used invalid
+         notify-recipient-uri values (STR #1910)
+       - Printers could be left in an undefined state on system
+         sleep (STR #1905)
+       - The Berkeley and System V commands did not always use
+         the expected character set (STR #1915)
+       - Remote printing fixes (STR #1881)
+       - The cupstestppd utility did not validate translation
+         strings for custom options properly.
+       - Multi-language PPD files were not properly localized in
+         the web interface (STR #1913)
+       - The admin page's simple settings options did not check
+         for local domain socket or IPv6 addresses and did not
+         use "localhost" as the listen address.
+       - An empty BrowseProtocols, BrowseLocalProtocols, or
+         BrowseRemoteProtocols line would crash the scheduler
+         instead of disabling the corresponding browsing options.
+       - The scheduler now logs IPP operation status as debug
+         messages instead of info or error.
+       - cupsFileRewind() didn't clear the end-of-file state.
+       - cupstestppd didn't report the actual misspelling of the
+         1284DeviceID attribute (STR #1849) 
+       - BrowseRelay didn't work on Debian (STR #1887)
+       - configure --without-languages didn't work (STR #1879)
+       - Manually added remote printers did not work (STR #1881)
+       - The <cups/backend.h> header was not installed.
+       - Updated the build files for Autoconf 2.60 (STR #1853)
+       - The scheduler incorrectly terminated the polling
+         processes after receiving a partial log line.
+       - The cups-lpd mini-daemon reported "No printer-state
+         attribute found" errors when reporting the queue status
+         (PR #6250, STR #1821)
+       - SNMP backend improvements (STR #1737, STR #1742, STR
+         #1790, STR #1835, STR #1880)
+       - The scheduler erroneously reported an error with the
+         CGI pipe (STR #1860)
+       - Fixed HP-UX compile problems (STR #1858, STR #1859)
+       - cupstestppd crashed with some PPD files (STR #1864)
+       - The <cups/dir.h> and <cups/file.h> header files did not
+         work with C++.
+
+
 CHANGES IN CUPS V1.2.2
 
        - Documentation updates (STR #1765, STR #1780)
 CHANGES IN CUPS V1.2.2
 
        - Documentation updates (STR #1765, STR #1780)
index 10198cc49c1a722bfea51579a212cc4bedf7a530..97c55e09c6e6bc0c8797b32fd576a9bab8eecbfd 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: Makedefs.in 5609 2006-05-30 20:31:10Z mike $"
+# "$Id: Makedefs.in 5799 2006-08-03 00:54:38Z mike $"
 #
 #   Common makefile definitions for the Common UNIX Printing System (CUPS).
 #
 #
 #   Common makefile definitions for the Common UNIX Printing System (CUPS).
 #
@@ -174,12 +174,16 @@ UNINSTALL64       =       @UNINSTALL64@
 # We have to define these first because autoconf uses ${prefix}
 # and ${exec_prefix} for most of the other directories...
 #
 # We have to define these first because autoconf uses ${prefix}
 # and ${exec_prefix} for most of the other directories...
 #
+# The "datarootdir" variable may not get defined if you are using
+# a version of autoconf prior to 2.60.
+#
 # This is immediately followed by definition in ALL CAPS for the
 # needed directories...
 #
 
 bindir         =       @bindir@
 datadir                =       @datadir@
 # This is immediately followed by definition in ALL CAPS for the
 # needed directories...
 #
 
 bindir         =       @bindir@
 datadir                =       @datadir@
+datarootdir    =       @datarootdir@
 exec_prefix    =       @exec_prefix@
 includedir     =       @includedir@
 infodir                =       @infodir@
 exec_prefix    =       @exec_prefix@
 includedir     =       @includedir@
 infodir                =       @infodir@
@@ -265,5 +269,5 @@ DBUSDIR             =       @DBUSDIR@
 
 
 #
 
 
 #
-# End of "$Id: Makedefs.in 5609 2006-05-30 20:31:10Z mike $"
+# End of "$Id: Makedefs.in 5799 2006-08-03 00:54:38Z mike $"
 #
 #
index d1fe2d02dcfe51ed48cc8c02231e6789a2d8649c..45dd92c05ab176eba045689cb561588501c40697 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: Makefile 5547 2006-05-19 12:44:29Z mike $"
+# "$Id: Makefile 5902 2006-08-29 15:51:19Z mike $"
 #
 #   Top-level Makefile for the Common UNIX Printing System (CUPS).
 #
 #
 #   Top-level Makefile for the Common UNIX Printing System (CUPS).
 #
@@ -121,8 +121,9 @@ install:    installhdrs
                        $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
                        $(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
                elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
                        $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
                        $(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
                elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
-                       echo Installing LaunchDaemons configuration file...; \
+                       echo Installing LaunchDaemons configuration files...; \
                        $(INSTALL_DATA) init/org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
                        $(INSTALL_DATA) init/org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
+                       $(INSTALL_DATA) init/org.cups.cups-lpd.plist $(BUILDROOT)/System/Library/LaunchDaemons; \
                else \
                        echo Installing RC script...; \
                        $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
                else \
                        echo Installing RC script...; \
                        $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
@@ -220,24 +221,44 @@ uninstall:
 # Run the test suite...
 #
 
 # Run the test suite...
 #
 
-check test:    all
+test:  all
        echo Running CUPS test suite...
        cd test; ./run-stp-tests.sh
 
 
        echo Running CUPS test suite...
        cd test; ./run-stp-tests.sh
 
 
+check: all
+       echo Running CUPS test suite with defaults...
+       cd test; ./run-stp-tests.sh 1 0 n
+
+
 #
 # Make software distributions using EPM (http://www.easysw.com/epm/)...
 #
 
 #
 # Make software distributions using EPM (http://www.easysw.com/epm/)...
 #
 
-EPMFLAGS       =       -v
+EPMFLAGS       =       -v --output-dir dist $(EPMARCH)
 
 
-aix bsd deb depot inst osx pkg rpm setld slackware swinstall tardist:
+aix bsd deb depot inst pkg rpm setld slackware swinstall tardist:
        epm $(EPMFLAGS) -f $@ cups packaging/cups.list
 
 epm:
        epm $(EPMFLAGS) -f $@ cups packaging/cups.list
 
 epm:
-       epm $(EPMFLAGS) cups packaging/cups.list
+       epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list
+
+osx:
+       epm $(EPMFLAGS) -f osx -s packaging/installer.tif cups packaging/cups.list
+
+.PHONEY:       dist
+dist:  all
+       $(RM) -r dist
+       $(MAKE) $(MFLAGS) epm
+       case `uname` in \
+               *BSD*) $(MAKE) $(MFLAGS) bsd;; \
+               Darwin*) $(MAKE) $(MFLAGS) osx;; \
+               IRIX*) $(MAKE) $(MFLAGS) tardist;; \
+               Linux*) $(MAKE) $(MFLAGS) rpm;; \
+               SunOS*) $(MAKE) $(MFLAGS) pkg;; \
+       esac
 
 
 #
 
 
 #
-# End of "$Id: Makefile 5547 2006-05-19 12:44:29Z mike $".
+# End of "$Id: Makefile 5902 2006-08-29 15:51:19Z mike $".
 #
 #
index 4595be8c4ce528609aa45acf54072dbc43d5f408..34983cd94da683d2875f10b5d4f030d377d59529 100644 (file)
@@ -1,4 +1,4 @@
-README - CUPS v1.2.0 - 2006-05-08
+README - CUPS v1.2.3 - 2006-08-28
 ---------------------------------
 
 Looking for compile instructions?  Read the file "INSTALL.txt"
 ---------------------------------
 
 Looking for compile instructions?  Read the file "INSTALL.txt"
index f9384931ce00c9891bbaca79700e528175195e7d..14b93cc87626e46de03da593f707aca1abb146f5 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: backend-private.h 5592 2006-05-27 03:11:52Z mike $"
+ * "$Id: backend-private.h 5771 2006-07-20 18:06:20Z mike $"
  *
  *   Backend support definitions for the Common UNIX Printing System (CUPS).
  *
  *
  *   Backend support definitions for the Common UNIX Printing System (CUPS).
  *
@@ -45,9 +45,9 @@
  * C++ magic...
  */
 
  * C++ magic...
  */
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 extern "C" {
 extern "C" {
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 
 
 /*
 
 
 /*
@@ -62,12 +62,12 @@ extern int  backendGetMakeModel(const char *device_id, char *make_model,
 extern ssize_t backendRunLoop(int print_fd, int device_fd, int use_bc);
 
 
 extern ssize_t backendRunLoop(int print_fd, int device_fd, int use_bc);
 
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 }
 }
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 #endif /* !_CUPS_BACKEND_PRIVATE_H_ */
 
 
 /*
 #endif /* !_CUPS_BACKEND_PRIVATE_H_ */
 
 
 /*
- * End of "$Id: backend-private.h 5592 2006-05-27 03:11:52Z mike $".
+ * End of "$Id: backend-private.h 5771 2006-07-20 18:06:20Z mike $".
  */
  */
index f564215e0ca99058fbe50574d29eeee486d03d24..f5414936742c0b9ca0feee7bd345c749ff9eb7c6 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ieee1284.c 5591 2006-05-26 19:51:59Z mike $"
+ * "$Id: ieee1284.c 5866 2006-08-23 03:03:49Z mike $"
  *
  *   IEEE-1284 support functions for the Common UNIX Printing System (CUPS).
  *
  *
  *   IEEE-1284 support functions for the Common UNIX Printing System (CUPS).
  *
@@ -233,6 +233,8 @@ backendGetDeviceID(
 
       if (!strcasecmp(manufacturer, "Hewlett-Packard"))
         strcpy(manufacturer, "HP");
 
       if (!strcasecmp(manufacturer, "Hewlett-Packard"))
         strcpy(manufacturer, "HP");
+      else if (!strcasecmp(manufacturer, "Lexmark International"))
+        strcpy(manufacturer, "Lexmark");
     }
     else
     {
     }
     else
     {
@@ -399,6 +401,8 @@ backendGetMakeModel(
     {
       if (!strncasecmp(mfg, "Hewlett-Packard", 15))
        strlcpy(make_model, "HP", make_model_size);
     {
       if (!strncasecmp(mfg, "Hewlett-Packard", 15))
        strlcpy(make_model, "HP", make_model_size);
+      else if (!strncasecmp(mfg, "Lexmark International", 21))
+       strlcpy(make_model, "Lexmark", make_model_size);
       else
        strlcpy(make_model, mfg, make_model_size);
 
       else
        strlcpy(make_model, mfg, make_model_size);
 
@@ -495,5 +499,5 @@ backendGetMakeModel(
 
 
 /*
 
 
 /*
- * End of "$Id: ieee1284.c 5591 2006-05-26 19:51:59Z mike $".
+ * End of "$Id: ieee1284.c 5866 2006-08-23 03:03:49Z mike $".
  */
  */
index e64d6c44c4966a2dffc863236dc9bcacfa06ff11..73ad5f6f4e1e230e7517dfe0e2337e4be53e4a2d 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ipp.c 5724 2006-07-12 19:42:35Z mike $"
+ * "$Id: ipp.c 5889 2006-08-24 21:44:35Z mike $"
  *
  *   IPP backend for the Common UNIX Printing System (CUPS).
  *
  *
  *   IPP backend for the Common UNIX Printing System (CUPS).
  *
@@ -132,13 +132,13 @@ main(int  argc,                           /* I - Number of command-line args */
   ipp_attribute_t *format_sup;         /* document-format-supported */
   ipp_attribute_t *printer_state;      /* printer-state attribute */
   ipp_attribute_t *printer_accepting;  /* printer-is-accepting-jobs */
   ipp_attribute_t *format_sup;         /* document-format-supported */
   ipp_attribute_t *printer_state;      /* printer-state attribute */
   ipp_attribute_t *printer_accepting;  /* printer-is-accepting-jobs */
-  int          copies;                 /* Number of copies remaining */
+  int          copies,                 /* Number of copies for job */
+               copies_remaining;       /* Number of copies remaining */
   const char   *content_type;          /* CONTENT_TYPE environment variable */
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Actions for POSIX signals */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
   int          version;                /* IPP version */
   const char   *content_type;          /* CONTENT_TYPE environment variable */
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Actions for POSIX signals */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
   int          version;                /* IPP version */
-  int          reasons;                /* Number of printer-state-reasons */
   static const char * const pattrs[] =
                {                       /* Printer attributes we want */
                  "copies-supported",
   static const char * const pattrs[] =
                {                       /* Printer attributes we want */
                  "copies-supported",
@@ -214,6 +214,9 @@ main(int  argc,                             /* I - Number of command-line args */
     if ((content_type = getenv("CONTENT_TYPE")) == NULL)
       content_type = "application/octet-stream";
 
     if ((content_type = getenv("CONTENT_TYPE")) == NULL)
       content_type = "application/octet-stream";
 
+  if (!strncmp(content_type, "printer/", 8))
+    content_type = "application/vnd.cups-raw";
+
  /*
   * Extract the hostname and printer name from the URI...
   */
  /*
   * Extract the hostname and printer name from the URI...
   */
@@ -736,19 +739,25 @@ main(int  argc,                           /* I - Number of command-line args */
   * See if the printer supports multiple copies...
   */
 
   * See if the printer supports multiple copies...
   */
 
+  copies = atoi(argv[4]);
+
   if (copies_sup || argc < 7)
   if (copies_sup || argc < 7)
-    copies = 1;
+  {
+    copies_remaining = 1;
+
+    if (argc < 7)
+      copies = 1;
+  }
   else
   else
-    copies = atoi(argv[4]);
+    copies_remaining = copies;
 
  /*
   * Then issue the print-job request...
   */
 
 
  /*
   * Then issue the print-job request...
   */
 
-  reasons = 0;
   job_id  = 0;
 
   job_id  = 0;
 
-  while (copies > 0)
+  while (copies_remaining > 0)
   {
    /*
     * Build the IPP request...
   {
    /*
     * Build the IPP request...
@@ -775,7 +784,13 @@ main(int  argc,                            /* I - Number of command-line args */
 
     fprintf(stderr, "DEBUG: requesting-user-name = \"%s\"\n", argv[2]);
 
 
     fprintf(stderr, "DEBUG: requesting-user-name = \"%s\"\n", argv[2]);
 
-    if (argv[3][0])
+   /*
+    * Only add a "job-name" attribute if the remote server supports
+    * copy generation - some IPP implementations like HP's don't seem
+    * to like UTF-8 job names (STR #1837)...
+    */
+
+    if (argv[3][0] && copies_sup)
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
                   argv[3]);
 
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
                   argv[3]);
 
@@ -822,8 +837,9 @@ main(int  argc,                             /* I - Number of command-line args */
        * number of copies to 1...
        */
 
        * number of copies to 1...
        */
 
-       content_type = "application/postscript";
-       copies       = 1;
+       content_type     = "application/postscript";
+       copies           = 1;
+       copies_remaining = 1;
       }
     }
 #endif /* __APPLE__ */
       }
     }
 #endif /* __APPLE__ */
@@ -851,8 +867,9 @@ main(int  argc,                             /* I - Number of command-line args */
       */
 
       cupsEncodeOptions(request, num_options, options);
       */
 
       cupsEncodeOptions(request, num_options, options);
+
       ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies",
       ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies",
-                    atoi(argv[4]));
+                    copies);
     }
 
     cupsFreeOptions(num_options, options);
     }
 
     cupsFreeOptions(num_options, options);
@@ -952,13 +969,13 @@ main(int  argc,                           /* I - Number of command-line args */
     if (ipp_status <= IPP_OK_CONFLICT && argc > 6)
     {
       fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
     if (ipp_status <= IPP_OK_CONFLICT && argc > 6)
     {
       fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
-      copies --;
+      copies_remaining --;
     }
     else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
             ipp_status == IPP_PRINTER_BUSY)
       break;
     else
     }
     else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
             ipp_status == IPP_PRINTER_BUSY)
       break;
     else
-      copies --;
+      copies_remaining --;
 
    /*
     * Wait for the job to complete...
 
    /*
     * Wait for the job to complete...
@@ -1300,6 +1317,8 @@ password_cb(const char *prompt)           /* I - Prompt (not used) */
 #endif /* __APPLE__ */
 
     exit(CUPS_BACKEND_AUTH_REQUIRED);
 #endif /* __APPLE__ */
 
     exit(CUPS_BACKEND_AUTH_REQUIRED);
+
+    return (NULL);                     /* Eliminate compiler warning */
   }
 }
 
   }
 }
 
@@ -1622,5 +1641,5 @@ sigterm_handler(int sig)          /* I - Signal */
 
 
 /*
 
 
 /*
- * End of "$Id: ipp.c 5724 2006-07-12 19:42:35Z mike $".
+ * End of "$Id: ipp.c 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index ef7ef05d331dc75bd099aa7d403f39701d5eb52c..218dba73707c3a28c0c42b90c7a3e2d258516990 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpd.c 5495 2006-05-05 17:58:07Z mike $"
+ * "$Id: lpd.c 5886 2006-08-24 19:53:17Z mike $"
  *
  *   Line Printer Daemon backend for the Common UNIX Printing System (CUPS).
  *
  *
  *   Line Printer Daemon backend for the Common UNIX Printing System (CUPS).
  *
@@ -261,6 +261,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
   /* We want to pass utf-8 characters, not re-map them (3071945) */
   sanitize_title = 0;
 
   /* We want to pass utf-8 characters, not re-map them (3071945) */
   sanitize_title = 0;
 
+  /* Get the default timeout from a system preference... */
   {
     CFPropertyListRef  pvalue;         /* Preference value */
     SInt32             toval;          /* Timeout value */
   {
     CFPropertyListRef  pvalue;         /* Preference value */
     SInt32             toval;          /* Timeout value */
@@ -1230,5 +1231,5 @@ sigterm_handler(int sig)          /* I - Signal */
 
 
 /*
 
 
 /*
- * End of "$Id: lpd.c 5495 2006-05-05 17:58:07Z mike $".
+ * End of "$Id: lpd.c 5886 2006-08-24 19:53:17Z mike $".
  */
  */
index 03bb09282643ea74e249aa57a9af8fce4d9b5ac1..82673a447a3220f12c517b768c1f319868ca48f7 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: runloop.c 5726 2006-07-12 20:00:11Z mike $"
+ * "$Id: runloop.c 5776 2006-07-26 20:55:13Z mike $"
  *
  *   Common run loop API for the Common UNIX Printing System (CUPS).
  *
  *
  *   Common run loop API for the Common UNIX Printing System (CUPS).
  *
  */
 
 #include "backend-private.h"
  */
 
 #include "backend-private.h"
-#include <sys/select.h>
+#ifdef __hpux
+#  include <sys/time.h>
+#else
+#  include <sys/select.h>
+#endif /* __hpux */
 
 
 /*
 
 
 /*
@@ -254,5 +258,5 @@ backendRunLoop(int print_fd,                /* I - Print file descriptor */
 
 
 /*
 
 
 /*
- * End of "$Id: runloop.c 5726 2006-07-12 20:00:11Z mike $".
+ * End of "$Id: runloop.c 5776 2006-07-26 20:55:13Z mike $".
  */
  */
index 56e7ad9e79b48713d4ea5e8b59ecffb1e1b3c714..4a90f2ebc09db5d6457cbde811e9f99473a61068 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: snmp.c 5736 2006-07-13 19:59:36Z mike $"
+ * "$Id: snmp.c 5898 2006-08-28 18:54:10Z mike $"
  *
  *   SNMP discovery backend for the Common UNIX Printing System (CUPS).
  *
  *
  *   SNMP discovery backend for the Common UNIX Printing System (CUPS).
  *
@@ -52,6 +52,7 @@
  *                               packed integer value.
  *   compare_cache()           - Compare two cache entries.
  *   debug_printf()            - Display some debugging information.
  *                               packed integer value.
  *   compare_cache()           - Compare two cache entries.
  *   debug_printf()            - Display some debugging information.
+ *   do_request()              - Do a non-blocking IPP request.
  *   fix_make_model()          - Fix common problems in the make-and-model
  *                               string.
  *   free_array()              - Free an array of strings.
  *   fix_make_model()          - Fix common problems in the make-and-model
  *                               string.
  *   free_array()              - Free an array of strings.
@@ -59,7 +60,7 @@
  *   get_interface_addresses() - Get the broadcast address(es) associated
  *                               with an interface.
  *   hex_debug()               - Output hex debugging data...
  *   get_interface_addresses() - Get the broadcast address(es) associated
  *                               with an interface.
  *   hex_debug()               - Output hex debugging data...
- *   list_devices()            - List all of the devices we found...
+ *   list_device()             - List a device we found...
  *   open_snmp_socket()        - Open the SNMP broadcast socket.
  *   password_cb()             - Handle authentication requests.
  *   probe_device()            - Probe a device to discover whether it is a
  *   open_snmp_socket()        - Open the SNMP broadcast socket.
  *   password_cb()             - Handle authentication requests.
  *   probe_device()            - Probe a device to discover whether it is a
@@ -193,6 +194,13 @@ typedef struct snmp_packet_s               /**** SNMP packet ****/
 } snmp_packet_t;
 
 
 } snmp_packet_t;
 
 
+/*
+ * Private CUPS API to set the last error...
+ */
+
+extern void    _cupsSetError(ipp_status_t status, const char *message);
+
+
 /*
  * Local functions...
  */
 /*
  * Local functions...
  */
@@ -238,6 +246,8 @@ static int          asn1_size_oid(const int *oid);
 static int             asn1_size_packed(int integer);
 static int             compare_cache(snmp_cache_t *a, snmp_cache_t *b);
 static void            debug_printf(const char *format, ...);
 static int             asn1_size_packed(int integer);
 static int             compare_cache(snmp_cache_t *a, snmp_cache_t *b);
 static void            debug_printf(const char *format, ...);
+static ipp_t           *do_request(http_t *http, ipp_t *request,
+                                   const char *resource);
 static void            fix_make_model(char *make_model,
                                       const char *old_make_model,
                                       int make_model_size);
 static void            fix_make_model(char *make_model,
                                       const char *old_make_model,
                                       int make_model_size);
@@ -245,7 +255,7 @@ static void         free_array(cups_array_t *a);
 static void            free_cache(void);
 static http_addrlist_t *get_interface_addresses(const char *ifname);
 static void            hex_debug(unsigned char *buffer, size_t len);
 static void            free_cache(void);
 static http_addrlist_t *get_interface_addresses(const char *ifname);
 static void            hex_debug(unsigned char *buffer, size_t len);
-static void            list_devices(void);
+static void            list_device(snmp_cache_t *cache);
 static int             open_snmp_socket(void);
 static const char      *password_cb(const char *prompt);
 static void            probe_device(snmp_cache_t *device);
 static int             open_snmp_socket(void);
 static const char      *password_cb(const char *prompt);
 static void            probe_device(snmp_cache_t *device);
@@ -278,6 +288,7 @@ static int          DeviceDescOID[] = { 1, 3, 6, 1, 2, 1, 25, 3,
 static unsigned                DeviceTypeRequest;
 static unsigned                DeviceDescRequest;
 static int             HostNameLookups = 0;
 static unsigned                DeviceTypeRequest;
 static unsigned                DeviceDescRequest;
 static int             HostNameLookups = 0;
+static int             MaxRunTime = 10;
 static struct timeval  StartTime;
 
 
 static struct timeval  StartTime;
 
 
@@ -290,6 +301,9 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
      char *argv[])                     /* I - Command-line arguments */
 {
   int          fd;                     /* SNMP socket */
      char *argv[])                     /* I - Command-line arguments */
 {
   int          fd;                     /* SNMP socket */
+#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+  struct sigaction action;             /* Actions for POSIX signals */
+#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
 
 
  /*
 
 
  /*
@@ -308,6 +322,23 @@ main(int  argc,                            /* I - Number of command-line arguments (6 or 7) */
 
   cupsSetPasswordCB(password_cb);
 
 
   cupsSetPasswordCB(password_cb);
 
+ /*
+  * Catch SIGALRM signals...
+  */
+
+#ifdef HAVE_SIGSET
+  sigset(SIGALRM, alarm_handler);
+#elif defined(HAVE_SIGACTION)
+  memset(&action, 0, sizeof(action));
+
+  sigemptyset(&action.sa_mask);
+  sigaddset(&action.sa_mask, SIGALRM);
+  action.sa_handler = alarm_handler;
+  sigaction(SIGALRM, &action, NULL);
+#else
+  signal(SIGALRM, alarm_handler);
+#endif /* HAVE_SIGSET */
+
  /*
   * Open the SNMP socket...
   */
  /*
   * Open the SNMP socket...
   */
@@ -329,12 +360,6 @@ main(int  argc,                            /* I - Number of command-line arguments (6 or 7) */
 
   scan_devices(fd);
 
 
   scan_devices(fd);
 
- /*
-  * Display the results...
-  */
-
-  list_devices();
-
  /*
   * Close, free, and return with no errors...
   */
  /*
   * Close, free, and return with no errors...
   */
@@ -384,7 +409,7 @@ add_cache(http_addr_t *addr,                /* I - Device IP address */
 
   debug_printf("DEBUG: add_cache(addr=%p, addrname=\"%s\", uri=\"%s\", "
                   "id=\"%s\", make_and_model=\"%s\")\n",
 
   debug_printf("DEBUG: add_cache(addr=%p, addrname=\"%s\", uri=\"%s\", "
                   "id=\"%s\", make_and_model=\"%s\")\n",
-               addr, addrname, uri ? uri : "(null)", id ? id :  "(null)",
+               addr, addrname, uri ? uri : "(null)", id ? id : "(null)",
               make_and_model ? make_and_model : "(null)");
 
   temp = calloc(1, sizeof(snmp_cache_t));
               make_and_model ? make_and_model : "(null)");
 
   temp = calloc(1, sizeof(snmp_cache_t));
@@ -402,6 +427,9 @@ add_cache(http_addr_t *addr,                /* I - Device IP address */
     temp->make_and_model = strdup(make_and_model);
 
   cupsArrayAdd(Devices, temp);
     temp->make_and_model = strdup(make_and_model);
 
   cupsArrayAdd(Devices, temp);
+
+  if (uri)
+    list_device(temp);
 }
 
 
 }
 
 
@@ -418,6 +446,10 @@ alarm_handler(int sig)                     /* I - Signal number */
 
   (void)sig;
 
 
   (void)sig;
 
+#if !defined(HAVE_SIGSET) && !defined(HAVE_SIGACTION)
+  signal(SIGALRM, alarm_handler);
+#endif /* !HAVE_SIGSET && !HAVE_SIGACTION */
+
   if (DebugLevel)
     write(2, "DEBUG: ALARM!\n", 14);
 }
   if (DebugLevel)
     write(2, "DEBUG: ALARM!\n", 14);
 }
@@ -1227,6 +1259,173 @@ debug_printf(const char *format,        /* I - Printf-style format string */
 }
 
 
 }
 
 
+/*
+ * 'do_request()' - Do a non-blocking IPP request.
+ */
+
+static ipp_t *                         /* O - Response data or NULL */
+do_request(http_t     *http,           /* I - HTTP connection to server */
+           ipp_t      *request,                /* I - IPP request */
+           const char *resource)       /* I - HTTP resource for POST */
+{
+  ipp_t                *response;              /* IPP response data */
+  http_status_t        status;                 /* Status of HTTP request */
+  ipp_state_t  state;                  /* State of IPP processing */
+
+
+ /*
+  * Setup the HTTP variables needed...
+  */
+
+  httpClearFields(http);
+  httpSetLength(http, ippLength(request));
+  httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
+
+ /*
+  * Do the POST request...
+  */
+
+  debug_printf("DEBUG: %.3f POST %s...\n", run_time(), resource);
+
+  if (httpPost(http, resource))
+  {
+    if (httpReconnect(http))
+    {
+      _cupsSetError(IPP_DEVICE_ERROR, "Unable to reconnect");
+      return (NULL);
+    }
+    else if (httpPost(http, resource))
+    {
+      _cupsSetError(IPP_GONE, "Unable to POST");
+      return (NULL);
+    }
+  }
+
+ /*
+  * Send the IPP data...
+  */
+
+  request->state = IPP_IDLE;
+  status         = HTTP_CONTINUE;
+
+  while ((state = ippWrite(http, request)) != IPP_DATA)
+    if (state == IPP_ERROR)
+    {
+      status = HTTP_ERROR;
+      break;
+    }
+    else if (httpCheck(http))
+    {
+      if ((status = httpUpdate(http)) != HTTP_CONTINUE)
+       break;
+    }
+
+ /*
+  * Get the server's return status...
+  */
+
+  debug_printf("DEBUG: %.3f Getting response...\n", run_time());
+
+  while (status == HTTP_CONTINUE)
+    if (httpWait(http, 1000))
+      status = httpUpdate(http);
+    else
+    {
+      status      = HTTP_ERROR;
+      http->error = ETIMEDOUT;
+    }
+
+  if (status != HTTP_OK)
+  {
+   /*
+    * Flush any error message...
+    */
+
+    httpFlush(http);
+    response = NULL;
+  }
+  else
+  {
+   /*
+    * Read the response...
+    */
+
+    response = ippNew();
+
+    while ((state = ippRead(http, response)) != IPP_DATA)
+      if (state == IPP_ERROR)
+      {
+       /*
+        * Delete the response...
+       */
+
+       ippDelete(response);
+       response = NULL;
+
+        _cupsSetError(IPP_SERVICE_UNAVAILABLE, strerror(errno));
+       break;
+      }
+  }
+
+ /*
+  * Delete the original request and return the response...
+  */
+  
+  ippDelete(request);
+
+  if (response)
+  {
+    ipp_attribute_t    *attr;          /* status-message attribute */
+
+
+    attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
+
+    _cupsSetError(response->request.status.status_code,
+                   attr ? attr->values[0].string.text :
+                      ippErrorString(response->request.status.status_code));
+  }
+  else if (status != HTTP_OK)
+  {
+    switch (status)
+    {
+      case HTTP_NOT_FOUND :
+          _cupsSetError(IPP_NOT_FOUND, httpStatus(status));
+         break;
+
+      case HTTP_UNAUTHORIZED :
+          _cupsSetError(IPP_NOT_AUTHORIZED, httpStatus(status));
+         break;
+
+      case HTTP_FORBIDDEN :
+          _cupsSetError(IPP_FORBIDDEN, httpStatus(status));
+         break;
+
+      case HTTP_BAD_REQUEST :
+          _cupsSetError(IPP_BAD_REQUEST, httpStatus(status));
+         break;
+
+      case HTTP_REQUEST_TOO_LARGE :
+          _cupsSetError(IPP_REQUEST_VALUE, httpStatus(status));
+         break;
+
+      case HTTP_NOT_IMPLEMENTED :
+          _cupsSetError(IPP_OPERATION_NOT_SUPPORTED, httpStatus(status));
+         break;
+
+      case HTTP_NOT_SUPPORTED :
+          _cupsSetError(IPP_VERSION_NOT_SUPPORTED, httpStatus(status));
+         break;
+
+      default :
+         _cupsSetError(IPP_SERVICE_UNAVAILABLE, httpStatus(status));
+         break;
+    }
+  }
+
+  return (response);
+}
+
+
 /*
  * 'fix_make_model()' - Fix common problems in the make-and-model string.
  */
 /*
  * 'fix_make_model()' - Fix common problems in the make-and-model string.
  */
@@ -1288,6 +1487,16 @@ fix_make_model(
     _cups_strcpy(mmptr, mmptr + 7);
   }
 
     _cups_strcpy(mmptr, mmptr + 7);
   }
 
+  if ((mmptr = strstr(make_model, " Network")) != NULL)
+  {
+   /*
+    * Drop unnecessary informational text, e.g. "Xerox DocuPrint N2025
+    * Network LaserJet - 2.12" becomes "Xerox DocuPrint N2025"...
+    */
+
+    *mmptr = '\0';
+  }
+
   if ((mmptr = strchr(make_model, ',')) != NULL)
   {
    /*
   if ((mmptr = strchr(make_model, ',')) != NULL)
   {
    /*
@@ -1422,24 +1631,18 @@ hex_debug(unsigned char *buffer,        /* I - Buffer */
 
 
 /*
 
 
 /*
- * 'list_devices()' - List all of the devices we found...
+ * 'list_device()' - List a device we found...
  */
 
 static void
  */
 
 static void
-list_devices(void)
+list_device(snmp_cache_t *cache)       /* I - Cached device */
 {
 {
-  snmp_cache_t *cache;                 /* Cached device */
-
-
-  for (cache = (snmp_cache_t *)cupsArrayFirst(Devices);
-       cache;
-       cache = (snmp_cache_t *)cupsArrayNext(Devices))
-    if (cache->uri)
-      printf("network %s \"%s\" \"%s %s\" \"%s\"\n",
-             cache->uri,
-            cache->make_and_model ? cache->make_and_model : "Unknown",
-            cache->make_and_model ? cache->make_and_model : "Unknown",
-            cache->addrname, cache->id ? cache->id : "");
+  if (cache->uri)
+    printf("network %s \"%s\" \"%s %s\" \"%s\"\n",
+           cache->uri,
+          cache->make_and_model ? cache->make_and_model : "Unknown",
+          cache->make_and_model ? cache->make_and_model : "Unknown",
+          cache->addrname, cache->id ? cache->id : "");
 }
 
 
 }
 
 
@@ -1524,7 +1727,29 @@ probe_device(snmp_cache_t *device)       /* I - Device */
 
   debug_printf("DEBUG: %.3f Probing %s...\n", run_time(), device->addrname);
 
 
   debug_printf("DEBUG: %.3f Probing %s...\n", run_time(), device->addrname);
 
-  if ((http = httpConnect(device->addrname, 631)) != NULL)
+  if (device->make_and_model &&
+      (!strncasecmp(device->make_and_model, "Xerox", 5) ||
+       !strncasecmp(device->make_and_model, "Kyocera", 7)))
+  {
+   /*
+    * Xerox and Kyocera printers often lock up on IPP probes, so exclude
+    * them from the IPP connection test...
+    */
+
+    http = NULL;
+  }
+  else
+  {
+   /*
+    * Otherwise, try connecting for up to 1 second...
+    */
+
+    alarm(1);
+    http = httpConnect(device->addrname, 631);
+    alarm(0);
+  }
+
+  if (http);
   {
    /*
     * IPP is supported...
   {
    /*
     * IPP is supported...
@@ -1551,8 +1776,6 @@ probe_device(snmp_cache_t *device)        /* I - Device */
                        };
 
 
                        };
 
 
-    debug_printf("DEBUG: %s supports IPP!\n", device->addrname);
-
    /*
     * Use non-blocking IO...
     */
    /*
     * Use non-blocking IO...
     */
@@ -1568,6 +1791,13 @@ probe_device(snmp_cache_t *device)       /* I - Device */
          i < (int)(sizeof(resources) / sizeof(resources[0]));
          i ++)
     {
          i < (int)(sizeof(resources) / sizeof(resources[0]));
          i ++)
     {
+     /*
+      * Stop early if we are out of time...
+      */
+
+      if (MaxRunTime > 0 && run_time() >= MaxRunTime)
+        break;
+
      /*
       * Don't look past /ipp if we have found a working URI...
       */
      /*
       * Don't look past /ipp if we have found a working URI...
       */
@@ -1578,16 +1808,14 @@ probe_device(snmp_cache_t *device)      /* I - Device */
       httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
                       device->addrname, 631, resources[i]);
 
       httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
                       device->addrname, 631, resources[i]);
 
-      debug_printf("DEBUG: Trying %s (num_uris=%d)\n", uri, num_uris);
-
       request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
 
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                    NULL, uri);
 
       request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
 
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                    NULL, uri);
 
-      response = cupsDoRequest(http, request, resources[i]);
+      response = do_request(http, request, resources[i]);
 
 
-      debug_printf("DEBUG: %s %s (%s)\n", uri,
+      debug_printf("DEBUG: %.3f %s %s (%s)\n", run_time(), uri,
                   ippErrorString(cupsLastError()), cupsLastErrorString());
 
       if (response && response->request.status.status_code == IPP_OK)
                   ippErrorString(cupsLastError()), cupsLastErrorString());
 
       if (response && response->request.status.status_code == IPP_OK)
@@ -1726,6 +1954,7 @@ read_snmp_conf(const char *address)       /* I - Single address to probe */
   int          linenum;                /* Line number */
   const char   *cups_serverroot;       /* CUPS_SERVERROOT env var */
   const char   *debug;                 /* CUPS_DEBUG_LEVEL env var */
   int          linenum;                /* Line number */
   const char   *cups_serverroot;       /* CUPS_SERVERROOT env var */
   const char   *debug;                 /* CUPS_DEBUG_LEVEL env var */
+  const char   *runtime;               /* CUPS_MAX_RUN_TIME env var */
 
 
  /*
 
 
  /*
@@ -1741,6 +1970,9 @@ read_snmp_conf(const char *address)       /* I - Single address to probe */
   if ((debug = getenv("CUPS_DEBUG_LEVEL")) != NULL)
     DebugLevel = atoi(debug);
 
   if ((debug = getenv("CUPS_DEBUG_LEVEL")) != NULL)
     DebugLevel = atoi(debug);
 
+  if ((runtime = getenv("CUPS_MAX_RUN_TIME")) != NULL)
+    MaxRunTime = atoi(runtime);
+
  /*
   * Find the snmp.conf file...
   */
  /*
   * Find the snmp.conf file...
   */
@@ -1777,6 +2009,8 @@ read_snmp_conf(const char *address)       /* I - Single address to probe */
                          !strcasecmp(value, "yes") ||
                          !strcasecmp(value, "true") ||
                          !strcasecmp(value, "double");
                          !strcasecmp(value, "yes") ||
                          !strcasecmp(value, "true") ||
                          !strcasecmp(value, "double");
+      else if (!strcasecmp(line, "MaxRunTime"))
+        MaxRunTime = atoi(value);
       else
         fprintf(stderr, "ERROR: Unknown directive %s on line %d of %s!\n",
                line, linenum, filename);
       else
         fprintf(stderr, "ERROR: Unknown directive %s on line %d of %s!\n",
                line, linenum, filename);
@@ -2075,7 +2309,9 @@ scan_devices(int fd)                      /* I - SNMP socket */
   for (device = (snmp_cache_t *)cupsArrayFirst(Devices);
        device;
        device = (snmp_cache_t *)cupsArrayNext(Devices))
   for (device = (snmp_cache_t *)cupsArrayFirst(Devices);
        device;
        device = (snmp_cache_t *)cupsArrayNext(Devices))
-    if (!device->uri)
+    if (MaxRunTime > 0 && run_time() >= MaxRunTime)
+      break;
+    else if (!device->uri)
       probe_device(device);
 
   debug_printf("DEBUG: %.3f Scan complete!\n", run_time());
       probe_device(device);
 
   debug_printf("DEBUG: %.3f Scan complete!\n", run_time());
@@ -2169,7 +2405,6 @@ try_connect(http_addr_t *addr,            /* I - Socket address */
 
   addr->ipv4.sin_port = htons(port);
 
 
   addr->ipv4.sin_port = htons(port);
 
-  signal(SIGALRM, alarm_handler);
   alarm(1);
 
   status = connect(fd, (void *)addr, httpAddrLength(addr));
   alarm(1);
 
   status = connect(fd, (void *)addr, httpAddrLength(addr));
@@ -2211,9 +2446,11 @@ update_cache(snmp_cache_t *device,       /* I - Device */
 
     device->make_and_model = strdup(make_model);
   }
 
     device->make_and_model = strdup(make_model);
   }
+
+  list_device(device);
 }
 
 
 /*
 }
 
 
 /*
- * End of "$Id: snmp.c 5736 2006-07-13 19:59:36Z mike $".
+ * End of "$Id: snmp.c 5898 2006-08-28 18:54:10Z mike $".
  */
  */
index 271d6047766e1c7e4b06ffb9ae402917cef45a68..c00a23a7a5501cde2f138bb071d768154029cd3d 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpc.c 5023 2006-01-29 14:39:44Z mike $"
+ * "$Id: lpc.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "lpc" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpc" command for the Common UNIX Printing System (CUPS).
  *
@@ -65,6 +65,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
                *params;                /* Pointer to parameters */
 
 
                *params;                /* Pointer to parameters */
 
 
+  _cupsSetLocale();
+
  /*
   * Connect to the scheduler...
   */
  /*
   * Connect to the scheduler...
   */
@@ -518,5 +520,5 @@ show_status(http_t     *http,               /* I - HTTP connection to server */
 
 
 /*
 
 
 /*
- * End of "$Id: lpc.c 5023 2006-01-29 14:39:44Z mike $".
+ * End of "$Id: lpc.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index 43f01c6203a5f697cd926cfa7ca1a8f5f0e2f6a1..78387fd5ddfdacd3f159d52d1dc7e267c654907f 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpq.c 5638 2006-06-06 20:08:13Z mike $"
+ * "$Id: lpq.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   "lpq" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpq" command for the Common UNIX Printing System (CUPS).
  *
@@ -76,9 +76,10 @@ main(int  argc,                              /* I - Number of command-line arguments */
                longstatus;             /* Show file details */
   int          num_dests;              /* Number of destinations */
   cups_dest_t  *dests;                 /* Destinations */
                longstatus;             /* Show file details */
   int          num_dests;              /* Number of destinations */
   cups_dest_t  *dests;                 /* Destinations */
-  cups_lang_t  *language;              /* Language */
 
 
 
 
+  _cupsSetLocale();
+
  /*
   * Check for command-line options...
   */
  /*
   * Check for command-line options...
   */
@@ -90,8 +91,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   interval   = 0;
   longstatus = 0;
   all        = 0;
   interval   = 0;
   longstatus = 0;
   all        = 0;
-  language   = cupsLangDefault();
   num_dests  = 0;
   num_dests  = 0;
+  dests      = NULL;
 
   for (i = 1; i < argc; i ++)
     if (argv[i][0] == '+')
 
   for (i = 1; i < argc; i ++)
     if (argv[i][0] == '+')
@@ -675,5 +676,5 @@ usage(void)
 
 
 /*
 
 
 /*
- * End of "$Id: lpq.c 5638 2006-06-06 20:08:13Z mike $".
+ * End of "$Id: lpq.c 5838 2006-08-17 14:41:42Z mike $".
  */
  */
index f6b5fb3b7ef35cfeca23638c3553ca07bd4626bb..90b73bf4dff6bee32cc9c462bca3b61c52d0f807 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpr.c 5235 2006-03-06 13:02:23Z mike $"
+ * "$Id: lpr.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   "lpr" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpr" command for the Common UNIX Printing System (CUPS).
  *
@@ -87,13 +87,14 @@ main(int  argc,                             /* I - Number of command-line arguments */
   ssize_t      bytes;                  /* Bytes copied */
   off_t                filesize;               /* Size of temp file */
   int          temp;                   /* Temporary file descriptor */
   ssize_t      bytes;                  /* Bytes copied */
   off_t                filesize;               /* Size of temp file */
   int          temp;                   /* Temporary file descriptor */
-  cups_lang_t  *language;              /* Language information */
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Signal action */
   struct sigaction oldaction;          /* Old signal action */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
 
 
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Signal action */
   struct sigaction oldaction;          /* Old signal action */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
 
 
+  _cupsSetLocale();
+
   deletefile  = 0;
   printer     = NULL;
   num_dests   = 0;
   deletefile  = 0;
   printer     = NULL;
   num_dests   = 0;
@@ -102,7 +103,6 @@ main(int  argc,                             /* I - Number of command-line arguments */
   options     = NULL;
   num_files   = 0;
   title       = NULL;
   options     = NULL;
   num_files   = 0;
   title       = NULL;
-  language    = cupsLangDefault();
 
   for (i = 1; i < argc; i ++)
     if (argv[i][0] == '-')
 
   for (i = 1; i < argc; i ++)
     if (argv[i][0] == '-')
@@ -529,5 +529,5 @@ sighandler(int s)                   /* I - Signal number */
 
 
 /*
 
 
 /*
- * End of "$Id: lpr.c 5235 2006-03-06 13:02:23Z mike $".
+ * End of "$Id: lpr.c 5838 2006-08-17 14:41:42Z mike $".
  */
  */
index 41f35ca12621df29724c11f5ae4a86ee9a640aad..574f2650746f815559f87725ca342e1dfc0ac179 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lprm.c 5719 2006-07-11 21:04:48Z mike $"
+ * "$Id: lprm.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   "lprm" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lprm" command for the Common UNIX Printing System (CUPS).
  *
@@ -55,13 +55,14 @@ main(int  argc,                     /* I - Number of command-line arguments */
   ipp_t                *request;       /* IPP request */
   ipp_t                *response;      /* IPP response */
   ipp_op_t     op;             /* Operation */
   ipp_t                *request;       /* IPP request */
   ipp_t                *response;      /* IPP response */
   ipp_op_t     op;             /* Operation */
-  cups_lang_t  *language;      /* Language */
   int          num_dests;      /* Number of destinations */
   cups_dest_t  *dests,         /* Destinations */
                *defdest;       /* Default destination */
   http_encryption_t encryption;        /* Encryption? */
 
 
   int          num_dests;      /* Number of destinations */
   cups_dest_t  *dests,         /* Destinations */
                *defdest;       /* Default destination */
   http_encryption_t encryption;        /* Encryption? */
 
 
+  _cupsSetLocale();
+
  /*
   * Setup to cancel individual print jobs...
   */
  /*
   * Setup to cancel individual print jobs...
   */
@@ -72,7 +73,6 @@ main(int  argc,                       /* I - Number of command-line arguments */
   response   = NULL;
   http       = NULL;
   encryption = cupsEncryption();
   response   = NULL;
   http       = NULL;
   encryption = cupsEncryption();
-  language   = cupsLangDefault();
 
  /*
   * Open a connection to the server...
 
  /*
   * Open a connection to the server...
@@ -273,7 +273,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
     }
 
  /*
     }
 
  /*
-  * If nothing has been cancelled yet, cancel the current job on the specified
+  * If nothing has been canceled yet, cancel the current job on the specified
   * (or default) printer...
   */
 
   * (or default) printer...
   */
 
@@ -294,5 +294,5 @@ main(int  argc,                     /* I - Number of command-line arguments */
 
 
 /*
 
 
 /*
- * End of "$Id: lprm.c 5719 2006-07-11 21:04:48Z mike $".
+ * End of "$Id: lprm.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 85142e3a0f26d840b3e298e06ecd8657eeedff0d..6536c86f7ca006a9da8304f463a078a337ee84a2 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: admin.c 5572 2006-05-22 18:47:09Z mike $"
+ * "$Id: admin.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Administration CGI for the Common UNIX Printing System (CUPS).
  *
  *
  *   Administration CGI for the Common UNIX Printing System (CUPS).
  *
@@ -1597,39 +1597,97 @@ do_config_server(http_t *http)          /* I - HTTP connection */
 
     int                        num_settings;   /* Number of server settings */
     cups_option_t      *settings;      /* Server settings */
 
     int                        num_settings;   /* Number of server settings */
     cups_option_t      *settings;      /* Server settings */
+    const char         *debug_logging, /* DEBUG_LOGGING value */
+                       *remote_admin,  /* REMOTE_ADMIN value */
+                       *remote_printers,
+                                       /* REMOTE_PRINTERS value */
+                       *share_printers,/* SHARE_PRINTERS value */
+                       *user_cancel_any;
+                                       /* USER_CANCEL_ANY value */
 
 
 
 
-    num_settings = 0;
-    num_settings = cupsAddOption(CUPS_SERVER_DEBUG_LOGGING,
-                                 cgiGetVariable("DEBUG_LOGGING") ? "1" : "0",
-                                num_settings, &settings);
-    num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ADMIN,
-                                 cgiGetVariable("REMOTE_ADMIN") ? "1" : "0",
-                                num_settings, &settings);
-    num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
-                                 cgiGetVariable("REMOTE_PRINTERS") ? "1" : "0",
-                                num_settings, &settings);
-    num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
-                                 cgiGetVariable("SHARE_PRINTERS") ? "1" : "0",
-                                num_settings, &settings);
-    num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY,
-                                 cgiGetVariable("USER_CANCEL_ANY") ? "1" : "0",
-                                num_settings, &settings);
-
-
-    if (!_cupsAdminSetServerSettings(http, num_settings, settings))
+   /*
+    * Get the checkbox values from the form...
+    */
+
+    debug_logging   = cgiGetVariable("DEBUG_LOGGING") ? "1" : "0";
+    remote_admin    = cgiGetVariable("REMOTE_ADMIN") ? "1" : "0";
+    remote_printers = cgiGetVariable("REMOTE_PRINTERS") ? "1" : "0";
+    share_printers  = cgiGetVariable("SHARE_PRINTERS") ? "1" : "0";
+    user_cancel_any = cgiGetVariable("USER_CANCEL_ANY") ? "1" : "0";
+
+   /*
+    * Get the current server settings...
+    */
+
+    if (!_cupsAdminGetServerSettings(http, &num_settings, &settings))
     {
       cgiStartHTML(cgiText(_("Change Settings")));
       cgiSetVariable("MESSAGE",
                      cgiText(_("Unable to change server settings:")));
       cgiSetVariable("ERROR", cupsLastErrorString());
       cgiCopyTemplateLang("error.tmpl");
     {
       cgiStartHTML(cgiText(_("Change Settings")));
       cgiSetVariable("MESSAGE",
                      cgiText(_("Unable to change server settings:")));
       cgiSetVariable("ERROR", cupsLastErrorString());
       cgiCopyTemplateLang("error.tmpl");
+      cgiEndHTML();
+      return;
+    }
+
+   /*
+    * See if the settings have changed...
+    */
+
+    if (strcmp(debug_logging, cupsGetOption(CUPS_SERVER_DEBUG_LOGGING,
+                                            num_settings, settings)) ||
+        strcmp(remote_admin, cupsGetOption(CUPS_SERVER_REMOTE_ADMIN,
+                                           num_settings, settings)) ||
+        strcmp(remote_printers, cupsGetOption(CUPS_SERVER_REMOTE_PRINTERS,
+                                              num_settings, settings)) ||
+        strcmp(share_printers, cupsGetOption(CUPS_SERVER_SHARE_PRINTERS,
+                                             num_settings, settings)) ||
+        strcmp(user_cancel_any, cupsGetOption(CUPS_SERVER_USER_CANCEL_ANY,
+                                              num_settings, settings)))
+    {
+     /*
+      * Settings *have* changed, so save the changes...
+      */
+
+      cupsFreeOptions(num_settings, settings);
+
+      num_settings = 0;
+      num_settings = cupsAddOption(CUPS_SERVER_DEBUG_LOGGING,
+                                   debug_logging, num_settings, &settings);
+      num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ADMIN,
+                                   remote_admin, num_settings, &settings);
+      num_settings = cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS,
+                                   remote_printers, num_settings, &settings);
+      num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
+                                   share_printers, num_settings, &settings);
+      num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY,
+                                   user_cancel_any, num_settings, &settings);
+
+      if (!_cupsAdminSetServerSettings(http, num_settings, settings))
+      {
+       cgiStartHTML(cgiText(_("Change Settings")));
+       cgiSetVariable("MESSAGE",
+                       cgiText(_("Unable to change server settings:")));
+       cgiSetVariable("ERROR", cupsLastErrorString());
+       cgiCopyTemplateLang("error.tmpl");
+      }
+      else
+      {
+       cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect");
+       cgiStartHTML(cgiText(_("Change Settings")));
+       cgiCopyTemplateLang("restart.tmpl");
+      }
     }
     else
     {
     }
     else
     {
+     /*
+      * No changes...
+      */
+
       cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect");
       cgiStartHTML(cgiText(_("Change Settings")));
       cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect");
       cgiStartHTML(cgiText(_("Change Settings")));
-      cgiCopyTemplateLang("restart.tmpl");
+      cgiCopyTemplateLang("norestart.tmpl");
     }
 
     cupsFreeOptions(num_settings, settings);
     }
 
     cupsFreeOptions(num_settings, settings);
@@ -2893,5 +2951,5 @@ match_string(const char *a,               /* I - First string */
 
     
 /*
 
     
 /*
- * End of "$Id: admin.c 5572 2006-05-22 18:47:09Z mike $".
+ * End of "$Id: admin.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 0b515f123d4101beda87bed81a83f7e81f6cdff3..c312d8bff1975355986290f4582679e213f21c3d 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ipp-var.c 5572 2006-05-22 18:47:09Z mike $"
+ * "$Id: ipp-var.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   CGI <-> IPP variable routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   CGI <-> IPP variable routines for the Common UNIX Printing System (CUPS).
  *
@@ -110,6 +110,7 @@ cgiGetAttributes(ipp_t      *request,       /* I - IPP request */
   */
 
   num_attrs = 0;
   */
 
   num_attrs = 0;
+  attrs[0]  = NULL;                    /* Eliminate compiler warning */
 
   while ((ch = getc(in)) != EOF)
     if (ch == '\\')
 
   while ((ch = getc(in)) != EOF)
     if (ch == '\\')
@@ -1279,5 +1280,5 @@ cgiText(const char *message)              /* I - Message */
 
 
 /*
 
 
 /*
- * End of "$Id: ipp-var.c 5572 2006-05-22 18:47:09Z mike $".
+ * End of "$Id: ipp-var.c 5838 2006-08-17 14:41:42Z mike $".
  */
  */
index 5495beaa0b9dc57dd68679a1320fbd67c04ebbb0..d8c4d01f2a5da1617f0439722f79bc84d9ac56e0 100644 (file)
@@ -1,5 +1,5 @@
 dnl
 dnl
-dnl "$Id: cups-common.m4 5466 2006-04-26 19:52:27Z mike $"
+dnl "$Id: cups-common.m4 5843 2006-08-17 18:49:31Z mike $"
 dnl
 dnl   Common configuration stuff for the Common UNIX Printing System (CUPS).
 dnl
 dnl
 dnl   Common configuration stuff for the Common UNIX Printing System (CUPS).
 dnl
@@ -29,7 +29,7 @@ dnl Set the name of the config header file...
 AC_CONFIG_HEADER(config.h)
 
 dnl Versio number information...
 AC_CONFIG_HEADER(config.h)
 
 dnl Versio number information...
-CUPS_VERSION="1.2svn"
+CUPS_VERSION="1.2.3"
 CUPS_REVISION=""
 if test -z "$CUPS_REVISION" -a -d .svn; then
        CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
 CUPS_REVISION=""
 if test -z "$CUPS_REVISION" -a -d .svn; then
        CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -265,5 +265,5 @@ AC_SUBST(DEFAULT_IPP_PORT)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
 
 dnl
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
 
 dnl
-dnl End of "$Id: cups-common.m4 5466 2006-04-26 19:52:27Z mike $".
+dnl End of "$Id: cups-common.m4 5843 2006-08-17 18:49:31Z mike $".
 dnl
 dnl
index 6b99cb57510e082db12b2f4c38260b54f195949f..a46cf383543036c149d8e070f1dd7e9e7383bd89 100644 (file)
@@ -1,5 +1,5 @@
 dnl
 dnl
-dnl "$Id: cups-defaults.m4 5745 2006-07-18 13:45:56Z mike $"
+dnl "$Id: cups-defaults.m4 5804 2006-08-04 16:51:58Z mike $"
 dnl
 dnl   Default cupsd configuration settings for the Common UNIX Printing System
 dnl   (CUPS).
 dnl
 dnl   Default cupsd configuration settings for the Common UNIX Printing System
 dnl   (CUPS).
@@ -25,7 +25,9 @@ dnl
 
 dnl Default langugages...
 AC_ARG_WITH(languages, [  --with-languages        set installed languages, default="de es ja pl sv" ],
 
 dnl Default langugages...
 AC_ARG_WITH(languages, [  --with-languages        set installed languages, default="de es ja pl sv" ],
-       LANGUAGES="$withval",
+       if test "x$withval" != xno; then
+               LANGUAGES="$withval"
+       fi,
        LANGUAGES="de es ja pl sv")
 AC_SUBST(LANGUAGES)
 
        LANGUAGES="de es ja pl sv")
 AC_SUBST(LANGUAGES)
 
@@ -248,5 +250,5 @@ fi
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP")
 
 dnl
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTCAP, "$CUPS_DEFAULT_PRINTCAP")
 
 dnl
-dnl End of "$Id: cups-defaults.m4 5745 2006-07-18 13:45:56Z mike $".
+dnl End of "$Id: cups-defaults.m4 5804 2006-08-04 16:51:58Z mike $".
 dnl
 dnl
index ece2b58204e6b19f312c778961a1a0bb83caa1e6..595512b4396d40a43288157c1439f18bc1d622c4 100644 (file)
@@ -1,5 +1,5 @@
 dnl
 dnl
-dnl "$Id: cups-directories.m4 5696 2006-06-26 18:34:20Z mike $"
+dnl "$Id: cups-directories.m4 5905 2006-08-29 20:48:59Z mike $"
 dnl
 dnl   Directory stuff for the Common UNIX Printing System (CUPS).
 dnl
 dnl
 dnl   Directory stuff for the Common UNIX Printing System (CUPS).
 dnl
@@ -57,6 +57,15 @@ if test "$sharedstatedir" = "\${prefix}/com" -a "$prefix" = "/"; then
        sharedstatedir="/usr/com"
 fi
 
        sharedstatedir="/usr/com"
 fi
 
+dnl Fix "datarootdir" variable if it hasn't been specified...
+if test "$datarootdir" = "\${prefix}/share"; then
+       if test "$prefix" = "/"; then
+               datarootdir="/usr/share"
+       else
+               datarootdir="$prefix/share"
+       fi
+fi
+
 dnl Fix "datadir" variable if it hasn't been specified...
 if test "$datadir" = "\${prefix}/share"; then
        if test "$prefix" = "/"; then
 dnl Fix "datadir" variable if it hasn't been specified...
 if test "$datadir" = "\${prefix}/share"; then
        if test "$prefix" = "/"; then
@@ -64,6 +73,8 @@ if test "$datadir" = "\${prefix}/share"; then
        else
                datadir="$prefix/share"
        fi
        else
                datadir="$prefix/share"
        fi
+elif test "$datadir" = "\${datarootdir}"; then
+       datadir="$datarootdir"
 fi
 
 dnl Fix "includedir" variable if it hasn't been specified...
 fi
 
 dnl Fix "includedir" variable if it hasn't been specified...
@@ -182,12 +193,15 @@ AC_SUBST(INITDDIR)
 
 dnl Xinetd support...
 XINETD=""
 
 dnl Xinetd support...
 XINETD=""
-for dir in /private/etc/xinetd.d /etc/xinetd.d /usr/local/etc/xinetd.d; do
-       if test -d $dir; then
-               XINETD="$dir"
-               break
-       fi
-done
+
+if test ! -x /sbin/launchd; then
+       for dir in /private/etc/xinetd.d /etc/xinetd.d /usr/local/etc/xinetd.d; do
+               if test -d $dir; then
+                       XINETD="$dir"
+                       break
+               fi
+       done
+fi
 
 AC_SUBST(XINETD)
 
 
 AC_SUBST(XINETD)
 
@@ -197,7 +211,7 @@ AC_ARG_WITH(cachedir, [  --with-cachedir         set path for cache files],cache
 
 if test x$cachedir = x; then
        if test "x$uname" = xDarwin; then
 
 if test x$cachedir = x; then
        if test "x$uname" = xDarwin; then
-               CUPS_CACHEDIR="$localstatedir/tmp/cups"
+               CUPS_CACHEDIR="$localstatedir/spool/cups/cache"
        else
                CUPS_CACHEDIR="$localstatedir/cache/cups"
        fi
        else
                CUPS_CACHEDIR="$localstatedir/cache/cups"
        fi
@@ -302,5 +316,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$localstatedir/run/cups")
 AC_SUBST(CUPS_STATEDIR)
 
 dnl
 AC_SUBST(CUPS_STATEDIR)
 
 dnl
-dnl End of "$Id: cups-directories.m4 5696 2006-06-26 18:34:20Z mike $".
+dnl End of "$Id: cups-directories.m4 5905 2006-08-29 20:48:59Z mike $".
 dnl
 dnl
index 1e6ae44de0f8ad49598c826ecc172a192e78aa4f..41e8190cba1b5dfe6004e2025b275f514a7d461c 100644 (file)
@@ -1,9 +1,9 @@
 dnl
 dnl
-dnl "$Id: cups-manpages.m4 5466 2006-04-26 19:52:27Z mike $"
+dnl "$Id: cups-manpages.m4 5799 2006-08-03 00:54:38Z mike $"
 dnl
 dnl   Manpage stuff for the Common UNIX Printing System (CUPS).
 dnl
 dnl
 dnl   Manpage stuff for the Common UNIX Printing System (CUPS).
 dnl
-dnl   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+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
 dnl   These coded instructions, statements, and computer programs are the
 dnl   property of Easy Software Products and are protected by Federal
@@ -23,6 +23,12 @@ dnl         WWW: http://www.cups.org
 dnl
 
 dnl Fix "mandir" variable...
 dnl
 
 dnl Fix "mandir" variable...
+if test "$mandir" = "\${datarootdir}/man" -a "$prefix" = "/"; then
+       # New GNU "standards" break previous ones, so make sure we use
+       # the right default location for the operating system...
+       mandir="\${prefix}/man"
+fi
+
 if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
        case "$uname" in
                Darwin* | Linux | GNU | *BSD* | AIX*)
 if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
        case "$uname" in
                Darwin* | Linux | GNU | *BSD* | AIX*)
@@ -103,5 +109,5 @@ AC_SUBST(MAN8EXT)
 AC_SUBST(MAN8DIR)
 
 dnl
 AC_SUBST(MAN8DIR)
 
 dnl
-dnl End of "$Id: cups-manpages.m4 5466 2006-04-26 19:52:27Z mike $".
+dnl End of "$Id: cups-manpages.m4 5799 2006-08-03 00:54:38Z mike $".
 dnl
 dnl
index d9e4f6255ba92678cea26812d7aa75c2ab9a960b..07909d7e1bc74206343b10d03a2bd0a804a28b98 100644 (file)
@@ -1,5 +1,5 @@
 dnl
 dnl
-dnl "$Id: configure.in 5609 2006-05-30 20:31:10Z mike $"
+dnl "$Id: configure.in 5804 2006-08-04 16:51:58Z mike $"
 dnl
 dnl   Configuration script for the Common UNIX Printing System (CUPS).
 dnl
 dnl
 dnl   Configuration script for the Common UNIX Printing System (CUPS).
 dnl
@@ -54,9 +54,17 @@ if test "x$LANGUAGES" != x; then
        INSTALL_LANGUAGES="install-languages"
        UNINSTALL_LANGUAGES="uninstall-languages"
        for lang in $LANGUAGES; do
        INSTALL_LANGUAGES="install-languages"
        UNINSTALL_LANGUAGES="uninstall-languages"
        for lang in $LANGUAGES; do
-               LANGFILES="$LANGFILES doc/$lang/index.html"
-               LANGFILES="$LANGFILES templates/$lang/edit-config.tmpl"
-               LANGFILES="$LANGFILES templates/$lang/header.tmpl"
+               if test -f doc/$lang/index.html.in; then
+                       LANGFILES="$LANGFILES doc/$lang/index.html"
+               fi
+
+               if test -f templates/$lang/edit-config.tmpl.in; then
+                       LANGFILES="$LANGFILES templates/$lang/edit-config.tmpl"
+               fi
+
+               if test -f templates/$lang/header.tmpl.in; then
+                       LANGFILES="$LANGFILES templates/$lang/header.tmpl"
+               fi
        done
 fi
 
        done
 fi
 
@@ -75,5 +83,5 @@ AC_OUTPUT(Makedefs packaging/cups.list init/cups.sh init/cups-lpd cups-config
 chmod +x cups-config
 
 dnl
 chmod +x cups-config
 
 dnl
-dnl End of "$Id: configure.in 5609 2006-05-30 20:31:10Z mike $".
+dnl End of "$Id: configure.in 5804 2006-08-04 16:51:58Z mike $".
 dnl
 dnl
index ef5084a64173a0f0ac6a2d3b1bdb4edc9f2a2a75..81a982b4743386e0e5f3471267beddf83654ff58 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
 #! /bin/sh
 #
-# "$Id: cups-config.in 5688 2006-06-23 20:33:08Z mike $"
+# "$Id: cups-config.in 5799 2006-08-03 00:54:38Z mike $"
 # 
 #   CUPS configuration utility.
 #
 # 
 #   CUPS configuration utility.
 #
@@ -32,6 +32,7 @@ bindir=@bindir@
 includedir=@includedir@
 libdir=@libdir@
 imagelibdir=@libdir@
 includedir=@includedir@
 libdir=@libdir@
 imagelibdir=@libdir@
+datarootdir=@datadir@
 datadir=@datadir@
 sysconfdir=@sysconfdir@
 cups_datadir=@CUPS_DATADIR@
 datadir=@datadir@
 sysconfdir=@sysconfdir@
 cups_datadir=@CUPS_DATADIR@
@@ -150,5 +151,5 @@ while test $# -gt 0; do
 done
 
 #
 done
 
 #
-# End of "$Id: cups-config.in 5688 2006-06-23 20:33:08Z mike $".
+# End of "$Id: cups-config.in 5799 2006-08-03 00:54:38Z mike $".
 #
 #
index 1af69254f6f56eba2a0a85f42c84caeb7993f2e1..e0064b42e69dd073d368b188c72a6498982c14d1 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: Makefile 5628 2006-06-05 15:25:23Z mike $"
+# "$Id: Makefile 5801 2006-08-03 02:20:57Z mike $"
 #
 #   API library Makefile for the Common UNIX Printing System (CUPS).
 #
 #
 #   API library Makefile for the Common UNIX Printing System (CUPS).
 #
@@ -93,6 +93,7 @@ OBJS  =       \
 HEADERS        =       \
                adminutil.h \
                array.h \
 HEADERS        =       \
                adminutil.h \
                array.h \
+               backend.h \
                cups.h \
                dir.h \
                file.h \
                cups.h \
                dir.h \
                file.h \
@@ -449,5 +450,5 @@ include Dependencies
 
 
 #
 
 
 #
-# End of "$Id: Makefile 5628 2006-06-05 15:25:23Z mike $".
+# End of "$Id: Makefile 5801 2006-08-03 02:20:57Z mike $".
 #
 #
index 3825b40bf8d6a119bcc1521b5c32bfd829cdbe8b..710780029b99a7c9b5e404510f369a840dc0949b 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: adminutil.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: adminutil.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Administration utility API definitions for the Common UNIX Printing
  *   System (CUPS).
  *
  *   Administration utility API definitions for the Common UNIX Printing
  *   System (CUPS).
@@ -103,7 +103,7 @@ cupsAdminCreateWindowsPPD(
                        linenum;        /* Current line number */
   time_t               curtime;        /* Current time */
   struct tm            *curdate;       /* Current date */
                        linenum;        /* Current line number */
   time_t               curtime;        /* Current time */
   struct tm            *curdate;       /* Current date */
-  static const char    *pattrs[] =     /* Printer attributes we want */
+  static const char * const pattrs[] = /* Printer attributes we want */
                        {
                          "job-hold-until-supported",
                          "job-hold-until-default",
                        {
                          "job-hold-until-supported",
                          "job-hold-until-default",
@@ -772,19 +772,31 @@ _cupsAdminGetServerSettings(
       if (!value)
         continue;
 
       if (!value)
         continue;
 
-      if (!strcasecmp(line, "Port"))
-      {
-       remote_access = 1;
-      }
-      else if (!strcasecmp(line, "Listen"))
+      if (!strcasecmp(line, "Port") || !strcasecmp(line, "Listen"))
       {
        char    *port;                  /* Pointer to port number, if any */
 
 
        if ((port = strrchr(value, ':')) != NULL)
          *port = '\0';
       {
        char    *port;                  /* Pointer to port number, if any */
 
 
        if ((port = strrchr(value, ':')) != NULL)
          *port = '\0';
+       else if (isdigit(*value & 255))
+       {
+        /*
+         * Listen on a port number implies remote access...
+         */
+
+         remote_access = 1;
+         continue;
+       }
 
 
-       if (strcasecmp(value, "localhost") && strcmp(value, "127.0.0.1"))
+       if (strcasecmp(value, "localhost") && strcmp(value, "127.0.0.1")
+#ifdef AF_LOCAL
+            && *value != '/'
+#endif /* AF_LOCAL */
+#ifdef AF_INET6
+            && strcmp(value, "::1")
+#endif /* AF_INET6 */
+           )
          remote_access = 1;
       }
       else if (!strcasecmp(line, "Browsing"))
          remote_access = 1;
       }
       else if (!strcasecmp(line, "Browsing"))
@@ -860,7 +872,14 @@ _cupsAdminGetServerSettings(
        in_location       = 0;
       }
       else if (!strcasecmp(line, "Allow") && in_admin_location &&
        in_location       = 0;
       }
       else if (!strcasecmp(line, "Allow") && in_admin_location &&
-               strcasecmp(value, "localhost") && strcasecmp(value, "127.0.0.1"))
+               strcasecmp(value, "localhost") && strcasecmp(value, "127.0.0.1")
+#ifdef AF_LOCAL
+              && *value != '/'
+#endif /* AF_LOCAL */
+#ifdef AF_INET6
+              && strcmp(value, "::1")
+#endif /* AF_INET6 */
+              )
       {
        remote_admin = 1;
       }
       {
        remote_admin = 1;
       }
@@ -1084,7 +1103,7 @@ _cupsAdminSetServerSettings(
        {
          cupsFilePuts(temp, "# Only listen for connections from the local "
                             "machine.\n");
        {
          cupsFilePuts(temp, "# Only listen for connections from the local "
                             "machine.\n");
-         cupsFilePrintf(temp, "Listen 127.0.0.1:%d\n", ippPort());
+         cupsFilePrintf(temp, "Listen localhost:%d\n", ippPort());
        }
 
 #ifdef CUPS_DEFAULT_DOMAINSOCKET
        }
 
 #ifdef CUPS_DEFAULT_DOMAINSOCKET
@@ -1440,7 +1459,7 @@ _cupsAdminSetServerSettings(
     {
       cupsFilePuts(temp,
                    "# Only listen for connections from the local machine.\n");
     {
       cupsFilePuts(temp,
                    "# Only listen for connections from the local machine.\n");
-      cupsFilePrintf(temp, "Listen 127.0.0.1:%d\n", ippPort());
+      cupsFilePrintf(temp, "Listen localhost:%d\n", ippPort());
     }
 
 #ifdef CUPS_DEFAULT_DOMAINSOCKET
     }
 
 #ifdef CUPS_DEFAULT_DOMAINSOCKET
@@ -1768,7 +1787,7 @@ get_cupsd_conf(
     * Read cupsd.conf via a HTTP GET request...
     */
 
     * Read cupsd.conf via a HTTP GET request...
     */
 
-    if ((fd = cupsTempFd(name, sizeof(name))) < 0)
+    if ((fd = cupsTempFd(name, namesize)) < 0)
     {
       *name = '\0';
 
     {
       *name = '\0';
 
@@ -1929,5 +1948,5 @@ write_option(cups_file_t     *dstfp,      /* I - PPD file */
 
 
 /*
 
 
 /*
- * End of "$Id: adminutil.c 5753 2006-07-18 19:53:24Z mike $".
+ * End of "$Id: adminutil.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 96b89ea056450d7594054ee7d93ad18909764d60..56deac727e1ced02f892c7d435bcc3f384693d74 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: attr.c 5119 2006-02-16 15:52:06Z mike $"
+ * "$Id: attr.c 5826 2006-08-15 19:04:11Z mike $"
  *
  *   PPD model-specific attribute routines for the Common UNIX Printing System
  *   (CUPS).
  *
  *   PPD model-specific attribute routines for the Common UNIX Printing System
  *   (CUPS).
  * @since CUPS 1.1.19@
  */
 
  * @since CUPS 1.1.19@
  */
 
-ppd_attr_t *                   /* O - Attribute or NULL if not found */
-ppdFindAttr(ppd_file_t *ppd,   /* I - PPD file data */
-            const char *name,  /* I - Attribute name */
-            const char *spec)  /* I - Specifier string or NULL */
+ppd_attr_t *                           /* O - Attribute or NULL if not found */
+ppdFindAttr(ppd_file_t *ppd,           /* I - PPD file data */
+            const char *name,          /* I - Attribute name */
+            const char *spec)          /* I - Specifier string or NULL */
 {
 {
-  ppd_attr_t   key;            /* Search key */
+  ppd_attr_t   key,                    /* Search key */
+               *attr;                  /* Current attribute */
+  int          diff;                   /* Current difference */
+
 
 
+  DEBUG_printf(("ppdFindAttr(ppd=%p, name=\"%s\", spec=\"%s\")\n", ppd,
+                name ? name : "(null)", spec ? spec : "(null)"));
 
  /*
   * Range check input...
 
  /*
   * Range check input...
@@ -72,7 +77,36 @@ ppdFindAttr(ppd_file_t *ppd, /* I - PPD file data */
   * Return the first matching attribute, if any...
   */
 
   * Return the first matching attribute, if any...
   */
 
-  return ((ppd_attr_t *)cupsArrayFind(ppd->sorted_attrs, &key));
+  if ((attr = (ppd_attr_t *)cupsArrayFind(ppd->sorted_attrs, &key)) != NULL)
+    return (attr);
+  else if (spec)
+    return (NULL);
+
+ /*
+  * No match found, loop through the sorted attributes to see if we can
+  * find a "wildcard" match for the attribute...
+  */
+
+  for (attr = (ppd_attr_t *)cupsArrayFirst(ppd->sorted_attrs);
+       attr;
+       attr = (ppd_attr_t *)cupsArrayNext(ppd->sorted_attrs))
+  {
+    if ((diff = strcasecmp(attr->name, name)) == 0)
+      break;
+
+    if (diff > 0)
+    {
+     /*
+      * All remaining attributes are > than the one we are trying to find...
+      */
+
+      cupsArrayIndex(ppd->sorted_attrs, cupsArrayCount(ppd->sorted_attrs));
+
+      return (NULL);
+    }
+  }
+
+  return (attr);
 }
 
 
 }
 
 
@@ -129,5 +163,5 @@ ppdFindNextAttr(ppd_file_t *ppd,    /* I - PPD file data */
 
 
 /*
 
 
 /*
- * End of "$Id: attr.c 5119 2006-02-16 15:52:06Z mike $".
+ * End of "$Id: attr.c 5826 2006-08-15 19:04:11Z mike $".
  */
  */
index 64b389a08f6c2ee0729bdc3c34c52530cac047c0..c74e522092e6b45d351b10382f034910c1ef9c84 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cups.h 5233 2006-03-06 03:39:28Z mike $"
+ * "$Id: cups.h 5805 2006-08-04 16:52:31Z mike $"
  *
  *   API definitions for the Common UNIX Printing System (CUPS).
  *
  *
  *   API definitions for the Common UNIX Printing System (CUPS).
  *
@@ -61,10 +61,10 @@ extern "C" {
  * Constants...
  */
 
  * Constants...
  */
 
-#  define CUPS_VERSION         1.0200
+#  define CUPS_VERSION         1.0203
 #  define CUPS_VERSION_MAJOR   1
 #  define CUPS_VERSION_MINOR   2
 #  define CUPS_VERSION_MAJOR   1
 #  define CUPS_VERSION_MINOR   2
-#  define CUPS_VERSION_PATCH   0
+#  define CUPS_VERSION_PATCH   3
 #  define CUPS_DATE_ANY                -1
 
 
 #  define CUPS_DATE_ANY                -1
 
 
@@ -244,5 +244,5 @@ extern cups_file_t  *cupsTempFile2(char *filename, int len);
 #endif /* !_CUPS_CUPS_H_ */
 
 /*
 #endif /* !_CUPS_CUPS_H_ */
 
 /*
- * End of "$Id: cups.h 5233 2006-03-06 03:39:28Z mike $".
+ * End of "$Id: cups.h 5805 2006-08-04 16:52:31Z mike $".
  */
  */
index 0fd52e8f148357bb34270f171b1ff7bfbd613c6d..ac5c5fc08056f1c0041e63c05b43d8f905055c31 100644 (file)
@@ -5,7 +5,7 @@
  *
  *   This set of APIs abstracts enumeration of directory entries.
  *
  *
  *   This set of APIs abstracts enumeration of directory entries.
  *
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2006 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
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -39,9 +39,9 @@
  * C++ magic...
  */
 
  * C++ magic...
  */
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 extern "C" {
 extern "C" {
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 
 
 /*
 
 
 /*
@@ -67,9 +67,9 @@ extern cups_dentry_t  *cupsDirRead(cups_dir_t *dp);
 extern void            cupsDirRewind(cups_dir_t *dp);
 
 
 extern void            cupsDirRewind(cups_dir_t *dp);
 
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 }
 }
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 #endif /* !_CUPS_DIR_H_ */
 
 /*
 #endif /* !_CUPS_DIR_H_ */
 
 /*
index a5c1372f54f9220887d4ab9378767427907d9ceb..246972d76dc71cc7645aa1676214e69b1ef031a1 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: file.c 5324 2006-03-23 16:47:46Z mike $"
+ * "$Id: file.c 5812 2006-08-09 22:42:51Z mike $"
  *
  *   File functions for the Common UNIX Printing System (CUPS).
  *
  *
  *   File functions for the Common UNIX Printing System (CUPS).
  *
@@ -1260,6 +1260,7 @@ cupsFileRewind(cups_file_t *fp)           /* I - CUPS file */
   fp->pos = 0;
   fp->ptr = NULL;
   fp->end = NULL;
   fp->pos = 0;
   fp->ptr = NULL;
   fp->end = NULL;
+  fp->eof = 0;
 
   return (0);
 }
 
   return (0);
 }
@@ -2080,5 +2081,5 @@ cups_write(cups_file_t *fp,               /* I - CUPS file */
 
 
 /*
 
 
 /*
- * End of "$Id: file.c 5324 2006-03-23 16:47:46Z mike $".
+ * End of "$Id: file.c 5812 2006-08-09 22:42:51Z mike $".
  */
  */
index 24649147b79ae8e0cd99028ebddb92929b29748a..b36aa0577cfb945a25a410e005851e3486bf655c 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: file.h 5319 2006-03-21 15:28:29Z mike $"
+ * "$Id: file.h 5769 2006-07-20 17:17:14Z mike $"
  *
  *   Public file definitions for the Common UNIX Printing System (CUPS).
  *
  *
  *   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.
  *
  *   our own file functions allows us to provide transparent support of
  *   gzip'd print files, PPD files, etc.
  *
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+ *   Copyright 1997-2006 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
  *
  *   These coded instructions, statements, and computer programs are the
  *   property of Easy Software Products and are protected by Federal
@@ -47,9 +47,9 @@ typedef off_t ssize_t;                        /* @private@ */
  * C++ magic...
  */
 
  * C++ magic...
  */
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 extern "C" {
 extern "C" {
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 
 
 /*
 
 
 /*
@@ -103,11 +103,11 @@ extern int                cupsFileUnlock(cups_file_t *fp);
 extern ssize_t         cupsFileWrite(cups_file_t *fp, const char *buf, size_t bytes);
 
 
 extern ssize_t         cupsFileWrite(cups_file_t *fp, const char *buf, size_t bytes);
 
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 }
 }
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 #endif /* !_CUPS_FILE_H_ */
 
 /*
 #endif /* !_CUPS_FILE_H_ */
 
 /*
- * End of "$Id: file.h 5319 2006-03-21 15:28:29Z mike $".
+ * End of "$Id: file.h 5769 2006-07-20 17:17:14Z mike $".
  */
  */
index 84e20462007ff203d46ecc974858b09135f7dda6..504be39cfeff245e80d194413c48a7cd4bb50af9 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: http.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: http.c 5889 2006-08-24 21:44:35Z mike $"
  *
  *   HTTP routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   HTTP routines for the Common UNIX Printing System (CUPS).
  *
@@ -1100,15 +1100,20 @@ httpPrintf(http_t     *http,            /* I - HTTP connection */
 
   DEBUG_printf(("httpPrintf: %s", buf));
 
 
   DEBUG_printf(("httpPrintf: %s", buf));
 
-  if (http->wused)
+  if (http->data_encoding == HTTP_ENCODE_FIELDS)
+    return (httpWrite2(http, buf, bytes));
+  else
   {
   {
-    DEBUG_puts("    flushing existing data...");
+    if (http->wused)
+    {
+      DEBUG_puts("    flushing existing data...");
 
 
-    if (httpFlushWrite(http) < 0)
-      return (-1);
-  }
+      if (httpFlushWrite(http) < 0)
+       return (-1);
+    }
 
 
-  return (http_write(http, buf, bytes));
+    return (http_write(http, buf, bytes));
+  }
 }
 
 
 }
 
 
@@ -1888,7 +1893,7 @@ httpWrite2(http_t     *http,              /* I - HTTP connection */
       httpFlushWrite(http);
     }
 
       httpFlushWrite(http);
     }
 
-    if ((length + http->wused) <= sizeof(http->wbuffer))
+    if ((length + http->wused) < sizeof(http->wbuffer))
     {
      /*
       * Write to buffer...
     {
      /*
       * Write to buffer...
@@ -2154,11 +2159,20 @@ http_send(http_t       *http,   /* I - HTTP connection */
     if (httpReconnect(http))
       return (-1);
 
     if (httpReconnect(http))
       return (-1);
 
+ /*
+  * Flush any written data that is pending...
+  */
+
+  if (http->wused)
+    httpFlushWrite(http);
+
  /*
   * Send the request header...
   */
 
  /*
   * Send the request header...
   */
 
-  http->state = request;
+  http->state         = request;
+  http->data_encoding = HTTP_ENCODE_FIELDS;
+
   if (request == HTTP_POST || request == HTTP_PUT)
     http->state ++;
 
   if (request == HTTP_POST || request == HTTP_PUT)
     http->state ++;
 
@@ -2211,6 +2225,7 @@ http_send(http_t       *http,     /* I - HTTP connection */
     return (-1);
   }
 
     return (-1);
   }
 
+  httpFlushWrite(http);
   httpGetLength2(http);
   httpClearFields(http);
 
   httpGetLength2(http);
   httpClearFields(http);
 
@@ -2811,5 +2826,5 @@ http_write_ssl(http_t     *http,  /* I - HTTP connection */
 
 
 /*
 
 
 /*
- * End of "$Id: http.c 5753 2006-07-18 19:53:24Z mike $".
+ * End of "$Id: http.c 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index 6303af452c23829e8af773034dfcd427bdef71fe..2f8a28d73fef6044ee9fc597b7ed85a3fc4324e5 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: http.h 5716 2006-07-11 17:56:57Z mike $"
+ * "$Id: http.h 5889 2006-08-24 21:44:35Z mike $"
  *
  *   Hyper-Text Transport Protocol definitions for the Common UNIX Printing
  *   System (CUPS).
  *
  *   Hyper-Text Transport Protocol definitions for the Common UNIX Printing
  *   System (CUPS).
@@ -39,8 +39,8 @@
 #    include <winsock2.h>
 #    include <ws2tcpip.h>
 #  else
 #    include <winsock2.h>
 #    include <ws2tcpip.h>
 #  else
-#    ifdef __sgi /* IRIX needs this for IPv6 support!?! */
-#      define INET6
+#    ifdef __sgi
+#      define INET6                    /* IRIX IPv6 support... */
 #    endif /* __sgi */
 #    include <unistd.h>
 #    include <sys/time.h>
 #    endif /* __sgi */
 #    include <unistd.h>
 #    include <sys/time.h>
@@ -53,6 +53,9 @@
 #    if !defined(__APPLE__) || !defined(TCP_NODELAY)
 #      include <netinet/tcp.h>
 #    endif /* !__APPLE__ || !TCP_NODELAY */
 #    if !defined(__APPLE__) || !defined(TCP_NODELAY)
 #      include <netinet/tcp.h>
 #    endif /* !__APPLE__ || !TCP_NODELAY */
+#    if defined(AF_UNIX) && !defined(AF_LOCAL)
+#      define AF_LOCAL AF_UNIX         /* Older UNIX's have old names... */
+#    endif /* AF_UNIX && !AF_LOCAL */
 #    ifdef AF_LOCAL
 #      include <sys/un.h>
 #    endif /* AF_LOCAL */
 #    ifdef AF_LOCAL
 #      include <sys/un.h>
 #    endif /* AF_LOCAL */
@@ -139,7 +142,8 @@ typedef enum http_auth_e            /**** HTTP authentication types ****/
 typedef enum http_encoding_e           /**** HTTP transfer encoding values ****/
 {
   HTTP_ENCODE_LENGTH,                  /* Data is sent with Content-Length */
 typedef enum http_encoding_e           /**** HTTP transfer encoding values ****/
 {
   HTTP_ENCODE_LENGTH,                  /* Data is sent with Content-Length */
-  HTTP_ENCODE_CHUNKED                  /* Data is chunked */
+  HTTP_ENCODE_CHUNKED,                 /* Data is chunked */
+  HTTP_ENCODE_FIELDS                   /* Sending HTTP fields */
 } http_encoding_t;
 
 typedef enum http_encryption_e         /**** HTTP encryption values ****/
 } http_encoding_t;
 
 typedef enum http_encryption_e         /**** HTTP encryption values ****/
@@ -504,5 +508,5 @@ extern ssize_t              httpWrite2(http_t *http, const char *buffer,
 #endif /* !_CUPS_HTTP_H_ */
 
 /*
 #endif /* !_CUPS_HTTP_H_ */
 
 /*
- * End of "$Id: http.h 5716 2006-07-11 17:56:57Z mike $".
+ * End of "$Id: http.h 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index 58de0eae5ddf65af99581366ddba6d7b4d6166f1..14a5c1dd54097aac437e92391bb379d58b0b1efb 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: i18n.h 5366 2006-04-02 16:11:04Z mike $"
+ * "$Id: i18n.h 5833 2006-08-16 20:05:58Z mike $"
  *
  *   (Private) localization support for the Common UNIX Printing System (CUPS).
  *
  *
  *   (Private) localization support for the Common UNIX Printing System (CUPS).
  *
@@ -105,6 +105,7 @@ extern const char   *_cupsLangString(cups_lang_t *lang, const char *message);
 extern void            _cupsMessageFree(cups_array_t *a);
 extern cups_array_t    *_cupsMessageLoad(const char *filename);
 extern const char      *_cupsMessageLookup(cups_array_t *a, const char *m);
 extern void            _cupsMessageFree(cups_array_t *a);
 extern cups_array_t    *_cupsMessageLoad(const char *filename);
 extern const char      *_cupsMessageLookup(cups_array_t *a, const char *m);
+extern void            _cupsSetLocale(void);
 
 #  ifdef __cplusplus
 }
 
 #  ifdef __cplusplus
 }
@@ -113,5 +114,5 @@ extern const char   *_cupsMessageLookup(cups_array_t *a, const char *m);
 #endif /* !_CUPS_I18N_H_ */
 
 /*
 #endif /* !_CUPS_I18N_H_ */
 
 /*
- * End of "$Id: i18n.h 5366 2006-04-02 16:11:04Z mike $".
+ * End of "$Id: i18n.h 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index fef06af1c42444244e1148d5692ffdb5732448c6..d4911d60c086c8b6716331c1558a87f0e35b4c6e 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ipp-support.c 5246 2006-03-08 13:22:09Z mike $"
+ * "$Id: ipp-support.c 5905 2006-08-29 20:48:59Z mike $"
  *
  *   Internet Printing Protocol support functions for the Common UNIX
  *   Printing System (CUPS).
  *
  *   Internet Printing Protocol support functions for the Common UNIX
  *   Printing System (CUPS).
@@ -304,19 +304,48 @@ ippPort(void)
   _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
 
 
   _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
 
 
+  DEBUG_puts("ippPort()");
+
+  if (!cg->ipp_port)
+  {
+   /*
+    * See if the server definition includes the port number...
+    */
+
+    DEBUG_puts("ippPort: Not initialized...");
+
+    cupsServer();
+
+#ifdef DEBUG
+    if (cg->ipp_port)
+      puts("ippPort: Set via cupsServer()...");
+#endif /* DEBUG */
+  }
+
   if (!cg->ipp_port)
   {
     if ((ipp_port = getenv("IPP_PORT")) != NULL)
   if (!cg->ipp_port)
   {
     if ((ipp_port = getenv("IPP_PORT")) != NULL)
+    {
+      DEBUG_puts("ippPort: Set via IPP_PORT...");
       portnum = atoi(ipp_port);
       portnum = atoi(ipp_port);
+    }
     else if ((port = getservbyname("ipp", NULL)) == NULL)
     else if ((port = getservbyname("ipp", NULL)) == NULL)
+    {
+      DEBUG_puts("ippPort: Set via CUPS_DEFAULT_IPP_PORT...");
       portnum = CUPS_DEFAULT_IPP_PORT;
       portnum = CUPS_DEFAULT_IPP_PORT;
+    }
     else
     else
+    {
+      DEBUG_puts("ippPort: Set via ipp service entry...");
       portnum = ntohs(port->s_port);
       portnum = ntohs(port->s_port);
+    }
 
     if (portnum > 0)
       cg->ipp_port = portnum;
   }
 
 
     if (portnum > 0)
       cg->ipp_port = portnum;
   }
 
+  DEBUG_printf(("ippPort: Returning %d...\n", cg->ipp_port));
+
   return (cg->ipp_port);
 }
 
   return (cg->ipp_port);
 }
 
@@ -328,10 +357,12 @@ ippPort(void)
 void
 ippSetPort(int p)                      /* I - Port number to use */
 {
 void
 ippSetPort(int p)                      /* I - Port number to use */
 {
+  DEBUG_printf(("ippSetPort(p=%d)\n", p));
+
   _cupsGlobals()->ipp_port = p;
 }
 
 
 /*
   _cupsGlobals()->ipp_port = p;
 }
 
 
 /*
- * End of "$Id: ipp-support.c 5246 2006-03-08 13:22:09Z mike $".
+ * End of "$Id: ipp-support.c 5905 2006-08-29 20:48:59Z mike $".
  */
  */
index 6435a0eca79d43fde2105994d6a2e81b8d778835..32b578fc767702db3665a0bb4ac8e7bde6132896 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ipp.h 5138 2006-02-21 10:49:06Z mike $"
+ * "$Id: ipp.h 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Internet Printing Protocol definitions for the Common UNIX Printing
  *   System (CUPS).
  *
  *   Internet Printing Protocol definitions for the Common UNIX Printing
  *   System (CUPS).
@@ -172,10 +172,11 @@ typedef enum ipp_jstate_e         /**** Job States.... */
   IPP_JOB_HELD,                                /* Job is held for printing */
   IPP_JOB_PROCESSING,                  /* Job is currently printing */
   IPP_JOB_STOPPED,                     /* Job has been stopped */
   IPP_JOB_HELD,                                /* Job is held for printing */
   IPP_JOB_PROCESSING,                  /* Job is currently printing */
   IPP_JOB_STOPPED,                     /* Job has been stopped */
-  IPP_JOB_CANCELLED,                   /* Job has been cancelled */
+  IPP_JOB_CANCELED,                    /* Job has been canceled */
   IPP_JOB_ABORTED,                     /* Job has aborted due to error */
   IPP_JOB_COMPLETED                    /* Job has completed successfully */
 } ipp_jstate_t;
   IPP_JOB_ABORTED,                     /* Job has aborted due to error */
   IPP_JOB_COMPLETED                    /* Job has completed successfully */
 } ipp_jstate_t;
+#define IPP_JOB_CANCELLED IPP_JOB_CANCELED
 
 typedef enum ipp_pstate_e              /**** Printer States.... */
 {
 
 typedef enum ipp_pstate_e              /**** Printer States.... */
 {
@@ -304,10 +305,11 @@ typedef enum ipp_status_e         /**** IPP status codes... ****/
   IPP_TEMPORARY_ERROR,                 /* server-error-temporary-error */
   IPP_NOT_ACCEPTING,                   /* server-error-not-accepting-jobs */
   IPP_PRINTER_BUSY,                    /* server-error-busy */
   IPP_TEMPORARY_ERROR,                 /* server-error-temporary-error */
   IPP_NOT_ACCEPTING,                   /* server-error-not-accepting-jobs */
   IPP_PRINTER_BUSY,                    /* server-error-busy */
-  IPP_ERROR_JOB_CANCELLED,             /* server-error-job-canceled */
+  IPP_ERROR_JOB_CANCELED,              /* server-error-job-canceled */
   IPP_MULTIPLE_JOBS_NOT_SUPPORTED,     /* server-error-multiple-document-jobs-not-supported */
   IPP_PRINTER_IS_DEACTIVATED           /* server-error-printer-is-deactivated */
 } ipp_status_t;
   IPP_MULTIPLE_JOBS_NOT_SUPPORTED,     /* server-error-multiple-document-jobs-not-supported */
   IPP_PRINTER_IS_DEACTIVATED           /* server-error-printer-is-deactivated */
 } ipp_status_t;
+#define IPP_ERROR_JOB_CANCELLED IPP_ERROR_JOB_CANCELED
 
 typedef unsigned char ipp_uchar_t;     /**** Unsigned 8-bit integer/character ****/
 
 
 typedef unsigned char ipp_uchar_t;     /**** Unsigned 8-bit integer/character ****/
 
@@ -497,5 +499,5 @@ extern ipp_state_t  ippWriteIO(void *dst, ipp_iocb_t cb, int blocking,
 #endif /* !_CUPS_IPP_H_ */
 
 /*
 #endif /* !_CUPS_IPP_H_ */
 
 /*
- * End of "$Id: ipp.h 5138 2006-02-21 10:49:06Z mike $".
+ * End of "$Id: ipp.h 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 4430c6792d7b2a02eb1b2d8a0eab675a641c0dc2..909692347331db72c102b8e59befda71219f5a0a 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: langprintf.c 4924 2006-01-13 01:55:20Z mike $"
+ * "$Id: langprintf.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   Localized printf/puts functions for the Common UNIX Printing
  *   System (CUPS).
  *
  *   Localized printf/puts functions for the Common UNIX Printing
  *   System (CUPS).
@@ -28,6 +28,7 @@
  *
  *   _cupsLangPrintf() - Print a formatted message string to a file.
  *   _cupsLangPuts()   - Print a static message string to a file.
  *
  *   _cupsLangPrintf() - Print a formatted message string to a file.
  *   _cupsLangPuts()   - Print a static message string to a file.
+ *   _cupsSetLocale()  - Set the current locale.
  */
 
 /*
  */
 
 /*
@@ -139,5 +140,50 @@ _cupsLangPuts(FILE        *fp,             /* I - File to write to */
 
 
 /*
 
 
 /*
- * End of "$Id: langprintf.c 4924 2006-01-13 01:55:20Z mike $".
+ * '_cupsSetLocale()' - Set the current locale.
+ */
+
+void
+_cupsSetLocale(void)
+{
+#ifdef LC_TIME
+    const char *lc_time;               /* Current LC_TIME value */
+    char       new_lc_time[255],       /* New LC_TIME value */
+               *charset;               /* Pointer to character set */
+#endif /* LC_TIME */
+
+
+ /*
+  * Set the locale so that times, etc. are displayed properly.
+  *
+  * Unfortunately, while we need the localized time value, we *don't*
+  * want to use the localized charset for the time value, so we need
+  * to set LC_TIME to the locale name with .UTF-8 on the end (if
+  * the locale includes a character set specifier...)
+  */
+
+  setlocale(LC_ALL, "");
+
+#ifdef LC_TIME
+  if ((lc_time = setlocale(LC_TIME, NULL)) == NULL)
+    lc_time = setlocale(LC_ALL, NULL);
+
+  if (lc_time)
+  {
+    strlcpy(new_lc_time, lc_time, sizeof(new_lc_time));
+    if ((charset = strchr(new_lc_time, '.')) == NULL)
+      charset = new_lc_time + strlen(new_lc_time);
+
+    strlcpy(charset, ".UTF-8", sizeof(new_lc_time) - (charset - new_lc_time));
+  }
+  else
+    strcpy(new_lc_time, "C");
+
+  setlocale(LC_TIME, new_lc_time);
+#endif /* LC_TIME */
+}
+
+
+/*
+ * End of "$Id: langprintf.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index b74738dbf9d2295cd8aa0c05654ff768bfb4b2f8..d46c9fea9028925bddd8f0f8e6569d2d058cc874 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: language.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: language.c 5769 2006-07-20 17:17:14Z mike $"
  *
  *   I18N/language support for the Common UNIX Printing System (CUPS).
  *
  *
  *   I18N/language support for the Common UNIX Printing System (CUPS).
  *
@@ -1288,6 +1288,8 @@ cups_unquote(char       *d,               /* O - Unquoted string */
          *d = *d * 8 + *s - '0';
          s ++;
        }
          *d = *d * 8 + *s - '0';
          s ++;
        }
+
+       d ++;
       }
       else
       {
       }
       else
       {
@@ -1312,5 +1314,5 @@ cups_unquote(char       *d,               /* O - Unquoted string */
 
 
 /*
 
 
 /*
- * End of "$Id: language.c 5753 2006-07-18 19:53:24Z mike $".
+ * End of "$Id: language.c 5769 2006-07-20 17:17:14Z mike $".
  */
  */
index a7afc43d19a4eeeaca7ef577a684621ace7d407d..cad2f10af38dd480c1df786653ae5ca14112c0d6 100644 (file)
@@ -16,6 +16,7 @@ _cupsMessageFree
 _cupsMessageLoad
 _cupsMessageLookup
 _cupsSetError
 _cupsMessageLoad
 _cupsMessageLookup
 _cupsSetError
+_cupsSetLocale
 _cupsStrAlloc
 _cupsStrFlush
 _cupsStrFormatd
 _cupsStrAlloc
 _cupsStrFlush
 _cupsStrFormatd
index b07609bbbd8e561a30c10e0c614b00831a25131b..c2be099b4385e0d2ccf7937a29fc4d5bf93c0d81 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: localize.c 5391 2006-04-14 12:26:50Z mike $"
+ * "$Id: localize.c 5826 2006-08-15 19:04:11Z mike $"
  *
  *   PPD custom option routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   PPD custom option routines for the Common UNIX Printing System (CUPS).
  *
@@ -80,6 +80,8 @@ ppdLocalize(ppd_file_t *ppd)          /* I - PPD file */
   * Range check input...
   */
 
   * Range check input...
   */
 
+  DEBUG_printf(("ppdLocalize(ppd=%p)\n", ppd));
+
   if (!ppd)
     return (-1);
 
   if (!ppd)
     return (-1);
 
@@ -93,6 +95,9 @@ ppdLocalize(ppd_file_t *ppd)          /* I - PPD file */
   strlcpy(ll_CC, lang->language, sizeof(ll_CC));
   strlcpy(ll, lang->language, sizeof(ll));
 
   strlcpy(ll_CC, lang->language, sizeof(ll_CC));
   strlcpy(ll, lang->language, sizeof(ll));
 
+  DEBUG_printf(("    lang->language=\"%s\", ll=\"%s\", ll_CC=\"%s\"...\n",
+                lang->language, ll, ll_CC));
+
  /*
   * Now lookup all of the groups, options, choices, etc.
   */
  /*
   * Now lookup all of the groups, options, choices, etc.
   */
@@ -165,17 +170,29 @@ ppd_text(ppd_file_t *ppd,         /* I - PPD file */
   ppd_attr_t   *attr;                  /* Current attribute */
 
 
   ppd_attr_t   *attr;                  /* Current attribute */
 
 
+  DEBUG_printf(("ppd_text(ppd=%p, keyword=\"%s\", spec=\"%s\", "
+                "ll_CC=\"%s\", ll=\"%s\")\n",
+                ppd, keyword, spec, ll_CC, ll));
+
  /*
   * Look for Keyword.ll_CC, then Keyword.ll...
   */
 
  /*
   * Look for Keyword.ll_CC, then Keyword.ll...
   */
 
-  snprintf(lkeyword, sizeof(lkeyword), "%s.%s", keyword, ll_CC);
+  snprintf(lkeyword, sizeof(lkeyword), "%s.%s", ll_CC, keyword);
   if ((attr = ppdFindAttr(ppd, lkeyword, spec)) == NULL)
   {
   if ((attr = ppdFindAttr(ppd, lkeyword, spec)) == NULL)
   {
-    snprintf(lkeyword, sizeof(lkeyword), "%s.%s", keyword, ll);
+    snprintf(lkeyword, sizeof(lkeyword), "%s.%s", ll, keyword);
     attr = ppdFindAttr(ppd, lkeyword, spec);
   }
 
     attr = ppdFindAttr(ppd, lkeyword, spec);
   }
 
+#ifdef DEBUG
+  if (attr)
+    printf("    *%s %s/%s: \"%s\"\n", attr->name, attr->spec, attr->text,
+           attr->value ? attr->value : "");
+  else
+    puts("    NOT FOUND");
+#endif /* DEBUG */
+
  /*
   * Return text if we find it...
   */
  /*
   * Return text if we find it...
   */
@@ -185,5 +202,5 @@ ppd_text(ppd_file_t *ppd,           /* I - PPD file */
 
 
 /*
 
 
 /*
- * End of "$Id: localize.c 5391 2006-04-14 12:26:50Z mike $".
+ * End of "$Id: localize.c 5826 2006-08-15 19:04:11Z mike $".
  */
  */
index 2a89aca3c6cf0ba32b410d521e0235e229216a5b..752056636f67fba1e3180ab75a30df4ae703b185 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: notify.c 4961 2006-01-20 22:19:13Z mike $"
+ * "$Id: notify.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Notification routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Notification routines for the Common UNIX Printing System (CUPS).
  *
@@ -104,7 +104,7 @@ cupsNotifySubject(cups_lang_t *lang,        /* I - Language data */
       case IPP_JOB_STOPPED :
           state = _cupsLangString(lang, _("stopped"));
          break;
       case IPP_JOB_STOPPED :
           state = _cupsLangString(lang, _("stopped"));
          break;
-      case IPP_JOB_CANCELLED :
+      case IPP_JOB_CANCELED :
           state = _cupsLangString(lang, _("canceled"));
          break;
       case IPP_JOB_ABORTED :
           state = _cupsLangString(lang, _("canceled"));
          break;
       case IPP_JOB_ABORTED :
@@ -207,5 +207,5 @@ cupsNotifyText(cups_lang_t *lang,   /* I - Language data */
 
 
 /*
 
 
 /*
- * End of "$Id: notify.c 4961 2006-01-20 22:19:13Z mike $".
+ * End of "$Id: notify.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 540b14a8d47e787e0ae5824d35be7901dc3555cb..15abaa8078e782400aeafc4af9235333dad52fec 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ppd.c 5333 2006-03-24 00:52:21Z mike $"
+ * "$Id: ppd.c 5826 2006-08-15 19:04:11Z mike $"
  *
  *   PPD file routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   PPD file routines for the Common UNIX Printing System (CUPS).
  *
@@ -2037,10 +2037,8 @@ ppd_compare_attrs(ppd_attr_t *a, /* I - First attribute */
 
   if ((ret = strcasecmp(a->name, b->name)) != 0)
     return (ret);
 
   if ((ret = strcasecmp(a->name, b->name)) != 0)
     return (ret);
-  else if (a->spec[0] && b->spec[0])
-    return (strcasecmp(a->spec, b->spec));
   else
   else
-    return (0);
+    return (strcasecmp(a->spec, b->spec));
 }
 
 
 }
 
 
@@ -2938,5 +2936,5 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
 
 /*
 
 
 /*
- * End of "$Id: ppd.c 5333 2006-03-24 00:52:21Z mike $".
+ * End of "$Id: ppd.c 5826 2006-08-15 19:04:11Z mike $".
  */
  */
index 0fc439793228097333e9d95c3fb222e888c3e501..32e2e50b9cc3f8164c6ee3eac513e4d0314b2d18 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: testi18n.c 5444 2006-04-20 18:16:54Z mike $"
+ * "$Id: testi18n.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   Internationalization test for Common UNIX Printing System (CUPS).
  *
  *
  *   Internationalization test for Common UNIX Printing System (CUPS).
  *
@@ -82,7 +82,6 @@ main(int  argc,                               /* I - Argument Count */
     /* "A != <CJK U+4E42>." - use Windows 950 (Big5) or EUC-TW */
   cups_utf8_t  utf8dest[1024];         /* UTF-8 destination string */
   cups_utf32_t utf32dest[1024];        /* UTF-32 destination string */
     /* "A != <CJK U+4E42>." - use Windows 950 (Big5) or EUC-TW */
   cups_utf8_t  utf8dest[1024];         /* UTF-8 destination string */
   cups_utf32_t utf32dest[1024];        /* UTF-32 destination string */
-  _cups_vmap_t  *vmap;                 /* VBCS charmap pointer */
 
 
  /*
 
 
  /*
@@ -190,7 +189,7 @@ main(int  argc,                             /* I - Argument Count */
 
   fputs("_cupsCharmapGet(CUPS_EUC_JP): ", stdout);
 
 
   fputs("_cupsCharmapGet(CUPS_EUC_JP): ", stdout);
 
-  if ((vmap = (_cups_vmap_t *)_cupsCharmapGet(CUPS_EUC_JP)) == NULL)
+  if (!_cupsCharmapGet(CUPS_EUC_JP))
   {
     errors ++;
     puts("FAIL");
   {
     errors ++;
     puts("FAIL");
@@ -204,7 +203,7 @@ main(int  argc,                             /* I - Argument Count */
 
   fputs("_cupsCharmapGet(CUPS_EUC_TW): ", stdout);
 
 
   fputs("_cupsCharmapGet(CUPS_EUC_TW): ", stdout);
 
-  if ((vmap = (_cups_vmap_t *)_cupsCharmapGet(CUPS_EUC_TW)) == NULL)
+  if (!_cupsCharmapGet(CUPS_EUC_TW))
   {
     errors ++;
     puts("FAIL");
   {
     errors ++;
     puts("FAIL");
@@ -556,5 +555,5 @@ print_utf8(const char            *msg,      /* I - Message String */
 
 
 /*
 
 
 /*
- * End of "$Id: testi18n.c 5444 2006-04-20 18:16:54Z mike $"
+ * End of "$Id: testi18n.c 5838 2006-08-17 14:41:42Z mike $"
  */
  */
index bdaf944a4e6190e5926cda88763a10d7fd51f6b9..37032ff62e5e37d2469eaa6fb84e98ec6f3a5539 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: testppd.c 5700 2006-06-26 19:20:39Z mike $"
+ * "$Id: testppd.c 5826 2006-08-15 19:04:11Z mike $"
  *
  *   PPD test program for the Common UNIX Printing System (CUPS).
  *
  *
  *   PPD test program for the Common UNIX Printing System (CUPS).
  *
@@ -192,10 +192,18 @@ main(int  argc,                           /* I - Number of command-line arguments */
     else
     {
       int              i, j, k;        /* Looping vars */
     else
     {
       int              i, j, k;        /* Looping vars */
+      ppd_attr_t       *attr;          /* Current attribute */
       ppd_group_t      *group;         /* Option group */
       ppd_option_t     *option;        /* Option */
       ppd_group_t      *group;         /* Option group */
       ppd_option_t     *option;        /* Option */
+      char             lang[255];      /* LANG environment variable */
 
 
 
 
+      if (argc > 2)
+      {
+        snprintf(lang, sizeof(lang), "LANG=%s", argv[2]);
+       putenv(lang);
+      }
+
       ppdLocalize(ppd);
 
       for (i = ppd->num_groups, group = ppd->groups;
       ppdLocalize(ppd);
 
       for (i = ppd->num_groups, group = ppd->groups;
@@ -203,7 +211,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
           i --, group ++)
       {
        printf("%s (%s):\n", group->name, group->text);
           i --, group ++)
       {
        printf("%s (%s):\n", group->name, group->text);
-       
+
        for (j = group->num_options, option = group->options;
             j > 0;
             j --, option ++)
        for (j = group->num_options, option = group->options;
             j > 0;
             j --, option ++)
@@ -215,6 +223,14 @@ main(int  argc,                            /* I - Number of command-line arguments */
                   option->choices[k].text);
        }
       }
                   option->choices[k].text);
        }
       }
+
+      puts("Attributes:");
+
+      for (attr = (ppd_attr_t *)cupsArrayFirst(ppd->sorted_attrs);
+           attr;
+          attr = (ppd_attr_t *)cupsArrayNext(ppd->sorted_attrs))
+        printf("    *%s %s/%s: \"%s\"\n", attr->name, attr->spec,
+              attr->text, attr->value ? attr->value : "");
     }
   }
 
     }
   }
 
@@ -223,5 +239,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
 
 
 /*
- * End of "$Id: testppd.c 5700 2006-06-26 19:20:39Z mike $".
+ * End of "$Id: testppd.c 5826 2006-08-15 19:04:11Z mike $".
  */
  */
index c7384d9cb8501d4e1e44858cb6e179c49558db4e..40bf2f05469733fec0ea0f1d1715175ce14512a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: transcode.c 5373 2006-04-06 20:03:32Z mike $"
+ * "$Id: transcode.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   Transcoding support for the Common UNIX Printing System (CUPS).
  *
  *
  *   Transcoding support for the Common UNIX Printing System (CUPS).
  *
@@ -408,7 +408,6 @@ cupsUTF8ToUTF32(
     const cups_utf8_t *src,            /* I - Source string */
     const int         maxout)          /* I - Max output */
 {
     const cups_utf8_t *src,            /* I - Source string */
     const int         maxout)          /* I - Max output */
 {
-  size_t       srclen;                 /* Source string length */
   int          i;                      /* Looping variable */
   cups_utf8_t  ch;                     /* Character value */
   cups_utf8_t  next;                   /* Next character value */
   int          i;                      /* Looping variable */
   cups_utf8_t  ch;                     /* Character value */
   cups_utf8_t  next;                   /* Next character value */
@@ -430,7 +429,6 @@ cupsUTF8ToUTF32(
   */
 
   *dest++ = 0xfeff;
   */
 
   *dest++ = 0xfeff;
-  srclen  = strlen((char *)src);
 
   for (i = maxout - 1; *src && i > 0; i --)
   {
 
   for (i = maxout - 1; *src && i > 0; i --)
   {
@@ -1142,7 +1140,7 @@ free_vbcs_charmap(_cups_vmap_t *vmap)     /* I - Character set */
  */
 
 
  */
 
 
-void *                                 /* O - Charset map pointer */
+static void *                          /* O - Charset map pointer */
 get_charmap(
     const cups_encoding_t encoding)    /* I - Encoding */
 {
 get_charmap(
     const cups_encoding_t encoding)    /* I - Encoding */
 {
@@ -1585,5 +1583,5 @@ get_vbcs_charmap(
 
 
 /*
 
 
 /*
- * End of "$Id: transcode.c 5373 2006-04-06 20:03:32Z mike $"
+ * End of "$Id: transcode.c 5838 2006-08-17 14:41:42Z mike $"
  */
  */
index b75dc3790539bfa51a550717cba9765562a9f686..7c9a8a848982fd2e0f902ff5bc18bf04ff6a11f6 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: usersys.c 5182 2006-02-26 04:10:27Z mike $"
+ * "$Id: usersys.c 5902 2006-08-29 15:51:19Z mike $"
  *
  *   User, system, and password routines for the Common UNIX Printing
  *   System (CUPS).
  *
  *   User, system, and password routines for the Common UNIX Printing
  *   System (CUPS).
@@ -49,6 +49,7 @@
 #ifdef WIN32
 #  include <windows.h>
 #endif /* WIN32 */
 #ifdef WIN32
 #  include <windows.h>
 #endif /* WIN32 */
+#include "debug.h"
 
 
 /*
 
 
 /*
@@ -224,15 +225,21 @@ cupsServer(void)
 
         linenum = 0;
        while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum) != NULL)
 
         linenum = 0;
        while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum) != NULL)
+        {
+          DEBUG_printf(("cupsServer: %d: %s %s\n", linenum, line,
+                       value ? value : "(null)"));
+
          if (!strcasecmp(line, "ServerName") && value)
          {
           /*
            * Got it!
            */
 
          if (!strcasecmp(line, "ServerName") && value)
          {
           /*
            * Got it!
            */
 
+            DEBUG_puts("cupsServer: Got a ServerName line!");
            server = value;
            break;
          }
            server = value;
            break;
          }
+        }
 
        cupsFileClose(fp);
       }
 
        cupsFileClose(fp);
       }
@@ -242,6 +249,8 @@ cupsServer(void)
     * Copy the server name over and set the port number, if any...
     */
 
     * Copy the server name over and set the port number, if any...
     */
 
+    DEBUG_printf(("cupsServer: Using server \"%s\"...\n", server));
+
     strlcpy(cg->server, server, sizeof(cg->server));
 
     if (cg->server[0] != '/' && (port = strrchr(cg->server, ':')) != NULL &&
     strlcpy(cg->server, server, sizeof(cg->server));
 
     if (cg->server[0] != '/' && (port = strrchr(cg->server, ':')) != NULL &&
@@ -249,6 +258,7 @@ cupsServer(void)
     {
       *port++ = '\0';
 
     {
       *port++ = '\0';
 
+      DEBUG_printf(("cupsServer: Using port %d...\n", atoi(port)));
       ippSetPort(atoi(port));
     }
 
       ippSetPort(atoi(port));
     }
 
@@ -471,11 +481,17 @@ cups_open_client_conf(void)
 
     snprintf(filename, sizeof(filename), "%s/.cups/client.conf", home);
     if ((fp = cupsFileOpen(filename, "r")) != NULL)
 
     snprintf(filename, sizeof(filename), "%s/.cups/client.conf", home);
     if ((fp = cupsFileOpen(filename, "r")) != NULL)
+    {
+      DEBUG_printf(("cups_open_client_conf: Using \"%s\"...\n", filename));
       return (fp);
       return (fp);
+    }
 
     snprintf(filename, sizeof(filename), "%s/.cupsrc", home);
     if ((fp = cupsFileOpen(filename, "r")) != NULL)
 
     snprintf(filename, sizeof(filename), "%s/.cupsrc", home);
     if ((fp = cupsFileOpen(filename, "r")) != NULL)
+    {
+      DEBUG_printf(("cups_open_client_conf: Using \"%s\"...\n", filename));
       return (fp);
       return (fp);
+    }
   }
 
   snprintf(filename, sizeof(filename), "%s/client.conf", cg->cups_serverroot);
   }
 
   snprintf(filename, sizeof(filename), "%s/client.conf", cg->cups_serverroot);
@@ -484,5 +500,5 @@ cups_open_client_conf(void)
 
 
 /*
 
 
 /*
- * End of "$Id: usersys.c 5182 2006-02-26 04:10:27Z mike $".
+ * End of "$Id: usersys.c 5902 2006-08-29 15:51:19Z mike $".
  */
  */
index a273a579f77b4d3c1b08816d73c3aefef65b66af..a632eb79391b228978db69db1e9948ca8314825f 100644 (file)
@@ -1,14 +1,10 @@
 [Desktop Entry]
 Categories=Application;System;X-Red-Hat-Base;
 [Desktop Entry]
 Categories=Application;System;X-Red-Hat-Base;
-Comment=CUPS Web Interface
-Comment[en_US]=CUPS Web Interface
 Encoding=UTF-8
 Exec=htmlview http://localhost:631/
 GenericName=
 Encoding=UTF-8
 Exec=htmlview http://localhost:631/
 GenericName=
-GenericName[en_US]=
 Icon=cups
 MimeType=
 Icon=cups
 MimeType=
-Name=Manage Printing
 Path=
 StartupNotify=false
 Terminal=false
 Path=
 StartupNotify=false
 Terminal=false
@@ -17,5 +13,11 @@ Type=Application
 X-DCOP-ServiceType=
 X-KDE-SubstituteUID=false
 X-KDE-Username=
 X-DCOP-ServiceType=
 X-KDE-SubstituteUID=false
 X-KDE-Username=
+Name=Manage Printing
+Name[en_US]=Manage Printing
+Comment=CUPS Web Interface
+Comment[en_US]=CUPS Web Interface
 Name[es]=Administrar impresión
 Comment[es]=Interfaz Web de CUPS
 Name[es]=Administrar impresión
 Comment[es]=Interfaz Web de CUPS
+Name[pl]=ZarzÄ…dzanie drukowaniem
+Comment[pl]=Interfejs WWW CUPS
index 92d8f375a1d8052f684b54fe328808b1d031abef..e3047f24bc1675073bf4af7cf5abd20353ac5670 100644 (file)
@@ -96,5 +96,22 @@ addresses are converted to hostnames or left as numeric IP addresses.</P>
 
 <P>The default setting is <VAR>off</VAR>.</P>
 
 
 <P>The default setting is <VAR>off</VAR>.</P>
 
+<H2 CLASS="title"><A NAME="MaxRunTime">MaxRunTime</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+MaxRunTime 10
+MaxRunTime 300
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>MaxRunTime</CODE> directive specifies the maxium
+number of seconds that the SNMP backend will spend looking for
+printer devices on the network.</P>
+
+<P>The default setting is <VAR>10</VAR>.</P>
+
 </BODY>
 </HTML>
 </BODY>
 </HTML>
index 3ffb2de61ddb969ae4a2e0fe12de7a8003855ef9..f820c02766644749de2b6fb1e84550ac345c6daf 100644 (file)
@@ -1,7 +1,7 @@
 <HTML>
 <!-- SECTION: Getting Started -->
 <HEAD>
 <HTML>
 <!-- SECTION: Getting Started -->
 <HEAD>
-       <TITLE>Translating CUPS</TITLE>
+       <TITLE>Translating and Customizing CUPS</TITLE>
 </HEAD>
 <BODY>
 
 </HEAD>
 <BODY>
 
@@ -20,6 +20,9 @@ files and directories:</P>
 
 <UL>
 
 
 <UL>
 
+       <LI><VAR>desktop/cups.desktop</VAR> - the GNOME/KDE
+       desktop file pointing to the CUPS web interface</LI>
+
        <LI><VAR>doc/images/button-*.gif</VAR> - the web
        interface button images</LI>
 
        <LI><VAR>doc/images/button-*.gif</VAR> - the web
        interface button images</LI>
 
@@ -33,14 +36,15 @@ files and directories:</P>
 
        <LI><VAR>templates/*.tmpl</VAR> - the web interface
        template files</LI>
 
        <LI><VAR>templates/*.tmpl</VAR> - the web interface
        template files</LI>
-
+       
 </UL>
 
 </UL>
 
-<P>With the exception of the message catalogs, localization files
-are  placed in subdirectories under the <VAR>doc</VAR> and
-<VAR>templates</VAR> using the locale name. Locale names are
-either <VAR>ll</VAR> or <VAR>ll_CC</VAR>, where "ll" is the
-2-letter language code and "CC" is the 2-letter country code.</P>
+<P>With the exception of the message catalogs and desktop file,
+localization files are  placed in subdirectories under the
+<VAR>doc</VAR> and <VAR>templates</VAR> using the locale name.
+Locale names are either <VAR>ll</VAR> or <VAR>ll_CC</VAR>, where
+"ll" is the 2-letter language code and "CC" is the 2-letter
+country code.</P>
 
 <P>All non-image files must be encoded using the UTF-8 character
 set.</P>
 
 <P>All non-image files must be encoded using the UTF-8 character
 set.</P>
@@ -48,15 +52,16 @@ set.</P>
 
 <H2 CLASS="title"><A NAME="SUBMIT">Submitting a Translation for CUPS</A></H2>
 
 
 <H2 CLASS="title"><A NAME="SUBMIT">Submitting a Translation for CUPS</A></H2>
 
-<P>To submit a translation for inclusion in CUPS, translate all
-of the button images, template files, the
+<P>To submit a translation for inclusion in CUPS, translate the
+desktop file, all of the button images, template files, the
 <VAR>index.html.in</VAR> file, and the message catalog. Place
 these files in the correct subdirectory in the CUPS source code
 archive and run the following command to create an archive with
 your files:</P>
 
 <PRE CLASS="command">
 <VAR>index.html.in</VAR> file, and the message catalog. Place
 these files in the correct subdirectory in the CUPS source code
 archive and run the following command to create an archive with
 your files:</P>
 
 <PRE CLASS="command">
-tar cvf <I>ll_CC</I>.tar.gz doc/<I>ll_CC</I> locale/<I>ll_CC</I>.po templates/<I>ll_CC</I>
+tar cvf <I>ll_CC</I>.tar.gz desktop/cups.desktop doc/<I>ll_CC</I> \
+    locale/cups_<I>ll_CC</I>.po templates/<I>ll_CC</I>
 </PRE>
 
 <P>Replace "ll_CC" with the locale name for your translation.
 </PRE>
 
 <P>Replace "ll_CC" with the locale name for your translation.
@@ -66,6 +71,19 @@ HREF="http://www.cups.org/str.php" TARGET="_blank">CUPS Bugs
 translation to the report.</P>
 
 
 translation to the report.</P>
 
 
+<H2 CLASS="title"><A NAME="DESKTOP">The Desktop File</A></H2>
+
+<P>The <VAR>desktop/cups.desktop</VAR> file provides a link to
+the CUPS web interface from desktop environments such as
+GNOME and KDE. To translate this file, add two lines to the
+bottom with the <tt>Name</tt> and <tt>Comment</tt> keys:</P>
+
+<PRE CLASS="command">
+Name[<I>ll_CC</I>]=<I>Translation of "Manage Printing"</I>
+Comment[<I>ll_CC</I>]=<I>Translation of "CUPS Web Interface"</I>
+</PRE>
+
+
 <H2 CLASS="title"><A NAME="IMAGES">Button Images</A></H2>
 
 <P>The web interface button images are used to activate functions
 <H2 CLASS="title"><A NAME="IMAGES">Button Images</A></H2>
 
 <P>The web interface button images are used to activate functions
@@ -86,7 +104,7 @@ sub-menu. The button scripts will be available under a new
 <VAR>Btns</VAR menu in the Gimp tool window.</P>
 
 <P>When you have created all of the button images, edit the
 <VAR>Btns</VAR menu in the Gimp tool window.</P>
 
 <P>When you have created all of the button images, edit the
-<VAR>doc/Makefile</VAR> file and add the locale name to the
+<VAR>Makedefs</VAR> file and add the locale name to the
 <CODE>LANGUAGES</CODE> variable. You can then run "make
 install" in the <VAR>doc</VAR> subdirectory to test the
 translated buttons.</P>
 <CODE>LANGUAGES</CODE> variable. You can then run "make
 install" in the <VAR>doc</VAR> subdirectory to test the
 translated buttons.</P>
@@ -339,10 +357,10 @@ type the following commands:</P>
 
 <PRE CLASS="command">
 cd locale
 
 <PRE CLASS="command">
 cd locale
-cp cups.pot fr_CA.po
+cp cups.pot cups_fr_CA.po
 </PRE>
 
 </PRE>
 
-<P>Alternatively, you can copy the existing <VAR>fr.po</VAR>
+<P>Alternatively, you can copy the existing <VAR>cups_fr.po</VAR>
 message catalog and then make any necessary changes.</P>
 
 <P>Once you have make your copy of the file, edit it using your
 message catalog and then make any necessary changes.</P>
 
 <P>Once you have make your copy of the file, edit it using your
@@ -350,7 +368,7 @@ favorite text editor or translation program to translate the text
 to the desired language.</P>
 
 <P>Finally, add your locale to the <CODE>LANGUAGES</CODE>
 to the desired language.</P>
 
 <P>Finally, add your locale to the <CODE>LANGUAGES</CODE>
-variable in the <VAR>locale/Makefile</VAR> file and run the "make
+variable in the <VAR>Makedefs</VAR> file and run the "make
 install" command in the <VAR>locale</VAR> subdirectory to test
 the translation.</P>
 
 install" command in the <VAR>locale</VAR> subdirectory to test
 the translation.</P>
 
@@ -379,7 +397,7 @@ Canadian French template files should be saved in the
 <VAR>templates/fr_CA</VAR> subdirectory. After you have
 translated all of the templates, add the locale to the
 <CODE>LANGUAGES</CODE> variable in the
 <VAR>templates/fr_CA</VAR> subdirectory. After you have
 translated all of the templates, add the locale to the
 <CODE>LANGUAGES</CODE> variable in the
-<VAR>templates/Makefile</VAR> and run "make install" in the
+<VAR>Makedefs</VAR> file and run "make install" in the
 <VAR>templates</VAR> subdirectory to test the translation.</P>
 
 <DIV CLASS="table"><TABLE SUMMARY="Web Interface Template Files">
 <VAR>templates</VAR> subdirectory to test the translation.</P>
 
 <DIV CLASS="table"><TABLE SUMMARY="Web Interface Template Files">
@@ -535,6 +553,11 @@ translated all of the templates, add the locale to the
        <TD>This template is used as the first form when modifying a
        printer.</TD>
 </TR>
        <TD>This template is used as the first form when modifying a
        printer.</TD>
 </TR>
+<TR>
+       <TD>norestart.tmpl</TD>
+       <TD>This template shows "server not restarted because no
+       changes were made to the configuration".</TD>
+</TR>
 <TR>
        <TD>option-boolean.tmpl</TD>
        <TD>This template is used to select a boolean PPD option.</TD>
 <TR>
        <TD>option-boolean.tmpl</TD>
        <TD>This template is used to select a boolean PPD option.</TD>
index 544bff6b559e6d32606ff59259c5dd6844ed8c8b..6cfca815d50f55eb7ced661bd44646948183be79 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: pstops.c 5622 2006-06-01 23:43:21Z mike $"
+ * "$Id: pstops.c 5886 2006-08-24 19:53:17Z mike $"
  *
  *   PostScript filter for the Common UNIX Printing System (CUPS).
  *
  *
  *   PostScript filter for the Common UNIX Printing System (CUPS).
  *
@@ -1587,6 +1587,10 @@ copy_setup(cups_file_t  *fp,             /* I - File to read from */
       break;
   }
 
       break;
   }
 
+  puts("%%BeginSetup");
+  
+  do_setup(doc, ppd);
+
   if (!strncmp(line, "%%BeginSetup", 12))
   {
     while (strncmp(line, "%%EndSetup", 10))
   if (!strncmp(line, "%%BeginSetup", 12))
   {
     while (strncmp(line, "%%EndSetup", 10))
@@ -1603,7 +1607,7 @@ copy_setup(cups_file_t  *fp,              /* I - File to read from */
          doc->num_options = include_feature(ppd, line, doc->num_options,
                                              &(doc->options));
       }
          doc->num_options = include_feature(ppd, line, doc->num_options,
                                              &(doc->options));
       }
-      else
+      else if (strncmp(line, "%%BeginSetup", 12))
         fwrite(line, 1, linelen, stdout);
 
       if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
         fwrite(line, 1, linelen, stdout);
 
       if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
@@ -1615,10 +1619,6 @@ copy_setup(cups_file_t  *fp,             /* I - File to read from */
     else
       fputs("ERROR: Missing %%EndSetup!\n", stderr);
   }
     else
       fputs("ERROR: Missing %%EndSetup!\n", stderr);
   }
-  else
-    puts("%%BeginSetup");
-
-  do_setup(doc, ppd);
 
   puts("%%EndSetup");
 
 
   puts("%%EndSetup");
 
@@ -2994,5 +2994,5 @@ write_labels(pstops_doc_t *doc,           /* I - Document information */
 
 
 /*
 
 
 /*
- * End of "$Id: pstops.c 5622 2006-06-01 23:43:21Z mike $".
+ * End of "$Id: pstops.c 5886 2006-08-24 19:53:17Z mike $".
  */
  */
diff --git a/init/org.cups.cups-lpd.plist b/init/org.cups.cups-lpd.plist
new file mode 100644 (file)
index 0000000..f768e33
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>Disabled</key>
+       <true/>
+       <key>Label</key>
+       <string>org.cups.cups-lpd</string>
+       <key>ProgramArguments</key>
+       <array>
+               <string>/usr/libexec/cups/daemon/cups-lpd</string>
+               <string>-o</string>
+               <string>document-format=application/octet-stream</string>
+       </array>
+       <key>Sockets</key>
+       <dict>
+               <key>Listeners</key>
+               <dict>
+                       <key>SockServiceName</key>
+                       <string>printer</string>
+                       <key>SockType</key>
+                       <string>stream</string>
+               </dict>
+       </dict>
+       <key>UserName</key>
+       <string>lp</string>
+       <key>inetdCompatibility</key>
+       <dict>
+               <key>Wait</key>
+               <false/>
+       </dict>
+</dict>
+</plist>
index a0ad520e5143de7ad20f238be9209affd8919822..01f9c5d30d8fd369f60c5edf277a109d8836da0d 100644 (file)
@@ -21,7 +21,7 @@
 .\"       EMail: cups-info@cups.org
 .\"         WWW: http://www.cups.org
 .\"
 .\"       EMail: cups-info@cups.org
 .\"         WWW: http://www.cups.org
 .\"
-.TH snmp.conf 5 "Common UNIX Printing System" "18 April 2006" "Easy Software Products"
+.TH snmp.conf 5 "Common UNIX Printing System" "31 July 2006" "Easy Software Products"
 .SH NAME
 snmp.conf \- snmp configuration file for cups
 .SH DESCRIPTION
 .SH NAME
 snmp.conf \- snmp configuration file for cups
 .SH DESCRIPTION
@@ -68,6 +68,11 @@ HostNameLookups off
 Specifies whether the addresses of printers should be converted
 to hostnames or left as numeric IP addresses. The default is
 "off".
 Specifies whether the addresses of printers should be converted
 to hostnames or left as numeric IP addresses. The default is
 "off".
+.TP 5
+MaxRunTime \fIseconds\fR
+.br
+Specifies the maximum number of seconds that the SNMP backend
+will scan the network for printers.
 .SH SEE ALSO
 http://localhost:631/help
 .SH COPYRIGHT
 .SH SEE ALSO
 http://localhost:631/help
 .SH COPYRIGHT
index 923b254f2b629262beb8a33c50e68370512f3f78..6101446d1d531371edbfa61f3c9aa6b3a43acc11 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: cups.list.in 5745 2006-07-18 13:45:56Z mike $"
+# "$Id: cups.list.in 5900 2006-08-28 19:26:39Z mike $"
 #
 #   ESP Package Manager (EPM) file list for the Common UNIX Printing
 #   System (CUPS).
 #
 #   ESP Package Manager (EPM) file list for the Common UNIX Printing
 #   System (CUPS).
 $prefix=@prefix@
 $exec_prefix=@exec_prefix@
 $bindir=@bindir@
 $prefix=@prefix@
 $exec_prefix=@exec_prefix@
 $bindir=@bindir@
+$datarootdir=@datarootdir@
 $datadir=@datadir@
 $includedir=@includedir@
 $infodir=@infodir@
 $datadir=@datadir@
 $includedir=@includedir@
 $infodir=@infodir@
@@ -159,7 +160,7 @@ $SBINDIR=@sbindir@
 $SERVERBIN=@CUPS_SERVERBIN@
 $SERVERROOT=@CUPS_SERVERROOT@
 $STATEDIR=@CUPS_STATEDIR@
 $SERVERBIN=@CUPS_SERVERBIN@
 $SERVERROOT=@CUPS_SERVERROOT@
 $STATEDIR=@CUPS_STATEDIR@
-
+$XINETD=@XINETD@
 $LIB32DIR=@LIB32DIR@
 $LIB64DIR=@LIB64DIR@
 
 $LIB32DIR=@LIB32DIR@
 $LIB64DIR=@LIB64DIR@
 
@@ -290,22 +291,22 @@ l 0755 root sys /usr/bsd/lprm $BINDIR/lprm
 %if DSOLIBS
 %subpackage libs
 %system hpux
 %if DSOLIBS
 %subpackage libs
 %system hpux
-f 0755 root sys $LIBDIR/libcups.sl.2 cups/libcups.sl.2
+f 0755 root sys $LIBDIR/libcups.sl.2 cups/libcups.sl.2 nostrip()
 l 0755 root sys $LIBDIR/libcups.sl libcups.sl.2
 l 0755 root sys $LIBDIR/libcups.sl libcups.sl.2
-f 0755 root sys $LIBDIR/libcupsimage.sl.2 filter/libcupsimage.sl.2
+f 0755 root sys $LIBDIR/libcupsimage.sl.2 filter/libcupsimage.sl.2 nostrip()
 l 0755 root sys $LIBDIR/libcupsimage.sl libcupsimage.sl.2
 %system aix
 l 0755 root sys $LIBDIR/libcupsimage.sl libcupsimage.sl.2
 %system aix
-f 0755 root sys $LIBDIR/libcups_s.a cups/libcups_s.a
-f 0755 root sys $LIBDIR/libcupsimage_s.a filter/libcupsimage_s.a
+f 0755 root sys $LIBDIR/libcups_s.a cups/libcups_s.a nostrip()
+f 0755 root sys $LIBDIR/libcupsimage_s.a filter/libcupsimage_s.a nostrip()
 %system darwin
 %system darwin
-f 0755 root sys $LIBDIR/libcups.2.dylib cups/libcups.2.dylib
+f 0755 root sys $LIBDIR/libcups.2.dylib cups/libcups.2.dylib nostrip()
 l 0755 root sys $LIBDIR/libcups.dylib libcups.2.dylib
 l 0755 root sys $LIBDIR/libcups.dylib libcups.2.dylib
-f 0755 root sys $LIBDIR/libcupsimage.2.dylib filter/libcupsimage.2.dylib
+f 0755 root sys $LIBDIR/libcupsimage.2.dylib filter/libcupsimage.2.dylib nostrip()
 l 0755 root sys $LIBDIR/libcupsimage.dylib libcupsimage.2.dylib
 %system !hpux !aix !darwin
 l 0755 root sys $LIBDIR/libcupsimage.dylib libcupsimage.2.dylib
 %system !hpux !aix !darwin
-f 0755 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2
+f 0755 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2 nostrip()
 l 0755 root sys $LIBDIR/libcups.so libcups.so.2
 l 0755 root sys $LIBDIR/libcups.so libcups.so.2
-f 0755 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2
+f 0755 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2 nostrip()
 l 0755 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
 %system all
 %subpackage
 l 0755 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
 %system all
 %subpackage
@@ -313,9 +314,9 @@ l 0755 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
 
 %if LIB32DIR
 %subpackage libs
 
 %if LIB32DIR
 %subpackage libs
-f 0755 root sys $LIB32DIR/libcups.so.2 cups/libcups.32.so.2
+f 0755 root sys $LIB32DIR/libcups.so.2 cups/libcups.32.so.2 nostrip()
 l 0755 root sys $LIB32DIR/libcups.so libcups.so.2
 l 0755 root sys $LIB32DIR/libcups.so libcups.so.2
-f 0755 root sys $LIB32DIR/libcupsimage.so.2 filter/libcupsimage.32.so.2
+f 0755 root sys $LIB32DIR/libcupsimage.so.2 filter/libcupsimage.32.so.2 nostrip()
 l 0755 root sys $LIB32DIR/libcupsimage.so libcupsimage.so.2
 %system all
 %subpackage
 l 0755 root sys $LIB32DIR/libcupsimage.so libcupsimage.so.2
 %system all
 %subpackage
@@ -323,9 +324,9 @@ l 0755 root sys $LIB32DIR/libcupsimage.so libcupsimage.so.2
 
 %if LIB64DIR
 %subpackage libs
 
 %if LIB64DIR
 %subpackage libs
-f 0755 root sys $LIB64DIR/libcups.so.2 cups/libcups.64.so.2
+f 0755 root sys $LIB64DIR/libcups.so.2 cups/libcups.64.so.2 nostrip()
 l 0755 root sys $LIB64DIR/libcups.so libcups.so.2
 l 0755 root sys $LIB64DIR/libcups.so libcups.so.2
-f 0755 root sys $LIB64DIR/libcupsimage.so.2 filter/libcupsimage.64.so.2
+f 0755 root sys $LIB64DIR/libcupsimage.so.2 filter/libcupsimage.64.so.2 nostrip()
 l 0755 root sys $LIB64DIR/libcupsimage.so libcupsimage.so.2
 %system all
 %subpackage
 l 0755 root sys $LIB64DIR/libcupsimage.so libcupsimage.so.2
 %system all
 %subpackage
@@ -342,7 +343,7 @@ d 0511 root $CUPS_PRIMARY_SYSTEM_GROUP $STATEDIR/certs -
 
 # Data files
 %subpackage de
 
 # Data files
 %subpackage de
-f 0644 root sys $LOCALEDIR/es/cups_de.po locale/cups_de.po
+f 0644 root sys $LOCALEDIR/de/cups_de.po locale/cups_de.po
 %subpackage es
 f 0644 root sys $LOCALEDIR/es/cups_es.po locale/cups_es.po
 %subpackage ja
 %subpackage es
 f 0644 root sys $LOCALEDIR/es/cups_es.po locale/cups_es.po
 %subpackage ja
@@ -562,10 +563,31 @@ d 0755 root sys $AMANDIR/man$MAN8DIR -
 f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT
 %subpackage
 
 f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT
 %subpackage
 
-# Startup script
-%system all
+# Startup scripts
+%system darwin
+f 0644 root sys /System/Library/LaunchDaemons/org.cups.cupsd.plist init/org.cups.cupsd.plist
+%postinstall <<EOF
+rm -f /System/Library/StartupItems/PrintingServices/PrintingServices
+launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
+launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
+EOF
+%subpackage lpd
+f 0644 root sys /System/Library/LaunchDaemons/org.cups.cups-lpd.plist init/org.cups.cups-lpd.plist
+%postinstall <<EOF
+rm -f /etc/xinetd.d/cups-lpd
+launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
+launchctl load /System/Library/LaunchDaemons/org.cups.cupsd-lpd.plist
+EOF
+%subpackage
+
+%system !darwin
 i 0755 root sys cups init/cups.sh
 i 0755 root sys cups init/cups.sh
+%subpackage lpd
+%if XINETD
+f 0644 root sys $XINETD/cups-lpd init/cups-lpd
+%endif
+%subpackage
 
 #
 
 #
-# End of "$Id: cups.list.in 5745 2006-07-18 13:45:56Z mike $".
+# End of "$Id: cups.list.in 5900 2006-08-28 19:26:39Z mike $".
 #
 #
diff --git a/packaging/installer.gif b/packaging/installer.gif
new file mode 100644 (file)
index 0000000..8fa635e
Binary files /dev/null and b/packaging/installer.gif differ
index 7ca0a4300d76163fe38602abcf789ef78a612350..d54993e2a74c526daf4596fb63abd0b0bbcf48fa 100644 (file)
@@ -4,169 +4,177 @@ auth.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 auth.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 auth.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 auth.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 auth.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 auth.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 auth.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-auth.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-auth.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-auth.o: banners.h dirsvc.h network.h subscriptions.h
+auth.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+auth.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+auth.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
 banners.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 banners.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 banners.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 banners.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 banners.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 banners.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 banners.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 banners.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-banners.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-banners.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-banners.o: classes.h job.h conf.h banners.h dirsvc.h network.h
+banners.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+banners.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+banners.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
 banners.o: subscriptions.h ../cups/dir.h
 cert.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 cert.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 cert.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 cert.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 banners.o: subscriptions.h ../cups/dir.h
 cert.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 cert.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 cert.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 cert.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-cert.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-cert.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-cert.o: banners.h dirsvc.h network.h subscriptions.h
+cert.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+cert.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+cert.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
 classes.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 classes.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 classes.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 classes.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 classes.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 classes.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 classes.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 classes.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-classes.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-classes.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-classes.o: classes.h job.h conf.h banners.h dirsvc.h network.h
+classes.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+classes.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+classes.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
 classes.o: subscriptions.h
 client.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
 client.o: ../cups/ipp-private.h ../cups/ipp.h cupsd.h ../cups/string.h
 client.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 client.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 classes.o: subscriptions.h
 client.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
 client.o: ../cups/ipp-private.h ../cups/ipp.h cupsd.h ../cups/string.h
 client.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 client.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-client.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-client.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-client.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+client.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+client.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+client.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+client.o: subscriptions.h
 conf.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 conf.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 conf.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 conf.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 conf.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 conf.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 conf.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 conf.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-conf.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-conf.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-conf.o: banners.h dirsvc.h network.h subscriptions.h ../cups/dir.h
+conf.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+conf.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+conf.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+conf.o: ../cups/dir.h
 dirsvc.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 dirsvc.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 dirsvc.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 dirsvc.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 dirsvc.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 dirsvc.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 dirsvc.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 dirsvc.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-dirsvc.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-dirsvc.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-dirsvc.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+dirsvc.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+dirsvc.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+dirsvc.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+dirsvc.o: subscriptions.h
 env.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 env.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 env.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 env.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 env.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 env.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 env.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 env.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-env.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-env.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-env.o: banners.h dirsvc.h network.h subscriptions.h
+env.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+env.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+env.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
 main.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 main.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 main.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 main.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 main.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 main.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 main.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 main.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-main.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-main.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-main.o: banners.h dirsvc.h network.h subscriptions.h
+main.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+main.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+main.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
 ipp.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 ipp.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 ipp.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 ipp.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 ipp.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 ipp.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 ipp.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 ipp.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-ipp.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-ipp.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-ipp.o: banners.h dirsvc.h network.h subscriptions.h
+ipp.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+ipp.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+ipp.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
 listen.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 listen.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 listen.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 listen.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 listen.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 listen.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 listen.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 listen.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-listen.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-listen.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-listen.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+listen.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+listen.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+listen.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+listen.o: subscriptions.h
 job.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 job.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 job.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 job.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 job.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 job.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 job.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 job.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-job.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-job.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-job.o: banners.h dirsvc.h network.h subscriptions.h ../cups/backend.h
-job.o: ../cups/dir.h
+job.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+job.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+job.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+job.o: ../cups/backend.h ../cups/dir.h
 log.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 log.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 log.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 log.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 log.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 log.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 log.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 log.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-log.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h statbuf.h
-log.o: cert.h auth.h client.h policy.h printers.h classes.h job.h conf.h
-log.o: banners.h dirsvc.h network.h subscriptions.h
-network.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
-network.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
+log.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h ../cups/debug.h
+log.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
+log.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+network.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
+network.o: ../cups/ipp-private.h ../cups/ipp.h cupsd.h ../cups/string.h
 network.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 network.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 network.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 network.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-network.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-network.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-network.o: classes.h job.h conf.h banners.h dirsvc.h network.h
+network.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+network.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+network.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
 network.o: subscriptions.h
 policy.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 policy.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 policy.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 policy.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 network.o: subscriptions.h
 policy.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 policy.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 policy.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 policy.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-policy.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-policy.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-policy.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+policy.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+policy.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+policy.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+policy.o: subscriptions.h
 printers.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 printers.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h
 printers.o: ../cups/string.h ../cups/array.h ../cups/cups.h ../cups/ppd.h
 printers.o: ../cups/array.h ../cups/file.h ../cups/language.h mime.h
 printers.o: ../cups/ipp.h ../cups/file.h ../cups/http.h ../cups/i18n.h
 printers.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 printers.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h
 printers.o: ../cups/string.h ../cups/array.h ../cups/cups.h ../cups/ppd.h
 printers.o: ../cups/array.h ../cups/file.h ../cups/language.h mime.h
 printers.o: ../cups/ipp.h ../cups/file.h ../cups/http.h ../cups/i18n.h
-printers.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h
-printers.o: policy.h printers.h classes.h job.h conf.h banners.h dirsvc.h
-printers.o: network.h subscriptions.h ../cups/transcode.h
+printers.o: ../cups/transcode.h ../cups/debug.h sysman.h statbuf.h cert.h
+printers.o: auth.h client.h policy.h printers.h classes.h job.h conf.h
+printers.o: banners.h dirsvc.h network.h subscriptions.h ../cups/dir.h
 process.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 process.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 process.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 process.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 process.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 process.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 process.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 process.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-process.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-process.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-process.o: classes.h job.h conf.h banners.h dirsvc.h network.h
+process.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+process.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+process.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
 process.o: subscriptions.h
 quotas.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 quotas.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 quotas.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 quotas.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 process.o: subscriptions.h
 quotas.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 quotas.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 quotas.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 quotas.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-quotas.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-quotas.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-quotas.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+quotas.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+quotas.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+quotas.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+quotas.o: subscriptions.h
 server.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
 server.o: ../cups/ipp-private.h ../cups/ipp.h cupsd.h ../cups/string.h
 server.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 server.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 server.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
 server.o: ../cups/ipp-private.h ../cups/ipp.h cupsd.h ../cups/string.h
 server.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 server.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-server.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-server.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-server.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+server.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+server.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+server.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+server.o: subscriptions.h
 statbuf.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 statbuf.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 statbuf.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 statbuf.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 statbuf.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 statbuf.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 statbuf.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 statbuf.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-statbuf.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-statbuf.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-statbuf.o: classes.h job.h conf.h banners.h dirsvc.h network.h
+statbuf.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+statbuf.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+statbuf.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
 statbuf.o: subscriptions.h
 subscriptions.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 subscriptions.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h
 subscriptions.o: ../cups/string.h ../cups/array.h ../cups/cups.h
 subscriptions.o: ../cups/ppd.h ../cups/array.h ../cups/file.h
 subscriptions.o: ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
 statbuf.o: subscriptions.h
 subscriptions.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 subscriptions.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h
 subscriptions.o: ../cups/string.h ../cups/array.h ../cups/cups.h
 subscriptions.o: ../cups/ppd.h ../cups/array.h ../cups/file.h
 subscriptions.o: ../cups/language.h mime.h ../cups/ipp.h ../cups/file.h
-subscriptions.o: ../cups/http.h ../cups/i18n.h ../cups/debug.h sysman.h
-subscriptions.o: statbuf.h cert.h auth.h client.h policy.h printers.h
-subscriptions.o: classes.h job.h conf.h banners.h dirsvc.h network.h
-subscriptions.o: subscriptions.h
+subscriptions.o: ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+subscriptions.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h
+subscriptions.o: policy.h printers.h classes.h job.h conf.h banners.h
+subscriptions.o: dirsvc.h network.h subscriptions.h
 sysman.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 sysman.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 sysman.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 sysman.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
 sysman.o: cupsd.h ../cups/http-private.h ../config.h ../cups/http.h
 sysman.o: ../cups/md5.h ../cups/ipp-private.h ../cups/ipp.h ../cups/string.h
 sysman.o: ../cups/array.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
 sysman.o: ../cups/file.h ../cups/language.h mime.h ../cups/ipp.h
-sysman.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/debug.h
-sysman.o: sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h
-sysman.o: classes.h job.h conf.h banners.h dirsvc.h network.h subscriptions.h
+sysman.o: ../cups/file.h ../cups/http.h ../cups/i18n.h ../cups/transcode.h
+sysman.o: ../cups/debug.h sysman.h statbuf.h cert.h auth.h client.h policy.h
+sysman.o: printers.h classes.h job.h conf.h banners.h dirsvc.h network.h
+sysman.o: subscriptions.h
 filter.o: ../cups/debug.h ../cups/string.h ../config.h mime.h ../cups/array.h
 filter.o: ../cups/ipp.h ../cups/file.h
 filter.o: ../cups/debug.h ../cups/string.h ../config.h mime.h ../cups/array.h
 filter.o: ../cups/ipp.h ../cups/file.h
-mime.o: ../cups/dir.h ../cups/string.h ../config.h mime.h ../cups/array.h
-mime.o: ../cups/ipp.h ../cups/file.h
+mime.o: ../cups/debug.h ../cups/dir.h ../cups/string.h ../config.h mime.h
+mime.o: ../cups/array.h ../cups/ipp.h ../cups/file.h
 type.o: ../cups/string.h ../config.h mime.h ../cups/array.h ../cups/ipp.h
 type.o: ../cups/file.h ../cups/debug.h
 cups-deviced.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
 type.o: ../cups/string.h ../config.h mime.h ../cups/array.h ../cups/ipp.h
 type.o: ../cups/file.h ../cups/debug.h
 cups-deviced.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
@@ -176,7 +184,7 @@ cups-deviced.o: ../config.h ../cups/array.h ../cups/dir.h
 cups-driverd.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
 cups-driverd.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
 cups-driverd.o: ../cups/language.h ../cups/file.h ../cups/string.h
 cups-driverd.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
 cups-driverd.o: ../cups/md5.h ../cups/ppd.h ../cups/array.h ../cups/file.h
 cups-driverd.o: ../cups/language.h ../cups/file.h ../cups/string.h
-cups-driverd.o: ../config.h ../cups/dir.h
+cups-driverd.o: ../config.h ../cups/dir.h ../cups/transcode.h
 cups-lpd.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
 cups-lpd.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/cups.h ../cups/ppd.h
 cups-lpd.o: ../cups/array.h ../cups/file.h ../cups/language.h
 cups-lpd.o: ../cups/http-private.h ../config.h ../cups/http.h ../cups/md5.h
 cups-lpd.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/cups.h ../cups/ppd.h
 cups-lpd.o: ../cups/array.h ../cups/file.h ../cups/language.h
@@ -188,6 +196,9 @@ cups-polld.o: ../cups/language.h ../cups/string.h
 testdirsvc.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
 testdirsvc.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
 testdirsvc.o: ../cups/string.h ../config.h
 testdirsvc.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
 testdirsvc.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
 testdirsvc.o: ../cups/string.h ../config.h
+testlpd.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
+testlpd.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
+testlpd.o: ../cups/string.h ../config.h
 testmime.o: ../cups/string.h ../config.h mime.h ../cups/array.h ../cups/ipp.h
 testmime.o: ../cups/file.h ../cups/dir.h
 testspeed.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
 testmime.o: ../cups/string.h ../config.h mime.h ../cups/array.h ../cups/ipp.h
 testmime.o: ../cups/file.h ../cups/dir.h
 testspeed.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/md5.h
index f269c3849b62af8ecf5d908c20665baee57bf22a..58d3621147ffbf7e4a4d8031fd24d7459bede7f3 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $"
+# "$Id: Makefile 5868 2006-08-23 19:39:39Z mike $"
 #
 #   Scheduler Makefile for the Common UNIX Printing System (CUPS).
 #
 #
 #   Scheduler Makefile for the Common UNIX Printing System (CUPS).
 #
@@ -59,6 +59,7 @@ OBJS  =       \
                cups-lpd.o \
                cups-polld.o \
                testdirsvc.o \
                cups-lpd.o \
                cups-polld.o \
                testdirsvc.o \
+               testlpd.o \
                testmime.o \
                testspeed.o \
                util.o
                testmime.o \
                testspeed.o \
                util.o
@@ -70,6 +71,7 @@ TARGETS       =       \
                cups-polld \
                libmime.a \
                testdirsvc \
                cups-polld \
                libmime.a \
                testdirsvc \
+               testlpd \
                testmime \
                testspeed
 
                testmime \
                testspeed
 
@@ -250,6 +252,16 @@ testdirsvc:        testdirsvc.o
        $(CC) $(LDFLAGS) -o testdirsvc testdirsvc.o $(COMMONLIBS) $(NETLIBS)
 
 
        $(CC) $(LDFLAGS) -o testdirsvc testdirsvc.o $(COMMONLIBS) $(NETLIBS)
 
 
+#
+# Make the test program, "testlpd".
+#
+
+testlpd:       testlpd.o ../cups/libcups.a cups-lpd
+       echo Linking $@...
+       $(CC) $(LDFLAGS) -o testlpd testlpd.o ../cups/libcups.a \
+               $(COMMONLIBS) $(LIBZ) $(SSLLIBS)
+
+
 #
 # testmime
 #
 #
 # testmime
 #
@@ -264,9 +276,10 @@ testmime:  testmime.o libmime.a ../cups/libcups.a
 # Make the test program, "testspeed".
 #
 
 # Make the test program, "testspeed".
 #
 
-testspeed:     testspeed.o ../cups/$(LIBCUPS)
+testspeed:     testspeed.o ../cups/libcups.a
        echo Linking $@...
        echo Linking $@...
-       $(CC) $(LDFLAGS) -o testspeed testspeed.o $(LIBS)
+       $(CC) $(LDFLAGS) -o testspeed testspeed.o ../cups/libcups.a \
+               $(COMMONLIBS) $(LIBZ) $(SSLLIBS)
 
 
 #
 
 
 #
@@ -277,5 +290,5 @@ include Dependencies
 
 
 #
 
 
 #
-# End of "$Id: Makefile 5736 2006-07-13 19:59:36Z mike $".
+# End of "$Id: Makefile 5868 2006-08-23 19:39:39Z mike $".
 #
 #
index efae9914c3ba5afc61da9a0bb4ad2e1474704d3e..a1a10406b63691f57184ae1fb88a22722b099f37 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: auth.c 5643 2006-06-07 20:58:29Z mike $"
+ * "$Id: auth.c 5840 2006-08-17 14:55:30Z mike $"
  *
  *   Authorization routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Authorization routines for the Common UNIX Printing System (CUPS).
  *
@@ -89,9 +89,9 @@ static cupsd_authmask_t       *add_allow(cupsd_location_t *loc);
 static cupsd_authmask_t        *add_deny(cupsd_location_t *loc);
 static int             compare_locations(cupsd_location_t *a,
                                          cupsd_location_t *b);
 static cupsd_authmask_t        *add_deny(cupsd_location_t *loc);
 static int             compare_locations(cupsd_location_t *a,
                                          cupsd_location_t *b);
-#if !HAVE_LIBPAM
+#if !HAVE_LIBPAM && !defined(HAVE_USERSEC_H)
 static char            *cups_crypt(const char *pw, const char *salt);
 static char            *cups_crypt(const char *pw, const char *salt);
-#endif /* !HAVE_LIBPAM */
+#endif /* !HAVE_LIBPAM && !HAVE_USERSEC_H */
 static char            *get_md5_password(const char *username,
                                          const char *group, char passwd[33]);
 #if HAVE_LIBPAM
 static char            *get_md5_password(const char *username,
                                          const char *group, char passwd[33]);
 #if HAVE_LIBPAM
@@ -540,7 +540,6 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
            */
 
            char        *authmsg;       /* Authentication message */
            */
 
            char        *authmsg;       /* Authentication message */
-           char        *loginmsg;      /* Login message */
            int         reenter;        /* ??? */
 
 
            int         reenter;        /* ??? */
 
 
@@ -1871,7 +1870,7 @@ compare_locations(cupsd_location_t *a,    /* I - First location */
 }
 
 
 }
 
 
-#if !HAVE_LIBPAM
+#if !HAVE_LIBPAM && !defined(HAVE_USERSEC_H)
 /*
  * 'cups_crypt()' - Encrypt the password using the DES or MD5 algorithms,
  *                  as needed.
 /*
  * 'cups_crypt()' - Encrypt the password using the DES or MD5 algorithms,
  *                  as needed.
@@ -1991,7 +1990,7 @@ cups_crypt(const char *pw,                /* I - Password string */
     return (crypt(pw, salt));
   }
 }
     return (crypt(pw, salt));
   }
 }
-#endif /* !HAVE_LIBPAM */
+#endif /* !HAVE_LIBPAM && !HAVE_USERSEC_H */
 
 
 /*
 
 
 /*
@@ -2171,5 +2170,5 @@ to64(char          *s,                    /* O - Output string */
 
 
 /*
 
 
 /*
- * End of "$Id: auth.c 5643 2006-06-07 20:58:29Z mike $".
+ * End of "$Id: auth.c 5840 2006-08-17 14:55:30Z mike $".
  */
  */
index c3c236f788eddcb3bfe20cb5b148b2b03f8f04cd..d5d1851a34c17cead712e218453cc16b00114901 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: client.c 5739 2006-07-16 15:21:18Z mike $"
+ * "$Id: client.c 5898 2006-08-28 18:54:10Z mike $"
  *
  *   Client routines for the Common UNIX Printing System (CUPS) scheduler.
  *
  *
  *   Client routines for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -26,6 +26,7 @@
  *   cupsdAcceptClient()     - Accept a new client.
  *   cupsdCloseAllClients()  - Close all remote clients immediately.
  *   cupsdCloseClient()      - Close a remote client.
  *   cupsdAcceptClient()     - Accept a new client.
  *   cupsdCloseAllClients()  - Close all remote clients immediately.
  *   cupsdCloseClient()      - Close a remote client.
+ *   cupsdFlushHeader()      - Flush the header fields to the client.
  *   cupsdReadClient()       - Read data from a client.
  *   cupsdSendCommand()      - Send output from a command via HTTP.
  *   cupsdSendError()        - Send an error message via HTTP.
  *   cupsdReadClient()       - Read data from a client.
  *   cupsdSendCommand()      - Send output from a command via HTTP.
  *   cupsdSendError()        - Send an error message via HTTP.
@@ -673,6 +674,19 @@ cupsdCloseClient(cupsd_client_t *con)      /* I - Client to close */
 }
 
 
 }
 
 
+/*
+ * 'cupsdFlushHeader()' - Flush the header fields to the client.
+ */
+
+void
+cupsdFlushHeader(cupsd_client_t *con)  /* I - Client to flush to */
+{
+  httpFlushWrite(HTTP(con));
+
+  con->http.data_encoding = HTTP_ENCODE_LENGTH;
+}
+
+
 /*
  * 'cupsdReadClient()' - Read data from a client.
  */
 /*
  * 'cupsdReadClient()' - Read data from a client.
  */
@@ -1024,6 +1038,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n");
        httpPrintf(HTTP(con), "Content-Length: 0\r\n");
        httpPrintf(HTTP(con), "\r\n");
        httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n");
        httpPrintf(HTTP(con), "Content-Length: 0\r\n");
        httpPrintf(HTTP(con), "\r\n");
+       cupsdFlushHeader(con);
 
         encrypt_client(con);
 #else
 
         encrypt_client(con);
 #else
@@ -1038,6 +1053,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
       httpPrintf(HTTP(con), "Allow: GET, HEAD, OPTIONS, POST, PUT\r\n");
       httpPrintf(HTTP(con), "Content-Length: 0\r\n");
       httpPrintf(HTTP(con), "\r\n");
       httpPrintf(HTTP(con), "Allow: GET, HEAD, OPTIONS, POST, PUT\r\n");
       httpPrintf(HTTP(con), "Content-Length: 0\r\n");
       httpPrintf(HTTP(con), "\r\n");
+      cupsdFlushHeader(con);
     }
     else if (!is_path_absolute(con->uri))
     {
     }
     else if (!is_path_absolute(con->uri))
     {
@@ -1065,6 +1081,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
        httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n");
        httpPrintf(HTTP(con), "Content-Length: 0\r\n");
        httpPrintf(HTTP(con), "\r\n");
        httpPrintf(HTTP(con), "Upgrade: TLS/1.0,HTTP/1.1\r\n");
        httpPrintf(HTTP(con), "Content-Length: 0\r\n");
        httpPrintf(HTTP(con), "\r\n");
+       cupsdFlushHeader(con);
 
         encrypt_client(con);
 #else
 
         encrypt_client(con);
 #else
@@ -1105,6 +1122,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
 
          httpPrintf(HTTP(con), "Content-Length: 0\r\n");
          httpPrintf(HTTP(con), "\r\n");
 
          httpPrintf(HTTP(con), "Content-Length: 0\r\n");
          httpPrintf(HTTP(con), "\r\n");
+         cupsdFlushHeader(con);
        }
       }
 
        }
       }
 
@@ -1538,6 +1556,8 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
              if (httpPrintf(HTTP(con), "\r\n") < 0)
                return (cupsdCloseClient(con));
 
              if (httpPrintf(HTTP(con), "\r\n") < 0)
                return (cupsdCloseClient(con));
 
+             cupsdFlushHeader(con);
+
               cupsdLogRequest(con, HTTP_OK);
            }
             else if ((!strncmp(con->uri, "/admin/conf/", 12) &&
               cupsdLogRequest(con, HTTP_OK);
            }
             else if ((!strncmp(con->uri, "/admin/conf/", 12) &&
@@ -1601,6 +1621,8 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
             if (httpPrintf(HTTP(con), "\r\n") < 0)
              return (cupsdCloseClient(con));
 
             if (httpPrintf(HTTP(con), "\r\n") < 0)
              return (cupsdCloseClient(con));
 
+           cupsdFlushHeader(con);
+
             con->http.state = HTTP_WAITING;
             break;
 
             con->http.state = HTTP_WAITING;
             break;
 
@@ -2074,6 +2096,8 @@ cupsdSendError(cupsd_client_t *con,       /* I - Connection */
   else if (httpPrintf(HTTP(con), "\r\n") < 0)
     return (0);
 
   else if (httpPrintf(HTTP(con), "\r\n") < 0)
     return (0);
 
+  cupsdFlushHeader(con);
+
   con->http.state = HTTP_WAITING;
 
   return (1);
   con->http.state = HTTP_WAITING;
 
   return (1);
@@ -2093,6 +2117,10 @@ cupsdSendHeader(cupsd_client_t *con,     /* I - Client to send to */
   * Send the HTTP status header...
   */
 
   * Send the HTTP status header...
   */
 
+  httpFlushWrite(HTTP(con));
+
+  con->http.data_encoding = HTTP_ENCODE_FIELDS;
+
   if (httpPrintf(HTTP(con), "HTTP/%d.%d %d %s\r\n", con->http.version / 100,
                  con->http.version % 100, code, httpStatus(code)) < 0)
     return (0);
   if (httpPrintf(HTTP(con), "HTTP/%d.%d %d %s\r\n", con->http.version / 100,
                  con->http.version % 100, code, httpStatus(code)) < 0)
     return (0);
@@ -2106,7 +2134,10 @@ cupsdSendHeader(cupsd_client_t *con,     /* I - Client to send to */
     if (httpPrintf(HTTP(con), "\r\n") < 0)
       return (0);
     else
     if (httpPrintf(HTTP(con), "\r\n") < 0)
       return (0);
     else
+    {
+      cupsdFlushHeader(con);
       return (1);
       return (1);
+    }
   }
 
   if (httpPrintf(HTTP(con), "Date: %s\r\n", httpGetDateString(time(NULL))) < 0)
   }
 
   if (httpPrintf(HTTP(con), "Date: %s\r\n", httpGetDateString(time(NULL))) < 0)
@@ -2191,7 +2222,7 @@ cupsdUpdateCGI(void)
     if (!strchr(CGIStatusBuffer->buffer, '\n'))
       break;
 
     if (!strchr(CGIStatusBuffer->buffer, '\n'))
       break;
 
-  if (ptr == NULL && errno)
+  if (ptr == NULL && !CGIStatusBuffer->bufused)
   {
    /*
     * Fatal error on pipe - should never happen!
   {
    /*
     * Fatal error on pipe - should never happen!
@@ -2274,15 +2305,13 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
                return (0);
            }
            else if (!strncasecmp(buf, "Status:", 7))
                return (0);
            }
            else if (!strncasecmp(buf, "Status:", 7))
-             cupsdSendError(con, atoi(buf + 7));
+             cupsdSendError(con, (http_status_t)atoi(buf + 7));
            else
            {
              cupsdSendHeader(con, HTTP_OK, NULL);
 
              if (con->http.version == HTTP_1_1)
              {
            else
            {
              cupsdSendHeader(con, HTTP_OK, NULL);
 
              if (con->http.version == HTTP_1_1)
              {
-               con->http.data_encoding = HTTP_ENCODE_CHUNKED;
-
                if (httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n") < 0)
                  return (0);
              }
                if (httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n") < 0)
                  return (0);
              }
@@ -2310,7 +2339,14 @@ cupsdWriteClient(cupsd_client_t *con)    /* I - Client connection */
          */
 
          if (con->field_col == 0)
          */
 
          if (con->field_col == 0)
+         {
            con->got_fields = 1;
            con->got_fields = 1;
+
+            cupsdFlushHeader(con);
+
+           if (con->http.version == HTTP_1_1)
+             con->http.data_encoding = HTTP_ENCODE_CHUNKED;
+          }
          else
            con->field_col = 0;
        }
          else
            con->field_col = 0;
        }
@@ -3350,19 +3386,31 @@ static int                              /* O - 1 on success, 0 on failure */
 make_certificate(void)
 {
 #if defined(HAVE_LIBSSL) && defined(HAVE_WAITPID)
 make_certificate(void)
 {
 #if defined(HAVE_LIBSSL) && defined(HAVE_WAITPID)
-  int  pid,                            /* Process ID of command */
-       status;                         /* Status of command */
-  char command[1024],                  /* Command */
-       *argv[11],                      /* Command-line arguments */
-       *envp[MAX_ENV];                 /* Environment variables */
+  int          pid,                    /* Process ID of command */
+               status;                 /* Status of command */
+  char         command[1024],          /* Command */
+               *argv[11],              /* Command-line arguments */
+               *envp[MAX_ENV + 1],     /* Environment variables */
+               home[1024],             /* HOME environment variable */
+               infofile[1024],         /* Type-in information for cert */
+               seedfile[1024];         /* Random number seed file */
+  int          envc,                   /* Number of environment variables */
+               bytes;                  /* Bytes written */
+  cups_file_t  *fp;                    /* Seed/info file */
+  int          infofd;                 /* Info file descriptor */
 
 
  /*
 
 
  /*
-  * Run the "openssl" command to generate a self-signed certificate
-  * that is good for 10 years:
+  * Run the "openssl" command to seed the random number generator and
+  * generate a self-signed certificate that is good for 10 years:
+  *
+  *     openssl rand -rand seedfile 1
   *
   *     openssl req -new -x509 -keyout ServerKey \
   *             -out ServerCertificate -days 3650 -nodes
   *
   *     openssl req -new -x509 -keyout ServerKey \
   *             -out ServerCertificate -days 3650 -nodes
+  *
+  * The seeding step is crucial in ensuring that the openssl command
+  * does not block on systems without sufficient entropy...
   */
 
   if (!cupsFileFind("openssl", getenv("PATH"), 1, command, sizeof(command)))
   */
 
   if (!cupsFileFind("openssl", getenv("PATH"), 1, command, sizeof(command)))
@@ -3372,6 +3420,108 @@ make_certificate(void)
     return (0);
   }
 
     return (0);
   }
 
+  if (access("/dev/urandom", 0))
+  {
+   /*
+    * If the system doesn't provide /dev/urandom, then any random source
+    * will probably be blocking-style, so generate some random data to
+    * use as a seed for the certificate.  Note that we have already
+    * seeded the random number generator in cupsdInitCerts()...
+    */
+
+    cupsdLogMessage(CUPSD_LOG_INFO,
+                    "Seeding the random number generator...");
+
+    snprintf(home, sizeof(home), "HOME=%s", TempDir);
+
+   /*
+    * Write the seed file...
+    */
+
+    if ((fp = cupsTempFile2(seedfile, sizeof(seedfile))) == NULL)
+    {
+      cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create seed file %s - %s",
+                      seedfile, strerror(errno));
+      return (0);
+    }
+
+    for (bytes = 0; bytes < 262144; bytes ++)
+      cupsFilePutChar(fp, random());
+
+    cupsFileClose(fp);
+
+   /*
+    * Run the openssl command to seed its random number generator...
+    */
+
+    argv[0] = "openssl";
+    argv[1] = "rand";
+    argv[2] = "-rand";
+    argv[3] = seedfile;
+    argv[4] = "1";
+    argv[5] = NULL;
+
+    envc = cupsdLoadEnv(envp, MAX_ENV);
+    envp[envc++] = home;
+    envp[envc]   = NULL;
+
+    if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, 1, &pid))
+    {
+      unlink(seedfile);
+      return (0);
+    }
+
+    while (waitpid(pid, &status, 0) < 0)
+      if (errno != EINTR)
+      {
+       status = 1;
+       break;
+      }
+
+    cupsdFinishProcess(pid, command, sizeof(command));
+
+   /*
+    * Remove the seed file, as it is no longer needed...
+    */
+
+    unlink(seedfile);
+
+    if (status)
+    {
+      if (WIFEXITED(status))
+       cupsdLogMessage(CUPSD_LOG_ERROR,
+                       "Unable to seed random number generator - "
+                       "the openssl command stopped with status %d!",
+                       WEXITSTATUS(status));
+      else
+       cupsdLogMessage(CUPSD_LOG_ERROR,
+                       "Unable to seed random number generator - "
+                       "the openssl command crashed on signal %d!",
+                       WTERMSIG(status));
+
+      return (0);
+    }
+  }
+
+ /*
+  * Create a file with the certificate information fields...
+  *
+  * Note: This assumes that the default questions are asked by the openssl
+  * 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, ".\n.\n.\n%s\n.\n%s\n%s\n",
+                 ServerName, ServerName, ServerAdmin);
+  cupsFileClose(fp);
+
   cupsdLogMessage(CUPSD_LOG_INFO,
                   "Generating SSL server key and certificate...");
 
   cupsdLogMessage(CUPSD_LOG_INFO,
                   "Generating SSL server key and certificate...");
 
@@ -3390,8 +3540,17 @@ make_certificate(void)
 
   cupsdLoadEnv(envp, MAX_ENV);
 
 
   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);
     return (0);
+  }
+
+  close(infofd);
+  unlink(infofile);
 
   while (waitpid(pid, &status, 0) < 0)
     if (errno != EINTR)
 
   while (waitpid(pid, &status, 0) < 0)
     if (errno != EINTR)
@@ -3993,6 +4152,8 @@ write_file(cupsd_client_t *con,           /* I - Client connection */
   if (httpPrintf(HTTP(con), "\r\n") < 0)
     return (0);
 
   if (httpPrintf(HTTP(con), "\r\n") < 0)
     return (0);
 
+  cupsdFlushHeader(con);
+
   con->http.data_encoding  = HTTP_ENCODE_LENGTH;
   con->http.data_remaining = filestats->st_size;
 
   con->http.data_encoding  = HTTP_ENCODE_LENGTH;
   con->http.data_remaining = filestats->st_size;
 
@@ -4011,5 +4172,5 @@ write_file(cupsd_client_t *con,           /* I - Client connection */
 
 
 /*
 
 
 /*
- * End of "$Id: client.c 5739 2006-07-16 15:21:18Z mike $".
+ * End of "$Id: client.c 5898 2006-08-28 18:54:10Z mike $".
  */
  */
index 7a7b70cd70bf4d996c1756615622c7871fbb7bdb..ef376cda8acdea643b282290993343c31880e7e0 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: client.h 5305 2006-03-18 03:05:12Z mike $"
+ * "$Id: client.h 5889 2006-08-24 21:44:35Z mike $"
  *
  *   Client definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
  *
  *   Client definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -104,6 +104,7 @@ extern void cupsdAcceptClient(cupsd_listener_t *lis);
 extern void    cupsdCloseAllClients(void);
 extern int     cupsdCloseClient(cupsd_client_t *con);
 extern void    cupsdDeleteAllListeners(void);
 extern void    cupsdCloseAllClients(void);
 extern int     cupsdCloseClient(cupsd_client_t *con);
 extern void    cupsdDeleteAllListeners(void);
+extern void    cupsdFlushHeader(cupsd_client_t *con);
 extern void    cupsdPauseListening(void);
 extern int     cupsdProcessIPPRequest(cupsd_client_t *con);
 extern int     cupsdReadClient(cupsd_client_t *con);
 extern void    cupsdPauseListening(void);
 extern int     cupsdProcessIPPRequest(cupsd_client_t *con);
 extern int     cupsdReadClient(cupsd_client_t *con);
@@ -121,5 +122,5 @@ extern int  cupsdWriteClient(cupsd_client_t *con);
 
 
 /*
 
 
 /*
- * End of "$Id: client.h 5305 2006-03-18 03:05:12Z mike $".
+ * End of "$Id: client.h 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index 42acaf0832fc6e64957c1c4b750b93910481772d..4d4f1cf853039a166e872996d8fa832a59fbf0c9 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: conf.c 5736 2006-07-13 19:59:36Z mike $"
+ * "$Id: conf.c 5905 2006-08-29 20:48:59Z mike $"
  *
  *   Configuration routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Configuration routines for the Common UNIX Printing System (CUPS).
  *
@@ -636,21 +636,21 @@ cupsdReadConfiguration(void)
   * writable by the user and group in the cupsd.conf file...
   */
 
   * writable by the user and group in the cupsd.conf file...
   */
 
-  check_permissions(CacheDir, NULL, 0775, RunUser, Group, 1, 1);
-/*  check_permissions(CacheDir, "ppd", 0755, RunUser, Group, 1, 1);*/
-
-  check_permissions(StateDir, NULL, 0755, RunUser, Group, 1, 1);
-  check_permissions(StateDir, "certs", RunUser ? 0711 : 0511, User,
-                    SystemGroupIDs[0], 1, 1);
-
-  check_permissions(ServerRoot, NULL, 0755, RunUser, Group, 1, 0);
-  check_permissions(ServerRoot, "ppd", 0755, RunUser, Group, 1, 1);
-  check_permissions(ServerRoot, "ssl", 0700, RunUser, Group, 1, 0);
-  check_permissions(ServerRoot, "cupsd.conf", ConfigFilePerm, RunUser, Group,
-                    0, 0);
-  check_permissions(ServerRoot, "classes.conf", 0600, RunUser, Group, 0, 0);
-  check_permissions(ServerRoot, "printers.conf", 0600, RunUser, Group, 0, 0);
-  check_permissions(ServerRoot, "passwd.md5", 0600, User, Group, 0, 0);
+  if (check_permissions(CacheDir, NULL, 0775, RunUser, Group, 1, 1) < 0 ||
+      check_permissions(StateDir, NULL, 0755, RunUser, Group, 1, 1) < 0 ||
+      check_permissions(StateDir, "certs", RunUser ? 0711 : 0511, User,
+                       SystemGroupIDs[0], 1, 1) < 0 ||
+      check_permissions(ServerRoot, NULL, 0755, RunUser, Group, 1, 0) < 0 ||
+      check_permissions(ServerRoot, "ppd", 0755, RunUser, Group, 1, 1) < 0 ||
+      check_permissions(ServerRoot, "ssl", 0700, RunUser, Group, 1, 0) < 0 ||
+      check_permissions(ServerRoot, "cupsd.conf", ConfigFilePerm, RunUser,
+                        Group, 0, 0) < 0 ||
+      check_permissions(ServerRoot, "classes.conf", 0600, RunUser, Group,
+                        0, 0) < 0 ||
+      check_permissions(ServerRoot, "printers.conf", 0600, RunUser, Group,
+                        0, 0) < 0 ||
+      check_permissions(ServerRoot, "passwd.md5", 0600, User, Group, 0, 0) < 0)
+    return (0);
 
  /*
   * Update TempDir to the default if it hasn't been set already...
 
  /*
   * Update TempDir to the default if it hasn't been set already...
@@ -677,14 +677,14 @@ cupsdReadConfiguration(void)
                        "TMPDIR (%s) has the wrong permissions!", tmpdir);
       else
         cupsdSetString(&TempDir, tmpdir);
                        "TMPDIR (%s) has the wrong permissions!", tmpdir);
       else
         cupsdSetString(&TempDir, tmpdir);
-
-      if (!TempDir)
-        cupsdLogMessage(CUPSD_LOG_INFO, "Using default TempDir of %s/tmp...",
-                       RequestRoot);
     }
 
     if (!TempDir)
     }
 
     if (!TempDir)
+    {
+      cupsdLogMessage(CUPSD_LOG_INFO, "Using default TempDir of %s/tmp...",
+                     RequestRoot);
       cupsdSetStringf(&TempDir, "%s/tmp", RequestRoot);
       cupsdSetStringf(&TempDir, "%s/tmp", RequestRoot);
+    }
   }
 
  /*
   }
 
  /*
@@ -692,7 +692,8 @@ cupsdReadConfiguration(void)
   * permissions...
   */
 
   * permissions...
   */
 
-  check_permissions(RequestRoot, NULL, 0710, RunUser, Group, 1, 1);
+  if (check_permissions(RequestRoot, NULL, 0710, RunUser, Group, 1, 1) < 0)
+    return (0);
 
   if (!strncmp(TempDir, RequestRoot, strlen(RequestRoot)) ||
       access(TempDir, 0))
 
   if (!strncmp(TempDir, RequestRoot, strlen(RequestRoot)) ||
       access(TempDir, 0))
@@ -702,7 +703,8 @@ cupsdReadConfiguration(void)
     * is under the spool directory or does not exist...
     */
 
     * is under the spool directory or does not exist...
     */
 
-    check_permissions(TempDir, NULL, 01770, RunUser, Group, 1, 1);
+    if (check_permissions(TempDir, NULL, 01770, RunUser, Group, 1, 1) < 0)
+      return (0);
   }
 
   if (!strncmp(TempDir, RequestRoot, strlen(RequestRoot)))
   }
 
   if (!strncmp(TempDir, RequestRoot, strlen(RequestRoot)))
@@ -772,7 +774,7 @@ cupsdReadConfiguration(void)
   if (MaxActiveJobs > (MaxFDs / 3))
     MaxActiveJobs = MaxFDs / 3;
 
   if (MaxActiveJobs > (MaxFDs / 3))
     MaxActiveJobs = MaxFDs / 3;
 
-  if (Classification && strcasecmp(Classification, "none") == 0)
+  if (Classification && !strcasecmp(Classification, "none"))
     cupsdClearString(&Classification);
 
   if (Classification)
     cupsdClearString(&Classification);
 
   if (Classification)
@@ -1112,7 +1114,7 @@ cupsdReadConfiguration(void)
  * 'check_permissions()' - Fix the mode and ownership of a file or directory.
  */
 
  * 'check_permissions()' - Fix the mode and ownership of a file or directory.
  */
 
-static int                             /* O - 0 on success, -1 on error */
+static int                             /* O - 0 on success, -1 on error, 1 on warning */
 check_permissions(const char *filename,        /* I - File/directory name */
                   const char *suffix,  /* I - Additional file/directory name */
                   int        mode,     /* I - Permissions */
 check_permissions(const char *filename,        /* I - File/directory name */
                   const char *suffix,  /* I - Additional file/directory name */
                   int        mode,     /* I - Permissions */
@@ -1158,7 +1160,7 @@ check_permissions(const char *filename,   /* I - File/directory name */
       dir_created = 1;
     }
     else
       dir_created = 1;
     }
     else
-      return (-1);
+      return (create_dir ? -1 : 1);
   }
 
  /*
   }
 
  /*
@@ -1190,7 +1192,7 @@ check_permissions(const char *filename,   /* I - File/directory name */
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "Unable to change ownership of \"%s\" - %s", filename,
                      strerror(errno));
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "Unable to change ownership of \"%s\" - %s", filename,
                      strerror(errno));
-      return (-1);
+      return (1);
     }
   }
 
     }
   }
 
@@ -1203,7 +1205,7 @@ check_permissions(const char *filename,   /* I - File/directory name */
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "Unable to change permissions of \"%s\" - %s", filename,
                      strerror(errno));
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "Unable to change permissions of \"%s\" - %s", filename,
                      strerror(errno));
-      return (-1);
+      return (1);
     }
   }
 
     }
   }
 
@@ -1946,6 +1948,13 @@ parse_protocols(const char *s)           /* I - Space-delimited protocols */
        *valend;                        /* End of value */
 
 
        *valend;                        /* End of value */
 
 
+ /*
+  * Empty protocol line yields NULL pointer...
+  */
+
+  if (!s)
+    return (0);
+
  /*
   * Loop through the value string,...
   */
  /*
   * Loop through the value string,...
   */
@@ -3280,5 +3289,5 @@ read_policy(cups_file_t *fp,              /* I - Configuration file */
 
 
 /*
 
 
 /*
- * End of "$Id: conf.c 5736 2006-07-13 19:59:36Z mike $".
+ * End of "$Id: conf.c 5905 2006-08-29 20:48:59Z mike $".
  */
  */
index 60b68090fc708815f8385a88f64a2ec6d35e3e47..caa6bef9abaef966ef42ccb3bad72059218a8280 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cups-lpd.c 5455 2006-04-24 13:49:59Z mike $"
+ * "$Id: cups-lpd.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Line Printer Daemon interface for the Common UNIX Printing System (CUPS).
  *
  *
  *   Line Printer Daemon interface for the Common UNIX Printing System (CUPS).
  *
@@ -471,7 +471,7 @@ get_printer(http_t        *http,    /* I - HTTP connection */
 
     request = ippNewRequest(CUPS_GET_PRINTERS);
 
 
     request = ippNewRequest(CUPS_GET_PRINTERS);
 
-    ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+    ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
                   "requested-attributes",
                  (int)(sizeof(requested) / sizeof(requested[0])),
                   NULL, requested);
                   "requested-attributes",
                  (int)(sizeof(requested) / sizeof(requested[0])),
                   NULL, requested);
@@ -597,7 +597,7 @@ get_printer(http_t        *http,    /* I - HTTP connection */
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                 NULL, uri);
 
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                 NULL, uri);
 
-    ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+    ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
                   "requested-attributes",
                  (int)(sizeof(requested) / sizeof(requested[0])),
                   NULL, requested);
                   "requested-attributes",
                  (int)(sizeof(requested) / sizeof(requested[0])),
                   NULL, requested);
@@ -648,7 +648,7 @@ get_printer(http_t        *http,    /* I - HTTP connection */
     if (state)
     {
       if ((attr = ippFindAttribute(response, "printer-state",
     if (state)
     {
       if ((attr = ippFindAttribute(response, "printer-state",
-                                  IPP_TAG_INTEGER)) == NULL)
+                                  IPP_TAG_ENUM)) == NULL)
        syslog(LOG_ERR, "No printer-state attribute found in "
                        "response from server!");
       else
        syslog(LOG_ERR, "No printer-state attribute found in "
                        "response from server!");
       else
@@ -1387,7 +1387,7 @@ remove_jobs(const char *dest,             /* I - Destination */
       return (1);
     }
     else
       return (1);
     }
     else
-      syslog(LOG_INFO, "Job ID %d cancelled", id);
+      syslog(LOG_INFO, "Job ID %d canceled", id);
   }
 
   httpClose(http);
   }
 
   httpClose(http);
@@ -1716,5 +1716,5 @@ smart_gets(char *s,                       /* I - Pointer to line buffer */
 
 
 /*
 
 
 /*
- * End of "$Id: cups-lpd.c 5455 2006-04-24 13:49:59Z mike $".
+ * End of "$Id: cups-lpd.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 259361d5ba9e178783af8b85ff6a8f3a5bd30f4c..be6bbb5e62f1bb5b365a63f2d70ef91e1335142f 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cups-polld.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: cups-polld.c 5871 2006-08-23 20:55:33Z mike $"
  *
  *   Polling daemon for the Common UNIX Printing System (CUPS).
  *
  *
  *   Polling daemon for the Common UNIX Printing System (CUPS).
  *
  *
  * Contents:
  *
  *
  * Contents:
  *
- *   main()        - Open sockets and poll until we are killed...
- *   dequote()     - Remote quotes from a string.
- *   poll_server() - Poll the server for the given set of printers or classes.
+ *   main()           - Open sockets and poll until we are killed...
+ *   dequote()        - Remote quotes from a string.
+ *   poll_server()    - Poll the server for the given set of printers or
+ *                      classes.
+ *   sighup_handler() - Handle 'hangup' signals to restart polling.
  */
 
 /*
  */
 
 /*
 #include <errno.h>
 #include <cups/language.h>
 #include <cups/string.h>
 #include <errno.h>
 #include <cups/language.h>
 #include <cups/string.h>
+#include <signal.h>
+
+
+/*
+ * Local globals...
+ */
+
+static int     restart_polling = 1;
 
 
 /*
 
 
 /*
@@ -47,6 +57,7 @@
 static char    *dequote(char *d, const char *s, int dlen);
 static int     poll_server(http_t *http, int sock, int port, int interval,
                            const char *prefix);
 static char    *dequote(char *d, const char *s, int dlen);
 static int     poll_server(http_t *http, int sock, int port, int interval,
                            const char *prefix);
+static void    sighup_handler(int sig);
 
 
 /*
 
 
 /*
@@ -65,8 +76,28 @@ main(int  argc,                              /* I - Number of command-line args */
   int          seconds,                /* Seconds left from poll */
                remain;                 /* Total remaining time to sleep */
   char         prefix[1024];           /* Prefix for log messages */
   int          seconds,                /* Seconds left from poll */
                remain;                 /* Total remaining time to sleep */
   char         prefix[1024];           /* Prefix for log messages */
+#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+  struct sigaction action;             /* Actions for POSIX signals */
+#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
 
 
 
 
+ /*
+  * Catch hangup signals for when the network changes...
+  */
+
+#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
+  sigset(SIGHUP, sighup_handler);
+#elif defined(HAVE_SIGACTION)
+  memset(&action, 0, sizeof(action));
+
+  sigemptyset(&action.sa_mask);
+  sigaddset(&action.sa_mask, SIGHUP);
+  action.sa_handler = sighup_handler;
+  sigaction(SIGHUP, &action, NULL);
+#else
+  signal(SIGHUP, sighup_handler);
+#endif /* HAVE_SIGSET */
+
  /*
   * Don't buffer log messages...
   */
  /*
   * Don't buffer log messages...
   */
@@ -119,38 +150,43 @@ main(int  argc,                           /* I - Number of command-line args */
   }
 
  /*
   }
 
  /*
-  * Open a connection to the server...
+  * Loop forever, asking for available printers and classes...
   */
 
   */
 
-  while ((http = httpConnectEncrypt(argv[1], atoi(argv[2]),
-                                    cupsEncryption())) == NULL)
+  for (http = NULL;;)
   {
   {
-    fprintf(stderr, "ERROR: %s Unable to connect to %s on port %s: %s\n",
-            prefix, argv[1], argv[2],
-           h_errno ? hstrerror(h_errno) : strerror(errno));
-    sleep(interval);
-  }
+   /*
+    * Open a connection to the server...
+    */
 
 
- /*
-  * Loop forever, asking for available printers and classes...
-  */
+    if (restart_polling || !http)
+    {
+      restart_polling = 0;
+      httpClose(http);
+
+      if ((http = httpConnectEncrypt(argv[1], atoi(argv[2]),
+                                     cupsEncryption())) == NULL)
+      {
+       fprintf(stderr, "ERROR: %s Unable to connect to %s on port %s: %s\n",
+               prefix, argv[1], argv[2],
+               h_errno ? hstrerror(h_errno) : strerror(errno));
+      }
+    }
 
 
-  for (;;)
-  {
    /*
     * Get the printers and classes...
     */
 
     remain = interval;
 
    /*
     * Get the printers and classes...
     */
 
     remain = interval;
 
-    if ((seconds = poll_server(http, sock, port, interval, prefix)) > 0)
+    if (http && (seconds = poll_server(http, sock, port, interval, prefix)) > 0)
       remain -= seconds;
 
    /*
     * Sleep for any remaining time...
     */
 
       remain -= seconds;
 
    /*
     * Sleep for any remaining time...
     */
 
-    if (remain > 0
+    if (remain > 0 && !restart_polling)
       sleep(remain);
   }
 }
       sleep(remain);
   }
 }
@@ -260,6 +296,7 @@ poll_server(http_t      *http,              /* I - HTTP connection */
   * Do the request and get back a response...
   */
 
   * Do the request and get back a response...
   */
 
+  seconds  = time(NULL);
   response = cupsDoRequest(http, request, "/");
 
   if (cupsLastError() > IPP_OK_CONFLICT)
   response = cupsDoRequest(http, request, "/");
 
   if (cupsLastError() > IPP_OK_CONFLICT)
@@ -285,7 +322,6 @@ poll_server(http_t      *http,              /* I - HTTP connection */
     fprintf(stderr, "DEBUG: %s Found %d printers.\n", prefix, max_count);
 
     count     = 0;
     fprintf(stderr, "DEBUG: %s Found %d printers.\n", prefix, max_count);
 
     count     = 0;
-    seconds   = time(NULL);
     max_count = max_count / interval + 1;
 
    /*
     max_count = max_count / interval + 1;
 
    /*
@@ -409,7 +445,7 @@ poll_server(http_t      *http,              /* I - HTTP connection */
        sleep(1);
       }
 
        sleep(1);
       }
 
-      if (!attr)
+      if (!attr || restart_polling)
         break;
     }
 
         break;
     }
 
@@ -425,5 +461,22 @@ poll_server(http_t      *http,             /* I - HTTP connection */
 
 
 /*
 
 
 /*
- * End of "$Id: cups-polld.c 5753 2006-07-18 19:53:24Z mike $".
+ * 'sighup_handler()' - Handle 'hangup' signals to restart polling.
+ */
+
+static void
+sighup_handler(int sig)                        /* I - Signal number */
+{
+  (void)sig;
+
+  restart_polling = 1;
+
+#if !defined(HAVE_SIGSET) && !defined(HAVE_SIGACTION)
+  signal(SIGHUP, sighup_handler);
+#endif /* !HAVE_SIGSET && !HAVE_SIGACTION */
+}
+
+
+/*
+ * End of "$Id: cups-polld.c 5871 2006-08-23 20:55:33Z mike $".
  */
  */
index c2e19a97039d70d6675f675d663d86f746e511e9..cb751549bc698d57b668e4fb2efe7cbb09a13d00 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $"
+ * "$Id: dirsvc.c 5889 2006-08-24 21:44:35Z mike $"
  *
  *   Directory services routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Directory services routines for the Common UNIX Printing System (CUPS).
  *
@@ -513,6 +513,23 @@ cupsdLoadRemoteCache(void)
 }
 
 
 }
 
 
+/*
+ * 'cupsdRestartPolling()' - Restart polling servers as needed.
+ */
+
+void
+cupsdRestartPolling(void)
+{
+  int                  i;              /* Looping var */
+  cupsd_dirsvc_poll_t  *pollp;         /* Current polling server */
+
+
+  for (i = 0, pollp = Polled; i < NumPolled; i ++, pollp ++)
+    if (pollp->pid)
+      kill(pollp->pid, SIGHUP);
+}
+
+
 /*
  * 'cupsdSaveRemoteCache()' - Save the remote printer cache.
  */
 /*
  * 'cupsdSaveRemoteCache()' - Save the remote printer cache.
  */
@@ -1468,7 +1485,7 @@ cupsdUpdateCUPSBrowse(void)
     if (cupsdCheckAuth(address, srcname, len, 1, &(Relays[i].from)))
       if (sendto(BrowseSocket, packet, bytes, 0,
                  (struct sockaddr *)&(Relays[i].to),
     if (cupsdCheckAuth(address, srcname, len, 1, &(Relays[i].from)))
       if (sendto(BrowseSocket, packet, bytes, 0,
                  (struct sockaddr *)&(Relays[i].to),
-                sizeof(http_addr_t)) <= 0)
+                httpAddrLength(&(Relays[i].to))) <= 0)
       {
        cupsdLogMessage(CUPSD_LOG_ERROR,
                        "cupsdUpdateCUPSBrowse: sendto failed for relay %d - %s.",
       {
        cupsdLogMessage(CUPSD_LOG_ERROR,
                        "cupsdUpdateCUPSBrowse: sendto failed for relay %d - %s.",
@@ -1609,7 +1626,7 @@ cupsdUpdatePolling(void)
     if (!strchr(PollStatusBuffer->buffer, '\n'))
       break;
 
     if (!strchr(PollStatusBuffer->buffer, '\n'))
       break;
 
-  if (ptr == NULL)
+  if (ptr == NULL && !PollStatusBuffer->bufused)
   {
    /*
     * All polling processes have died; stop polling...
   {
    /*
     * All polling processes have died; stop polling...
@@ -1923,6 +1940,9 @@ process_browse_data(
     else
       return;
 
     else
       return;
 
+    if (hptr && !*hptr)
+      *hptr = '.';                     /* Resource FQDN */
+
     if ((p = cupsdFindClass(name)) == NULL && BrowseShortNames)
     {
       if ((p = cupsdFindClass(resource + 9)) != NULL)
     if ((p = cupsdFindClass(name)) == NULL && BrowseShortNames)
     {
       if ((p = cupsdFindClass(resource + 9)) != NULL)
@@ -2026,6 +2046,9 @@ process_browse_data(
     else
       return;
 
     else
       return;
 
+    if (hptr && !*hptr)
+      *hptr = '.';                     /* Resource FQDN */
+
     if ((p = cupsdFindPrinter(name)) == NULL && BrowseShortNames)
     {
       if ((p = cupsdFindPrinter(resource + 10)) != NULL)
     if ((p = cupsdFindPrinter(name)) == NULL && BrowseShortNames)
     {
       if ((p = cupsdFindPrinter(resource + 10)) != NULL)
@@ -2566,7 +2589,7 @@ send_cups_browse(cupsd_printer_t *p)      /* I - Printer to send */
 
          sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(iface->broadcast),
 
          sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(iface->broadcast),
-                sizeof(struct sockaddr_in));
+                httpAddrLength(&(iface->broadcast)));
         }
       }
       else if ((iface = cupsdNetIFFind(b->iface)) != NULL)
         }
       }
       else if ((iface = cupsdNetIFFind(b->iface)) != NULL)
@@ -2607,7 +2630,7 @@ send_cups_browse(cupsd_printer_t *p)      /* I - Printer to send */
 
          sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(iface->broadcast),
 
          sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(iface->broadcast),
-                sizeof(struct sockaddr_in));
+                httpAddrLength(&(iface->broadcast)));
         }
       }
     }
         }
       }
     }
@@ -2628,7 +2651,7 @@ send_cups_browse(cupsd_printer_t *p)      /* I - Printer to send */
 
       if (sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(b->to),
 
       if (sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(b->to),
-                sizeof(struct sockaddr_in)) <= 0)
+                httpAddrLength(&(b->to))) <= 0)
       {
        /*
         * Unable to send browse packet, so remove this address from the
       {
        /*
         * Unable to send browse packet, so remove this address from the
@@ -3158,5 +3181,5 @@ slp_url_callback(
 
 
 /*
 
 
 /*
- * End of "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $".
+ * End of "$Id: dirsvc.c 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index 171933f936884344168ae3a69231dcb89555c692..2e3a05988f611abdb63f239725b7098a5b02c058 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: dirsvc.h 5305 2006-03-18 03:05:12Z mike $"
+ * "$Id: dirsvc.h 5833 2006-08-16 20:05:58Z mike $"
  *
  *   Directory services definitions for the Common UNIX Printing System
  *   (CUPS) scheduler.
  *
  *   Directory services definitions for the Common UNIX Printing System
  *   (CUPS) scheduler.
@@ -164,6 +164,7 @@ VAR char            *BrowseLDAPBindDN VALUE(NULL),
  */
 
 extern void    cupsdLoadRemoteCache(void);
  */
 
 extern void    cupsdLoadRemoteCache(void);
+extern void    cupsdRestartPolling(void);
 extern void    cupsdSaveRemoteCache(void);
 extern void    cupsdSendBrowseDelete(cupsd_printer_t *p);
 extern void    cupsdSendBrowseList(void);
 extern void    cupsdSaveRemoteCache(void);
 extern void    cupsdSendBrowseDelete(cupsd_printer_t *p);
 extern void    cupsdSendBrowseList(void);
@@ -180,5 +181,5 @@ extern void cupsdUpdateSLPBrowse(void);
 
 
 /*
 
 
 /*
- * End of "$Id: dirsvc.h 5305 2006-03-18 03:05:12Z mike $".
+ * End of "$Id: dirsvc.h 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index 28115133d99ac08cc042b29c9a36b46c7b56158a..d32a715053b8e035940ded0815f21c155f9a5362 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ipp.c 5736 2006-07-13 19:59:36Z mike $"
+ * "$Id: ipp.c 5907 2006-08-30 02:18:28Z mike $"
  *
  *   IPP routines for the Common UNIX Printing System (CUPS) scheduler.
  *
  *
  *   IPP routines for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -630,7 +630,7 @@ cupsdProcessIPPRequest(
 #ifdef CUPSD_USE_CHUNKING
      /*
       * Because older versions of CUPS (1.1.17 and older) and some IPP
 #ifdef CUPSD_USE_CHUNKING
      /*
       * Because older versions of CUPS (1.1.17 and older) and some IPP
-      * clients do not implement chunking properly, we should not use
+      * clients do not implement chunking properly, we cannot use
       * chunking by default.  This may become the default in future
       * CUPS releases, or we might add a configuration directive for
       * it.
       * chunking by default.  This may become the default in future
       * CUPS releases, or we might add a configuration directive for
       * it.
@@ -638,23 +638,25 @@ cupsdProcessIPPRequest(
 
       if (con->http.version == HTTP_1_1)
       {
 
       if (con->http.version == HTTP_1_1)
       {
-       con->http.data_encoding = HTTP_ENCODE_CHUNKED;
-
        httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n\r\n");
        httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n\r\n");
+       cupsdFlushHeader(con);
+
+       con->http.data_encoding = HTTP_ENCODE_CHUNKED;
       }
       else
 #endif /* CUPSD_USE_CHUNKING */
       {
       }
       else
 #endif /* CUPSD_USE_CHUNKING */
       {
-       con->http.data_encoding  = HTTP_ENCODE_LENGTH;
-       con->http.data_remaining = ippLength(con->response);
+        size_t length;                 /* Length of response */
 
 
-        if (con->http.data_remaining < INT_MAX)
-         con->http._data_remaining = con->http.data_remaining;
-       else
-         con->http._data_remaining = INT_MAX;
+
+       length = ippLength(con->response);
 
        httpPrintf(HTTP(con), "Content-Length: " CUPS_LLFMT "\r\n\r\n",
 
        httpPrintf(HTTP(con), "Content-Length: " CUPS_LLFMT "\r\n\r\n",
-                  CUPS_LLCAST con->http.data_remaining);
+                  CUPS_LLCAST length);
+       cupsdFlushHeader(con);
+
+       con->http.data_encoding  = HTTP_ENCODE_LENGTH;
+       con->http.data_remaining = length;
       }
 
       cupsdLogMessage(CUPSD_LOG_DEBUG2,
       }
 
       cupsdLogMessage(CUPSD_LOG_DEBUG2,
@@ -784,7 +786,6 @@ add_class(cupsd_client_t  *con,             /* I - Client connection */
   cupsd_printer_t *pclass,             /* Class */
                *member;                /* Member printer/class */
   cups_ptype_t dtype;                  /* Destination type */
   cupsd_printer_t *pclass,             /* Class */
                *member;                /* Member printer/class */
   cups_ptype_t dtype;                  /* Destination type */
-  const char   *dest;                  /* Printer or class name */
   ipp_attribute_t *attr;               /* Printer attribute */
   int          modify;                 /* Non-zero if we just modified */
   char         newname[IPP_MAX_NAME];  /* New class name */
   ipp_attribute_t *attr;               /* Printer attribute */
   int          modify;                 /* Non-zero if we just modified */
   char         newname[IPP_MAX_NAME];  /* New class name */
@@ -1007,7 +1008,7 @@ add_class(cupsd_client_t  *con,           /* I - Client connection */
                       sizeof(method), username, sizeof(username), host,
                      sizeof(host), &port, resource, sizeof(resource));
 
                       sizeof(method), username, sizeof(username), host,
                      sizeof(host), &port, resource, sizeof(resource));
 
-      if ((dest = cupsdValidateDest(host, resource, &dtype, &member)) == NULL)
+      if (!cupsdValidateDest(host, resource, &dtype, &member))
       {
        /*
        * Bad URI...
       {
        /*
        * Bad URI...
@@ -1467,7 +1468,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
   ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
   job->state = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_ENUM,
                              "job-state", IPP_JOB_STOPPED);
   ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
   job->state = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_ENUM,
                              "job-state", IPP_JOB_STOPPED);
-  job->state_value = job->state->values[0].integer;
+  job->state_value = (ipp_jstate_t)job->state->values[0].integer;
   job->sheets = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER,
                               "job-media-sheets-completed", 0);
   ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
   job->sheets = ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER,
                               "job-media-sheets-completed", 0);
   ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
@@ -1728,7 +1729,7 @@ add_job_state_reasons(
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job_state_reasons(%p[%d], %d)",
                   con, con->http.fd, job ? job->id : 0);
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job_state_reasons(%p[%d], %d)",
                   con, con->http.fd, job ? job->id : 0);
 
-  switch (job ? job->state_value : IPP_JOB_CANCELLED)
+  switch (job ? job->state_value : IPP_JOB_CANCELED)
   {
     case IPP_JOB_PENDING :
        dest = cupsdFindDest(job->dest);
   {
     case IPP_JOB_PENDING :
        dest = cupsdFindDest(job->dest);
@@ -1763,7 +1764,7 @@ add_job_state_reasons(
                     "job-state-reasons", NULL, "job-stopped");
         break;
 
                     "job-state-reasons", NULL, "job-stopped");
         break;
 
-    case IPP_JOB_CANCELLED :
+    case IPP_JOB_CANCELED :
         ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD,
                     "job-state-reasons", NULL, "job-canceled-by-user");
         break;
         ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD,
                     "job-state-reasons", NULL, "job-canceled-by-user");
         break;
@@ -1961,7 +1962,6 @@ add_job_uuid(cupsd_client_t *con, /* I - Client connection */
              cupsd_job_t    *job)      /* I - Job */
 {
   char                 uuid[1024];     /* job-uuid string */
              cupsd_job_t    *job)      /* I - Job */
 {
   char                 uuid[1024];     /* job-uuid string */
-  ipp_attribute_t      *attr;          /* job-uuid attribute */
   _cups_md5_state_t    md5state;       /* MD5 state */
   unsigned char                md5sum[16];     /* MD5 digest/sum */
 
   _cups_md5_state_t    md5state;       /* MD5 state */
   unsigned char                md5sum[16];     /* MD5 digest/sum */
 
@@ -1970,7 +1970,7 @@ add_job_uuid(cupsd_client_t *con, /* I - Client connection */
   * First see if the job already has a job-uuid attribute; if so, return...
   */
 
   * First see if the job already has a job-uuid attribute; if so, return...
   */
 
-  if ((attr = ippFindAttribute(job->attrs, "job-uuid", IPP_TAG_URI)) != NULL)
+  if (ippFindAttribute(job->attrs, "job-uuid", IPP_TAG_URI))
     return;
 
  /*
     return;
 
  /*
@@ -2872,7 +2872,7 @@ cancel_all_jobs(cupsd_client_t  *con,     /* I - Client connection */
     cupsdCancelJobs(NULL, username, purge);
 
     cupsdLogMessage(CUPSD_LOG_INFO, "All jobs were %s by \"%s\".",
     cupsdCancelJobs(NULL, username, purge);
 
     cupsdLogMessage(CUPSD_LOG_INFO, "All jobs were %s by \"%s\".",
-                    purge ? "purged" : "cancelled", get_username(con));
+                    purge ? "purged" : "canceled", get_username(con));
   }
   else
   {
   }
   else
   {
@@ -2893,7 +2893,7 @@ cancel_all_jobs(cupsd_client_t  *con,     /* I - Client connection */
     cupsdCancelJobs(dest, username, purge);
 
     cupsdLogMessage(CUPSD_LOG_INFO, "All jobs on \"%s\" were %s by \"%s\".",
     cupsdCancelJobs(dest, username, purge);
 
     cupsdLogMessage(CUPSD_LOG_INFO, "All jobs on \"%s\" were %s by \"%s\".",
-                    dest, purge ? "purged" : "cancelled", get_username(con));
+                    dest, purge ? "purged" : "canceled", get_username(con));
   }
 
   con->response->request.status.status_code = IPP_OK;
   }
 
   con->response->request.status.status_code = IPP_OK;
@@ -3043,17 +3043,17 @@ cancel_job(cupsd_client_t  *con,        /* I - Client connection */
   }
 
  /*
   }
 
  /*
-  * See if the job is already completed, cancelled, or aborted; if so,
+  * See if the job is already completed, canceled, or aborted; if so,
   * we can't cancel...
   */
 
   * we can't cancel...
   */
 
-  if (job->state_value >= IPP_JOB_CANCELLED)
+  if (job->state_value >= IPP_JOB_CANCELED)
   {
     switch (job->state_value)
     {
   {
     switch (job->state_value)
     {
-      case IPP_JOB_CANCELLED :
+      case IPP_JOB_CANCELED :
          send_ipp_status(con, IPP_NOT_POSSIBLE,
          send_ipp_status(con, IPP_NOT_POSSIBLE,
-                         _("Job #%d is already cancelled - can\'t cancel."),
+                         _("Job #%d is already canceled - can\'t cancel."),
                          jobid);
           break;
 
                          jobid);
           break;
 
@@ -3078,12 +3078,12 @@ cancel_job(cupsd_client_t  *con,        /* I - Client connection */
   */
 
   cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
   */
 
   cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
-                "Job cancelled by \"%s\".", username);
+                "Job canceled by \"%s\".", username);
 
   cupsdCancelJob(job, 0);
   cupsdCheckJobs();
 
 
   cupsdCancelJob(job, 0);
   cupsdCheckJobs();
 
-  cupsdLogMessage(CUPSD_LOG_INFO, "Job %d was cancelled by \"%s\".", jobid,
+  cupsdLogMessage(CUPSD_LOG_INFO, "Job %d was canceled by \"%s\".", jobid,
                   username);
 
   con->response->request.status.status_code = IPP_OK;
                   username);
 
   con->response->request.status.status_code = IPP_OK;
@@ -4382,7 +4382,7 @@ copy_subscription_attrs(
       */
 
       ippAddString(con->response, IPP_TAG_SUBSCRIPTION,
       */
 
       ippAddString(con->response, IPP_TAG_SUBSCRIPTION,
-                   IPP_TAG_KEYWORD | IPP_TAG_COPY,
+                   (ipp_tag_t)(IPP_TAG_KEYWORD | IPP_TAG_COPY),
                    "notify-events", NULL, name);
     }
     else
                    "notify-events", NULL, name);
     }
     else
@@ -4396,7 +4396,7 @@ copy_subscription_attrs(
           count ++;
 
       attr = ippAddStrings(con->response, IPP_TAG_SUBSCRIPTION,
           count ++;
 
       attr = ippAddStrings(con->response, IPP_TAG_SUBSCRIPTION,
-                           IPP_TAG_KEYWORD | IPP_TAG_COPY,
+                           (ipp_tag_t)(IPP_TAG_KEYWORD | IPP_TAG_COPY),
                            "notify-events", count, NULL, NULL);
 
       for (mask = 1, count = 0; mask < CUPSD_EVENT_ALL; mask <<= 1)
                            "notify-events", count, NULL, NULL);
 
       for (mask = 1, count = 0; mask < CUPSD_EVENT_ALL; mask <<= 1)
@@ -4676,7 +4676,6 @@ create_subscription(
   http_status_t        status;                 /* Policy status */
   int                  i;              /* Looping var */
   ipp_attribute_t      *attr;          /* Current attribute */
   http_status_t        status;                 /* Policy status */
   int                  i;              /* Looping var */
   ipp_attribute_t      *attr;          /* Current attribute */
-  const char           *dest;          /* Destination */
   cups_ptype_t         dtype;          /* Destination type (printer or class) */
   char                 scheme[HTTP_MAX_URI],
                                        /* Scheme portion of URI */
   cups_ptype_t         dtype;          /* Destination type (printer or class) */
   char                 scheme[HTTP_MAX_URI],
                                        /* Scheme portion of URI */
@@ -4725,23 +4724,20 @@ create_subscription(
 
   if (!strcmp(resource, "/"))
   {
 
   if (!strcmp(resource, "/"))
   {
-    dest    = NULL;
     dtype   = (cups_ptype_t)0;
     printer = NULL;
   }
   else if (!strncmp(resource, "/printers", 9) && strlen(resource) <= 10)
   {
     dtype   = (cups_ptype_t)0;
     printer = NULL;
   }
   else if (!strncmp(resource, "/printers", 9) && strlen(resource) <= 10)
   {
-    dest    = NULL;
     dtype   = (cups_ptype_t)0;
     printer = NULL;
   }
   else if (!strncmp(resource, "/classes", 8) && strlen(resource) <= 9)
   {
     dtype   = (cups_ptype_t)0;
     printer = NULL;
   }
   else if (!strncmp(resource, "/classes", 8) && strlen(resource) <= 9)
   {
-    dest    = NULL;
     dtype   = CUPS_PRINTER_CLASS;
     printer = NULL;
   }
     dtype   = CUPS_PRINTER_CLASS;
     printer = NULL;
   }
-  else if ((dest = cupsdValidateDest(host, resource, &dtype, &printer)) == NULL)
+  else if (!cupsdValidateDest(host, resource, &dtype, &printer))
   {
    /*
     * Bad URI...
   {
    /*
     * Bad URI...
@@ -5734,7 +5730,6 @@ get_printer_attrs(cupsd_client_t  *con,   /* I - Client connection */
                  ipp_attribute_t *uri) /* I - Printer URI */
 {
   http_status_t                status;         /* Policy status */
                  ipp_attribute_t *uri) /* I - Printer URI */
 {
   http_status_t                status;         /* Policy status */
-  const char           *dest;          /* Destination */
   cups_ptype_t         dtype;          /* Destination type (printer or class) */
   char                 method[HTTP_MAX_URI],
                                        /* Method portion of URI */
   cups_ptype_t         dtype;          /* Destination type (printer or class) */
   char                 method[HTTP_MAX_URI],
                                        /* Method portion of URI */
@@ -5760,7 +5755,7 @@ get_printer_attrs(cupsd_client_t  *con,   /* I - Client connection */
                   sizeof(method), username, sizeof(username), host,
                  sizeof(host), &port, resource, sizeof(resource));
 
                   sizeof(method), username, sizeof(username), host,
                  sizeof(host), &port, resource, sizeof(resource));
 
-  if ((dest = cupsdValidateDest(host, resource, &dtype, &printer)) == NULL)
+  if (!cupsdValidateDest(host, resource, &dtype, &printer))
   {
    /*
     * Bad URI...
   {
    /*
     * Bad URI...
@@ -6269,6 +6264,9 @@ hold_job(cupsd_client_t  *con,            /* I - Client connection */
 
   cupsdHoldJob(job);
 
 
   cupsdHoldJob(job);
 
+  cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job,
+                "Job held by user.");
+
   if ((newattr = ippFindAttribute(con->request, "job-hold-until",
                                   IPP_TAG_KEYWORD)) == NULL)
     newattr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_NAME);
   if ((newattr = ippFindAttribute(con->request, "job-hold-until",
                                   IPP_TAG_KEYWORD)) == NULL)
     newattr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_NAME);
@@ -6302,6 +6300,9 @@ hold_job(cupsd_client_t  *con,            /* I - Client connection */
     */
 
     cupsdSetJobHoldUntil(job, attr->values[0].string.text);
     */
 
     cupsdSetJobHoldUntil(job, attr->values[0].string.text);
+
+    cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, job->printer, job,
+                  "Job job-hold-until value changed by user.");
   }
 
   cupsdLogMessage(CUPSD_LOG_INFO, "Job %d was held by \"%s\".", jobid,
   }
 
   cupsdLogMessage(CUPSD_LOG_INFO, "Job %d was held by \"%s\".", jobid,
@@ -6323,8 +6324,7 @@ move_job(cupsd_client_t  *con,            /* I - Client connection */
   ipp_attribute_t *attr;               /* Current attribute */
   int          jobid;                  /* Job ID */
   cupsd_job_t  *job;                   /* Current job */
   ipp_attribute_t *attr;               /* Current attribute */
   int          jobid;                  /* Job ID */
   cupsd_job_t  *job;                   /* Current job */
-  const char   *src,                   /* Source printer/class */
-               *dest;                  /* Destination */
+  const char   *src;                   /* Source printer/class */
   cups_ptype_t stype,                  /* Source type (printer or class) */
                dtype;                  /* Destination type (printer or class) */
   char         method[HTTP_MAX_URI],   /* Method portion of URI */
   cups_ptype_t stype,                  /* Source type (printer or class) */
                dtype;                  /* Destination type (printer or class) */
   char         method[HTTP_MAX_URI],   /* Method portion of URI */
@@ -6359,7 +6359,7 @@ move_job(cupsd_client_t  *con,            /* I - Client connection */
                   sizeof(method), username, sizeof(username), host,
                  sizeof(host), &port, resource, sizeof(resource));
 
                   sizeof(method), username, sizeof(username), host,
                  sizeof(host), &port, resource, sizeof(resource));
 
-  if ((dest = cupsdValidateDest(host, resource, &dtype, &dprinter)) == NULL)
+  if (!cupsdValidateDest(host, resource, &dtype, &dprinter))
   {
    /*
     * Bad URI...
   {
    /*
     * Bad URI...
@@ -7317,6 +7317,9 @@ release_job(cupsd_client_t  *con, /* I - Client connection */
 
     attr->value_tag = IPP_TAG_KEYWORD;
     attr->values[0].string.text = _cupsStrAlloc("no-hold");
 
     attr->value_tag = IPP_TAG_KEYWORD;
     attr->values[0].string.text = _cupsStrAlloc("no-hold");
+
+    cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, job->printer, job,
+                  "Job job-hold-until value changed by user.");
   }
 
  /*
   }
 
  /*
@@ -7325,6 +7328,9 @@ release_job(cupsd_client_t  *con, /* I - Client connection */
 
   cupsdReleaseJob(job);
 
 
   cupsdReleaseJob(job);
 
+  cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job,
+                "Job released by user.");
+
   cupsdLogMessage(CUPSD_LOG_INFO, "Job %d was released by \"%s\".", jobid,
                   username);
 
   cupsdLogMessage(CUPSD_LOG_INFO, "Job %d was released by \"%s\".", jobid,
                   username);
 
@@ -8004,7 +8010,7 @@ send_document(cupsd_client_t  *con,       /* I - Client connection */
   ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", jobid);
 
   ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state",
   ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", jobid);
 
   ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state",
-                job ? job->state_value : IPP_JOB_CANCELLED);
+                job ? job->state_value : IPP_JOB_CANCELED);
   add_job_state_reasons(con, job);
 
   con->response->request.status.status_code = IPP_OK;
   add_job_state_reasons(con, job);
 
   con->response->request.status.status_code = IPP_OK;
@@ -8053,14 +8059,12 @@ send_ipp_status(cupsd_client_t *con,    /* I - Client connection */
               _cupsLangString(con->language, message), ap);
     va_end(ap);
 
               _cupsLangString(con->language, message), ap);
     va_end(ap);
 
-    cupsdLogMessage(status >= IPP_BAD_REQUEST ? CUPSD_LOG_ERROR : CUPSD_LOG_INFO,
-                    "%s %s: %s",
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s: %s",
                    ippOpString(con->request->request.op.operation_id),
                    ippErrorString(status), formatted);
   }
   else
                    ippOpString(con->request->request.op.operation_id),
                    ippErrorString(status), formatted);
   }
   else
-    cupsdLogMessage(status >= IPP_BAD_REQUEST ? CUPSD_LOG_ERROR : CUPSD_LOG_INFO,
-                    "%s %s",
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s",
                    ippOpString(con->request->request.op.operation_id),
                    ippErrorString(status));
 
                    ippOpString(con->request->request.op.operation_id),
                    ippErrorString(status));
 
@@ -8181,6 +8185,7 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
                        resource[HTTP_MAX_URI];
                                        /* Resource portion of URI */
   int                  port;           /* Port portion of URI */
                        resource[HTTP_MAX_URI];
                                        /* Resource portion of URI */
   int                  port;           /* Port portion of URI */
+  int                  event;          /* Events? */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "set_job_attrs(%p[%d], %s)", con,
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "set_job_attrs(%p[%d], %s)", con,
@@ -8282,6 +8287,8 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
 
   cupsdLoadJob(job);
 
 
   cupsdLoadJob(job);
 
+  event = 0;
+
   for (attr = con->request->attrs; attr; attr = attr->next)
   {
     if (attr->group_tag != IPP_TAG_JOB || !attr->name)
   for (attr = con->request->attrs; attr; attr = attr->next)
   {
     if (attr->group_tag != IPP_TAG_JOB || !attr->name)
@@ -8345,7 +8352,10 @@ set_job_attrs(cupsd_client_t  *con,      /* I - Client connection */
        return;
       }
       else if (con->response->request.status.status_code == IPP_OK)
        return;
       }
       else if (con->response->request.status.status_code == IPP_OK)
+      {
         cupsdSetJobPriority(job, attr->values[0].integer);
         cupsdSetJobPriority(job, attr->values[0].integer);
+        event |= CUPSD_EVENT_JOB_CONFIG_CHANGED;
+      }
     }
     else if (!strcmp(attr->name, "job-state"))
     {
     }
     else if (!strcmp(attr->name, "job-state"))
     {
@@ -8375,7 +8385,9 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
               else if (con->response->request.status.status_code == IPP_OK)
              {
                job->state->values[0].integer = attr->values[0].integer;
               else if (con->response->request.status.status_code == IPP_OK)
              {
                job->state->values[0].integer = attr->values[0].integer;
-               job->state_value              = attr->values[0].integer;
+               job->state_value              = (ipp_jstate_t)attr->values[0].integer;
+
+                event |= CUPSD_EVENT_JOB_STATE;
              }
              break;
 
              }
              break;
 
@@ -8389,7 +8401,7 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
              }
              break;
 
              }
              break;
 
-         case IPP_JOB_CANCELLED :
+         case IPP_JOB_CANCELED :
          case IPP_JOB_ABORTED :
          case IPP_JOB_COMPLETED :
              if (job->state_value > IPP_JOB_PROCESSING)
          case IPP_JOB_ABORTED :
          case IPP_JOB_COMPLETED :
              if (job->state_value > IPP_JOB_PROCESSING)
@@ -8405,7 +8417,7 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
                if (JobHistory)
                {
                   job->state->values[0].integer = attr->values[0].integer;
                if (JobHistory)
                {
                   job->state->values[0].integer = attr->values[0].integer;
-                  job->state_value              = attr->values[0].integer;
+                  job->state_value              = (ipp_jstate_t)attr->values[0].integer;
                  cupsdSaveJob(job);
                }
              }
                  cupsdSaveJob(job);
                }
              }
@@ -8450,6 +8462,8 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
          cupsdReleaseJob(job);
        else
          cupsdHoldJob(job);
          cupsdReleaseJob(job);
        else
          cupsdHoldJob(job);
+
+        event |= CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE;
       }
     }
     else if (attr->value_tag == IPP_TAG_DELETEATTR)
       }
     }
     else if (attr->value_tag == IPP_TAG_DELETEATTR)
@@ -8470,6 +8484,8 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
          job->attrs->last = job->attrs->prev;
 
         _ippFreeAttr(attr2);
          job->attrs->last = job->attrs->prev;
 
         _ippFreeAttr(attr2);
+
+        event |= CUPSD_EVENT_JOB_CONFIG_CHANGED;
       }
     }
     else
       }
     }
     else
@@ -8479,6 +8495,8 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
       */
 
       copy_attribute(job->attrs, attr, 0);
       */
 
       copy_attribute(job->attrs, attr, 0);
+
+      event |= CUPSD_EVENT_JOB_CONFIG_CHANGED;
     }
   }
 
     }
   }
 
@@ -8488,6 +8506,19 @@ set_job_attrs(cupsd_client_t  *con,      /* I - Client connection */
 
   cupsdSaveJob(job);
 
 
   cupsdSaveJob(job);
 
+ /*
+  * Send events as needed...
+  */
+
+  if (event & CUPSD_EVENT_JOB_STATE)
+    cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job,
+                  job->state_value == IPP_JOB_HELD ?
+                     "Job held by user." : "Job restarted by user.");
+
+  if (event & CUPSD_EVENT_JOB_CONFIG_CHANGED)
+    cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, job->printer, job,
+                  "Job options changed by user.");
+
  /*
   * Start jobs if possible...
   */
  /*
   * Start jobs if possible...
   */
@@ -9200,5 +9231,5 @@ validate_user(cupsd_job_t    *job,        /* I - Job */
 
 
 /*
 
 
 /*
- * End of "$Id: ipp.c 5736 2006-07-13 19:59:36Z mike $".
+ * End of "$Id: ipp.c 5907 2006-08-30 02:18:28Z mike $".
  */
  */
index 967f9ac67b1d924dbcaefde2bbaff0a19d674e6c..79370fbba9ed4545388dbbd9f714eac52a844b62 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: job.c 5719 2006-07-11 21:04:48Z mike $"
+ * "$Id: job.c 5889 2006-08-24 21:44:35Z mike $"
  *
  *   Job management routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Job management routines for the Common UNIX Printing System (CUPS).
  *
@@ -354,7 +354,7 @@ cupsdCheckJobs(void)
        */
 
         cupsdLogMessage(CUPSD_LOG_WARN,
        */
 
         cupsdLogMessage(CUPSD_LOG_WARN,
-                       "Printer/class %s has gone away; cancelling job %d!",
+                       "Printer/class %s has gone away; canceling job %d!",
                        job->dest, job->id);
 
        cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
                        job->dest, job->id);
 
        cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
@@ -690,7 +690,7 @@ cupsdFreeAllJobs(void)
 
   cupsdHoldSignals();
 
 
   cupsdHoldSignals();
 
-  cupsdStopAllJobs();
+  cupsdStopAllJobs(1);
   cupsdSaveAllJobs();
 
   for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
   cupsdSaveAllJobs();
 
   for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
@@ -1494,7 +1494,7 @@ cupsdSetJobPriority(
  */
 
 void
  */
 
 void
-cupsdStopAllJobs(void)
+cupsdStopAllJobs(int force)            /* I - 1 = Force all filters to stop */
 {
   cupsd_job_t  *job;                   /* Current job */
 
 {
   cupsd_job_t  *job;                   /* Current job */
 
@@ -1506,7 +1506,7 @@ cupsdStopAllJobs(void)
        job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
     if (job->state_value == IPP_JOB_PROCESSING)
     {
        job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
     if (job->state_value == IPP_JOB_PROCESSING)
     {
-      cupsdStopJob(job, 1);
+      cupsdStopJob(job, force);
       job->state->values[0].integer = IPP_JOB_PENDING;
       job->state_value              = IPP_JOB_PENDING;
     }
       job->state->values[0].integer = IPP_JOB_PENDING;
       job->state_value              = IPP_JOB_PENDING;
     }
@@ -1728,7 +1728,7 @@ cupsdUpdateJob(cupsd_job_t *job)  /* I - Job to check */
       break;
   }
 
       break;
   }
 
-  if (ptr == NULL)
+  if (ptr == NULL && !job->status_buffer->bufused)
   {
    /*
     * See if all of the filters and the backend have returned their
   {
    /*
     * See if all of the filters and the backend have returned their
@@ -2053,7 +2053,7 @@ load_job_cache(const char *filename)      /* I - job.cache filename */
     }
     else if (!strcasecmp(line, "State"))
     {
     }
     else if (!strcasecmp(line, "State"))
     {
-      job->state_value = atoi(value);
+      job->state_value = (ipp_jstate_t)atoi(value);
 
       if (job->state_value < IPP_JOB_PENDING)
         job->state_value = IPP_JOB_PENDING;
 
       if (job->state_value < IPP_JOB_PENDING)
         job->state_value = IPP_JOB_PENDING;
@@ -2425,7 +2425,6 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
                                        /* PRINTER env variable */
                        rip_max_cache[255];
                                        /* RIP_MAX_CACHE env variable */
                                        /* PRINTER env variable */
                        rip_max_cache[255];
                                        /* RIP_MAX_CACHE env variable */
-  int                  remote_job;     /* Remote print job? */
   static char          *options = NULL;/* Full list of options */
   static int           optlength = 0;  /* Length of option buffer */
 
   static char          *options = NULL;/* Full list of options */
   static int           optlength = 0;  /* Length of option buffer */
 
@@ -2435,7 +2434,7 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
 
   if (job->num_files == 0)
   {
 
   if (job->num_files == 0)
   {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Job ID %d has no files!  Cancelling it!",
+    cupsdLogMessage(CUPSD_LOG_ERROR, "Job ID %d has no files!  Canceling it!",
                     job->id);
 
     cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
                     job->id);
 
     cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
@@ -2566,18 +2565,11 @@ start_job(cupsd_job_t     *job,         /* I - Job ID */
 
   FilterLevel += job->cost;
 
 
   FilterLevel += job->cost;
 
- /*
-  * Determine if we are printing to a remote printer...
-  */
-
-  remote_job = printer->raw && job->num_files > 1 &&
-               !strncmp(printer->device_uri, "ipp://", 6);
-
  /*
   * Add decompression filters, if any...
   */
 
  /*
   * Add decompression filters, if any...
   */
 
-  if (!remote_job && job->compressions[job->current_file])
+  if (!printer->raw && job->compressions[job->current_file])
   {
    /*
     * Add gziptoany filter to the front of the list...
   {
    /*
     * Add gziptoany filter to the front of the list...
@@ -2911,7 +2903,7 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
   * For remote jobs, we send all of the files in the argument list.
   */
 
   * For remote jobs, we send all of the files in the argument list.
   */
 
-  if (remote_job)
+  if (printer->remote && job->num_files > 1)
     argv = calloc(7 + job->num_files, sizeof(char *));
   else
     argv = calloc(8, sizeof(char *));
     argv = calloc(7 + job->num_files, sizeof(char *));
   else
     argv = calloc(8, sizeof(char *));
@@ -2925,7 +2917,7 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
   argv[4] = copies;
   argv[5] = options;
 
   argv[4] = copies;
   argv[5] = options;
 
-  if (remote_job)
+  if (printer->remote && job->num_files > 1)
   {
     for (i = 0; i < job->num_files; i ++)
     {
   {
     for (i = 0; i < job->num_files; i ++)
     {
@@ -3018,11 +3010,12 @@ start_job(cupsd_job_t     *job,         /* I - Job ID */
   envp[envc ++] = device_uri;
   envp[envc ++] = printer_name;
 
   envp[envc ++] = device_uri;
   envp[envc ++] = printer_name;
 
-  if ((filter = (mime_filter_t *)cupsArrayLast(filters)) != NULL)
+  if (!printer->remote &&
+      (filter = (mime_filter_t *)cupsArrayLast(filters)) != NULL)
   {
     snprintf(final_content_type, sizeof(final_content_type),
              "FINAL_CONTENT_TYPE=%s/%s",
   {
     snprintf(final_content_type, sizeof(final_content_type),
              "FINAL_CONTENT_TYPE=%s/%s",
-            filter->src->super, filter->src->type);
+            filter->dst->super, filter->dst->type);
     envp[envc ++] = final_content_type;
   }
 
     envp[envc ++] = final_content_type;
   }
 
@@ -3059,7 +3052,7 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
       cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] envp[%d]=\"DEVICE_URI=%s\"",
                       job->id, i, sani_uri);
 
       cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] envp[%d]=\"DEVICE_URI=%s\"",
                       job->id, i, sani_uri);
 
-  if (remote_job)
+  if (printer->remote)
     job->current_file = job->num_files;
   else
     job->current_file ++;
     job->current_file = job->num_files;
   else
     job->current_file ++;
@@ -3355,7 +3348,7 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
                  slot, filterfds[slot][0], filterfds[slot][1]);
   cupsdClosePipe(filterfds[slot]);
 
                  slot, filterfds[slot][0], filterfds[slot][1]);
   cupsdClosePipe(filterfds[slot]);
 
-  if (remote_job)
+  if (printer->remote && job->num_files > 1)
   {
     for (i = 0; i < job->num_files; i ++)
       free(argv[i + 6]);
   {
     for (i = 0; i < job->num_files; i ++)
       free(argv[i + 6]);
@@ -3399,7 +3392,7 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
 
   cupsArrayDelete(filters);
 
 
   cupsArrayDelete(filters);
 
-  if (remote_job)
+  if (printer->remote && job->num_files > 1)
   {
     for (i = 0; i < job->num_files; i ++)
       free(argv[i + 6]);
   {
     for (i = 0; i < job->num_files; i ++)
       free(argv[i + 6]);
@@ -3433,5 +3426,5 @@ unload_job(cupsd_job_t *job)              /* I - Job */
 
 
 /*
 
 
 /*
- * End of "$Id: job.c 5719 2006-07-11 21:04:48Z mike $".
+ * End of "$Id: job.c 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index 93bb774b22aaa9e30aef604c964bab4339887a60..48148c969d11333620284d36d3f14bd981a9a98d 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: job.h 5393 2006-04-14 18:17:18Z mike $"
+ * "$Id: job.h 5833 2006-08-16 20:05:58Z mike $"
  *
  *   Print job definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
  *
  *   Print job definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -115,11 +115,11 @@ extern void               cupsdSaveAllJobs(void);
 extern void            cupsdSaveJob(cupsd_job_t *job);
 extern void            cupsdSetJobHoldUntil(cupsd_job_t *job, const char *when);
 extern void            cupsdSetJobPriority(cupsd_job_t *job, int priority);
 extern void            cupsdSaveJob(cupsd_job_t *job);
 extern void            cupsdSetJobHoldUntil(cupsd_job_t *job, const char *when);
 extern void            cupsdSetJobPriority(cupsd_job_t *job, int priority);
-extern void            cupsdStopAllJobs(void);
+extern void            cupsdStopAllJobs(int force);
 extern void            cupsdStopJob(cupsd_job_t *job, int force);
 extern void            cupsdUpdateJob(cupsd_job_t *job);
 
 
 /*
 extern void            cupsdStopJob(cupsd_job_t *job, int force);
 extern void            cupsdUpdateJob(cupsd_job_t *job);
 
 
 /*
- * End of "$Id: job.h 5393 2006-04-14 18:17:18Z mike $".
+ * End of "$Id: job.h 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index 2806c26bc6f1d65d6191bd6e0cd63c9e9a68fec8..101f178de7a747e72e8a69011c1777d6a2ba58b8 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: main.c 5634 2006-06-06 17:48:27Z mike $"
+ * "$Id: main.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Scheduler main loop for the Common UNIX Printing System (CUPS).
  *
  *
  *   Scheduler main loop for the Common UNIX Printing System (CUPS).
  *
@@ -660,7 +660,7 @@ main(int  argc,                             /* I - Number of command-line args */
     * inactivity...
     */
 
     * inactivity...
     */
 
-    if (timeout.tv_sec == 86400 && Launchd && LaunchdTimeout &&
+    if (timeout.tv_sec == 86400 && Launchd && LaunchdTimeout && !NumPolled &&
        (!Browsing || !(BrowseLocalProtocols & BROWSE_DNSSD) ||
         cupsArrayCount(Printers) == 0))
     {
        (!Browsing || !(BrowseLocalProtocols & BROWSE_DNSSD) ||
         cupsArrayCount(Printers) == 0))
     {
@@ -1628,7 +1628,7 @@ launchd_sync_conf(void)
                          kCFBooleanTrue);
 
     if ((Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)) ||
                          kCFBooleanTrue);
 
     if ((Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)) ||
-        cupsArrayCount(ActiveJobs))
+        cupsArrayCount(ActiveJobs) || NumPolled)
       CFDictionaryAddValue(cupsd_dict, CFSTR(LAUNCH_JOBKEY_RUNATLOAD),
                            kCFBooleanTrue);
     else
       CFDictionaryAddValue(cupsd_dict, CFSTR(LAUNCH_JOBKEY_RUNATLOAD),
                            kCFBooleanTrue);
     else
@@ -1893,7 +1893,7 @@ process_children(void)
 #endif /* HAVE_WAITPID */
   {
    /*
 #endif /* HAVE_WAITPID */
   {
    /*
-    * Ignore SIGTERM errors - that comes when a job is cancelled...
+    * Ignore SIGTERM errors - that comes when a job is canceled...
     */
 
     cupsdFinishProcess(pid, name, sizeof(name));
     */
 
     cupsdFinishProcess(pid, name, sizeof(name));
@@ -2253,5 +2253,5 @@ usage(int status)                 /* O - Exit status */
 
 
 /*
 
 
 /*
- * End of "$Id: main.c 5634 2006-06-06 17:48:27Z mike $".
+ * End of "$Id: main.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 9c5aa6448e6e24ad98eb0b696ff25e0de113622d..2b44bf121282dfa6caf8298a589df9dbe362cfa3 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: mime.h 5487 2006-05-03 19:28:29Z mike $"
+ * "$Id: mime.h 5771 2006-07-20 18:06:20Z mike $"
  *
  *   MIME type/conversion database definitions for the Common UNIX Printing System (CUPS).
  *
  *
  *   MIME type/conversion database definitions for the Common UNIX Printing System (CUPS).
  *
@@ -34,9 +34,9 @@
  * C++ magic...
  */
 
  * C++ magic...
  */
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 extern "C" {
 extern "C" {
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 
 
 /*
 
 
 /*
@@ -147,11 +147,11 @@ extern mime_filter_t      *mimeFirstFilter(mime_t *mime);
 extern mime_filter_t   *mimeNextFilter(mime_t *mime);
 extern int             mimeNumFilters(mime_t *mime);
 
 extern mime_filter_t   *mimeNextFilter(mime_t *mime);
 extern int             mimeNumFilters(mime_t *mime);
 
-#  ifdef _cplusplus
+#  ifdef __cplusplus
 }
 }
-#  endif /* _cplusplus */
+#  endif /* __cplusplus */
 #endif /* !_CUPS_MIME_H_ */
 
 /*
 #endif /* !_CUPS_MIME_H_ */
 
 /*
- * End of "$Id: mime.h 5487 2006-05-03 19:28:29Z mike $".
+ * End of "$Id: mime.h 5771 2006-07-20 18:06:20Z mike $".
  */
  */
index e869c48ee331c9d12915c8c675f722af6d526773..606978e3e8d76adfb21f6669bdcd165497e0570f 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: policy.c 5247 2006-03-08 13:43:38Z mike $"
+ * "$Id: policy.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   Policy routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Policy routines for the Common UNIX Printing System (CUPS).
  *
@@ -195,7 +195,7 @@ cupsdCheckPolicy(cupsd_policy_t *p, /* I - Policy */
   {
     cupsdLogMessage(CUPSD_LOG_CRIT, "cupsdCheckPolicy: p=%p, con=%p!", p, con);
 
   {
     cupsdLogMessage(CUPSD_LOG_CRIT, "cupsdCheckPolicy: p=%p, con=%p!", p, con);
 
-    return (0);
+    return ((http_status_t)0);
   }
 
  /*
   }
 
  /*
@@ -205,7 +205,7 @@ cupsdCheckPolicy(cupsd_policy_t *p, /* I - Policy */
   if ((po = cupsdFindPolicyOp(p, con->request->request.op.operation_id)) == NULL)
   {
     cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCheckPolicy: No matching operation, returning 0!");
   if ((po = cupsdFindPolicyOp(p, con->request->request.op.operation_id)) == NULL)
   {
     cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCheckPolicy: No matching operation, returning 0!");
-    return (0);
+    return ((http_status_t)0);
   }
 
   con->best = po;
   }
 
   con->best = po;
@@ -330,5 +330,5 @@ cupsdFindPolicyOp(cupsd_policy_t *p,        /* I - Policy */
 
 
 /*
 
 
 /*
- * End of "$Id: policy.c 5247 2006-03-08 13:43:38Z mike $".
+ * End of "$Id: policy.c 5838 2006-08-17 14:41:42Z mike $".
  */
  */
index f1cb56352c13c57cafef2821bcb46e645a7513f0..02e0a219aa15f61ec2dcb5c210bb4f26f245ce40 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: printers.c 5724 2006-07-12 19:42:35Z mike $"
+ * "$Id: printers.c 5828 2006-08-15 21:21:45Z mike $"
  *
  *   Printer routines for the Common UNIX Printing System (CUPS).
  *
  *
  *   Printer routines for the Common UNIX Printing System (CUPS).
  *
@@ -1492,7 +1492,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
     else
       snprintf(resource, sizeof(resource), "/printers/%s", p->name);
 
     else
       snprintf(resource, sizeof(resource), "/printers/%s", p->name);
 
-    if ((auth = cupsdFindBest(resource, HTTP_POST)) == NULL)
+    if ((auth = cupsdFindBest(resource, HTTP_POST)) == NULL ||
+        auth->type == AUTH_NONE)
       auth = cupsdFindPolicyOp(p->op_policy_ptr, IPP_PRINT_JOB);
 
     if (auth)
       auth = cupsdFindPolicyOp(p->op_policy_ptr, IPP_PRINT_JOB);
 
     if (auth)
@@ -1572,7 +1573,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
 
   printer_type = p->type;
 
 
   printer_type = p->type;
 
-  p->raw = 0;
+  p->raw    = 0;
+  p->remote = 0;
 
   if (p->type & CUPS_PRINTER_REMOTE)
   {
 
   if (p->type & CUPS_PRINTER_REMOTE)
   {
@@ -1590,7 +1592,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
     ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "device-uri", NULL,
                 p->uri);
 
     ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "device-uri", NULL,
                 p->uri);
 
-    p->raw = 1;
+    p->raw    = 1;
+    p->remote = 1;
   }
   else
   {
   }
   else
   {
@@ -2030,7 +2033,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
          * Print all files directly...
          */
 
          * Print all files directly...
          */
 
-         p->raw = 1;
+         p->raw    = 1;
+         p->remote = 1;
        }
        else
        {
        }
        else
        {
@@ -3312,5 +3316,5 @@ write_irix_state(cupsd_printer_t *p)      /* I - Printer to update */
 
 
 /*
 
 
 /*
- * End of "$Id: printers.c 5724 2006-07-12 19:42:35Z mike $".
+ * End of "$Id: printers.c 5828 2006-08-15 21:21:45Z mike $".
  */
  */
index ef8b3470909ef672748f076245de2e754c02b845..acbc73800ca62ce4714752daa8fe198bd564fa11 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: printers.h 5330 2006-03-23 21:07:20Z mike $"
+ * "$Id: printers.h 5828 2006-08-15 21:21:45Z mike $"
  *
  *   Printer definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
  *
  *   Printer definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -66,6 +66,7 @@ typedef struct cupsd_printer_s
   char         *device_uri;            /* Device URI */
   char         *port_monitor;          /* Port monitor */
   int          raw;                    /* Raw queue? */
   char         *device_uri;            /* Device URI */
   char         *port_monitor;          /* Port monitor */
   int          raw;                    /* Raw queue? */
+  int          remote;                 /* Remote queue? */
   mime_type_t  *filetype;              /* Pseudo-filetype for printer */
   cups_array_t *filetypes;             /* Supported file types */
   void         *job;                   /* Current job in queue */
   mime_type_t  *filetype;              /* Pseudo-filetype for printer */
   cups_array_t *filetypes;             /* Supported file types */
   void         *job;                   /* Current job in queue */
@@ -146,5 +147,5 @@ extern char         *cupsdSanitizeURI(const char *uri, char *buffer,
 
 
 /*
 
 
 /*
- * End of "$Id: printers.h 5330 2006-03-23 21:07:20Z mike $".
+ * End of "$Id: printers.h 5828 2006-08-15 21:21:45Z mike $".
  */
  */
index eb257d7876e289014e0f061bfbdbd1cef4e7878e..b10f63ebc8f4edfb635b85bacb02b02b577346b6 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: statbuf.c 5447 2006-04-21 20:07:51Z mike $"
+ * "$Id: statbuf.c 5889 2006-08-24 21:44:35Z mike $"
  *
  *   Status buffer routines for the Common UNIX Printing System (CUPS)
  *   scheduler.
  *
  *   Status buffer routines for the Common UNIX Printing System (CUPS)
  *   scheduler.
@@ -193,7 +193,7 @@ cupsdStatBufUpdate(cupsd_statbuf_t *sb,     /* I - Status buffer */
       lineptr = NULL;
   }
 
       lineptr = NULL;
   }
 
-  if (lineptr == NULL)
+  if (!lineptr)
   {
    /*
     * End of file...
   {
    /*
     * End of file...
@@ -330,5 +330,5 @@ cupsdStatBufUpdate(cupsd_statbuf_t *sb,     /* I - Status buffer */
 
 
 /*
 
 
 /*
- * End of "$Id: statbuf.c 5447 2006-04-21 20:07:51Z mike $".
+ * End of "$Id: statbuf.c 5889 2006-08-24 21:44:35Z mike $".
  */
  */
index f27c48ff4272c33a5e4655bc652a9f1a5ec1a0a0..f3a320594776364db53d70ad64be4dba41193300 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: subscriptions.c 5716 2006-07-11 17:56:57Z mike $"
+ * "$Id: subscriptions.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   Subscription routines for the Common UNIX Printing System (CUPS) scheduler.
  *
  *
  *   Subscription routines for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -267,7 +267,7 @@ cupsdAddEvent(
                           "job-stopped");
               break;
 
                           "job-stopped");
               break;
 
-         case IPP_JOB_CANCELLED :
+         case IPP_JOB_CANCELED :
               ippAddString(temp->attrs, IPP_TAG_EVENT_NOTIFICATION,
                           IPP_TAG_KEYWORD, "job-state-reasons", NULL,
                           "job-canceled-by-user");
               ippAddString(temp->attrs, IPP_TAG_EVENT_NOTIFICATION,
                           IPP_TAG_KEYWORD, "job-state-reasons", NULL,
                           "job-canceled-by-user");
@@ -1245,13 +1245,12 @@ cupsdStopAllNotifiers(void)
 void
 cupsdUpdateNotifierStatus(void)
 {
 void
 cupsdUpdateNotifierStatus(void)
 {
-  char         *ptr,                   /* Pointer to end of line in buffer */
-               message[1024];          /* Pointer to message text */
+  char         message[1024];          /* Pointer to message text */
   int          loglevel;               /* Log level for message */
 
 
   int          loglevel;               /* Log level for message */
 
 
-  while ((ptr = cupsdStatBufUpdate(NotifierStatusBuffer, &loglevel,
-                                   message, sizeof(message))) != NULL)
+  while (cupsdStatBufUpdate(NotifierStatusBuffer, &loglevel,
+                            message, sizeof(message)))
     if (!strchr(NotifierStatusBuffer->buffer, '\n'))
       break;
 }
     if (!strchr(NotifierStatusBuffer->buffer, '\n'))
       break;
 }
@@ -1506,7 +1505,6 @@ cupsd_start_notifier(
 {
   int  pid;                            /* Notifier process ID */
   int  fds[2];                         /* Pipe file descriptors */
 {
   int  pid;                            /* Notifier process ID */
   int  fds[2];                         /* Pipe file descriptors */
-  int  envc;                           /* Number of environment variables */
   char *argv[4],                       /* Command-line arguments */
        *envp[MAX_ENV],                 /* Environment variables */
        user_data[128],                 /* Base-64 encoded user data */
   char *argv[4],                       /* Command-line arguments */
        *envp[MAX_ENV],                 /* Environment variables */
        user_data[128],                 /* Base-64 encoded user data */
@@ -1546,7 +1544,7 @@ cupsd_start_notifier(
   * Setup the environment...
   */
 
   * Setup the environment...
   */
 
-  envc = cupsdLoadEnv(envp, (int)(sizeof(envp) / sizeof(envp[0])));
+  cupsdLoadEnv(envp, (int)(sizeof(envp) / sizeof(envp[0])));
 
  /*
   * Create pipes as needed...
 
  /*
   * Create pipes as needed...
@@ -1624,5 +1622,5 @@ cupsd_start_notifier(
 
 
 /*
 
 
 /*
- * End of "$Id: subscriptions.c 5716 2006-07-11 17:56:57Z mike $".
+ * End of "$Id: subscriptions.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index f833198534f50fd7447a24efb896153aadb3b1c5..853ff86c8d5396b357daed0594778e355f718273 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: sysman.c 5305 2006-03-18 03:05:12Z mike $"
+ * "$Id: sysman.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   System management definitions for the Common UNIX Printing System (CUPS).
  *
  *
  *   System management definitions for the Common UNIX Printing System (CUPS).
  *
@@ -289,7 +289,7 @@ cupsdUpdateSystemMonitor(void)
 
       Sleeping = 1;
 
 
       Sleeping = 1;
 
-      cupsdStopAllJobs();
+      cupsdStopAllJobs(0);
       cupsdSaveAllJobs();
 
       for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
       cupsdSaveAllJobs();
 
       for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
@@ -350,6 +350,7 @@ cupsdUpdateSystemMonitor(void)
          p->browse_time = 0;
 
         cupsdSendBrowseList();
          p->browse_time = 0;
 
         cupsdSendBrowseList();
+       cupsdRestartPolling();
       }
       else
         cupsdLogMessage(CUPSD_LOG_DEBUG,
       }
       else
         cupsdLogMessage(CUPSD_LOG_DEBUG,
@@ -727,5 +728,5 @@ sysEventTimerNotifier(
 
 
 /*
 
 
 /*
- * End of "$Id: sysman.c 5305 2006-03-18 03:05:12Z mike $".
+ * End of "$Id: sysman.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
diff --git a/scheduler/testlpd.c b/scheduler/testlpd.c
new file mode 100644 (file)
index 0000000..a499503
--- /dev/null
@@ -0,0 +1,550 @@
+/*
+ * "$Id: testlpd.c 5868 2006-08-23 19:39:39Z mike $"
+ *
+ *   cups-lpd test program for the Common UNIX Printing System (CUPS).
+ *
+ *   Copyright 2006 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
+ *   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
+ *
+ * Contents:
+ *
+ *   main()          - Simulate an LPD client.
+ *   do_command()    - Send the LPD command and wait for a response.
+ *   print_job()     - Submit a file for printing.
+ *   print_waiting() - Print waiting jobs.
+ *   remove_job()    - Cancel a print job.
+ *   status_long()   - Show the long printer status.
+ *   status_short()  - Show the short printer status.
+ *   usage()         - Show program usage...
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <cups/cups.h>
+#include <cups/string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <signal.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+
+/*
+ * Local functions...
+ */
+
+static int     do_command(int outfd, int infd, const char *command);
+static int     print_job(int outfd, int infd, char *dest, char **args);
+static int     print_waiting(int outfd, int infd, char *dest);
+static int     remove_job(int outfd, int infd, char *dest, char **args);
+static int     status_long(int outfd, int infd, char *dest, char **args);
+static int     status_short(int outfd, int infd, char *dest, char **args);
+static void    usage(void);
+
+
+/*
+ * 'main()' - Simulate an LPD client.
+ */
+
+int                                    /* O - Exit status */
+main(int  argc,                                /* I - Number of command-line arguments */
+     char *argv[])                     /* I - Command-line arguments */
+{
+  int  i;                              /* Looping var */
+  int  status;                         /* Test status */
+  char *op,                            /* Operation to test */
+       **opargs,                       /* Remaining arguments */
+       *dest;                          /* Destination */
+  int  cupslpd_argc;                   /* Argument count for cups-lpd */
+  char *cupslpd_argv[1000];            /* Arguments for cups-lpd */
+  int  cupslpd_stdin[2],               /* Standard input for cups-lpd */
+       cupslpd_stdout[2],              /* Standard output for cups-lpd */
+       cupslpd_pid;                    /* Process ID for cups-lpd */
+
+
+ /*
+  * Collect command-line arguments...
+  */
+
+  op              = NULL;
+  opargs          = NULL;
+  dest            = NULL;
+  cupslpd_argc    = 1;
+  cupslpd_argv[0] = (char *)"cups-lpd";
+
+  for (i = 1; i < argc; i ++)
+    if (!strncmp(argv[i], "-o", 2))
+    {
+      cupslpd_argv[cupslpd_argc++] = argv[i];
+
+      if (argv[i][2])
+      {
+        i ++;
+
+       if (i >= argc)
+         usage();
+
+       cupslpd_argv[cupslpd_argc++] = argv[i];
+      }
+    }
+    else if (argv[i][0] == '-')
+      usage();
+    else if (!op)
+      op = argv[i];
+    else if (!dest)
+      dest = argv[i];
+    else
+    {
+      opargs = argv + i;
+      break;
+    }
+
+  if (!op ||
+      (!strcmp(op, "print-job") && (!dest || !opargs)) ||
+      (!strcmp(op, "remove-job") && (!dest || !opargs)) ||
+      (strcmp(op, "print-job") && strcmp(op, "print-waiting") &&
+       strcmp(op, "remove-job") && strcmp(op, "status-long") &&
+       strcmp(op, "status-short")))
+    usage();
+
+ /*
+  * Run the cups-lpd program using pipes...
+  */
+
+  cupslpd_argv[cupslpd_argc] = NULL;
+
+  pipe(cupslpd_stdin);
+  pipe(cupslpd_stdout);
+
+  if ((cupslpd_pid = fork()) < 0)
+  {
+   /*
+    * Error!
+    */
+
+    perror("testlpd: Unable to fork");
+    return (1);
+  }
+  else if (cupslpd_pid == 0)
+  {
+   /*
+    * Child goes here...
+    */
+
+    close(0);
+    dup(cupslpd_stdin[0]);
+    close(cupslpd_stdin[0]);
+    close(cupslpd_stdin[1]);
+
+    close(1);
+    dup(cupslpd_stdout[1]);
+    close(cupslpd_stdout[0]);
+    close(cupslpd_stdout[1]);
+
+    execv("./cups-lpd", cupslpd_argv);
+
+    perror("testlpd: Unable to exec ./cups-lpd");
+    exit(errno);
+  }
+  else
+  {
+    close(cupslpd_stdin[0]);
+    close(cupslpd_stdout[1]);
+  }
+
+ /*
+  * Do the operation test...
+  */
+
+  if (!strcmp(op, "print-job"))
+    status = print_job(cupslpd_stdin[1], cupslpd_stdout[0], dest, opargs);
+  else if (!strcmp(op, "print-waiting"))
+    status = print_waiting(cupslpd_stdin[1], cupslpd_stdout[0], dest);
+  else if (!strcmp(op, "remove-job"))
+    status = remove_job(cupslpd_stdin[1], cupslpd_stdout[0], dest, opargs);
+  else if (!strcmp(op, "status-long"))
+    status = status_long(cupslpd_stdin[1], cupslpd_stdout[0], dest, opargs);
+  else if (!strcmp(op, "status-short"))
+    status = status_short(cupslpd_stdin[1], cupslpd_stdout[0], dest, opargs);
+
+ /*
+  * Kill the test program...
+  */
+
+  close(cupslpd_stdin[1]);
+  close(cupslpd_stdout[0]);
+  kill(cupslpd_pid, SIGTERM);
+
+ /*
+  * Return the test status...
+  */
+
+  return (status);
+}
+
+
+/*
+ * 'do_command()' - Send the LPD command and wait for a response.
+ */
+
+static int                             /* O - Status from cups-lpd */
+do_command(int        outfd,           /* I - Command file descriptor */
+           int        infd,            /* I - Response file descriptor */
+          const char *command)         /* I - Command line to send */
+{
+  int  len;                            /* Length of command line */
+  char status;                         /* Status byte */
+
+
+  printf("COMMAND: %02X %s", command[0], command + 1);
+
+  len = strlen(command);
+
+  if (write(outfd, command, len) < len)
+  {
+    puts("    Write failed!");
+    return (-1);
+  }
+
+  if (read(infd, &status, 1) < 1)
+    puts("IN: ERROR");
+  else
+    printf("IN: %d\n", status);
+
+  return (status);
+}
+
+
+/*
+ * 'print_job()' - Submit a file for printing.
+ */
+
+static int                             /* O - Status from cups-lpd */
+print_job(int  outfd,                  /* I - Command file descriptor */
+          int  infd,                   /* I - Response file descriptor */
+         char *dest,                   /* I - Destination */
+         char **args)                  /* I - Arguments */
+{
+  int          fd;                     /* Print file descriptor */
+  char         command[1024],          /* Command buffer */
+               control[1024],          /* Control file */
+               buffer[8192];           /* Print buffer */
+  int          status;                 /* Status of command */
+  struct stat  fileinfo;               /* File information */
+  char         *jobname;               /* Job name */
+  int          sequence;               /* Sequence number */
+  int          bytes;                  /* Bytes read/written */
+
+
+ /*
+  * Check the print file...
+  */
+
+  if (stat(args[0], &fileinfo))
+  {
+    perror(args[0]);
+    return (-1);
+  }
+
+  if ((fd = open(args[0], O_RDONLY)) < 0)
+  {
+    perror(args[0]);
+    return (-1);
+  }
+
+ /*
+  * Send the "receive print job" command...
+  */
+
+  snprintf(command, sizeof(command), "\002%s\n", dest);
+  if ((status = do_command(outfd, infd, command)) != 0)
+  {
+    close(fd);
+    return (status);
+  }
+
+ /*
+  * Format a control file string that will be used to submit the job...
+  */
+
+  if ((jobname = strrchr(args[0], '/')) != NULL)
+    jobname ++;
+  else
+    jobname = args[0];
+
+  sequence = (int)getpid() % 1000;
+
+  snprintf(control, sizeof(control),
+           "Hlocalhost\n"
+           "P%s\n"
+           "J%s\n"
+           "ldfA%03.3dlocalhost\n"
+           "UdfA%03.3dlocalhost\n"
+           "N%s\n",
+          cupsUser(), jobname, sequence, sequence, jobname);
+
+ /*
+  * Send the control file...
+  */
+
+  bytes = strlen(control);
+
+  snprintf(command, sizeof(command), "\002%d cfA%03.3dlocalhost\n",
+           bytes, sequence);
+
+  if ((status = do_command(outfd, infd, command)) != 0)
+  {
+    close(fd);
+    return (status);
+  }
+
+  bytes ++;
+
+  if (write(outfd, control, bytes) < bytes)
+  {
+    printf("CONTROL: Unable to write %d bytes!\n", bytes);
+    close(fd);
+    return (-1);
+  }
+
+  printf("CONTROL: Wrote %d bytes.\n", bytes);
+
+  if (read(infd, command, 1) < 1)
+  {
+    puts("IN: ERROR");
+    close(fd);
+    return (-1);
+  }
+  else
+  {
+    status = command[0];
+
+    printf("IN: %d\n", status);
+  }
+
+ /*
+  * Send the data file...
+  */
+
+  snprintf(command, sizeof(command), "\003%d dfA%03.3dlocalhost\n",
+           (int)fileinfo.st_size, sequence);
+
+  if ((status = do_command(outfd, infd, command)) != 0)
+  {
+    close(fd);
+    return (status);
+  }
+
+  while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
+  {
+    if (write(outfd, buffer, bytes) < bytes)
+    {
+      printf("DATA: Unable to write %d bytes!\n", bytes);
+      close(fd);
+      return (-1);
+    }
+  }
+
+  write(outfd, "", 1);
+
+  close(fd);
+
+  printf("DATA: Wrote %d bytes.\n", (int)fileinfo.st_size);
+
+  if (read(infd, command, 1) < 1)
+  {
+    puts("IN: ERROR");
+    close(fd);
+    return (-1);
+  }
+  else
+  {
+    status = command[0];
+
+    printf("IN: %d\n", status);
+  }
+
+  return (status);
+}
+
+
+/*
+ * 'print_waiting()' - Print waiting jobs.
+ */
+
+static int                             /* O - Status from cups-lpd */
+print_waiting(int  outfd,              /* I - Command file descriptor */
+              int  infd,               /* I - Response file descriptor */
+             char *dest)               /* I - Destination */
+{
+  char         command[1024];          /* Command buffer */
+
+
+ /*
+  * Send the "print waiting jobs" command...
+  */
+
+  snprintf(command, sizeof(command), "\001%s\n", dest);
+
+  return (do_command(outfd, infd, command));
+}
+
+
+/*
+ * 'remove_job()' - Cancel a print job.
+ */
+
+static int                             /* O - Status from cups-lpd */
+remove_job(int  outfd,                 /* I - Command file descriptor */
+           int  infd,                  /* I - Response file descriptor */
+          char *dest,                  /* I - Destination */
+          char **args)                 /* I - Arguments */
+{
+  int          i;                      /* Looping var */
+  char         command[1024];          /* Command buffer */
+
+ /*
+  * Send the "remove jobs" command...
+  */
+
+  snprintf(command, sizeof(command), "\005%s", dest);
+
+  for (i = 0; args[i]; i ++)
+  {
+    strlcat(command, " ", sizeof(command));
+    strlcat(command, args[i], sizeof(command));
+  }
+
+  strlcat(command, "\n", sizeof(command));
+
+  return (do_command(outfd, infd, command));
+}
+
+
+/*
+ * 'status_long()' - Show the long printer status.
+ */
+
+static int                             /* O - Status from cups-lpd */
+status_long(int  outfd,                        /* I - Command file descriptor */
+            int  infd,                 /* I - Response file descriptor */
+           char *dest,                 /* I - Destination */
+           char **args)                /* I - Arguments */
+{
+  char         command[1024],          /* Command buffer */
+               buffer[8192];           /* Status buffer */
+  int          bytes;                  /* Bytes read/written */
+
+
+ /*
+  * Send the "send short status" command...
+  */
+
+  if (args)
+    snprintf(command, sizeof(command), "\004%s %s\n", dest, args[0]);
+  else
+    snprintf(command, sizeof(command), "\004%s\n", dest);
+
+  bytes = strlen(command);
+
+  if (write(outfd, command, bytes) < bytes)
+    return (-1);
+
+ /*
+  * Read the status back...
+  */
+
+  while ((bytes = read(infd, buffer, sizeof(buffer))) > 0)
+  {
+    fwrite(buffer, 1, bytes, stdout);
+    fflush(stdout);
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'status_short()' - Show the short printer status.
+ */
+
+static int                             /* O - Status from cups-lpd */
+status_short(int  outfd,               /* I - Command file descriptor */
+             int  infd,                        /* I - Response file descriptor */
+            char *dest,                /* I - Destination */
+            char **args)               /* I - Arguments */
+{
+  char         command[1024],          /* Command buffer */
+               buffer[8192];           /* Status buffer */
+  int          bytes;                  /* Bytes read/written */
+
+
+ /*
+  * Send the "send short status" command...
+  */
+
+  if (args)
+    snprintf(command, sizeof(command), "\003%s %s\n", dest, args[0]);
+  else
+    snprintf(command, sizeof(command), "\003%s\n", dest);
+
+  bytes = strlen(command);
+
+  if (write(outfd, command, bytes) < bytes)
+    return (-1);
+
+ /*
+  * Read the status back...
+  */
+
+  while ((bytes = read(infd, buffer, sizeof(buffer))) > 0)
+  {
+    fwrite(buffer, 1, bytes, stdout);
+    fflush(stdout);
+  }
+
+  return (0);
+}
+
+
+/*
+ * 'usage()' - Show program usage...
+ */
+
+static void
+usage(void)
+{
+  puts("Usage: testlpd [options] print-job printer user filename [... filename]");
+  puts("       testlpd [options] print-waiting [printer or user]");
+  puts("       testlpd [options] remove-job printer [user [job-id]]");
+  puts("       testlpd [options] status-long [printer or user]");
+  puts("       testlpd [options] status-short [printer or user]");
+  puts("");
+  puts("Options:");
+  puts("    -o name=value");
+
+  exit(0);
+}
+
+
+/*
+ * End of "$Id: testlpd.c 5868 2006-08-23 19:39:39Z mike $".
+ */
index 14f7201d45376cb81046f358ac2891db2deb91b7..5757a39a8a3a79798d59d7083a52bd8ed7a53932 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: accept.c 5104 2006-02-15 03:21:04Z mike $"
+ * "$Id: accept.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "accept", "disable", "enable", and "reject" commands for the Common
  *   UNIX Printing System (CUPS).
  *
  *   "accept", "disable", "enable", and "reject" commands for the Common
  *   UNIX Printing System (CUPS).
@@ -58,6 +58,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   int          cancel;                 /* Cancel jobs? */
 
 
   int          cancel;                 /* Cancel jobs? */
 
 
+  _cupsSetLocale();
+
  /*
   * See what operation we're supposed to do...
   */
  /*
   * See what operation we're supposed to do...
   */
@@ -286,5 +288,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
 
 
 /*
- * End of "$Id: accept.c 5104 2006-02-15 03:21:04Z mike $".
+ * End of "$Id: accept.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index f6d4aed0a762dd81dabe324f19ef7779865d075a..2d1a18d1cd910eb828643b0f04c782acd4443769 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cancel.c 5696 2006-06-26 18:34:20Z mike $"
+ * "$Id: cancel.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "cancel" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "cancel" command for the Common UNIX Printing System (CUPS).
  *
@@ -60,6 +60,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   ipp_op_t     op;                     /* Operation */
 
 
   ipp_op_t     op;                     /* Operation */
 
 
+  _cupsSetLocale();
+
  /*
   * Setup to cancel individual print jobs...
   */
  /*
   * Setup to cancel individual print jobs...
   */
@@ -390,5 +392,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
 
 
 /*
- * End of "$Id: cancel.c 5696 2006-06-26 18:34:20Z mike $".
+ * End of "$Id: cancel.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index 0c74fbff078ba5a8afdca65457c75ec981f48191..69d80ae51bb4838ac887d3cc3bbb1d66444da861 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cupsaddsmb.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: cupsaddsmb.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "cupsaddsmb" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "cupsaddsmb" command for the Common UNIX Printing System (CUPS).
  *
@@ -78,6 +78,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   cups_dest_t  *dests;                 /* Printers */
 
 
   cups_dest_t  *dests;                 /* Printers */
 
 
+  _cupsSetLocale();
+
  /*
   * Parse command-line arguments...
   */
  /*
   * Parse command-line arguments...
   */
@@ -292,5 +294,5 @@ usage(void)
 
 
 /*
 
 
 /*
- * End of "$Id: cupsaddsmb.c 5753 2006-07-18 19:53:24Z mike $".
+ * End of "$Id: cupsaddsmb.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index b9d5ac2d348085b9697e4c532d1161d566261003..8ed11f9b2aa0b43383d3846755912daf909a8010 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cupstestdsc.c 5392 2006-04-14 17:50:39Z mike $"
+ * "$Id: cupstestdsc.c 5838 2006-08-17 14:41:42Z mike $"
  *
  *   DSC test program for the Common UNIX Printing System (CUPS).
  *
  *
  *   DSC test program for the Common UNIX Printing System (CUPS).
  *
@@ -65,6 +65,8 @@ main(int  argc,                               /* I - Number of command-line args */
   int          num_files;              /* Number of files tested */
 
 
   int          num_files;              /* Number of files tested */
 
 
+  _cupsSetLocale();
+
  /*
   * Collect command-line arguments...
   */
  /*
   * Collect command-line arguments...
   */
@@ -129,7 +131,6 @@ check_file(const char *filename)    /* I - File to read from */
                saw_end_setup,          /* %%EndSetup seen? */
                saw_page,               /* %%Page seen? */
                saw_trailer,            /* %%Trailer seen? */
                saw_end_setup,          /* %%EndSetup seen? */
                saw_page,               /* %%Page seen? */
                saw_trailer,            /* %%Trailer seen? */
-               saw_eof,                /* %%EOF seen? */
                saw_long_line;          /* Saw long lines? */
 
 
                saw_long_line;          /* Saw long lines? */
 
 
@@ -162,7 +163,6 @@ check_file(const char *filename)    /* I - File to read from */
   saw_end_comments = 0;
   saw_end_prolog   = 0;
   saw_end_setup    = 0;
   saw_end_comments = 0;
   saw_end_prolog   = 0;
   saw_end_setup    = 0;
-  saw_eof          = 0;
   saw_long_line    = 0;
   saw_page         = 0;
   saw_pages        = 0;
   saw_long_line    = 0;
   saw_page         = 0;
   saw_pages        = 0;
@@ -452,5 +452,5 @@ usage(void)
 
 
 /*
 
 
 /*
- * End of "$Id: cupstestdsc.c 5392 2006-04-14 17:50:39Z mike $".
+ * End of "$Id: cupstestdsc.c 5838 2006-08-17 14:41:42Z mike $".
  */
  */
index 20c3c0a340c42db5d2e0eeef1fbfcddc0fa7d949..35235f3377855bafef4af0a5138df7b7ef140d15 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: cupstestppd.c 5549 2006-05-19 19:39:28Z mike $"
+ * "$Id: cupstestppd.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   PPD test program for the Common UNIX Printing System (CUPS).
  *
  *
  *   PPD test program for the Common UNIX Printing System (CUPS).
  *
@@ -113,6 +113,8 @@ main(int  argc,                     /* I - Number of command-line arguments */
                                 "JCL", "PAGE", "PROLOG" };
 
 
                                 "JCL", "PAGE", "PROLOG" };
 
 
+  _cupsSetLocale();
+
  /*
   * Display PPD files for each file listed on the command-line...
   */
  /*
   * Display PPD files for each file listed on the command-line...
   */
@@ -306,9 +308,9 @@ main(int  argc,                     /* I - Number of command-line arguments */
       * Look for default keywords with no matching option...
       */
 
       * Look for default keywords with no matching option...
       */
 
-      for (i = 0; i < ppd->num_attrs; i ++)
+      for (j = 0; j < ppd->num_attrs; j ++)
       {
       {
-       attr = ppd->attrs[i];
+       attr = ppd->attrs[j];
 
         if (!strcmp(attr->name, "DefaultColorSpace") ||
            !strcmp(attr->name, "DefaultFont") ||
 
         if (!strcmp(attr->name, "DefaultColorSpace") ||
            !strcmp(attr->name, "DefaultFont") ||
@@ -327,11 +329,11 @@ main(int  argc,                   /* I - Number of command-line arguments */
            * Check that the default option value matches a choice...
            */
 
            * Check that the default option value matches a choice...
            */
 
-           for (j = 0; j < option->num_choices; j ++)
-             if (!strcmp(option->choices[j].choice, attr->value))
+           for (k = 0; k < option->num_choices; k ++)
+             if (!strcmp(option->choices[k].choice, attr->value))
                break;
 
                break;
 
-            if (j >= option->num_choices)
+            if (k >= option->num_choices)
            {
              if (verbose >= 0)
              {
            {
              if (verbose >= 0)
              {
@@ -1010,7 +1012,10 @@ main(int  argc,                  /* I - Number of command-line arguments */
         char   *languages,             /* Copy of attribute value */
                *langstart,             /* Start of current language */
                *langptr,               /* Pointer into languages */
         char   *languages,             /* Copy of attribute value */
                *langstart,             /* Start of current language */
                *langptr,               /* Pointer into languages */
-               keyword[PPD_MAX_NAME];  /* Localization keyword */
+               keyword[PPD_MAX_NAME],  /* Localization keyword */
+               ckeyword[PPD_MAX_NAME]; /* Custom option keyword */
+       ppd_coption_t   *coption;       /* Custom option */
+       ppd_cparam_t    *cparam;        /* Custom parameter */
 
 
         languages = strdup(attr->value);
 
 
         languages = strdup(attr->value);
@@ -1104,7 +1109,61 @@ main(int  argc,                  /* I - Number of command-line arguments */
                     option->keyword);
             for (j = 0; j < option->num_choices; j ++)
            {
                     option->keyword);
             for (j = 0; j < option->num_choices; j ++)
            {
-             if (!ppdFindAttr(ppd, keyword, option->choices[j].choice))
+             if (!strcasecmp(option->choices[j].choice, "Custom") &&
+                 (coption = ppdFindCustomOption(ppd,
+                                                option->keyword)) != NULL)
+             {
+               snprintf(ckeyword, sizeof(ckeyword), "%s.Custom%s",
+                        langstart, option->keyword);
+
+               if (!ppdFindAttr(ppd, ckeyword, "True"))
+               {
+                 if (verbose >= 0)
+                 {
+                   if (!errors && !verbose)
+                     _cupsLangPuts(stdout, _(" FAIL\n"));
+
+                   _cupsLangPrintf(stdout,
+                                   _("      **FAIL**  Missing \"%s\" "
+                                     "translation string for option %s, "
+                                     "choice %s!\n"),
+                                   langstart, ckeyword + 1 + strlen(langstart),
+                                   "True");
+                 }
+
+                 errors ++;
+               }
+
+                if (strcasecmp(option->keyword, "PageSize"))
+               {
+                 for (cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
+                      cparam;
+                      cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
+                 {
+                   snprintf(ckeyword, sizeof(ckeyword), "%s.ParamCustom%s",
+                            langstart, option->keyword);
+                   if (!ppdFindAttr(ppd, ckeyword, cparam->name))
+                   {
+                     if (verbose >= 0)
+                     {
+                       if (!errors && !verbose)
+                         _cupsLangPuts(stdout, _(" FAIL\n"));
+
+                       _cupsLangPrintf(stdout,
+                                       _("      **FAIL**  Missing \"%s\" "
+                                         "translation string for option %s, "
+                                         "choice %s!\n"),
+                                       langstart,
+                                       ckeyword + 1 + strlen(langstart),
+                                       cparam->name);
+                     }
+
+                     errors ++;
+                   }
+                  }
+                }
+             }
+             else if (!ppdFindAttr(ppd, keyword, option->choices[j].choice))
              {
                if (verbose >= 0)
                {
              {
                if (verbose >= 0)
                {
@@ -1184,9 +1243,10 @@ main(int  argc,                  /* I - Number of command-line arguments */
          if (!errors && !verbose)
            _cupsLangPuts(stdout, _(" FAIL\n"));
 
          if (!errors && !verbose)
            _cupsLangPuts(stdout, _(" FAIL\n"));
 
-         _cupsLangPuts(stdout,
-                       _("      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
-                         "                REF: Page 72, section 5.5\n"));
+         _cupsLangPrintf(stdout,
+                         _("      **FAIL**  %s must be 1284DeviceID!\n"
+                           "                REF: Page 72, section 5.5\n"),
+                         attr->name);
         }
 
        errors ++;
         }
 
        errors ++;
@@ -1205,9 +1265,9 @@ main(int  argc,                   /* I - Number of command-line arguments */
        * Look for default keywords with no corresponding option...
        */
 
        * Look for default keywords with no corresponding option...
        */
 
-       for (i = 0; i < ppd->num_attrs; i ++)
+       for (j = 0; j < ppd->num_attrs; j ++)
        {
        {
-         attr = ppd->attrs[i];
+         attr = ppd->attrs[j];
 
           if (!strcmp(attr->name, "DefaultColorSpace") ||
              !strcmp(attr->name, "DefaultColorSep") ||
 
           if (!strcmp(attr->name, "DefaultColorSpace") ||
              !strcmp(attr->name, "DefaultColorSep") ||
@@ -1730,5 +1790,5 @@ usage(void)
 
 
 /*
 
 
 /*
- * End of "$Id: cupstestppd.c 5549 2006-05-19 19:39:28Z mike $".
+ * End of "$Id: cupstestppd.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index ee2ac802bd8216448eb4d8d37efa1c4da10ca07c..8a38c67bf285bac67c57f3426ce8fd99c6c9cd40 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lp.c 5235 2006-03-06 13:02:23Z mike $"
+ * "$Id: lp.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "lp" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lp" command for the Common UNIX Printing System (CUPS).
  *
@@ -117,6 +117,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
     return (0);
 #endif /* __sun */
 
     return (0);
 #endif /* __sun */
 
+  _cupsSetLocale();
+
   silent      = 0;
   printer     = NULL;
   num_dests   = 0;
   silent      = 0;
   printer     = NULL;
   num_dests   = 0;
@@ -838,5 +840,5 @@ sighandler(int s)                   /* I - Signal number */
 
 
 /*
 
 
 /*
- * End of "$Id: lp.c 5235 2006-03-06 13:02:23Z mike $".
+ * End of "$Id: lp.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index c0467fa7677d0164dd17b9836a94185f1fb7bd3e..b8e1c69caf984d1695335e0c81a189b1091cbf07 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpadmin.c 5545 2006-05-18 21:00:56Z mike $"
+ * "$Id: lpadmin.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "lpadmin" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpadmin" command for the Common UNIX Printing System (CUPS).
  *
@@ -92,6 +92,8 @@ main(int  argc,                       /* I - Number of command-line arguments */
   cups_option_t        *options;       /* Options */
 
 
   cups_option_t        *options;       /* Options */
 
 
+  _cupsSetLocale();
+
   http        = NULL;
   printer     = NULL;
   num_options = 0;
   http        = NULL;
   printer     = NULL;
   num_options = 0;
@@ -1984,5 +1986,5 @@ validate_name(const char *name)           /* I - Name to check */
 
 
 /*
 
 
 /*
- * End of "$Id: lpadmin.c 5545 2006-05-18 21:00:56Z mike $".
+ * End of "$Id: lpadmin.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index df8bef1aa9df8cd3c29d7414b32aec8c5a96f905..aad4b252d863af3a9d6cf99b1a39bff2fb051d47 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpinfo.c 4925 2006-01-13 02:52:47Z mike $"
+ * "$Id: lpinfo.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "lpinfo" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpinfo" command for the Common UNIX Printing System (CUPS).
  *
@@ -62,6 +62,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   int          long_status;            /* Long listing? */
 
 
   int          long_status;            /* Long listing? */
 
 
+  _cupsSetLocale();
+
   http        = NULL;
   long_status = 0;
 
   http        = NULL;
   long_status = 0;
 
@@ -434,5 +436,5 @@ show_models(http_t *http,           /* I - HTTP connection to server */
 
 
 /*
 
 
 /*
- * End of "$Id: lpinfo.c 4925 2006-01-13 02:52:47Z mike $".
+ * End of "$Id: lpinfo.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index 8f9fdefbfc6484115ce87eaa1d882e0f8dc592c9..13534386953eb6a70f3d84cbed30d35aa85751ab 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpmove.c 5023 2006-01-29 14:39:44Z mike $"
+ * "$Id: lpmove.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "lpmove" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpmove" command for the Common UNIX Printing System (CUPS).
  *
@@ -66,6 +66,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
                *dest;                  /* New destination */
 
 
                *dest;                  /* New destination */
 
 
+  _cupsSetLocale();
+
   dest      = NULL;
   dests     = NULL;
   http      = NULL;
   dest      = NULL;
   dests     = NULL;
   http      = NULL;
@@ -233,5 +235,5 @@ move_job(http_t     *http,          /* I - HTTP connection to server */
 
 
 /*
 
 
 /*
- * End of "$Id: lpmove.c 5023 2006-01-29 14:39:44Z mike $".
+ * End of "$Id: lpmove.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index 30d57aa48f24af954c642c637df0003aa3768bb0..155fcb242291820a76b0630b9b795cc83e759821 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpoptions.c 5753 2006-07-18 19:53:24Z mike $"
+ * "$Id: lpoptions.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   Printer option program for the Common UNIX Printing System (CUPS).
  *
  *
  *   Printer option program for the Common UNIX Printing System (CUPS).
  *
@@ -69,6 +69,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
                *option;                /* Current option */
 
 
                *option;                /* Current option */
 
 
+  _cupsSetLocale();
+
  /*
   * Loop through the command-line arguments...
   */
  /*
   * Loop through the command-line arguments...
   */
@@ -482,5 +484,5 @@ usage(void)
 
 
 /*
 
 
 /*
- * End of "$Id: lpoptions.c 5753 2006-07-18 19:53:24Z mike $".
+ * End of "$Id: lpoptions.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index d9822a07e1c05d190997387b55b1af87538bee52..f825d1e7f0eefb2b0b6afaa407cc4b160efbb7d3 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lppasswd.c 4924 2006-01-13 01:55:20Z mike $"
+ * "$Id: lppasswd.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   MD5 password program for the Common UNIX Printing System (CUPS).
  *
  *
  *   MD5 password program for the Common UNIX Printing System (CUPS).
  *
@@ -102,6 +102,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET*/
 
 
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET*/
 
 
+  _cupsSetLocale();
+
  /*
   * Check to see if stdin, stdout, and stderr are still open...
   */
  /*
   * Check to see if stdin, stdout, and stderr are still open...
   */
@@ -509,5 +511,5 @@ usage(FILE *fp)             /* I - File to send usage to */
 
 
 /*
 
 
 /*
- * End of "$Id: lppasswd.c 4924 2006-01-13 01:55:20Z mike $".
+ * End of "$Id: lppasswd.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index eeb1cb2601bfe8e41dd10bb85bb2bb67dc702427..4eafb58c475978e3bfec70074ba2ada5925abd7a 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: lpstat.c 5638 2006-06-06 20:08:13Z mike $"
+ * "$Id: lpstat.c 5833 2006-08-16 20:05:58Z mike $"
  *
  *   "lpstat" command for the Common UNIX Printing System (CUPS).
  *
  *
  *   "lpstat" command for the Common UNIX Printing System (CUPS).
  *
@@ -84,41 +84,8 @@ main(int  argc,                              /* I - Number of command-line arguments */
   char         op;                     /* Last operation on command-line */
 
 
   char         op;                     /* Last operation on command-line */
 
 
- /*
-  * Set the locale so that times, etc. are displayed properly.
-  *
-  * Unfortunately, while we need the localized time value, we *don't*
-  * want to use the localized charset for the time value, so we need
-  * to set LC_TIME to the locale name with .UTF-8 on the end (if
-  * the locale includes a character set specifier...)
-  */
-
-  setlocale(LC_ALL, "");
-
-#ifdef LC_TIME
-  {
-    const char *lc_time;               /* Current LC_TIME value */
-    char       new_lc_time[255],       /* New LC_TIME value */
-               *charset;               /* Pointer to character set */
-
-    if ((lc_time = setlocale(LC_TIME, NULL)) == NULL)
-      lc_time = setlocale(LC_ALL, NULL);
+  _cupsSetLocale();
 
 
-    if (lc_time)
-    {
-      strlcpy(new_lc_time, lc_time, sizeof(new_lc_time));
-      if ((charset = strchr(new_lc_time, '.')) == NULL)
-        charset = new_lc_time + strlen(new_lc_time);
-
-      strlcpy(charset, ".UTF-8", sizeof(new_lc_time) - (charset - new_lc_time));
-    }
-    else
-      strcpy(new_lc_time, "C");
-
-    setlocale(LC_TIME, new_lc_time);
-  }
-#endif /* LC_TIME */
-  
  /*
   * Parse command-line options...
   */
  /*
   * Parse command-line options...
   */
@@ -2281,5 +2248,5 @@ show_scheduler(http_t *http)      /* I - HTTP connection to server */
 
 
 /*
 
 
 /*
- * End of "$Id: lpstat.c 5638 2006-06-06 20:08:13Z mike $".
+ * End of "$Id: lpstat.c 5833 2006-08-16 20:05:58Z mike $".
  */
  */
index d2e4952ceb5a77c9b1a7ce0d118abbac5150e880..e1b5babc76c1eb31ce40d22be5693ad0a84a8a7f 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: Makefile 5609 2006-05-30 20:31:10Z mike $"
+# "$Id: Makefile 5878 2006-08-24 15:55:42Z mike $"
 #
 #   Template makefile for the Common UNIX Printing System (CUPS).
 #
 #
 #   Template makefile for the Common UNIX Printing System (CUPS).
 #
@@ -61,6 +61,7 @@ FILES =       \
                maintenance.tmpl \
                modify-class.tmpl \
                modify-printer.tmpl \
                maintenance.tmpl \
                modify-class.tmpl \
                modify-printer.tmpl \
+               norestart.tmpl \
                option-boolean.tmpl \
                option-conflict.tmpl \
                option-header.tmpl \
                option-boolean.tmpl \
                option-conflict.tmpl \
                option-header.tmpl \
@@ -155,5 +156,5 @@ uninstall-languages:
 
 
 #
 
 
 #
-# End of "$Id: Makefile 5609 2006-05-30 20:31:10Z mike $".
+# End of "$Id: Makefile 5878 2006-08-24 15:55:42Z mike $".
 #
 #
diff --git a/templates/es/norestart.tmpl b/templates/es/norestart.tmpl
new file mode 100644 (file)
index 0000000..b4cb36c
--- /dev/null
@@ -0,0 +1,2 @@
+<p>No se ha reiniciado el servidor debido a que no se han hecho
+cambios en la configuraci&oacute;n...</p>
index fbdda31dda39ae5518b19193cb5dced4e78cd6e6..2bc5a13d5b973deb0f31bc80eceac1ba094e6a7a 100644 (file)
@@ -1 +1 @@
-<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been cancelled.
+<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been canceled.
index 08d20784960b6a7a27bc49775025d1bf71bab971..1827d77a9b872718770ad1ad27b19313830792bb 100644 (file)
@@ -19,7 +19,7 @@
 <TD>{job_media_sheets_completed=0?Unknown:{?job_media_sheets_completed}}</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:
 <TD>{job_media_sheets_completed=0?Unknown:{?job_media_sheets_completed}}</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?cancelled at<BR>{time_at_completed}:{job_state=8?aborted:completed at<BR>{time_at_completed}}}}}}}&nbsp;</TD>
+{job_state=7?canceled at<BR>{time_at_completed}:{job_state=8?aborted:completed at<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}">
 <TD>
 {job_preserved>0?
 <A HREF="/jobs/?op=restart-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
diff --git a/templates/norestart.tmpl b/templates/norestart.tmpl
new file mode 100644 (file)
index 0000000..402e0f9
--- /dev/null
@@ -0,0 +1,2 @@
+<p>The server was not restarted because no changes were made to
+the configuration...</p>
index 54189002fbc14e7c057dc18d66b9eec6bb7ed7da..1be448e3ba0f0941f0fabf587484700aec0a0248 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: 4.2-cups-printer-ops.test 5493 2006-05-05 16:33:57Z mike $"
+# "$Id: 4.2-cups-printer-ops.test 5833 2006-08-16 20:05:58Z mike $"
 #
 #   Verify that the CUPS printer operations work.
 #
 #
 #   Verify that the CUPS printer operations work.
 #
        ATTR name requesting-user-name $user
 
         GROUP subscription
        ATTR name requesting-user-name $user
 
         GROUP subscription
-       ATTR uri notify-recipient testnotify
+       ATTR uri notify-recipient testnotify://
        ATTR keyword notify-events printer-added,printer-modified,printer-deleted
 
        # What statuses are OK?
        ATTR keyword notify-events printer-added,printer-modified,printer-deleted
 
        # What statuses are OK?
 }
 
 #
 }
 
 #
-# End of "$Id: 4.2-cups-printer-ops.test 5493 2006-05-05 16:33:57Z mike $"
+# End of "$Id: 4.2-cups-printer-ops.test 5833 2006-08-16 20:05:58Z mike $"
 #
 #
index c3098ef072a65d9693d4f01f492c1d49528e4d69..4126c11d7d972b61620942c532cc8d58d681b50e 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# "$Id: 4.4-subscription-ops.test 4840 2005-11-14 21:53:30Z mike $"
+# "$Id: 4.4-subscription-ops.test 5833 2006-08-16 20:05:58Z mike $"
 #
 #   Verify that the CUPS subscription operations work.
 #
 #
 #   Verify that the CUPS subscription operations work.
 #
@@ -18,7 +18,7 @@
        ATTR uri printer-uri $method://$hostname:$port/printers/Test1
 
         GROUP subscription
        ATTR uri printer-uri $method://$hostname:$port/printers/Test1
 
         GROUP subscription
-       ATTR uri notify-recipient testnotify
+       ATTR uri notify-recipient testnotify://
        ATTR keyword notify-events printer-state-changed
        ATTR integer notify-lease-duration 5
 
        ATTR keyword notify-events printer-state-changed
        ATTR integer notify-lease-duration 5
 
        ATTR uri printer-uri $method://$hostname:$port/printers/Test1
 
         GROUP subscription
        ATTR uri printer-uri $method://$hostname:$port/printers/Test1
 
         GROUP subscription
-       ATTR uri notify-recipient testnotify
+       ATTR uri notify-recipient testnotify://
        ATTR keyword notify-events printer-state-changed
        ATTR integer notify-lease-duration 5
 
         GROUP subscription
        ATTR keyword notify-events printer-state-changed
        ATTR integer notify-lease-duration 5
 
         GROUP subscription
-       ATTR uri notify-recipient testnotify
+       ATTR uri notify-recipient testnotify://
        ATTR keyword notify-events printer-config-changed
        ATTR integer notify-lease-duration 5
 
        ATTR keyword notify-events printer-config-changed
        ATTR integer notify-lease-duration 5
 
 }
 
 #
 }
 
 #
-# End of "$Id: 4.4-subscription-ops.test 4840 2005-11-14 21:53:30Z mike $"
+# End of "$Id: 4.4-subscription-ops.test 5833 2006-08-16 20:05:58Z mike $"
 #
 #
index 8a294e9a00ba79f65f7365cd506205e9540a1a60..252e1dffdff20be626493ba9e2d255ebe6ebce0c 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * "$Id: ipptest.c 5741 2006-07-17 18:36:20Z mike $"
+ * "$Id: ipptest.c 5878 2006-08-24 15:55:42Z mike $"
  *
  *   IPP test command for the Common UNIX Printing System (CUPS).
  *
  *
  *   IPP test command for the Common UNIX Printing System (CUPS).
  *
@@ -838,7 +838,9 @@ print_attr(ipp_attribute_t *attr)   /* I - Attribute to print */
     return;
   }
 
     return;
   }
 
-  printf("        %s (%s) = ", attr->name, get_tag_string(attr->value_tag));
+  printf("        %s (%s%s) = ", attr->name,
+         attr->num_values > 1 ? "1setOf " : "",
+        get_tag_string(attr->value_tag));
 
   switch (attr->value_tag)
   {
 
   switch (attr->value_tag)
   {
@@ -922,5 +924,5 @@ usage(const char *option)           /* I - Option string or NULL */
 
 
 /*
 
 
 /*
- * End of "$Id: ipptest.c 5741 2006-07-17 18:36:20Z mike $".
+ * End of "$Id: ipptest.c 5878 2006-08-24 15:55:42Z mike $".
  */
  */
index 655853a3b38fa042abcca39620f091d352f9b826..2c0715e1fa1363c702596625ae15926e6bec444a 100755 (executable)
@@ -45,12 +45,15 @@ if test -x /bin/launchctl; then
        cat >$pkgdir/Resources/postflight <<EOF
 #!/bin/sh
 
        cat >$pkgdir/Resources/postflight <<EOF
 #!/bin/sh
 
-# Remove old startup item, we use launchd now...
+# Remove old startup item and xinetd config file, we use launchd now...
 rm -f /System/Library/StartupItems/PrintingServices/PrintingServices
 rm -f /System/Library/StartupItems/PrintingServices/PrintingServices
+rm -f /etc/xinetd.d/cups-lpd
 
 # Tell launchd to reload cupsd...
 launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
 
 # Tell launchd to reload cupsd...
 launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
+launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
 launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
 launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
+launchctl load /System/Library/LaunchDaemons/org.cups.cupsd-lpd.plist
 EOF
 else
        cat >$pkgdir/Resources/postflight <<EOF
 EOF
 else
        cat >$pkgdir/Resources/postflight <<EOF