The Samba-Bugzilla – Attachment 2357 Details for
Bug 4486
[PATCH] Fixed exclude_dir in the recycle vfs
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch.
look (text/plain), 2.08 KB, created by
Jeremy Allison
on 2007-04-04 14:52:10 UTC
(
hide
)
Description:
Patch.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2007-04-04 14:52:10 UTC
Size:
2.08 KB
patch
obsolete
>Index: modules/vfs_recycle.c >=================================================================== >--- modules/vfs_recycle.c (revision 22078) >+++ modules/vfs_recycle.c (working copy) >@@ -311,24 +311,49 @@ > } > > /** >- * Check if needle is contained exactly in haystack >- * @param haystack list of parameters separated by delimimiter character >- * @param needle string to be matched exactly to haystack >- * @return True if found >+ * Check if any of the components of "exclude_list" are contained in path. >+ * Return True if found > **/ >-static BOOL checkparam(const char **haystack_list, const char *needle) >+ >+static BOOL matchdirparam(const char **dir_exclude_list, char *path) > { >- int i; >+ char *startp = NULL, *endp = NULL; > >- if (haystack_list == NULL || haystack_list[0] == NULL || >- *haystack_list[0] == '\0' || needle == NULL || *needle == '\0') { >+ if (dir_exclude_list == NULL || dir_exclude_list[0] == NULL || >+ *dir_exclude_list[0] == '\0' || path == NULL || *path == '\0') { > return False; > } > >- for(i=0; haystack_list[i] ; i++) { >- if(strequal(haystack_list[i], needle)) { >- return True; >+ /* >+ * Walk the components of path, looking for matches with the >+ * exclude list on each component. >+ */ >+ >+ for (startp = path; startp; startp = endp) { >+ int i; >+ >+ while (*startp == '/') { >+ startp++; > } >+ endp = strchr(startp, '/'); >+ if (endp) { >+ *endp = '\0'; >+ } >+ >+ for(i=0; dir_exclude_list[i] ; i++) { >+ if(unix_wild_match(dir_exclude_list[i], startp)) { >+ /* Repair path. */ >+ if (endp) { >+ *endp = '/'; >+ } >+ return True; >+ } >+ } >+ >+ /* Repair path. */ >+ if (endp) { >+ *endp = '/'; >+ } > } > > return False; >@@ -485,11 +510,7 @@ > goto done; > } > >- /* FIXME: this check will fail if we have more than one level of directories, >- * we shoud check for every level 1, 1/2, 1/2/3, 1/2/3/4 .... >- * ---simo >- */ >- if (checkparam(recycle_exclude_dir(handle), path_name)) { >+ if (matchdirparam(recycle_exclude_dir(handle), path_name)) { > DEBUG(3, ("recycle: directory %s is excluded \n", path_name)); > rc = SMB_VFS_NEXT_UNLINK(handle, file_name); > goto done;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 4486
:
2356
| 2357 |
2358