done on the handle already */
result = winreg_delete_printer_key(p->mem_ctx, p->server_info,
- Printer->sharename, "");
+ p->msg_ctx, Printer->sharename, "");
if (!W_ERROR_IS_OK(result)) {
DEBUG(3,("Error deleting printer %s\n", Printer->sharename));
return WERR_BADFID;
static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
Printer_entry *Printer,
const char *handlename)
{
result = winreg_get_printer(mem_ctx,
server_info,
- smbd_messaging_context(),
+ msg_ctx,
servername,
sname,
&info2);
return false;
}
- if (!set_printer_hnd_name(p->mem_ctx, p->server_info, new_printer, name)) {
+ if (!set_printer_hnd_name(p->mem_ctx, p->server_info, p->msg_ctx,
+ new_printer, name)) {
close_printer_handle(p, hnd);
return false;
}
/* all we care about currently is the change_id */
result = winreg_printer_update_changeid(tmp_ctx,
server_info,
+ msg,
pinfo2->printername);
if (!W_ERROR_IS_OK(result)) {
if (!user_ok_token(uidtoname(p->server_info->utok.uid), NULL,
p->server_info->ptok, snum) ||
- !print_access_check(p->server_info, snum,
+ !print_access_check(p->server_info, p->msg_ctx, snum,
r->in.access_mask)) {
DEBUG(3, ("access DENIED for printer open\n"));
close_printer_handle(p, r->out.handle);
if (get_printer_snum(p, r->in.handle, &snum, NULL)) {
winreg_delete_printer_key(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum),
"");
}
if ((version = get_version_id(r->in.architecture)) == -1)
return WERR_INVALID_ENVIRONMENT;
- status = winreg_get_driver(p->mem_ctx, p->server_info,
+ status = winreg_get_driver(p->mem_ctx, p->server_info, p->msg_ctx,
r->in.architecture, r->in.driver,
version, &info);
if (!W_ERROR_IS_OK(status)) {
version = 3;
status = winreg_get_driver(p->mem_ctx, p->server_info,
+ p->msg_ctx,
r->in.architecture,
r->in.driver,
version, &info);
}
- if (printer_driver_in_use(p->mem_ctx, p->server_info, info)) {
+ if (printer_driver_in_use(p->mem_ctx, p->server_info, p->msg_ctx,
+ info)) {
status = WERR_PRINTER_DRIVER_IN_USE;
goto done;
}
if (version == 2) {
status = winreg_get_driver(p->mem_ctx, p->server_info,
+ p->msg_ctx,
r->in.architecture,
r->in.driver, 3, &info_win2k);
if (W_ERROR_IS_OK(status)) {
status = winreg_del_driver(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
info_win2k, 3);
talloc_free(info_win2k);
}
}
- status = winreg_del_driver(p->mem_ctx, p->server_info, info, version);
+ status = winreg_del_driver(p->mem_ctx, p->server_info, p->msg_ctx,
+ info, version);
done:
talloc_free(info);
version = r->in.version;
status = winreg_get_driver(p->mem_ctx, p->server_info,
- r->in.architecture, r->in.driver,
- version, &info);
+ p->msg_ctx, r->in.architecture,
+ r->in.driver, version, &info);
if (!W_ERROR_IS_OK(status)) {
status = WERR_UNKNOWN_PRINTER_DRIVER;
/* try for Win2k driver if "Windows NT x86" */
version = 3;
- status = winreg_get_driver(info, p->server_info,
+ status = winreg_get_driver(info, p->server_info, p->msg_ctx,
r->in.architecture,
r->in.driver,
version, &info);
}
}
- if (printer_driver_in_use(info, p->server_info, info)) {
+ if (printer_driver_in_use(info, p->server_info, p->msg_ctx, info)) {
status = WERR_PRINTER_DRIVER_IN_USE;
goto done;
}
if (delete_files &&
(r->in.delete_flags & DPD_DELETE_ALL_FILES) &&
- printer_driver_files_in_use(info, p->server_info, info)) {
+ printer_driver_files_in_use(info, p->server_info, p->msg_ctx,
+ info)) {
/* no idea of the correct error here */
status = WERR_ACCESS_DENIED;
goto done;
/* also check for W32X86/3 if necessary; maybe we already have? */
if ( (version == 2) && ((r->in.delete_flags & DPD_DELETE_SPECIFIC_VERSION) != DPD_DELETE_SPECIFIC_VERSION) ) {
- status = winreg_get_driver(info, p->server_info,
+ status = winreg_get_driver(info, p->server_info, p->msg_ctx,
r->in.architecture,
r->in.driver, 3, &info_win2k);
if (W_ERROR_IS_OK(status)) {
if (delete_files &&
(r->in.delete_flags & DPD_DELETE_ALL_FILES) &&
printer_driver_files_in_use(info, p->server_info,
+ p->msg_ctx,
info_win2k)) {
/* no idea of the correct error here */
talloc_free(info_win2k);
/* remove the Win2k driver first*/
status = winreg_del_driver(info, p->server_info,
- info_win2k, 3);
+ p->msg_ctx, info_win2k, 3);
/* this should not have failed---if it did, report to client */
}
}
- status = winreg_del_driver(info, p->server_info, info, version);
+ status = winreg_del_driver(info, p->server_info, p->msg_ctx, info,
+ version);
if (!W_ERROR_IS_OK(status)) {
goto done;
}
static WERROR construct_printer_info0(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
struct spoolss_PrinterInfo2 *info2,
struct spoolss_PrinterInfo0 *r,
int snum)
r->number_of_processors = 0x1;
r->processor_type = PROCESSOR_INTEL_PENTIUM; /* 586 Pentium ? */
r->high_part_total_bytes = 0x0;
- winreg_printer_get_changeid(mem_ctx, server_info, info2->sharename, &r->change_id); /* ChangeID in milliseconds*/
+
+ /* ChangeID in milliseconds*/
+ winreg_printer_get_changeid(mem_ctx, server_info, msg_ctx,
+ info2->sharename, &r->change_id);
+
r->last_error = WERR_OK;
r->status = nt_printq_status(status.status);
r->enumerate_network_printers = 0x0;
********************************************************************/
static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
+ struct messaging_context *msg_ctx,
Printer_entry *print_hnd,
struct spoolss_PrinterInfo7 *r,
int snum)
return WERR_NOMEM;
}
- if (is_printer_published(mem_ctx, server_info, print_hnd->servername,
+ if (is_printer_published(mem_ctx, server_info, msg_ctx,
+ print_hnd->servername,
lp_servicename(snum), &guid, NULL)) {
r->guid = talloc_strdup_upper(mem_ctx, GUID_string2(mem_ctx, &guid));
r->action = DSPRINT_PUBLISH;
static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t level,
uint32_t flags,
union spoolss_PrinterInfo **info_p,
result = winreg_create_printer(mem_ctx,
server_info,
- smbd_messaging_context(),
+ msg_ctx,
NULL,
printer);
if (!W_ERROR_IS_OK(result)) {
goto out;
}
- result = winreg_get_printer(mem_ctx, server_info,
- smbd_messaging_context(),
+ result = winreg_get_printer(mem_ctx, server_info, msg_ctx,
NULL, printer, &info2);
if (!W_ERROR_IS_OK(result)) {
goto out;
switch (level) {
case 0:
- result = construct_printer_info0(info, server_info, info2,
+ result = construct_printer_info0(info, server_info,
+ msg_ctx, info2,
&info[count].info0, snum);
break;
case 1:
static WERROR enumprinters_level0(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t flags,
const char *servername,
union spoolss_PrinterInfo **info,
{
DEBUG(4,("enum_all_printers_info_0\n"));
- return enum_all_printers_info_level(mem_ctx, server_info, 0, flags, info, count);
+ return enum_all_printers_info_level(mem_ctx, server_info, msg_ctx,
+ 0, flags, info, count);
}
static WERROR enum_all_printers_info_1(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t flags,
union spoolss_PrinterInfo **info,
uint32_t *count)
{
DEBUG(4,("enum_all_printers_info_1\n"));
- return enum_all_printers_info_level(mem_ctx, server_info, 1, flags, info, count);
+ return enum_all_printers_info_level(mem_ctx, server_info, msg_ctx,
+ 1, flags, info, count);
}
/********************************************************************
static WERROR enum_all_printers_info_1_local(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
union spoolss_PrinterInfo **info,
uint32_t *count)
{
DEBUG(4,("enum_all_printers_info_1_local\n"));
- return enum_all_printers_info_1(mem_ctx, server_info, PRINTER_ENUM_ICON8, info, count);
+ return enum_all_printers_info_1(mem_ctx, server_info, msg_ctx,
+ PRINTER_ENUM_ICON8, info, count);
}
/********************************************************************
static WERROR enum_all_printers_info_1_name(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
const char *name,
union spoolss_PrinterInfo **info,
uint32_t *count)
return WERR_INVALID_NAME;
}
- return enum_all_printers_info_1(mem_ctx, server_info, PRINTER_ENUM_ICON8, info, count);
+ return enum_all_printers_info_1(mem_ctx, server_info, msg_ctx,
+ PRINTER_ENUM_ICON8, info, count);
}
/********************************************************************
static WERROR enum_all_printers_info_1_network(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
const char *name,
union spoolss_PrinterInfo **info,
uint32_t *count)
return WERR_CAN_NOT_COMPLETE;
}
- return enum_all_printers_info_1(mem_ctx, server_info, PRINTER_ENUM_NAME, info, count);
+ return enum_all_printers_info_1(mem_ctx, server_info, msg_ctx,
+ PRINTER_ENUM_NAME, info, count);
}
/********************************************************************
static WERROR enum_all_printers_info_2(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
union spoolss_PrinterInfo **info,
uint32_t *count)
{
DEBUG(4,("enum_all_printers_info_2\n"));
- return enum_all_printers_info_level(mem_ctx, server_info, 2, 0, info, count);
+ return enum_all_printers_info_level(mem_ctx, server_info, msg_ctx,
+ 2, 0, info, count);
}
/********************************************************************
static WERROR enumprinters_level1(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t flags,
const char *name,
union spoolss_PrinterInfo **info,
/* Not all the flags are equals */
if (flags & PRINTER_ENUM_LOCAL) {
- return enum_all_printers_info_1_local(mem_ctx, server_info, info, count);
+ return enum_all_printers_info_1_local(mem_ctx, server_info,
+ msg_ctx, info, count);
}
if (flags & PRINTER_ENUM_NAME) {
- return enum_all_printers_info_1_name(mem_ctx, server_info, name, info, count);
+ return enum_all_printers_info_1_name(mem_ctx, server_info,
+ msg_ctx, name, info,
+ count);
}
if (flags & PRINTER_ENUM_NETWORK) {
- return enum_all_printers_info_1_network(mem_ctx, server_info, name, info, count);
+ return enum_all_printers_info_1_network(mem_ctx, server_info,
+ msg_ctx, name, info,
+ count);
}
return WERR_OK; /* NT4sp5 does that */
static WERROR enumprinters_level2(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t flags,
const char *servername,
union spoolss_PrinterInfo **info,
uint32_t *count)
{
if (flags & PRINTER_ENUM_LOCAL) {
- return enum_all_printers_info_2(mem_ctx, server_info, info, count);
+ return enum_all_printers_info_2(mem_ctx, server_info, msg_ctx,
+ info, count);
}
if (flags & PRINTER_ENUM_NAME) {
return WERR_INVALID_NAME;
}
- return enum_all_printers_info_2(mem_ctx, server_info, info, count);
+ return enum_all_printers_info_2(mem_ctx, server_info, msg_ctx,
+ info, count);
}
if (flags & PRINTER_ENUM_REMOTE) {
static WERROR enumprinters_level4(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t flags,
const char *servername,
union spoolss_PrinterInfo **info,
{
DEBUG(4,("enum_all_printers_info_4\n"));
- return enum_all_printers_info_level(mem_ctx, server_info, 4, flags, info, count);
+ return enum_all_printers_info_level(mem_ctx, server_info, msg_ctx,
+ 4, flags, info, count);
}
static WERROR enumprinters_level5(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t flags,
const char *servername,
union spoolss_PrinterInfo **info,
{
DEBUG(4,("enum_all_printers_info_5\n"));
- return enum_all_printers_info_level(mem_ctx, server_info, 5, flags, info, count);
+ return enum_all_printers_info_level(mem_ctx, server_info, msg_ctx,
+ 5, flags, info, count);
}
/****************************************************************
switch (r->in.level) {
case 0:
result = enumprinters_level0(p->mem_ctx, p->server_info,
- r->in.flags, name,
+ p->msg_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
case 1:
result = enumprinters_level1(p->mem_ctx, p->server_info,
- r->in.flags, name,
+ p->msg_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
case 2:
result = enumprinters_level2(p->mem_ctx, p->server_info,
- r->in.flags, name,
+ p->msg_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
case 4:
result = enumprinters_level4(p->mem_ctx, p->server_info,
- r->in.flags, name,
+ p->msg_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
case 5:
result = enumprinters_level5(p->mem_ctx, p->server_info,
- r->in.flags, name,
+ p->msg_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
default:
switch (r->in.level) {
case 0:
result = construct_printer_info0(p->mem_ctx, p->server_info,
- info2,
+ p->msg_ctx, info2,
&r->out.info->info0, snum);
break;
case 1:
&r->out.info->info6, snum);
break;
case 7:
- result = construct_printer_info7(p->mem_ctx, Printer,
+ result = construct_printer_info7(p->mem_ctx, p->msg_ctx,
+ Printer,
&r->out.info->info7, snum);
break;
case 8:
static WERROR construct_printer_driver_info_level(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
uint32_t level,
union spoolss_DriverInfo *r,
int snum,
result = winreg_get_printer(mem_ctx,
server_info,
- smbd_messaging_context(),
+ msg_ctx,
servername,
lp_const_servicename(snum),
&pinfo2);
return WERR_INVALID_PRINTER_NAME;
}
- result = winreg_get_driver(mem_ctx, server_info, architecture,
+ result = winreg_get_driver(mem_ctx, server_info, msg_ctx,
+ architecture,
pinfo2->drivername, version, &driver);
DEBUG(8,("construct_printer_driver_info_level: status: %s\n",
/* Yes - try again with a WinNT driver. */
version = 2;
- result = winreg_get_driver(mem_ctx, server_info, architecture,
+ result = winreg_get_driver(mem_ctx, server_info, msg_ctx,
+ architecture,
pinfo2->drivername,
version, &driver);
DEBUG(8,("construct_printer_driver_level: status: %s\n",
return WERR_BADFID;
}
- result = construct_printer_driver_info_level(p->mem_ctx, p->server_info,
+ result = construct_printer_driver_info_level(p->mem_ctx,
+ p->server_info,
+ p->msg_ctx,
r->in.level, r->out.info,
snum, printer->servername,
r->in.architecture,
result = winreg_set_printer_secdesc(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer,
new_secdesc);
static WERROR update_dsspooler(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
int snum,
struct spoolss_SetPrinterInfo2 *printer,
struct spoolss_PrinterInfo2 *old_printer)
push_reg_sz(mem_ctx, &buffer, printer->drivername);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_DRIVERNAME,
push_reg_sz(mem_ctx, &buffer, printer->comment);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_DESCRIPTION,
push_reg_sz(mem_ctx, &buffer, printer->sharename);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTSHARENAME,
push_reg_sz(mem_ctx, &buffer, p);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTERNAME,
push_reg_sz(mem_ctx, &buffer, printer->portname);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PORTNAME,
push_reg_sz(mem_ctx, &buffer, printer->location);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_LOCATION,
push_reg_sz(mem_ctx, &buffer, printer->sepfile);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTSEPARATORFILE,
SIVAL(buffer.data, 0, printer->starttime);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTSTARTTIME,
SIVAL(buffer.data, 0, printer->untiltime);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTENDTIME,
SIVAL(buffer.data, 0, printer->priority);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRIORITY,
PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS));
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTKEEPPRINTEDJOBS,
push_reg_sz(mem_ctx, &buffer, spooling);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_PRINTSPOOLING,
push_reg_sz(mem_ctx, &buffer, global_myname());
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_SHORTSERVERNAME,
push_reg_sz(mem_ctx, &buffer, longname);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_SERVERNAME,
push_reg_sz(mem_ctx, &buffer, uncname);
winreg_set_printer_dataex(mem_ctx,
server_info,
+ msg_ctx,
printer->sharename,
SPOOL_DSSPOOLER_KEY,
SPOOL_REG_UNCNAME,
update_dsspooler(tmp_ctx,
p->server_info,
+ p->msg_ctx,
snum,
printer,
old_printer);
return WERR_BADFID;
}
- nt_printer_publish(pinfo2, p->server_info, pinfo2, info7->action);
+ nt_printer_publish(pinfo2, p->server_info, p->msg_ctx, pinfo2,
+ info7->action);
TALLOC_FREE(pinfo2);
return WERR_OK;
static WERROR enumprinterdrivers_level_by_architecture(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
const char *servername,
const char *architecture,
uint32_t level,
*info_p = NULL;
for (version=0; version<DRIVER_MAX_VERSION; version++) {
- result = winreg_get_driver_list(mem_ctx, server_info,
+ result = winreg_get_driver_list(mem_ctx, server_info, msg_ctx,
architecture, version,
&num_drivers, &drivers);
if (!W_ERROR_IS_OK(result)) {
DEBUG(5, ("\tdriver: [%s]\n", drivers[i]));
result = winreg_get_driver(mem_ctx, server_info,
+ msg_ctx,
architecture, drivers[i],
version, &driver);
if (!W_ERROR_IS_OK(result)) {
static WERROR enumprinterdrivers_level(TALLOC_CTX *mem_ctx,
struct auth_serversupplied_info *server_info,
+ struct messaging_context *msg_ctx,
const char *servername,
const char *architecture,
uint32_t level,
result = enumprinterdrivers_level_by_architecture(mem_ctx,
server_info,
+ msg_ctx,
servername,
archi_table[a].long_archi,
level,
return enumprinterdrivers_level_by_architecture(mem_ctx,
server_info,
+ msg_ctx,
servername,
architecture,
level,
result = enumprinterdrivers_level(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
cservername,
r->in.environment,
r->in.level,
case 1:
result = winreg_printer_enumforms1(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
r->out.count,
r->out.info);
break;
case 1:
result = winreg_printer_getform1(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
r->in.form_name,
&r->out.info->info1);
break;
}
/* you must be a printer admin to add a new printer */
- if (!print_access_check(p->server_info, snum, PRINTER_ACCESS_ADMINISTER)) {
+ if (!print_access_check(p->server_info, p->msg_ctx, snum,
+ PRINTER_ACCESS_ADMINISTER)) {
return WERR_ACCESS_DENIED;
}
update_dsspooler(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
0,
info2,
NULL);
goto done;
}
- err = winreg_add_driver(p->mem_ctx, p->server_info,
+ err = winreg_add_driver(p->mem_ctx, p->server_info, p->msg_ctx,
r->in.info_ctr, &driver_name, &version);
if (!W_ERROR_IS_OK(err)) {
goto done;
return WERR_INVALID_PARAM;
}
- status = winreg_printer_addform1(p->mem_ctx, p->server_info, form);
+ status = winreg_printer_addform1(p->mem_ctx, p->server_info,
+ p->msg_ctx, form);
if (!W_ERROR_IS_OK(status)) {
return status;
}
status = winreg_printer_update_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum));
if (!W_ERROR_IS_OK(status)) {
return status;
status = winreg_printer_deleteform1(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
form_name);
if (!W_ERROR_IS_OK(status)) {
return status;
status = winreg_printer_update_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum));
if (!W_ERROR_IS_OK(status)) {
return status;
status = winreg_printer_setform1(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
form_name,
form);
if (!W_ERROR_IS_OK(status)) {
status = winreg_printer_update_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum));
if (!W_ERROR_IS_OK(status)) {
return status;
result = winreg_printer_get_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer,
&changeid);
if (!W_ERROR_IS_OK(result)) {
result = winreg_get_printer_dataex(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer,
r->in.key_name,
r->in.value_name,
result = winreg_set_printer_dataex(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
pinfo2->sharename,
r->in.key_name,
r->in.value_name,
*/
winreg_set_printer_dataex(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
pinfo2->sharename,
str,
r->in.value_name,
result = winreg_printer_update_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum));
}
status = winreg_delete_printer_dataex(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer,
r->in.key_name,
r->in.value_name);
if (W_ERROR_IS_OK(status)) {
status = winreg_printer_update_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer);
}
result = winreg_enum_printer_key(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum),
r->in.key_name,
&num_keys,
/* delete the key and all subkeys */
status = winreg_delete_printer_key(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer,
r->in.key_name);
if (W_ERROR_IS_OK(status)) {
status = winreg_printer_update_changeid(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
printer);
}
/* now look for a match on the key name */
result = winreg_enum_printer_dataex(p->mem_ctx,
p->server_info,
+ p->msg_ctx,
lp_const_servicename(snum),
r->in.key_name,
&count,