svn commit: samba r9708 - in branches/SOC/SAMBA_3_0/source/client: .

kalim at samba.org kalim at samba.org
Sun Aug 28 07:30:41 GMT 2005


Author: kalim
Date: 2005-08-28 07:30:40 +0000 (Sun, 28 Aug 2005)
New Revision: 9708

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9708

Log:
Patched up and enabled mput command. Support for directories/recursion coming soon.

-Kalim
Modified:
   branches/SOC/SAMBA_3_0/source/client/client.c


Changeset:
Modified: branches/SOC/SAMBA_3_0/source/client/client.c
===================================================================
--- branches/SOC/SAMBA_3_0/source/client/client.c	2005-08-28 02:38:11 UTC (rev 9707)
+++ branches/SOC/SAMBA_3_0/source/client/client.c	2005-08-28 07:30:40 UTC (rev 9708)
@@ -656,10 +656,13 @@
         case SMBC_IPC_SHARE:
             break;
         case SMBC_DIR:
+            if (!dirs)
+                break;
         case SMBC_FILE:
             pstrcpy(dentname, res);
             pstrcat(dentname, dent->name);
-            if (mask_match(dent->name, mask, False))
+            /*if (mask_match(dent->name, mask, False))*/
+            if (mask_match(dentname, mask, False))
             {
                 if (smbc_stat(dentname, &stat) < 0)
                 {
@@ -670,8 +673,6 @@
                     fn(dent->name, &stat);
                 }
             }
-            else
-                d_printf("no match: %s >< %s\n", dent->name, mask);
             break;
         case SMBC_LINK:
             break;
@@ -808,10 +809,14 @@
 	pstring buf;
 	char *p=buf;
 	
+    pstrcpy(mask, "smb:");
+    pstrcat(mask, service);
+    pstrcat(mask, cur_dir);
+    
 	if (next_token_nr(NULL,buf,NULL,sizeof(buf)))
-        pstrcpy(mask,buf);
+        pstrcat(mask,buf);
 	else
-		pstrcpy(mask,"*");
+		pstrcat(mask,"*");
     
     tool_list(mask, mode, display_stat, recurse, True);
     return 0;
@@ -1031,57 +1036,54 @@
  Do an mget operation on one file.
 ****************************************************************************/
 
