From 5dc3150ff3fc05e71faad76e83079c60f62bac4f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 4 Apr 2003 01:02:50 +0000 Subject: Fix the new storage code to correctly convert from system queue info to pjob info. Ensure we retrieve more than one job from the storage code. Jeremy. --- source/printing/printing.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/source/printing/printing.c b/source/printing/printing.c index 06941c67ddf..79cab3d9fae 100644 --- a/source/printing/printing.c +++ b/source/printing/printing.c @@ -713,9 +713,20 @@ static int traverse_fn_delete(TDB_CONTEXT *t, TDB_DATA key, TDB_DATA data, void pjob_delete(ts->snum, jobid); } else ts->total_jobs++; + return 0; } - else - ts->total_jobs++; + + /* Save the pjob attributes we will store. */ + ts->queue[i].job = jobid; + ts->queue[i].size = pjob.size; + ts->queue[i].page_count = pjob.page_count; + ts->queue[i].status = pjob.status; + ts->queue[i].priority = 1; + ts->queue[i].time = pjob.starttime; + fstrcpy(ts->queue[i].fs_user, pjob.user); + fstrcpy(ts->queue[i].fs_file, pjob.jobname); + + ts->total_jobs++; return 0; } @@ -2088,6 +2099,7 @@ static BOOL get_stored_queue_info(struct tdb_print_db *pdb, int snum, int *pcoun uint32 qcount = 0; uint32 extra_count = 0; int total_count = 0; + size_t len = 0; uint32 i; int max_reported_jobs = lp_max_reported_jobs(snum); BOOL ret = False; @@ -2130,8 +2142,8 @@ static BOOL get_stored_queue_info(struct tdb_print_db *pdb, int snum, int *pcoun goto out; /* Retrieve the linearised queue data. */ + len = 0; for( i = 0; i < qcount; i++) { - size_t len = 0; uint32 qjob, qsize, qpage_count, qstatus, qpriority, qtime; len += tdb_unpack(data.dptr + 4 + len, data.dsize - len, NULL, "ddddddff", &qjob, -- cgit