summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/client/client.c32
-rw-r--r--source3/libsmb/clifile.c13
2 files changed, 43 insertions, 2 deletions
diff --git a/source3/client/client.c b/source3/client/client.c
index 5a1a812fe9..be5796eff0 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -1714,6 +1714,37 @@ static int cmd_del(void)
}
/****************************************************************************
+ Wildcard delete some files.
+****************************************************************************/
+
+static int cmd_wdel(void)
+{
+ pstring mask;
+ pstring buf;
+ uint16 attribute;
+
+ if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
+ d_printf("wdel 0x<attrib> <wcard>\n");
+ return 1;
+ }
+
+ attribute = (uint16)strtol(buf, (char **)NULL, 16);
+
+ if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
+ d_printf("wdel 0x<attrib> <wcard>\n");
+ return 1;
+ }
+
+ pstrcpy(mask,cur_dir);
+ pstrcat(mask,buf);
+
+ if (!cli_unlink_full(cli, mask, attribute)) {
+ d_printf("%s deleting remote files %s\n",cli_errstr(cli),mask);
+ }
+ return 0;
+}
+
+/****************************************************************************
****************************************************************************/
static int cmd_open(void)
@@ -3211,6 +3242,7 @@ static struct
{"unlock",cmd_unlock,"unlock <fnum> <hex-start> <hex-len> : remove a POSIX lock",{COMPL_REMOTE,COMPL_REMOTE}},
{"volume",cmd_volume,"print the volume name",{COMPL_NONE,COMPL_NONE}},
{"vuid",cmd_vuid,"change current vuid",{COMPL_NONE,COMPL_NONE}},
+ {"wdel",cmd_wdel,"<attrib> <mask> wildcard delete all matching files",{COMPL_REMOTE,COMPL_NONE}},
{"logon",cmd_logon,"establish new logon",{COMPL_NONE,COMPL_NONE}},
{"listconnect",cmd_list_connect,"list open connections",{COMPL_NONE,COMPL_NONE}},
{"showconnect",cmd_show_connect,"display the current active connection",{COMPL_NONE,COMPL_NONE}},
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index ac468e0aee..76eddd3f63 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -496,7 +496,7 @@ BOOL cli_nt_hardlink(struct cli_state *cli, const char *fname_src, const char *f
Delete a file.
****************************************************************************/
-BOOL cli_unlink(struct cli_state *cli, const char *fname)
+BOOL cli_unlink_full(struct cli_state *cli, const char *fname, uint16 attrs)
{
char *p;
@@ -509,7 +509,7 @@ BOOL cli_unlink(struct cli_state *cli, const char *fname)
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
- SSVAL(cli->outbuf,smb_vwv0,aSYSTEM | aHIDDEN);
+ SSVAL(cli->outbuf,smb_vwv0, attrs);
p = smb_buf(cli->outbuf);
*p++ = 4;
@@ -529,6 +529,15 @@ BOOL cli_unlink(struct cli_state *cli, const char *fname)
}
/****************************************************************************
+ Delete a file.
+****************************************************************************/
+
+BOOL cli_unlink(struct cli_state *cli, const char *fname)
+{
+ return cli_unlink_full(cli, fname, aSYSTEM | aHIDDEN);
+}
+
+/****************************************************************************
Create a directory.
****************************************************************************/