winspool.drv: Set the printer name in AddJobW.

oldstable
Vitaly Perov 2010-09-13 19:28:56 +04:00 committed by Alexandre Julliard
parent b234bb49ff
commit e1b9a5c892
1 changed files with 31 additions and 0 deletions

View File

@ -99,6 +99,7 @@ typedef struct {
WCHAR *filename; WCHAR *filename;
WCHAR *portname; WCHAR *portname;
WCHAR *document_title; WCHAR *document_title;
WCHAR *printer_name;
} job_t; } job_t;
@ -2296,6 +2297,7 @@ BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf, LPD
job->filename = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); job->filename = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR));
memcpy(job->filename, filename, (len + 1) * sizeof(WCHAR)); memcpy(job->filename, filename, (len + 1) * sizeof(WCHAR));
job->document_title = strdupW(default_doc_title); job->document_title = strdupW(default_doc_title);
job->printer_name = strdupW(printer->name);
list_add_tail(&printer->queue->jobs, &job->entry); list_add_tail(&printer->queue->jobs, &job->entry);
*pcbNeeded = (len + 1) * sizeof(WCHAR) + sizeof(*addjob); *pcbNeeded = (len + 1) * sizeof(WCHAR) + sizeof(*addjob);
@ -7073,6 +7075,20 @@ static BOOL get_job_info_1(job_t *job, JOB_INFO_1W *ji1, LPBYTE buf, DWORD cbBuf
space = FALSE; space = FALSE;
*pcbNeeded += size; *pcbNeeded += size;
if (job->printer_name)
{
string_to_buf(job->printer_name, ptr, left, &size, unicode);
if(space && size <= left)
{
ji1->pPrinterName = (LPWSTR)ptr;
ptr += size;
left -= size;
}
else
space = FALSE;
*pcbNeeded += size;
}
return space; return space;
} }
@ -7104,6 +7120,20 @@ static BOOL get_job_info_2(job_t *job, JOB_INFO_2W *ji2, LPBYTE buf, DWORD cbBuf
space = FALSE; space = FALSE;
*pcbNeeded += size; *pcbNeeded += size;
if (job->printer_name)
{
string_to_buf(job->printer_name, ptr, left, &size, unicode);
if(space && size <= left)
{
ji2->pPrinterName = (LPWSTR)ptr;
ptr += size;
left -= size;
}
else
space = FALSE;
*pcbNeeded += size;
}
return space; return space;
} }
@ -7537,6 +7567,7 @@ BOOL WINAPI ScheduleJob( HANDLE hPrinter, DWORD dwJobID )
} }
list_remove(cursor); list_remove(cursor);
HeapFree(GetProcessHeap(), 0, job->document_title); HeapFree(GetProcessHeap(), 0, job->document_title);
HeapFree(GetProcessHeap(), 0, job->printer_name);
HeapFree(GetProcessHeap(), 0, job->portname); HeapFree(GetProcessHeap(), 0, job->portname);
HeapFree(GetProcessHeap(), 0, job->filename); HeapFree(GetProcessHeap(), 0, job->filename);
HeapFree(GetProcessHeap(), 0, job); HeapFree(GetProcessHeap(), 0, job);