s3-printing: clean up print_job_pause/resume interface
authorDavid Disseldorp <ddiss@samba.org>
Wed, 8 Feb 2012 14:01:15 +0000 (15:01 +0100)
committerDavid Disseldorp <ddiss@samba.org>
Mon, 25 Jun 2012 11:10:54 +0000 (13:10 +0200)
Currently both return a bool and sometimes set a werr pointer argument,
always return werror instead.

source3/include/printing.h
source3/printing/printing.c
source3/rpc_server/spoolss/srv_spoolss_nt.c

index f749358303b329be847220a9fe5495daed234bb8..0c749baa1528ef826d08feb20fc7b6d181908e2b 100644 (file)
@@ -204,12 +204,12 @@ bool print_job_get_name(TALLOC_CTX *mem_ctx, const char *sharename, uint32_t job
 WERROR print_job_delete(const struct auth_serversupplied_info *server_info,
                        struct messaging_context *msg_ctx,
                        int snum, uint32_t jobid);
-bool print_job_pause(const struct auth_serversupplied_info *server_info,
+WERROR print_job_pause(const struct auth_serversupplied_info *server_info,
                     struct messaging_context *msg_ctx,
-                    int snum, uint32 jobid, WERROR *errcode);
-bool print_job_resume(const struct auth_serversupplied_info *server_info,
+                    int snum, uint32 jobid);
+WERROR print_job_resume(const struct auth_serversupplied_info *server_info,
                      struct messaging_context *msg_ctx,
-                     int snum, uint32 jobid, WERROR *errcode);
+                     int snum, uint32 jobid);
 ssize_t print_job_write(struct tevent_context *ev,
                        struct messaging_context *msg_ctx,
                        int snum, uint32 jobid, const char *buf, size_t size);
index f928557c02f87f051c7180aeea3ff2f9d03d492e..174f628294fe2a46614f733effba1813334bfda9 100644 (file)
@@ -2333,27 +2333,30 @@ pause, or resume print job. User name: %s. Printer name: %s.",
  Pause a job.
 ****************************************************************************/
 
-bool print_job_pause(const struct auth_serversupplied_info *server_info,
+WERROR print_job_pause(const struct auth_serversupplied_info *server_info,
                     struct messaging_context *msg_ctx,
-                    int snum, uint32 jobid, WERROR *errcode)
+                    int snum, uint32 jobid)
 {
        const char* sharename = lp_const_servicename(snum);
        struct printjob *pjob;
        int ret = -1;
        struct printif *current_printif = get_printer_fns( snum );
+       WERROR werr;
 
        pjob = print_job_find(sharename, jobid);
 
        if (!pjob || !server_info) {
                DEBUG(10, ("print_job_pause: no pjob or user for jobid %u\n",
                        (unsigned int)jobid ));
-               return False;
+               werr = WERR_INVALID_PARAM;
+               goto err_out;
        }
 
        if (!pjob->spooled || pjob->sysjob == -1) {
                DEBUG(10, ("print_job_pause: not spooled or bad sysjob = %d for jobid %u\n",
                        (int)pjob->sysjob, (unsigned int)jobid ));
-               return False;
+               werr = WERR_INVALID_PARAM;
+               goto err_out;
        }
 
        if (!is_owner(server_info, lp_const_servicename(snum), jobid) &&
@@ -2369,16 +2372,16 @@ pause, or resume print job. User name: %s. Printer name: %s.",
                              lp_printername(snum) );
                /* END_ADMIN_LOG */
 
-               *errcode = WERR_ACCESS_DENIED;
-               return False;
+               werr = WERR_ACCESS_DENIED;
+               goto err_out;
        }
 
        /* need to pause the spooled entry */
        ret = (*(current_printif->job_pause))(snum, pjob);
 
        if (ret != 0) {
-               *errcode = WERR_INVALID_PARAM;
-               return False;
+               werr = WERR_INVALID_PARAM;
+               goto err_out;
        }
 
        /* force update the database */
@@ -2390,42 +2393,45 @@ pause, or resume print job. User name: %s. Printer name: %s.",
                          JOB_STATUS_PAUSED);
 
        /* how do we tell if this succeeded? */
