Changes from APPLIANCE_HEAD:
authorDavid O'Neill <dmo@samba.org>
Wed, 13 Dec 2000 21:24:06 +0000 (21:24 +0000)
committerDavid O'Neill <dmo@samba.org>
Wed, 13 Dec 2000 21:24:06 +0000 (21:24 +0000)
- trivial typo in definition of enum_printing[]
  (source/param/loadparm.c)
- fixed printer status display bug.  When no jobs existed in queue, the
  clients were not properly notified of printer status.  This caused
  native tools for pausing/unpausing a print queue to not work.
  (source/printing/printing.c)
(This used to be commit c533e77f1912618230a938458980a9339924fe06)

source3/param/loadparm.c
source3/printing/printing.c

index 4a6ec83607495869fb2aad994bbadfb272671181..d5a032c26bec956b34669fbc50ca5ce53d7a1a8d 100644 (file)
@@ -560,7 +560,7 @@ static struct enum_list enum_printing[] = {
        {PRINT_LPROS2, "os2"},
 #ifdef DEVELOPER
        {PRINT_TEST, "test"},
-       {PRINT_TEST, "vlp"},
+       {PRINT_VLP, "vlp"},
 #endif /* DEVELOPER */
        {-1, NULL}
 };
index e8dc4d7f34118a708206a33ec7c810cc279066cf..b670908049c41b2720a0af1deab86ae0334fc2d4 100644 (file)
@@ -1058,10 +1058,28 @@ int print_queue_status(int snum,
        *queue = NULL;
        
        /*
-        * Count the number of entries.
+        * Fetch the queue status.  We must do this first, as there may
+        * be no jobs in the queue.
+        */
+       ZERO_STRUCTP(status);
+       slprintf(keystr, sizeof(keystr), "STATUS/%s", lp_servicename(snum));
+       key.dptr = keystr;
+       key.dsize = strlen(keystr);
+       data = tdb_fetch(tdb, key);
+       if (data.dptr) {
+               if (data.dsize == sizeof(*status)) {
+                       memcpy(status, data.dptr, sizeof(*status));
+               }
+               free(data.dptr);
+       }
+
+       /*
+        * Now, fetch the print queue information.  We first count the number
+        * of entries, and then only retrieve the queue if necessary.
         */
        tsc.count = 0;
        tsc.snum = snum;
+       
        tdb_traverse(tdb, traverse_count_fn_queue, (void *)&tsc);
 
        if (tsc.count == 0)
@@ -1084,19 +1102,6 @@ int print_queue_status(int snum,
 
        tdb_traverse(tdb, traverse_fn_queue, (void *)&tstruct);
 
-       /* also fetch the queue status */
-       ZERO_STRUCTP(status);
-       slprintf(keystr, sizeof(keystr), "STATUS/%s", lp_servicename(snum));
-       key.dptr = keystr;
-       key.dsize = strlen(keystr);
-       data = tdb_fetch(tdb, key);
-       if (data.dptr) {
-               if (data.dsize == sizeof(*status)) {
-                       memcpy(status, data.dptr, sizeof(*status));
-               }
-               free(data.dptr);
-       }
-
        /* Sort the queue by submission time otherwise they are displayed
           in hash order. */