summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs-xml/manpages-3/rpcclient.1.xml11
-rw-r--r--source3/rpcclient/cmd_spoolss.c14
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 40e4b9b6bc..46d56ee560 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.
</para></listitem></varlistentry>
- <varlistentry><term>deldriverex &lt;driver&gt; [architecture] [version]
- </term><listitem><para>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.
+ <varlistentry><term>deldriverex &lt;driver&gt; [architecture] [version] [flags]
+ </term><listitem><para>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.
+ <parameter>flags</parameter> correspond to numeric DPD_* values, i.e. a value
+ of 3 requests (DPD_DELETE_UNUSED_FILES | DPD_DELETE_SPECIFIC_VERSION).
</para></listitem></varlistentry>
<varlistentry><term>enumdata</term><listitem><para>Enumerate all
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 0e12201f92..21f70aeb41 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 <driver> [arch] [version]\n", argv[0]);
+ if (argc < 2 || argc > 5) {
+ printf("Usage: %s <driver> [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)