diff options
-rw-r--r-- | source3/param/loadparm.c | 2 | ||||
-rw-r--r-- | source3/printing/printing.c | 33 |
2 files changed, 20 insertions, 15 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 4a6ec83607..d5a032c26b 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -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} }; diff --git a/source3/printing/printing.c b/source3/printing/printing.c index e8dc4d7f34..b670908049 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -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. */ |