1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

s3-rpcclient: allow to set level in spoolss getform query and display all levels.

Guenther
This commit is contained in:
Günther Deschner 2009-02-25 13:46:08 +01:00
parent 80a9a41d41
commit 01d1aaf63e

View File

@ -1978,6 +1978,28 @@ static void display_form_info1(struct spoolss_FormInfo1 *r)
/****************************************************************************
****************************************************************************/
static void display_form_info2(struct spoolss_FormInfo2 *r)
{
printf("%s\n" \
"\tflag: %s (%d)\n" \
"\twidth: %d, length: %d\n" \
"\tleft: %d, right: %d, top: %d, bottom: %d\n",
r->form_name, get_form_flag(r->flags), r->flags,
r->size.width, r->size.height,
r->area.left, r->area.right,
r->area.top, r->area.bottom);
printf("\tkeyword: %s\n", r->keyword);
printf("\tstring_type: 0x%08x\n", r->string_type);
printf("\tmui_dll: %s\n", r->mui_dll);
printf("\tressource_id: 0x%08x\n", r->ressource_id);
printf("\tdisplay_name: %s\n", r->display_name);
printf("\tlang_id: %d\n", r->lang_id);
printf("\n");
}
/****************************************************************************
****************************************************************************/
static WERROR cmd_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
@ -1989,11 +2011,12 @@ static WERROR cmd_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
uint32_t offered = 0;
union spoolss_FormInfo info;
uint32_t needed;
uint32_t level = 1;
/* Parse the command arguments */
if (argc != 3) {
printf ("Usage: %s <printer> <formname>\n", argv[0]);
if (argc < 3 || argc > 5) {
printf ("Usage: %s <printer> <formname> [level]\n", argv[0]);
return WERR_OK;
}
@ -2008,24 +2031,28 @@ static WERROR cmd_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
if (!W_ERROR_IS_OK(werror))
goto done;
if (argc == 4) {
level = atoi(argv[3]);
}
/* Get the form */
status = rpccli_spoolss_GetForm(cli, mem_ctx,
&handle,
argv[2],
1,
level,
NULL,
offered,
&info,
&needed,
&werror);
if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
buffer = data_blob_talloc(mem_ctx, NULL, needed);
buffer = data_blob_talloc_zero(mem_ctx, needed);
offered = needed;
status = rpccli_spoolss_GetForm(cli, mem_ctx,
&handle,
argv[2],
1,
level,
&buffer,
offered,
&info,
@ -2037,7 +2064,15 @@ static WERROR cmd_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
return werror;
}
display_form_info1(&info.info1);
switch (level) {
case 1:
display_form_info1(&info.info1);
break;
case 2:
display_form_info2(&info.info2);
break;
}
done:
if (is_valid_policy_hnd(&handle))
rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);