-
-       return True;
+       werr = WERR_OK;
+err_out:
+       return werr;
 }
 
 /****************************************************************************
  Resume a job.
 ****************************************************************************/
 
-bool print_job_resume(const struct auth_serversupplied_info *server_info,
+WERROR print_job_resume(const struct auth_serversupplied_info *server_info,
                      struct messaging_context *msg_ctx,
-                     int snum, uint32 jobid, WERROR *errcode)
+                     int snum, uint32 jobid)
 {
        const char *sharename = lp_const_servicename(snum);
        struct printjob *pjob;
        int ret;
        struct printif *current_printif = get_printer_fns( snum );
+       WERROR werr;
 
        pjob = print_job_find(sharename, jobid);
 
        if (!pjob || !server_info) {
                DEBUG(10, ("print_job_resume: no pjob or user for jobid %u\n",
                        (unsigned int)jobid ));
-               return False;
+               werr = WERR_INVALID_PARAM;
+               goto err_out;
        }
 
        if (!pjob->spooled || pjob->sysjob == -1) {
                DEBUG(10, ("print_job_resume: not spooled or bad sysjob = %d for jobid %u\n",
                        (int)pjob->sysjob, (unsigned int)jobid ));
-               return False;
+               werr = WERR_INVALID_PARAM;
+               goto err_out;
        }
 
        if (!is_owner(server_info, lp_const_servicename(snum), jobid) &&
            !print_access_check(server_info, msg_ctx, snum,
                                JOB_ACCESS_ADMINISTER)) {
                DEBUG(3, ("resume denied by security descriptor\n"));
-               *errcode = WERR_ACCESS_DENIED;
 
                /* BEGIN_ADMIN_LOG */
                sys_adminlog( LOG_ERR,
@@ -2434,14 +2440,15 @@ pause, or resume print job. User name: %s. Printer name: %s.",
                              uidtoname(server_info->utok.uid),
                              lp_printername(snum) );
                /* END_ADMIN_LOG */
-               return False;
+               werr = WERR_ACCESS_DENIED;
+               goto err_out;
        }
 
        ret = (*(current_printif->job_resume))(snum, pjob);
 
        if (ret != 0) {
-               *errcode = WERR_INVALID_PARAM;
-               return False;
+               werr = WERR_INVALID_PARAM;
+               goto err_out;
        }
 
        /* force update the database */
@@ -2452,7 +2459,9 @@ pause, or resume print job. User name: %s. Printer name: %s.",
        notify_job_status(server_event_context(), msg_ctx, sharename, jobid,
                          JOB_STATUS_QUEUED);
 
-       return True;
+       werr = WERR_OK;
+err_out:
+       return werr;
 }
 
 /****************************************************************************
index 0e520fb5ac19ee1500d28b80635bc9819fd25b86..e0f5be5a17ed95c08000e6726c6e9d4ef541868c 100644 (file)
@@ -7189,17 +7189,13 @@ WERROR _spoolss_SetJob(struct pipes_struct *p,
                }
                break;
        case SPOOLSS_JOB_CONTROL_PAUSE:
-               if (print_job_pause(session_info, p->msg_ctx,
-                                   snum, r->in.job_id, &errcode)) {
-                       errcode = WERR_OK;
-               }
+               errcode = print_job_pause(session_info, p->msg_ctx,
+                                         snum, r->in.job_id);
                break;
        case SPOOLSS_JOB_CONTROL_RESTART:
        case SPOOLSS_JOB_CONTROL_RESUME:
-               if (print_job_resume(session_info, p->msg_ctx,
-                                    snum, r->in.job_id, &errcode)) {
-                       errcode = WERR_OK;
-               }
+               errcode = print_job_resume(session_info, p->msg_ctx,
+                                          snum, r->in.job_id);
                break;
        case 0:
                errcode = WERR_OK;