-static void do_mget(file_info *finfo)
+static void do_mget(char *name, struct stat *st)
 {
 	pstring rname;
 	pstring quest;
 	pstring saved_curdir;
 	pstring mget_mask;
+    mode_t mode;
 
-	if (strequal(finfo->name,".") || strequal(finfo->name,".."))
+	if (strequal(name,".") || strequal(name,".."))
 		return;
 
-	if (abort_mget)	{
-		d_printf("mget aborted\n");
-		return;
-	}
-
-	if (finfo->mode & aDIR)
-		slprintf(quest,sizeof(pstring)-1,
-			 "Get directory %s? ",finfo->name);
+    if (S_ISDIR(mode))
+		slprintf(quest,sizeof(pstring)-1, "Get directory %s%s? ", cur_dir, name);
 	else
-		slprintf(quest,sizeof(pstring)-1,
-			 "Get file %s? ",finfo->name);
+		slprintf(quest,sizeof(pstring)-1, "Get file %s%s? ", cur_dir, name);
 
 	if (prompt && !yesno(quest))
 		return;
 
-	if (!(finfo->mode & aDIR)) {
-		pstrcpy(rname,cur_dir);
-		pstrcat(rname,finfo->name);
-		do_get(rname, finfo->name, False);
+	if (!S_ISDIR(mode)) {
+        pstrcpy(rname,"smb:");
+        pstrcat(rname,service);
+		pstrcat(rname,cur_dir);
+		pstrcat(rname,name);
+		do_get(rname,name, False);
 		return;
 	}
 
 	/* handle directories */
-	pstrcpy(saved_curdir,cur_dir);
+    /* TODO: clean this code up for recursive calls */
+	/*pstrcpy(saved_curdir,cur_dir);
 
-	pstrcat(cur_dir,finfo->name);
+	pstrcat(cur_dir,name);
 	pstrcat(cur_dir,"/");
 
-	unix_format(finfo->name);
+	unix_format(name);
 	if (lowercase)
-		strlower_m(finfo->name);
+		strlower_m(name);
 	
-	if (!directory_exist(finfo->name,NULL) && 
-	    mkdir(finfo->name,0777) != 0) {
-		d_printf("failed to create directory %s\n",finfo->name);
+	if (!directory_exist(name,NULL) && 
+	    mkdir(name,0777) != 0) {
+		d_printf("failed to create directory %s\n",name);
 		pstrcpy(cur_dir,saved_curdir);
 		return;
 	}
 	
-	if (chdir(finfo->name) != 0) {
-		d_printf("failed to chdir to directory %s\n",finfo->name);
+	if (chdir(name) != 0) {
+		d_printf("failed to chdir to directory %s\n",name);
 		pstrcpy(cur_dir,saved_curdir);
 		return;
 	}
@@ -1089,9 +1091,9 @@
 	pstrcpy(mget_mask,cur_dir);
 	pstrcat(mget_mask,"*");
 	
-	do_list(mget_mask, aSYSTEM | aHIDDEN | aDIR,do_mget,False, True);
+	tool_list(mget_mask, mode, do_mget, False, True);
 	chdir("..");
-	pstrcpy(cur_dir,saved_curdir);
+	pstrcpy(cur_dir,saved_curdir);*/
 }
 
 /****************************************************************************
@@ -1141,36 +1143,41 @@
 
 static int cmd_mget(void)
 {
-	uint16 attribute = aSYSTEM | aHIDDEN;
+    mode_t mode;
 	pstring mget_mask;
 	pstring buf;
 	char *p=buf;
 
 	*mget_mask = 0;
 
-	if (recurse)
-		attribute |= aDIR;
-	
-	abort_mget = False;
-
 	while (next_token_nr(NULL,p,NULL,sizeof(buf))) {
-		pstrcpy(mget_mask,cur_dir);
+        pstrcpy(mget_mask, "smb:");
+        pstrcat(mget_mask, service);
+		pstrcat(mget_mask,cur_dir);
 		if(mget_mask[strlen(mget_mask)-1]!='/')
 			pstrcat(mget_mask,"/");
 		
 		if (*p == '/')
-			pstrcpy(mget_mask,p);
+        {
+            pstrcpy(mget_mask, "smb:");
+            pstrcat(mget_mask, service);
+			pstrcat(mget_mask,p);
+        }
 		else
 			pstrcat(mget_mask,p);
-		do_list(mget_mask, attribute,do_mget,False,True);
+        /* TODO: enable directories on calls to tool_list
+           once recursion is worked out */
+		tool_list(mget_mask, mode, do_mget, recurse, False);
 	}
 
 	if (!*mget_mask) {
-		pstrcpy(mget_mask,cur_dir);
+		pstrcpy(mget_mask, "smb:");
+        pstrcat(mget_mask, service);
+		pstrcat(mget_mask,cur_dir);
 		if(mget_mask[strlen(mget_mask)-1]!='/')
 			pstrcat(mget_mask,"/");
 		pstrcat(mget_mask,"*");
-		do_list(mget_mask, attribute,do_mget,False,True);
+		tool_list(mget_mask, mode, do_mget, recurse, False);
 	}
 	
 	return 0;
@@ -2915,7 +2922,7 @@
   {"ls",cmd_dir,"<mask> list the contents of the current directory",{COMPL_REMOTE,COMPL_NONE}},
 /*   {"mask",cmd_select,"<mask> mask all filenames against this",{COMPL_REMOTE,COMPL_NONE}}, */
   {"md",cmd_mkdir,"<directory> make a directory",{COMPL_NONE,COMPL_NONE}},
-/*   {"mget",cmd_mget,"<mask> get all the matching files",{COMPL_REMOTE,COMPL_NONE}}, */
+  {"mget",cmd_mget,"<mask> get all the matching files",{COMPL_REMOTE,COMPL_NONE}},
   {"mkdir",cmd_mkdir,"<directory> make a directory",{COMPL_NONE,COMPL_NONE}},
 /*   {"more",cmd_more,"<remote name> view a remote file with your pager",{COMPL_REMOTE,COMPL_NONE}}, */  
   {"mput",cmd_mput,"<mask> put all matching files",{COMPL_REMOTE,COMPL_NONE}},



More information about the samba-cvs mailing list