From fe0ce8dd8e18de6110404661f26db7a66ebac5ad Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 18 May 2005 18:02:15 +0000 Subject: r6890: Refactor printing interface to take offset into job. Fixes bug where large print jobs can have out-of-order offsets. Bug found by Arcady Chernyak Jeremy. (This used to be commit 482f7e0e3706098b71aa0b31a134994acb1e9fcf) --- source3/printing/printing.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source3/printing') diff --git a/source3/printing/printing.c b/source3/printing/printing.c index 03bdb7d421..ab86db53f3 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -2031,7 +2031,7 @@ pause, or resume print job. User name: %s. Printer name: %s.", Write to a print file. ****************************************************************************/ -int print_job_write(int snum, uint32 jobid, const char *buf, int size) +ssize_t print_job_write(int snum, uint32 jobid, const char *buf, SMB_OFF_T pos, size_t size) { const char* sharename = lp_const_servicename(snum); int return_code; @@ -2045,7 +2045,8 @@ int print_job_write(int snum, uint32 jobid, const char *buf, int size) if (pjob->pid != sys_getpid()) return -1; - return_code = write(pjob->fd, buf, size); + return_code = write_data_at_offset(pjob->fd, buf, size, pos); + if (return_code>0) { pjob->size += size; pjob_store(sharename, jobid, pjob); -- cgit