]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - systemv/cupsaddsmb.c
Merge changes from CUPS 1.5svn-r9641
[thirdparty/cups.git] / systemv / cupsaddsmb.c
index 32a0a71880ad475dd69e8243dc04303b1ea21ecd..18dc8df25f1705f43d72e1ad9c8e92a52aaede1a 100644 (file)
@@ -1,25 +1,16 @@
 /*
- * "$Id: cupsaddsmb.c 5925 2006-09-05 19:43:11Z mike $"
+ * "$Id: cupsaddsmb.c 7033 2007-10-19 02:11:28Z mike $"
  *
- *   "cupsaddsmb" command for the Common UNIX Printing System (CUPS).
+ *   "cupsaddsmb" command for CUPS.
  *
+ *   Copyright 2007-2011 by Apple Inc.
  *   Copyright 2001-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
- *   property of Easy Software Products and are protected by Federal
- *   copyright law.  Distribution and use rights are outlined in the file
- *   "LICENSE.txt" which should have been included with this file.  If this
- *   file is missing or damaged please contact Easy Software Products
- *   at:
- *
- *       Attn: CUPS Licensing Information
- *       Easy Software Products
- *       44141 Airport View Drive, Suite 204
- *       Hollywood, Maryland 20636 USA
- *
- *       Voice: (301) 373-9600
- *       EMail: cups-info@cups.org
- *         WWW: http://www.cups.org
+ *   property of Apple Inc. and are protected by Federal copyright
+ *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ *   which should have been included with this file.  If this file is
+ *   file is missing or damaged, see the license at "http://www.cups.org/".
  *
  * Contents:
  *
  * Include necessary headers...
  */
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <cups/string.h>
+#include <cups/cups-private.h>
 #include <cups/adminutil.h>
-#include <cups/i18n.h>
-#include <cups/debug.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <sys/wait.h>
@@ -97,7 +83,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
       cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 #else
       _cupsLangPrintf(stderr,
-                     _("%s: Sorry, no encryption support compiled in!\n"),
+                     _("%s: Sorry, no encryption support."),
                      argv[0]);
 #endif /* HAVE_SSL */
     }
@@ -155,14 +141,20 @@ main(int  argc,                           /* I - Number of command-line arguments */
        if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
                                        cupsEncryption())) == NULL)
        {
-         _cupsLangPrintf(stderr, _("%s: Unable to connect to server\n"), argv[0]);
+         _cupsLangPrintf(stderr, _("%s: Unable to connect to server."),
+                         argv[0]);
          exit(1);
        }
       }
 
       if (SAMBAServer == NULL)
+      {
        SAMBAServer = cupsServer();
 
+       if (SAMBAServer[0] == '/')      /* Use localhost instead of domain socket */
+         SAMBAServer = "localhost";
+      }
+
       if ((status = export_dest(http, argv[i])) != 0)
        return (status);
     }
@@ -176,7 +168,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
   if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
                                  cupsEncryption())) == NULL)
   {
-    _cupsLangPrintf(stderr, _("%s: Unable to connect to server\n"), argv[0]);
+    _cupsLangPrintf(stderr, _("%s: Unable to connect to server."), argv[0]);
     exit(1);
   }
 
@@ -191,8 +183,13 @@ main(int  argc,                            /* I - Number of command-line arguments */
     */
 
     if (SAMBAServer == NULL)
+    {
       SAMBAServer = cupsServer();
 
+      if (SAMBAServer[0] == '/')       /* Use localhost instead of domain socket */
+       SAMBAServer = "localhost";
+    }
+
     num_dests = cupsGetDests2(http, &dests);
 
     for (j = 0, status = 0; j < num_dests; j ++)
@@ -223,6 +220,7 @@ export_dest(http_t     *http,               /* I - Connection to server */
   int          status;                 /* Status of export */
   char         ppdfile[1024],          /* PPD file for printer drivers */
                prompt[1024];           /* Password prompt */
+  int          tries;                  /* Number of tries */
 
 
  /*
@@ -232,8 +230,7 @@ export_dest(http_t     *http,               /* I - Connection to server */
   if (!cupsAdminCreateWindowsPPD(http, dest, ppdfile, sizeof(ppdfile)))
   {
     _cupsLangPrintf(stderr,
-                    _("cupsaddsmb: No PPD file for printer \"%s\" - "
-                     "%s\n"),
+                    _("cupsaddsmb: No PPD file for printer \"%s\" - %s"),
                    dest, cupsLastErrorString());
     return (1);
   }
@@ -242,7 +239,7 @@ export_dest(http_t     *http,               /* I - Connection to server */
   * Try to export it...
   */
 
-  for (status = 0; !status;)
+  for (status = 0, tries = 0; !status && tries < 3; tries ++)
   {
    /*
     * Get the password, as needed...
@@ -263,6 +260,9 @@ export_dest(http_t     *http,               /* I - Connection to server */
     status = cupsAdminExportSamba(dest, ppdfile, SAMBAServer,
                                   SAMBAUser, SAMBAPassword,
                                  Verbosity ? stderr : NULL);
+
+    if (!status && cupsLastError() == IPP_NOT_FOUND)
+      break;
   }
 
   unlink(ppdfile);
@@ -278,21 +278,26 @@ export_dest(http_t     *http,             /* I - Connection to server */
 void
 usage(void)
 {
-  _cupsLangPuts(stdout,
-                _("Usage: cupsaddsmb [options] printer1 ... printerN\n"
-                 "       cupsaddsmb [options] -a\n"
-                 "\n"
-                 "Options:\n"
-                 "  -E               Encrypt the connection to the server\n"
-                 "  -H samba-server  Use the named SAMBA server\n"
-                 "  -U samba-user    Authenticate using the named SAMBA user\n"
-                 "  -a               Export all printers\n"
-                 "  -h cups-server   Use the named CUPS server\n"
-                 "  -v               Be verbose (show commands)\n"));
+  _cupsLangPuts(stdout, _("Usage: cupsaddsmb [options] printer1 ... printerN"));
+  _cupsLangPuts(stdout, _("       cupsaddsmb [options] -a"));
+  _cupsLangPuts(stdout, "");
+  _cupsLangPuts(stdout, _("Options:"));
+  _cupsLangPuts(stdout, _("  -E                      Encrypt the connection to "
+                          "the server."));
+  _cupsLangPuts(stdout, _("  -H samba-server         Use the named SAMBA "
+                          "server."));
+  _cupsLangPuts(stdout, _("  -U samba-user           Authenticate using the "
+                          "named SAMBA user."));
+  _cupsLangPuts(stdout, _("  -a                      Export all printers."));
+  _cupsLangPuts(stdout, _("  -h cups-server          Use the named CUPS "
+                          "server."));
+  _cupsLangPuts(stdout, _("  -v                      Be verbose (show "
+                          "commands)."));
+
   exit(1);
 }
 
 
 /*
- * End of "$Id: cupsaddsmb.c 5925 2006-09-05 19:43:11Z mike $".
+ * End of "$Id: cupsaddsmb.c 7033 2007-10-19 02:11:28Z mike $".
  */