1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

r2073: Adding getprinter level 7 to rpcclient.

Is there any other rpc-call to get the guid of a published printer?

Guenther
(This used to be commit 944ad569c7a88e1d2f14311eed10f80ea9861963)
This commit is contained in:
Günther Deschner 2004-08-25 21:26:37 +00:00 committed by Gerald (Jerry) Carter
parent 804cfb20a0
commit bf645415f6
3 changed files with 40 additions and 0 deletions

View File

@ -1025,6 +1025,7 @@ typedef struct printer_info_ctr_info
PRINTER_INFO_3 *printers_3;
PRINTER_INFO_4 *printers_4;
PRINTER_INFO_5 *printers_5;
PRINTER_INFO_7 *printers_7;
}
PRINTER_INFO_CTR;

View File

@ -130,6 +130,27 @@ static void decode_printer_info_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
*info=inf;
}
/**********************************************************************
**********************************************************************/
static void decode_printer_info_7(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
uint32 returned, PRINTER_INFO_7 **info)
{
uint32 i;
PRINTER_INFO_7 *inf;
inf=(PRINTER_INFO_7 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_7));
memset(inf, 0, returned*sizeof(PRINTER_INFO_7));
prs_set_offset(&buffer->prs,0);
for (i=0; i<returned; i++) {
smb_io_printer_info_7("", buffer, &inf[i], 0);
}
*info=inf;
}
/**********************************************************************
**********************************************************************/
static void decode_port_info_1(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer,
@ -626,6 +647,9 @@ WERROR cli_spoolss_getprinter(struct cli_state *cli, TALLOC_CTX *mem_ctx,
case 3:
decode_printer_info_3(mem_ctx, r.buffer, 1, &ctr->printers_3);
break;
case 7:
decode_printer_info_7(mem_ctx, r.buffer, 1, &ctr->printers_7);
break;
}
}

View File

@ -297,6 +297,18 @@ static void display_print_info_3(PRINTER_INFO_3 *i3)
printf("\n");
}
/****************************************************************************
printer info level 7 display function
****************************************************************************/
static void display_print_info_7(PRINTER_INFO_7 *i7)
{
fstring guid = "";
rpcstr_pull(guid, i7->guid.buffer,sizeof(guid), -1, STR_TERMINATE);
printf("\tguid:[%s]\n", guid);
printf("\taction:[0x%x]\n", i7->action);
}
/* Enumerate printers */
static WERROR cmd_spoolss_enum_printers(struct cli_state *cli,
@ -687,6 +699,9 @@ static WERROR cmd_spoolss_getprinter(struct cli_state *cli,
case 3:
display_print_info_3(ctr.printers_3);
break;
case 7:
display_print_info_7(ctr.printers_7);
break;
default:
printf("unknown info level %d\n", info_level);
break;