diff options
author | Tim Potter <tpot@samba.org> | 2002-08-27 00:38:55 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2002-08-27 00:38:55 +0000 |
commit | d6b10fe9691bfc96d5933c029990c60fd292bdc9 (patch) | |
tree | c4bc6e310f438f5af4f2513148352e52291343c9 | |
parent | 1f81b177182aee7fe24e50ae3cd72d417e81b45a (diff) | |
download | samba-d6b10fe9691bfc96d5933c029990c60fd292bdc9.tar.gz samba-d6b10fe9691bfc96d5933c029990c60fd292bdc9.tar.xz samba-d6b10fe9691bfc96d5933c029990c60fd292bdc9.zip |
Pass the object name down to the enum_printers rpc. By default this is the
server name and everything works as advertised. See the MSDN doco for details.
-rw-r--r-- | source/rpc_client/cli_spoolss.c | 10 | ||||
-rw-r--r-- | source/rpcclient/cmd_spoolss.c | 15 |
2 files changed, 17 insertions, 8 deletions
diff --git a/source/rpc_client/cli_spoolss.c b/source/rpc_client/cli_spoolss.c index 18e17758d6d..0a869e45a2b 100644 --- a/source/rpc_client/cli_spoolss.c +++ b/source/rpc_client/cli_spoolss.c @@ -393,7 +393,7 @@ WERROR cli_spoolss_close_printer(struct cli_state *cli, TALLOC_CTX *mem_ctx, WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx, uint32 offered, uint32 *needed, - uint32 flags, uint32 level, + char *name, uint32 flags, uint32 level, uint32 *num_printers, PRINTER_INFO_CTR *ctr) { prs_struct qbuf, rbuf; @@ -406,7 +406,13 @@ WERROR cli_spoolss_enum_printers(struct cli_state *cli, TALLOC_CTX *mem_ctx, ZERO_STRUCT(q); ZERO_STRUCT(r); - slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost); + /* Use server name if no object name specified */ + + if (name) + slprintf(server, sizeof(fstring) - 1, "\\\\%s", name); + else + slprintf(server, sizeof(fstring) - 1, "\\\\%s", cli->desthost); + strupper (server); /* Initialise input parameters */ diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c index 22e2db41f31..8ea5ec6837d 100644 --- a/source/rpcclient/cmd_spoolss.c +++ b/source/rpcclient/cmd_spoolss.c @@ -313,16 +313,19 @@ static NTSTATUS cmd_spoolss_enum_printers(struct cli_state *cli, uint32 info_level = 1; PRINTER_INFO_CTR ctr; uint32 i = 0, num_printers, needed; + char *name = NULL; - if (argc > 2) + if (argc > 3) { - printf("Usage: %s [level]\n", argv[0]); + printf("Usage: %s [level] [name]\n", argv[0]); return NT_STATUS_OK; } - if (argc == 2) { + if (argc == 2) info_level = atoi(argv[1]); - } + + if (argc == 3) + name = argv[2]; /* Enumerate printers -- Should we enumerate types other than PRINTER_ENUM_LOCAL? Maybe accept as a parameter? --jerry */ @@ -330,12 +333,12 @@ static NTSTATUS cmd_spoolss_enum_printers(struct cli_state *cli, ZERO_STRUCT(ctr); result = cli_spoolss_enum_printers( - cli, mem_ctx, 0, &needed, PRINTER_ENUM_LOCAL, + cli, mem_ctx, 0, &needed, name, PRINTER_ENUM_LOCAL, info_level, &num_printers, &ctr); if (W_ERROR_V(result) == ERRinsufficientbuffer) result = cli_spoolss_enum_printers( - cli, mem_ctx, needed, NULL, PRINTER_ENUM_LOCAL, + cli, mem_ctx, needed, NULL, name, PRINTER_ENUM_LOCAL, info_level, &num_printers, &ctr); if (W_ERROR_IS_OK(result)) { |