X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=source3%2Fprinting%2Fprinting.c;h=0d943a38dfe3774f91f46cf45002fc14e7811c5c;hb=c0288e0612187ecbfc4a81d071fd504ea8737b7a;hp=1c2817dcc786cf927bc0371e144408e2d802c8a7;hpb=7a194c6e5ea75db67502005e5d40d1ddf3708895;p=ab%2Fsamba.git%2F.git diff --git a/source3/printing/printing.c b/source3/printing/printing.c index 1c2817dcc78..0d943a38dfe 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -20,11 +20,22 @@ */ #include "includes.h" +#include "system/syslog.h" +#include "system/filesys.h" #include "printing.h" -#include "librpc/gen_ndr/messaging.h" #include "../librpc/gen_ndr/ndr_spoolss.h" #include "nt_printing.h" #include "../librpc/gen_ndr/netlogon.h" +#include "printing/notify.h" +#include "printing/pcap.h" +#include "printing/printer_list.h" +#include "printing/queue_process.h" +#include "serverid.h" +#include "smbd/smbd.h" +#include "auth.h" +#include "messages.h" +#include "util_tdb.h" +#include "lib/param/loadparm.h" extern struct current_user current_user; extern userdom_struct current_user_info; @@ -80,7 +91,7 @@ uint16 pjobid_to_rap(const char* sharename, uint32 jobid) key.dptr = (uint8 *)&jinfo; key.dsize = sizeof(jinfo); - data = tdb_fetch(rap_tdb, key); + data = tdb_fetch_compat(rap_tdb, key); if (data.dptr && data.dsize == sizeof(uint16)) { rap_jobid = SVAL(data.dptr, 0); SAFE_FREE(data.dptr); @@ -117,7 +128,7 @@ bool rap_to_pjobid(uint16 rap_jobid, fstring sharename, uint32 *pjobid) SSVAL(buf,0,rap_jobid); key.dptr = buf; key.dsize = sizeof(rap_jobid); - data = tdb_fetch(rap_tdb, key); + data = tdb_fetch_compat(rap_tdb, key); if ( data.dptr && data.dsize == sizeof(struct rap_jobid_key) ) { struct rap_jobid_key *jinfo = (struct rap_jobid_key*)data.dptr; @@ -155,7 +166,7 @@ void rap_jobid_delete(const char* sharename, uint32 jobid) key.dptr = (uint8 *)&jinfo; key.dsize = sizeof(jinfo); - data = tdb_fetch(rap_tdb, key); + data = tdb_fetch_compat(rap_tdb, key); if (!data.dptr || (data.dsize != sizeof(uint16))) { DEBUG(10,("rap_jobid_delete: cannot find jobid %u\n", (unsigned int)jobid )); @@ -187,6 +198,10 @@ bool print_backend_init(struct messaging_context *msg_ctx) int services = lp_numservices(); int snum; + if (!printer_list_parent_init()) { + return false; + } + unlink(cache_path("printing.tdb")); mkdir(cache_path("printing"),0755); @@ -200,7 +215,7 @@ bool print_backend_init(struct messaging_context *msg_ctx) pdb = get_print_db_byname(lp_const_servicename(snum)); if (!pdb) continue; - if (tdb_lock_bystring(pdb->tdb, sversion) == -1) { + if (tdb_lock_bystring(pdb->tdb, sversion) != 0) { DEBUG(0,("print_backend_init: Failed to open printer %s database\n", lp_const_servicename(snum) )); release_print_db(pdb); return False; @@ -433,7 +448,7 @@ static struct printjob *print_job_find(const char *sharename, uint32 jobid) return NULL; } - ret = tdb_fetch(pdb->tdb, print_key(jobid, &tmp)); + ret = tdb_fetch_compat(pdb->tdb, print_key(jobid, &tmp)); release_print_db(pdb); if (!ret.dptr) { @@ -525,8 +540,8 @@ uint32 sysjob_to_jobid(int unix_jobid) ****************************************************************************/ static const struct { - uint32 lpq_status; - uint32 spoolss_status; + uint32_t lpq_status; + uint32_t spoolss_status; } lpq_to_spoolss_status_map[] = { { LPQ_QUEUED, JOB_STATUS_QUEUED }, { LPQ_PAUSED, JOB_STATUS_PAUSED }, @@ -539,7 +554,7 @@ static const struct { { LPQ_DELETED, JOB_STATUS_DELETED }, { LPQ_BLOCKED, JOB_STATUS_BLOCKED_DEVQ }, { LPQ_USER_INTERVENTION, JOB_STATUS_USER_INTERVENTION }, - { -1, 0 } + { (uint32_t)-1, 0 } }; /* Convert a lpq status value stored in printing.tdb into the @@ -597,12 +612,12 @@ static bool remove_from_jobs_changed(const char* sharename, uint32_t jobid) key = string_tdb_data("INFO/jobs_changed"); - if (tdb_chainlock_with_timeout(pdb->tdb, key, 5) == -1) + if (tdb_chainlock_with_timeout(pdb->tdb, key, 5) != 0) goto out; gotlock = True; - data = tdb_fetch(pdb->tdb, key); + data = tdb_fetch_compat(pdb->tdb, key); if (data.dptr == NULL || data.dsize == 0 || (data.dsize % 4 != 0)) goto out; @@ -616,7 +631,7 @@ static bool remove_from_jobs_changed(const char* sharename, uint32_t jobid) if (i < job_count -1 ) memmove(data.dptr + (i*4), data.dptr + (i*4) + 4, (job_count - i - 1)*4 ); data.dsize -= 4; - if (tdb_store(pdb->tdb, key, data, TDB_REPLACE) == -1) + if (tdb_store(pdb->tdb, key, data, TDB_REPLACE) != 0) goto out; break; } @@ -720,7 +735,7 @@ static bool pjob_store(struct tevent_context *ev, /* Get old data */ - old_data = tdb_fetch(pdb->tdb, print_key(jobid, &tmp)); + old_data = tdb_fetch_compat(pdb->tdb, print_key(jobid, &tmp)); /* Doh! Now we have to pack/unpack data since the NT_DEVICEMODE was added */ @@ -1070,7 +1085,7 @@ static pid_t get_updating_pid(const char *sharename) slprintf(keystr, sizeof(keystr)-1, "UPDATING/%s", sharename); key = string_tdb_data(keystr); - data = tdb_fetch(pdb->tdb, key); + data = tdb_fetch_compat(pdb->tdb, key); release_print_db(pdb); if (!data.dptr || data.dsize != sizeof(pid_t)) { SAFE_FREE(data.dptr); @@ -1096,7 +1111,7 @@ static void set_updating_pid(const fstring sharename, bool updating) fstring keystr; TDB_DATA key; TDB_DATA data; - pid_t updating_pid = sys_getpid(); + pid_t updating_pid = getpid(); uint8 buffer[4]; struct tdb_print_db *pdb = get_print_db_byname(sharename); @@ -1217,7 +1232,7 @@ static TDB_DATA get_jobs_added_data(struct tdb_print_db *pdb) ZERO_STRUCT(data); - data = tdb_fetch(pdb->tdb, string_tdb_data("INFO/jobs_added")); + data = tdb_fetch_compat(pdb->tdb, string_tdb_data("INFO/jobs_added")); if (data.dptr == NULL || data.dsize == 0 || (data.dsize % 4 != 0)) { SAFE_FREE(data.dptr); ZERO_STRUCT(data); @@ -1306,7 +1321,7 @@ done: } /**************************************************************************** - main work for updating the lpq cahe for a printer queue + main work for updating the lpq cache for a printer queue ****************************************************************************/ static void print_queue_update_internal( struct tevent_context *ev, @@ -1508,7 +1523,7 @@ static void print_queue_update_with_lock( struct tevent_context *ev, slprintf(keystr, sizeof(keystr) - 1, "LOCK/%s", sharename); /* Only wait 10 seconds for this. */ - if (tdb_lock_bystring_with_timeout(pdb->tdb, keystr, 10) == -1) { + if (tdb_lock_bystring_with_timeout(pdb->tdb, keystr, 10) != 0) { DEBUG(0,("print_queue_update_with_lock: Failed to lock printer %s database\n", sharename)); release_print_db(pdb); return; @@ -1557,7 +1572,7 @@ static void print_queue_update_with_lock( struct tevent_context *ev, /**************************************************************************** this is the receive function of the background lpq updater ****************************************************************************/ -static void print_queue_receive(struct messaging_context *msg, +void print_queue_receive(struct messaging_context *msg, void *private_data, uint32_t msg_type, struct server_id server_id, @@ -1590,123 +1605,12 @@ static void print_queue_receive(struct messaging_context *msg, return; } -static void printing_pause_fd_handler(struct tevent_context *ev, - struct tevent_fd *fde, - uint16_t flags, - void *private_data) -{ - /* - * If pause_pipe[1] is closed it means the parent smbd - * and children exited or aborted. - */ - exit_server_cleanly(NULL); -} - -extern struct child_pid *children; -extern int num_children; - -static void add_child_pid(pid_t pid) -{ - struct child_pid *child; - - child = SMB_MALLOC_P(struct child_pid); - if (child == NULL) { - DEBUG(0, ("Could not add child struct -- malloc failed\n")); - return; - } - child->pid = pid; - DLIST_ADD(children, child); - num_children += 1; -} - -static pid_t background_lpq_updater_pid = -1; - -/**************************************************************************** -main thread of the background lpq updater -****************************************************************************/ -void start_background_queue(struct tevent_context *ev, - struct messaging_context *msg_ctx) -{ - /* Use local variables for this as we don't - * need to save the parent side of this, just - * ensure it closes when the process exits. - */ - int pause_pipe[2]; - - DEBUG(3,("start_background_queue: Starting background LPQ thread\n")); - - if (pipe(pause_pipe) == -1) { - DEBUG(5,("start_background_queue: cannot create pipe. %s\n", strerror(errno) )); - exit(1); - } - - background_lpq_updater_pid = sys_fork(); - - if (background_lpq_updater_pid == -1) { - DEBUG(5,("start_background_queue: background LPQ thread failed to start. %s\n", strerror(errno) )); - exit(1); - } - - /* Track the printing pid along with other smbd children */ - add_child_pid(background_lpq_updater_pid); - - if(background_lpq_updater_pid == 0) { - struct tevent_fd *fde; - int ret; - NTSTATUS status; - - /* Child. */ - DEBUG(5,("start_background_queue: background LPQ thread started\n")); - - close(pause_pipe[0]); - pause_pipe[0] = -1; - - status = reinit_after_fork(msg_ctx, ev, procid_self(), true); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0,("reinit_after_fork() failed\n")); - smb_panic("reinit_after_fork() failed"); - } - - smbd_setup_sig_term_handler(); - smbd_setup_sig_hup_handler(ev, msg_ctx); - - if (!serverid_register(procid_self(), - FLAG_MSG_GENERAL|FLAG_MSG_SMBD - |FLAG_MSG_PRINT_GENERAL)) { - exit(1); - } - - if (!locking_init()) { - exit(1); - } - - messaging_register(msg_ctx, NULL, MSG_PRINTER_UPDATE, - print_queue_receive); - - fde = tevent_add_fd(ev, ev, pause_pipe[1], TEVENT_FD_READ, - printing_pause_fd_handler, - NULL); - if (!fde) { - DEBUG(0,("tevent_add_fd() failed for pause_pipe\n")); - smb_panic("tevent_add_fd() failed for pause_pipe"); - } - - DEBUG(5,("start_background_queue: background LPQ thread waiting for messages\n")); - ret = tevent_loop_wait(ev); - /* should not be reached */ - DEBUG(0,("background_queue: tevent_loop_wait() exited with %d - %s\n", - ret, (ret == 0) ? "out of events" : strerror(errno))); - exit(1); - } - - close(pause_pipe[1]); -} - /**************************************************************************** update the internal database from the system print queue for a queue ****************************************************************************/ +extern pid_t background_lpq_updater_pid; + static void print_queue_update(struct messaging_context *msg_ctx, int snum, bool force) { @@ -1848,7 +1752,7 @@ bool print_notify_register_pid(int snum) struct tdb_print_db *pdb = NULL; TDB_CONTEXT *tdb = NULL; const char *printername; - uint32 mypid = (uint32)sys_getpid(); + uint32_t mypid = (uint32_t)getpid(); bool ret = False; size_t i; @@ -1877,7 +1781,7 @@ bool print_notify_register_pid(int snum) tdb = pdb->tdb; } - if (tdb_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) { + if (tdb_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) != 0) { DEBUG(0,("print_notify_register_pid: Failed to lock printer %s\n", printername)); if (pdb) @@ -1911,7 +1815,7 @@ bool print_notify_register_pid(int snum) } /* Store back the record. */ - if (tdb_store_bystring(tdb, NOTIFY_PID_LIST_KEY, data, TDB_REPLACE) == -1) { + if (tdb_store_bystring(tdb, NOTIFY_PID_LIST_KEY, data, TDB_REPLACE) != 0) { DEBUG(0,("print_notify_register_pid: Failed to update pid \ list for printer %s\n", printername)); goto done; @@ -1939,7 +1843,7 @@ bool print_notify_deregister_pid(int snum) struct tdb_print_db *pdb = NULL; TDB_CONTEXT *tdb = NULL; const char *printername; - uint32 mypid = (uint32)sys_getpid(); + uint32_t mypid = (uint32_t)getpid(); size_t i; bool ret = False; @@ -1967,7 +1871,7 @@ bool print_notify_deregister_pid(int snum) tdb = pdb->tdb; } - if (tdb_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) == -1) { + if (tdb_lock_bystring_with_timeout(tdb, NOTIFY_PID_LIST_KEY, 10) != 0) { DEBUG(0,("print_notify_register_pid: Failed to lock \ printer %s database\n", printername)); if (pdb) @@ -2001,7 +1905,7 @@ printer %s database\n", printername)); SAFE_FREE(data.dptr); /* Store back the record. */ - if (tdb_store_bystring(tdb, NOTIFY_PID_LIST_KEY, data, TDB_REPLACE) == -1) { + if (tdb_store_bystring(tdb, NOTIFY_PID_LIST_KEY, data, TDB_REPLACE) != 0) { DEBUG(0,("print_notify_register_pid: Failed to update pid \ list for printer %s\n", printername)); goto done; @@ -2044,7 +1948,7 @@ bool print_job_exists(const char* sharename, uint32 jobid) char *print_job_fname(const char* sharename, uint32 jobid) { struct printjob *pjob = print_job_find(sharename, jobid); - if (!pjob || pjob->spooled || pjob->pid != sys_getpid()) + if (!pjob || pjob->spooled || pjob->pid != getpid()) return NULL; return pjob->filename; } @@ -2077,7 +1981,7 @@ bool print_job_set_name(struct tevent_context *ev, struct printjob *pjob; pjob = print_job_find(sharename, jobid); - if (!pjob || pjob->pid != sys_getpid()) + if (!pjob || pjob->pid != getpid()) return False; fstrcpy(pjob->jobname, name); @@ -2093,7 +1997,7 @@ bool print_job_get_name(TALLOC_CTX *mem_ctx, const char *sharename, uint32_t job struct printjob *pjob; pjob = print_job_find(sharename, jobid); - if (!pjob || pjob->pid != sys_getpid()) { + if (!pjob || pjob->pid != getpid()) { return false; } @@ -2126,12 +2030,12 @@ static bool remove_from_jobs_added(const char* sharename, uint32 jobid) key = string_tdb_data("INFO/jobs_added"); - if (tdb_chainlock_with_timeout(pdb->tdb, key, 5) == -1) + if (tdb_chainlock_with_timeout(pdb->tdb, key, 5) != 0) goto out; gotlock = True; - data = tdb_fetch(pdb->tdb, key); + data = tdb_fetch_compat(pdb->tdb, key); if (data.dptr == NULL || data.dsize == 0 || (data.dsize % 4 != 0)) goto out; @@ -2145,7 +2049,7 @@ static bool remove_from_jobs_added(const char* sharename, uint32 jobid) if (i < job_count -1 ) memmove(data.dptr + (i*4), data.dptr + (i*4) + 4, (job_count - i - 1)*4 ); data.dsize -= 4; - if (tdb_store(pdb->tdb, key, data, TDB_REPLACE) == -1) + if (tdb_store(pdb->tdb, key, data, TDB_REPLACE) != 0) goto out; break; } @@ -2234,7 +2138,7 @@ static bool print_job_delete1(struct tevent_context *ev, Return true if the current user owns the print job. ****************************************************************************/ -static bool is_owner(const struct auth_serversupplied_info *server_info, +static bool is_owner(const struct auth_session_info *server_info, const char *servicename, uint32 jobid) { @@ -2243,14 +2147,14 @@ static bool is_owner(const struct auth_serversupplied_info *server_info, if (!pjob || !server_info) return False; - return strequal(pjob->user, server_info->sanitized_username); + return strequal(pjob->user, server_info->unix_info->sanitized_username); } /**************************************************************************** Delete a print job. ****************************************************************************/ -WERROR print_job_delete(const struct auth_serversupplied_info *server_info, +WERROR print_job_delete(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum, uint32_t jobid) { @@ -2273,7 +2177,7 @@ WERROR print_job_delete(const struct auth_serversupplied_info *server_info, sys_adminlog( LOG_ERR, "Permission denied-- user not allowed to delete, \ pause, or resume print job. User name: %s. Printer name: %s.", - uidtoname(server_info->utok.uid), + uidtoname(server_info->unix_token->uid), lp_printername(snum) ); /* END_ADMIN_LOG */ @@ -2318,7 +2222,7 @@ 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, +bool print_job_pause(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum, uint32 jobid, WERROR *errcode) { @@ -2350,7 +2254,7 @@ bool print_job_pause(const struct auth_serversupplied_info *server_info, sys_adminlog( LOG_ERR, "Permission denied-- user not allowed to delete, \ pause, or resume print job. User name: %s. Printer name: %s.", - uidtoname(server_info->utok.uid), + uidtoname(server_info->unix_token->uid), lp_printername(snum) ); /* END_ADMIN_LOG */ @@ -2383,7 +2287,7 @@ pause, or resume print job. User name: %s. Printer name: %s.", Resume a job. ****************************************************************************/ -bool print_job_resume(const struct auth_serversupplied_info *server_info, +bool print_job_resume(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum, uint32 jobid, WERROR *errcode) { @@ -2416,7 +2320,7 @@ bool print_job_resume(const struct auth_serversupplied_info *server_info, sys_adminlog( LOG_ERR, "Permission denied-- user not allowed to delete, \ pause, or resume print job. User name: %s. Printer name: %s.", - uidtoname(server_info->utok.uid), + uidtoname(server_info->unix_token->uid), lp_printername(snum) ); /* END_ADMIN_LOG */ return False; @@ -2457,7 +2361,7 @@ ssize_t print_job_write(struct tevent_context *ev, if (!pjob) return -1; /* don't allow another process to get this info - it is meaningless */ - if (pjob->pid != sys_getpid()) + if (pjob->pid != getpid()) return -1; /* if SMBD is spooling this can't be allowed */ @@ -2494,7 +2398,7 @@ static int get_queue_status(const char* sharename, print_status_struct *status) if (status) { fstr_sprintf(keystr, "STATUS/%s", sharename); - data = tdb_fetch(pdb->tdb, string_tdb_data(keystr)); + data = tdb_fetch_compat(pdb->tdb, string_tdb_data(keystr)); if (data.dptr) { if (data.dsize == sizeof(print_status_struct)) /* this memcpy is ok since the status struct was @@ -2553,7 +2457,7 @@ static WERROR allocate_print_jobid(struct tdb_print_db *pdb, int snum, /* Lock the database - only wait 20 seconds. */ ret = tdb_lock_bystring_with_timeout(pdb->tdb, "INFO/nextjob", 20); - if (ret == -1) { + if (ret != 0) { DEBUG(0, ("allocate_print_jobid: " "Failed to lock printing database %s\n", sharename)); @@ -2581,7 +2485,7 @@ static WERROR allocate_print_jobid(struct tdb_print_db *pdb, int snum, jobid = NEXT_JOBID(jobid); ret = tdb_store_int32(pdb->tdb, "INFO/nextjob", jobid); - if (ret == -1) { + if (ret != 0) { terr = tdb_error(pdb->tdb); DEBUG(3, ("allocate_print_jobid: " "Failed to store INFO/nextjob.\n")); @@ -2614,7 +2518,7 @@ static WERROR allocate_print_jobid(struct tdb_print_db *pdb, int snum, dum.dptr = NULL; dum.dsize = 0; if (tdb_store(pdb->tdb, print_key(jobid, &tmp), dum, - TDB_INSERT) == -1) { + TDB_INSERT) != 0) { DEBUG(3, ("allocate_print_jobid: " "jobid (%d) failed to store placeholder.\n", jobid )); @@ -2651,7 +2555,7 @@ static bool add_to_jobs_added(struct tdb_print_db *pdb, uint32 jobid) Do all checks needed to determine if we can start a job. ***************************************************************************/ -static WERROR print_job_checks(const struct auth_serversupplied_info *server_info, +static WERROR print_job_checks(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum, int *njobs) { @@ -2777,7 +2681,7 @@ static WERROR print_job_spool_file(int snum, uint32_t jobid, Start spooling a job - return the jobid. ***************************************************************************/ -WERROR print_job_start(const struct auth_serversupplied_info *server_info, +WERROR print_job_start(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, const char *clientmachine, int snum, const char *docname, const char *filename, @@ -2816,7 +2720,7 @@ WERROR print_job_start(const struct auth_serversupplied_info *server_info, ZERO_STRUCT(pjob); - pjob.pid = sys_getpid(); + pjob.pid = getpid(); pjob.sysjob = -1; pjob.fd = -1; pjob.starttime = time(NULL); @@ -2831,13 +2735,11 @@ WERROR print_job_start(const struct auth_serversupplied_info *server_info, fstrcpy(pjob.clientmachine, clientmachine); fstrcpy(pjob.user, lp_printjob_username(snum)); - standard_sub_advanced(sharename, server_info->sanitized_username, - path, server_info->utok.gid, - server_info->sanitized_username, - server_info->info3->base.domain.string, - pjob.user, sizeof(pjob.user)-1); - /* ensure NULL termination */ - pjob.user[sizeof(pjob.user)-1] = '\0'; + standard_sub_advanced(sharename, server_info->unix_info->sanitized_username, + path, server_info->unix_token->gid, + server_info->unix_info->sanitized_username, + server_info->info->domain_name, + pjob.user, sizeof(pjob.user)); fstrcpy(pjob.queuename, lp_const_servicename(snum)); @@ -2886,7 +2788,7 @@ void print_job_endpage(struct messaging_context *msg_ctx, if (!pjob) return; /* don't allow another process to get this info - it is meaningless */ - if (pjob->pid != sys_getpid()) + if (pjob->pid != getpid()) return; pjob->page_count++; @@ -2915,7 +2817,7 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, int snum, return NT_STATUS_PRINT_CANCELLED; } - if (pjob->spooled || pjob->pid != sys_getpid()) { + if (pjob->spooled || pjob->pid != getpid()) { return NT_STATUS_ACCESS_DENIED; } @@ -3030,18 +2932,18 @@ static bool get_stored_queue_info(struct messaging_context *msg_ctx, ZERO_STRUCT(cgdata); /* Get the stored queue data. */ - data = tdb_fetch(pdb->tdb, string_tdb_data("INFO/linear_queue_array")); + data = tdb_fetch_compat(pdb->tdb, string_tdb_data("INFO/linear_queue_array")); if (data.dptr && data.dsize >= sizeof(qcount)) len += tdb_unpack(data.dptr + len, data.dsize - len, "d", &qcount); /* Get the added jobs list. */ - cgdata = tdb_fetch(pdb->tdb, string_tdb_data("INFO/jobs_added")); + cgdata = tdb_fetch_compat(pdb->tdb, string_tdb_data("INFO/jobs_added")); if (cgdata.dptr != NULL && (cgdata.dsize % 4 == 0)) extra_count = cgdata.dsize/4; /* Get the changed jobs list. */ - jcdata = tdb_fetch(pdb->tdb, string_tdb_data("INFO/jobs_changed")); + jcdata = tdb_fetch_compat(pdb->tdb, string_tdb_data("INFO/jobs_changed")); if (jcdata.dptr != NULL && (jcdata.dsize % 4 == 0)) changed_count = jcdata.dsize / 4; @@ -3208,7 +3110,7 @@ int print_queue_status(struct messaging_context *msg_ctx, int snum, slprintf(keystr, sizeof(keystr)-1, "STATUS/%s", sharename); key = string_tdb_data(keystr); - data = tdb_fetch(pdb->tdb, key); + data = tdb_fetch_compat(pdb->tdb, key); if (data.dptr) { if (data.dsize == sizeof(*status)) { /* this memcpy is ok since the status struct was @@ -3236,7 +3138,7 @@ int print_queue_status(struct messaging_context *msg_ctx, int snum, Pause a queue. ****************************************************************************/ -WERROR print_queue_pause(const struct auth_serversupplied_info *server_info, +WERROR print_queue_pause(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum) { int ret; @@ -3273,7 +3175,7 @@ WERROR print_queue_pause(const struct auth_serversupplied_info *server_info, Resume a queue. ****************************************************************************/ -WERROR print_queue_resume(const struct auth_serversupplied_info *server_info, +WERROR print_queue_resume(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum) { int ret; @@ -3310,7 +3212,7 @@ WERROR print_queue_resume(const struct auth_serversupplied_info *server_info, Purge a queue - implemented by deleting all jobs that we can delete. ****************************************************************************/ -WERROR print_queue_purge(const struct auth_serversupplied_info *server_info, +WERROR print_queue_purge(const struct auth_session_info *server_info, struct messaging_context *msg_ctx, int snum) { print_queue_struct *queue;