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

kalim at samba.org kalim at samba.org
Sun Aug 7 01:25:26 GMT 2005


Author: kalim
Date: 2005-08-07 01:25:25 +0000 (Sun, 07 Aug 2005)
New Revision: 9169

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

Log:
Added mkdir (with support for recursion) and enabled the recurse command.
-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-06 23:41:18 UTC (rev 9168)
+++ branches/SOC/SAMBA_3_0/source/client/client.c	2005-08-07 01:25:25 UTC (rev 9169)
@@ -1081,21 +1081,13 @@
 
 static BOOL do_mkdir(char *name)
 {
-	struct cli_state *targetcli;
-	pstring targetname;
-	
-	if ( !cli_resolve_path( "", cli, name, &targetcli, targetname ) ) {
-		d_printf("mkdir %s: %s\n", name, cli_errstr(cli));
-		return False;
-	}
-
-	if (!cli_mkdir(targetcli, targetname)) {
-		d_printf("%s making remote directory %s\n",
-			 cli_errstr(targetcli),name);
-		return(False);
-	}
-
-	return(True);
+	if (smbc_mkdir(name, 755) < 0)
+    {
+        DEBUG(2, ("Error: %s making remote directory %s\n", strerror(errno), name));
+        return False;
+    }
+    
+	return True;
 }
 
 /****************************************************************************
@@ -1133,8 +1125,10 @@
 
 static int cmd_mkdir(void)
 {
+    int dh;
 	pstring mask;
 	pstring buf;
+    pstring targetname;
 	char *p=buf;
   
 	pstrcpy(mask,cur_dir);
@@ -1145,8 +1139,8 @@
 		return 1;
 	}
 	pstrcat(mask,p);
-
-	if (recurse) {
+    
+    if (recurse) {
 		pstring ddir;
 		pstring ddir2;
 		*ddir2 = 0;
@@ -1156,15 +1150,33 @@
 		p = strtok(ddir,"/\\");
 		while (p) {
 			pstrcat(ddir2,p);
-			if (!cli_chkpath(cli, ddir2)) { 
-				do_mkdir(ddir2);
-			}
+            
+            pstrcpy(targetname, "smb:");
+            pstrcat(targetname, service);
+            pstrcat(targetname, "/");
+            pstrcat(targetname, ddir2);
+            DEBUG(3, ("Recursively making directory %s\n", targetname));
+            if ((dh = smbc_opendir(targetname)) < 0) {
+                if (!do_mkdir(targetname)) {
+                    d_printf("Error: %s making remote directory %s\n", strerror(errno), targetname);
+                    break;
+                }
+            }
+            else
+                smbc_closedir(dh);
+            
 			pstrcat(ddir2,"/");
 			p = strtok(NULL,"/\\");
-		}	 
-	} else {
-		do_mkdir(mask);
+		}
 	}
+    else {
+        pstrcpy(targetname, "smb:");
+        pstrcat(targetname, service);
+        pstrcat(targetname, mask);
+        
+        if (!do_mkdir(targetname))
+            d_printf("Error: %s making remote directory %s\n", strerror(errno), targetname);
+	}
 	
 	return 0;
 }
@@ -2774,9 +2786,9 @@
   {"lowercase",cmd_lowercase,"toggle lowercasing of filenames for get",{COMPL_NONE,COMPL_NONE}},  
 /*   {"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}}, */
+  {"md",cmd_mkdir,"<directory> make a directory",{COMPL_NONE,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}}, */
+  {"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}}, */
   {"newer",cmd_newer,"<file> only mget files newer than the specified local file",{COMPL_LOCAL,COMPL_NONE}},
@@ -2789,7 +2801,7 @@
 /*   {"queue",cmd_queue,"show the print queue",{COMPL_NONE,COMPL_NONE}}, */
   {"quit",cmd_quit,"logoff the server",{COMPL_NONE,COMPL_NONE}},
   {"rd",cmd_rmdir,"<directory> remove a directory",{COMPL_NONE,COMPL_NONE}},
-/*   {"recurse",cmd_recurse,"toggle directory recursion for mget and mput",{COMPL_NONE,COMPL_NONE}}, */  
+  {"recurse",cmd_recurse,"toggle directory recursion for mget and mput",{COMPL_NONE,COMPL_NONE}},
 /*  {"reget",cmd_reget,"<remote name> [local name] get a file restarting at end of local file",{COMPL_REMOTE,COMPL_LOCAL}},*/
 /*  {"rename",cmd_rename,"<src> <dest> rename some files",{COMPL_REMOTE,COMPL_REMOTE}},*/
 /*  {"reput",cmd_reput,"<local name> [remote name] put a file restarting at end of remote file",{COMPL_LOCAL,COMPL_REMOTE}},*/



More information about the samba-cvs mailing list