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:
@ -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}
|
||||
};
|
||||
|
@ -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. */
|
||||
|
||||
|
Reference in New Issue
Block a user