1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

Changes from APPLIANCE_HEAD:

- 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 commit is contained in:
David O'Neill
-
parent f4c7f9ddb9
commit c533e77f19
2 changed files with 20 additions and 15 deletions

View 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}
};

View 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. */