diff options
author | Günther Deschner <gd@samba.org> | 2004-09-21 13:31:57 +0000 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2004-09-21 13:31:57 +0000 |
commit | 36917ea76ce079987dbc79949263b8e04ce7e245 (patch) | |
tree | 7db9fc35a2203989d367b891c101f1cc485fee0c /source/utils/net_rpc_printer.c | |
parent | a179b8461907ddb38bc945df16f70ae449c5a3df (diff) | |
download | samba-36917ea76ce079987dbc79949263b8e04ce7e245.tar.gz samba-36917ea76ce079987dbc79949263b8e04ce7e245.tar.xz samba-36917ea76ce079987dbc79949263b8e04ce7e245.zip |
r2476: now that PRINTER_ATTRIBUTE_PUBLISHED does not get reset anymore, migrate
the publishing-state for migrated printers as well.
Therefor added client-side-support for setprinter level 7.
Next will be a "net rpc printer publish"-command (just for completeness).
Guenther
Diffstat (limited to 'source/utils/net_rpc_printer.c')
-rw-r--r-- | source/utils/net_rpc_printer.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/source/utils/net_rpc_printer.c b/source/utils/net_rpc_printer.c index 11f9c0ba2f3..51f4df7b05a 100644 --- a/source/utils/net_rpc_printer.c +++ b/source/utils/net_rpc_printer.c @@ -2011,7 +2011,7 @@ NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid, const BOOL got_hnd_dst = False; BOOL got_dst_spoolss_pipe = False; POLICY_HND hnd_src, hnd_dst; - PRINTER_INFO_CTR ctr_enum, ctr_dst; + PRINTER_INFO_CTR ctr_enum, ctr_dst, ctr_dst_publish; REGVAL_CTR reg_ctr; struct cli_state *cli_dst = NULL; char *devicename = NULL, *unc_name = NULL, *url = NULL; @@ -2095,10 +2095,19 @@ NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid, const is correctly installed (incl. driver ???) */ init_unistr( &ctr_dst.printers_2->portname, SAMBA_PRINTER_PORT_NAME); - /* check if printer is published -> no publish-migration for the moment */ + /* check if printer is published */ if (ctr_enum.printers_2[i].attributes & PRINTER_ATTRIBUTE_PUBLISHED) { - printf("printer on originating server was published, ignoring that\n"); - ctr_dst.printers_2->attributes = PRINTER_ATTRIBUTE_SAMBA; + + /* check for existing dst printer */ + if (!net_spoolss_getprinter(cli_dst, mem_ctx, &hnd_dst, 7, &ctr_dst_publish)) + goto done; + + ctr_dst_publish.printers_7->action = SPOOL_DS_PUBLISH; + + /* ignore False from setprinter due to WERR_IO_PENDING */ + net_spoolss_setprinter(cli_dst, mem_ctx, &hnd_dst, 7, &ctr_dst_publish); + + DEBUG(3,("republished printer\n")); } /* copy devmode (info level 2) */ |