summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve French <sfrench@samba.org>2003-05-20 04:28:29 +0000
committerSteve French <sfrench@samba.org>2003-05-20 04:28:29 +0000
commit74f994b9861bdc15d95b51c27e323e64a360d8e8 (patch)
treed93697bbe37157cd21c1416fc4d747757dbfecec
parent8e486659437884470414ff39598159020a241816 (diff)
downloadsamba-74f994b9861bdc15d95b51c27e323e64a360d8e8.tar.gz
samba-74f994b9861bdc15d95b51c27e323e64a360d8e8.tar.bz2
samba-74f994b9861bdc15d95b51c27e323e64a360d8e8.zip
Fix Linux cifs vfs mount helper parsing of slashes
(This used to be commit 639a2a785ac32869e984ba294ec40f9c8c3a0efb)
-rwxr-xr-xsource3/client/mount.cifs.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/source3/client/mount.cifs.c b/source3/client/mount.cifs.c
index 7167859d7b..8ba1eff02e 100755
--- a/source3/client/mount.cifs.c
+++ b/source3/client/mount.cifs.c
@@ -222,15 +222,15 @@ char * parse_server(char * unc_name)
printf(" %s does not begin with \\\\ or //\n",unc_name);
return 0;
} else {
- unc_name[0] = '\\';
- unc_name[1] = '\\';
+ unc_name[0] = '/';
+ unc_name[1] = '/';
unc_name += 2;
if ((share = strchr(unc_name, '/')) ||
(share = strchr(unc_name,'\\'))) {
*share = 0; /* temporarily terminate the string */
share += 1;
host_entry = gethostbyname(unc_name);
- *(share - 1) = '\\'; /* put the slash back */
+ *(share - 1) = '/'; /* put the slash back */
/* rc = getipnodebyname(unc_name, AF_INET, AT_ADDRCONFIG ,&rc);*/
if(host_entry == NULL) {
printf("mount error: could not find target server. TCP name %s not found ", unc_name);
@@ -300,6 +300,7 @@ int main(int argc, char ** argv)
char * uuid = NULL;
char * mountpoint;
char * options;
+ char * temp;
int rc,i;
int rsize = 0;
int wsize = 0;
@@ -500,9 +501,13 @@ int main(int argc, char ** argv)
optlen += strlen(mountpassword) + 6;
options = malloc(optlen + 10);
- options[0] = 0;
+ options[0] = 0;
strncat(options,"unc=",4);
strcat(options,share_name);
+ /* scan backwards and reverse direction of slash */
+ temp = strrchr(options, '/');
+ if(temp > options + 6)
+ *temp = '\\';
if(ipaddr) {
strncat(options,",ip=",4);
strcat(options,ipaddr);
@@ -533,7 +538,7 @@ int main(int argc, char ** argv)
printf("mount error: cifs filesystem not supported by the system\n");
break;
default:
- printf("mount error %d = %s",errno,strerror(errno));
+ printf("mount error %d = %s\n",errno,strerror(errno));
}
printf("Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)\n");
return -1;