From 97818fd6e552f6ddc30f5b9728d6e82121150867 Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Wed, 11 Jan 2012 12:29:58 +0100 Subject: [PATCH] s3-rpcclient: add deldriverex flags argument The spoolss DeletePrinterDriverEx command offers three flags for controlling how associated files and other versions of the driver are effected: DPD_DELETE_UNUSED_FILES (1), DPD_DELETE_SPECIFIC_VERSION (2) and DPD_DELETE_ALL_FILES (4). This commit adds an optional numeric flags argument to the rpcclient deldriverex command. Signed-off-by: David Disseldorp Signed-off-by: Andreas Schneider Autobuild-User: David Disseldorp Autobuild-Date: Wed Jan 11 14:39:35 CET 2012 on sn-devel-104 --- docs-xml/manpages-3/rpcclient.1.xml | 11 +++++++---- source3/rpcclient/cmd_spoolss.c | 14 +++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs-xml/manpages-3/rpcclient.1.xml b/docs-xml/manpages-3/rpcclient.1.xml index 40e4b9b6bcf..46d56ee5602 100644 --- a/docs-xml/manpages-3/rpcclient.1.xml +++ b/docs-xml/manpages-3/rpcclient.1.xml @@ -273,10 +273,13 @@ Comma Separated list of Files only the entry from the server's list of drivers. - deldriverex <driver> [architecture] [version] - Delete the specified printer driver including driver files. - You can limit this action to a specific architecture and a specific version. - If no architecure is given, all driver files of that driver will be deleted. + deldriverex <driver> [architecture] [version] [flags] + Delete the specified printer driver and optionally files + associated with the driver. + You can limit this action to a specific architecture and a specific version. + If no architecure is given, all driver files of that driver will be deleted. + flags correspond to numeric DPD_* values, i.e. a value + of 3 requests (DPD_DELETE_UNUSED_FILES | DPD_DELETE_SPECIFIC_VERSION). enumdataEnumerate all diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index 0e12201f927..21f70aeb415 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -1928,24 +1928,24 @@ static WERROR cmd_spoolss_deletedriverex(struct rpc_pipe_client *cli, uint32_t delete_flags = 0; /* parse the command arguments */ - if (argc < 2 || argc > 4) { - printf ("Usage: %s [arch] [version]\n", argv[0]); + if (argc < 2 || argc > 5) { + printf("Usage: %s [arch] [version] [flags]\n", argv[0]); return WERR_OK; } if (argc >= 3) arch = argv[2]; - if (argc == 4) - vers = atoi (argv[3]); - - if (vers >= 0) { + if (argc >= 4) { + vers = atoi(argv[3]); delete_flags |= DPD_DELETE_SPECIFIC_VERSION; } + if (argc == 5) + delete_flags = atoi(argv[4]); /* delete the driver for all architectures */ for (i=0; archi_table[i].long_archi; i++) { - if (arch && !strequal( archi_table[i].long_archi, arch)) + if (arch && !strequal(archi_table[i].long_archi, arch)) continue; if (vers >= 0 && archi_table[i].version != vers) -- 2.11.4.GIT