r22526: Support deep tree mounts after share (instead of having to specify
authorSteve French <sfrench@samba.org>
Thu, 26 Apr 2007 17:23:33 +0000 (17:23 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:19:42 +0000 (12:19 -0500)
prepath)
(This used to be commit 0548dea6c7222dc22144a86fffd32675cd14b677)

source3/client/mount.cifs.c

index 7e4c27c820b8368d12b03988dfc81fc0240d6cd0..49150e1ffba0232404b3a9013a5a39b09fa708ae 100755 (executable)
@@ -78,6 +78,7 @@ static int free_share_name = 0;
 static char * user_name = NULL;
 static char * mountpassword = NULL;
 char * domain_name = NULL;
+char * prefixpath = NULL;
 
 
 /* BB finish BB
@@ -804,6 +805,11 @@ continue_unc_parsing:
                                        host_entry = gethostbyname(unc_name);
                                }
                                *(share - 1) = '/'; /* put the slash back */
+                               if ((prefixpath = strchr(share, '/'))) {
+                                       *prefixpath = 0;  /* permanently terminate the string */
+                                       if (!strlen(++prefixpath))
+                                               prefixpath = NULL; /* this needs to be done explicitly */
+                               }
                                if(got_ip) {
                                        if(verboseflag)
                                                printf("ip address specified explicitly\n");
@@ -1196,6 +1202,10 @@ mount_retry:
                strcat(options,",");
                strcat(options,orgoptions);
        }
+       if(prefixpath) {
+               strncat(options,",prefixpath=",12);
+               strcat(options,prefixpath); /* no need to cat the / */
+       }       
        if(verboseflag)
                printf("\nmount.cifs kernel mount options %s \n",options);
        if(mount(share_name, mountpoint, "cifs", flags, options)) {