diff options
author | Luke Leighton <lkcl@samba.org> | 1999-11-06 19:52:04 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1999-11-06 19:52:04 +0000 |
commit | 0f18ca772da544a93799ca130a8f23529aad98f6 (patch) | |
tree | 4c66087d1b64dcd216c0958298461621a1bb49a8 /source3/rpcclient/cmd_spoolss.c | |
parent | bd6467154e73412753c22022b1615cf471bfa297 (diff) | |
download | samba-0f18ca772da544a93799ca130a8f23529aad98f6.tar.gz samba-0f18ca772da544a93799ca130a8f23529aad98f6.tar.bz2 samba-0f18ca772da544a93799ca130a8f23529aad98f6.zip |
added rpcclient spoolenum command. enumerates printers.
spoolss_r_io_enumprinters doesn't decode strings correctly
as printer_info_1/2 code has only been written to write
structures, not read them.
(This used to be commit 135eaa977385cdd5f572a51f654f14d893347d7b)
Diffstat (limited to 'source3/rpcclient/cmd_spoolss.c')
-rw-r--r-- | source3/rpcclient/cmd_spoolss.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index 0e931d4a39..8966eb45c2 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -40,6 +40,46 @@ extern int smb_tidx; /**************************************************************************** nt spoolss query ****************************************************************************/ +void cmd_spoolss_enum_printers(struct client_info *info) +{ + uint16 nt_pipe_fnum; + fstring srv_name; + void **printers = NULL; + uint32 count = 0; + + BOOL res = True; + + fstrcpy(srv_name, "\\\\"); + fstrcat(srv_name, smb_cli->desthost); + strupper(srv_name); + + DEBUG(5, ("cmd_spoolss_open_printer_ex: smb_cli->fd:%d\n", smb_cli->fd)); + + /* open SPOOLSS session. */ + res = res ? cli_nt_session_open(smb_cli, PIPE_SPOOLSS, &nt_pipe_fnum) : False; + + res = res ? spoolss_enum_printers(smb_cli, nt_pipe_fnum, + 0x40, srv_name, 1, &count, &printers) : False; + + /* close the session */ + cli_nt_session_close(smb_cli, nt_pipe_fnum); + + if (res) + { + DEBUG(5,("cmd_spoolss_enum_printer: query succeeded\n")); + report(out_hnd, "OK\n"); + } + else + { + DEBUG(5,("cmd_spoolss_enum_printer: query failed\n")); + } + + free_void_array(count, printers, free); +} + +/**************************************************************************** +nt spoolss query +****************************************************************************/ void cmd_spoolss_open_printer_ex(struct client_info *info) { uint16 nt_pipe_fnum; |