*
********************************************************************/
uint32 _spoolss_startdocprinter( const POLICY_HND *handle, uint32 level,
- DOC_INFO *docinfo, uint32 *jobid)
+ uint32 vuid, DOC_INFO *docinfo, uint32 *jobid)
{
DOC_INFO_1 *info_1 = &docinfo->doc_info_1;
int snum;
unistr2_to_ascii(jobname, &info_1->docname, sizeof(jobname));
- Printer->jobid = print_job_start(snum, jobname);
+ Printer->jobid = print_job_start(snum, vuid, jobname);
/* need to map error codes properly - for now give out of
memory as I don't know the correct codes (tridge) */
* called from the spoolss dispatcher
*
********************************************************************/
-static uint32 control_printer(const POLICY_HND *handle, uint32 command)
+static uint32 control_printer(const POLICY_HND *handle, uint32 command,
+ uint16 vuid)
{
int snum;
Printer_entry *Printer = find_printer_index_by_hnd(handle);
switch (command) {
case PRINTER_CONTROL_PAUSE:
- if (print_queue_pause(snum)) {
+ if (print_queue_pause(snum, vuid)) {
return 0;
}
break;
case PRINTER_CONTROL_RESUME:
case PRINTER_CONTROL_UNPAUSE:
- if (print_queue_resume(snum)) {
+ if (print_queue_resume(snum, vuid)) {
return 0;
}
break;
case PRINTER_CONTROL_PURGE:
- if (print_queue_purge(snum)) {
+ if (print_queue_purge(snum, vuid)) {
return 0;
}
break;
const SPOOL_PRINTER_INFO_LEVEL *info,
DEVMODE_CTR devmode_ctr,
SEC_DESC_BUF *secdesc_ctr,
- uint32 command)
+ uint32 command, uint16 vuid)
{
Printer_entry *Printer = find_printer_index_by_hnd(handle);
/* check the level */
switch (level) {
case 0:
- return control_printer(handle, command);
+ return control_printer(handle, command, vuid);
break;
case 2:
return update_printer(handle, level, info, devmode_ctr.devmode);
int position, int snum)
{
pstring temp_name;
- DEVICEMODE *devmode;
NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
pstring chaine;
return False;
}
- job_info->devmode=devmode;
free_a_printer(&ntprinter, 2);
return (True);
}
uint32 _spoolss_setjob( const POLICY_HND *handle,
uint32 jobid,
uint32 level,
+ uint32 vuid,
JOB_INFO *ctr,
uint32 command)
switch (command) {
case JOB_CONTROL_CANCEL:
case JOB_CONTROL_DELETE:
- if (print_job_delete(jobid)) return 0x0;
+ if (print_job_delete(vuid, jobid)) return 0x0;
break;
case JOB_CONTROL_PAUSE:
- if (print_job_pause(jobid)) return 0x0;
+ if (print_job_pause(vuid, jobid)) return 0x0;
break;
case JOB_CONTROL_RESUME:
- if (print_job_resume(jobid)) return 0x0;
+ if (print_job_resume(vuid, jobid)) return 0x0;
break;
default:
return ERROR_INVALID_LEVEL;
{
int i=0;
BOOL found=False;
- JOB_INFO_2 *info_2=NULL;
+ JOB_INFO_2 *info_2;
info_2=(JOB_INFO_2 *)malloc(sizeof(JOB_INFO_2));
+ ZERO_STRUCTP(info_2);
+
if (info_2 == NULL) {
safe_free(queue);
return ERROR_NOT_ENOUGH_MEMORY;
new_smb_io_job_info_2("", buffer, info_2, 0);
+ free_dev_mode(info_2->devmode);
safe_free(info_2);
if (*needed > offered)