Updates for CUPS 1.1 from Michael Sweet.
authorJeremy Allison <jra@samba.org>
Fri, 16 Mar 2001 19:17:04 +0000 (19:17 +0000)
committerJeremy Allison <jra@samba.org>
Fri, 16 Mar 2001 19:17:04 +0000 (19:17 +0000)
Jeremy.
(This used to be commit 4e76f338698aaacdfa750205a1de7296b78cdd87)

source3/client/smbspool.c

index 8150787fcb0ea57e4e2033d9d9f52615a3fff518..581b6508b8deb00b1eba22074456d24f0472f80b 100644 (file)
@@ -36,6 +36,7 @@ extern struct in_addr ipzero;         /* Any address */
  * Local functions...
  */
 
+static void            list_devices(void);
 static struct cli_state        *smb_connect(char *, char *, char *, char *, char *);
 static int             smb_print(struct cli_state *, char *, FILE *);
 
@@ -67,6 +68,18 @@ static int           smb_print(struct cli_state *, char *, FILE *);
          argc--;
   }
 
+  if (argc == 1)
+  {
+   /*
+    * NEW!  In CUPS 1.1 the backends are run with no arguments to list the
+    *       available devices.  These can be devices served by this backend
+    *       or any other backends (i.e. you can have an SNMP backend that
+    *       is only used to enumerate the available network printers... :)
+    */
+
+    list_devices();
+    return (0);
+  }
 
   if (argc < 6 || argc > 7)
   {
@@ -216,6 +229,21 @@ static int         smb_print(struct cli_state *, char *, FILE *);
 }
 
 
+/*
+ * 'list_devices()' - List the available printers seen on the network...
+ */
+
+static void
+list_devices(void)
+{
+ /*
+  * Eventually, search the local workgroup for available hosts and printers.
+  */
+
+  puts("network smb \"Unknown\" \"Windows Printer via SAMBA\"");
+}
+
+
 /*
  * 'smb_connect()' - Return a connection to a server.
  */
@@ -321,8 +349,17 @@ smb_print(struct cli_state *cli,   /* I - SMB connection */
   int  fnum;           /* File number */
   int  nbytes,         /* Number of bytes read */
        tbytes;         /* Total bytes read */
-  char buffer[8192];   /* Buffer for copy */
+  char buffer[8192],   /* Buffer for copy */
+       *ptr;           /* Pointer into tile */
+
+
+ /*
+  * Sanitize the title...
+  */
 
+  for (ptr = title; *ptr; ptr ++)
+    if (!isalnum(*ptr) && !isspace(*ptr))
+      *ptr = '_';
 
  /*
   * Open the printer device...