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