r21750: Sync up with SAMBA_3_0_25. Only client changes are in libsmbclient
authorJeremy Allison <jra@samba.org>
Wed, 7 Mar 2007 19:45:22 +0000 (19:45 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:18:27 +0000 (12:18 -0500)
right now.
Jeremy.
(This used to be commit 6dd5f0ef0fe3a673081e16e656ca579bf50457ff)

source3/client/client.c
source3/libsmb/clifile.c

index 5a1a812fe984714868934ab28715ee4e1e9c1940..be5796eff0efe73e3bc730bf9caad40b57d6dc38 100644 (file)
@@ -1713,6 +1713,37 @@ static int cmd_del(void)
        return 0;
 }
 
+/****************************************************************************
+ 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;
+}
+
 /****************************************************************************
 ****************************************************************************/
 
@@ -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}},
index ac468e0aee52b2e6252ef964fa83bbb627bd885e..76eddd3f638a973e9c2b824042710f62a6448e1f 100644 (file)
@@ -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;      
@@ -528,6 +528,15 @@ BOOL cli_unlink(struct cli_state *cli, const char *fname)
        return True;
 }
 
+/****************************************************************************
+ Delete a file.
+****************************************************************************/
+
+BOOL cli_unlink(struct cli_state *cli, const char *fname)
+{
+       return cli_unlink_full(cli, fname, aSYSTEM | aHIDDEN);
+}
+
 /****************************************************************************
  Create a directory.
 ****************************************************************************/