diff options
author | Tim Potter <tpot@samba.org> | 2000-11-08 00:20:26 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2000-11-08 00:20:26 +0000 |
commit | 1d3747e7f296c062854fe66fffa60c4ff83a2200 (patch) | |
tree | ea8da5788e7bf37fedb24944e2f4cb8def2ce4d1 /source3/rpc_server | |
parent | 29cb8c12caf1360ef4c6165131a1b20933c59501 (diff) | |
download | samba-1d3747e7f296c062854fe66fffa60c4ff83a2200.tar.gz samba-1d3747e7f296c062854fe66fffa60c4ff83a2200.tar.bz2 samba-1d3747e7f296c062854fe66fffa60c4ff83a2200.zip |
Merge fest!!!
(This used to be commit 87775074b22bb969c3585556e2a86ac4c7d4b0d4)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 9363829165..67b29bdbcf 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -1339,18 +1339,19 @@ static void spoolss_notify_job_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, prin static void spoolss_notify_job_status_string(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer) { char *p = "unknown"; + switch (queue->status) { case LPQ_QUEUED: - p = "QUEUED"; + p = "Queued"; break; case LPQ_PAUSED: - p = "PAUSED"; + p = ""; /* NT provides the paused string */ break; case LPQ_SPOOLING: - p = "SPOOLING"; + p = "Spooling"; break; case LPQ_PRINTING: - p = "PRINTING"; + p = "Printing"; break; } data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string, @@ -3324,8 +3325,7 @@ static uint32 control_printer(POLICY_HND *handle, uint32 command, pipes_struct *p) { struct current_user user; - int snum; - int errcode = ERROR_INVALID_FUNCTION; + int snum, errcode = ERROR_INVALID_FUNCTION; Printer_entry *Printer = find_printer_index_by_hnd(handle); get_current_user(&user, p); @@ -3355,6 +3355,8 @@ static uint32 control_printer(POLICY_HND *handle, uint32 command, errcode = 0; } break; + default: + return ERROR_INVALID_LEVEL; } return errcode; @@ -3830,6 +3832,7 @@ static uint32 update_printer(POLICY_HND *handle, uint32 level, done: free_a_printer(&printer, 2); + free_a_printer(&old_printer, 2); srv_spoolss_sendnotify(handle); @@ -4131,17 +4134,12 @@ uint32 _spoolss_schedulejob( POLICY_HND *handle, uint32 jobid) /**************************************************************************** ****************************************************************************/ -uint32 _spoolss_setjob( POLICY_HND *handle, - uint32 jobid, - uint32 level, - pipes_struct *p, - JOB_INFO *ctr, - uint32 command) - +uint32 _spoolss_setjob(POLICY_HND *handle, uint32 jobid, uint32 level, + pipes_struct *p, JOB_INFO *ctr, uint32 command) { struct current_user user; - int snum; print_status_struct prt_status; + int snum, errcode = ERROR_INVALID_FUNCTION; memset(&prt_status, 0, sizeof(prt_status)); @@ -4158,28 +4156,26 @@ uint32 _spoolss_setjob( POLICY_HND *handle, switch (command) { case JOB_CONTROL_CANCEL: case JOB_CONTROL_DELETE: - if (print_job_delete(&user, jobid)) { - srv_spoolss_sendnotify(handle); - return 0x0; + if (print_job_delete(&user, jobid, &errcode)) { + errcode = 0; } break; case JOB_CONTROL_PAUSE: - if (print_job_pause(&user, jobid)) { - srv_spoolss_sendnotify(handle); - return 0x0; + if (print_job_pause(&user, jobid, &errcode)) { + errcode = 0; } break; + case JOB_CONTROL_RESTART: case JOB_CONTROL_RESUME: - if (print_job_resume(&user, jobid)) { - srv_spoolss_sendnotify(handle); - return 0x0; + if (print_job_resume(&user, jobid, &errcode)) { + errcode = 0; } break; default: return ERROR_INVALID_LEVEL; } - return ERROR_INVALID_HANDLE; + return errcode; } /**************************************************************************** |