Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only call cleanup_set() if keep_partial is set.
[rsync/rsync.git]
/
util.c
diff --git
a/util.c
b/util.c
index
e99ede8
..
5864b5d
100644
(file)
--- a/
util.c
+++ b/
util.c
@@
-31,6
+31,7
@@
extern int verbose;
extern int dry_run;
extern int module_id;
extern int modify_window;
extern int dry_run;
extern int module_id;
extern int modify_window;
+extern int relative_paths;
extern char *partial_dir;
extern struct filter_list_struct server_filter_list;
extern char *partial_dir;
extern struct filter_list_struct server_filter_list;
@@
-528,7
+529,6
@@
static void glob_expand_one(char *s, char ***argv_ptr, int *argc_ptr,
filter_server_path(s);
#else
glob_t globbuf;
filter_server_path(s);
#else
glob_t globbuf;
- int i;
if (maxargs <= argc)
return;
if (maxargs <= argc)
return;
@@
-553,9
+553,9
@@
static void glob_expand_one(char *s, char ***argv_ptr, int *argc_ptr,
if (globbuf.gl_pathc == 0)
argv[argc++] = s;
else {
if (globbuf.gl_pathc == 0)
argv[argc++] = s;
else {
- int
j = globbuf.gl_pathc
;
+ int
i
;
free(s);
free(s);
- for (i = 0; i <
j
; i++) {
+ for (i = 0; i <
(int)globbuf.gl_pathc
; i++) {
if (!(argv[argc++] = strdup(globbuf.gl_pathv[i])))
out_of_memory("glob_expand_one");
}
if (!(argv[argc++] = strdup(globbuf.gl_pathv[i])))
out_of_memory("glob_expand_one");
}
@@
-756,7
+756,7
@@
unsigned int clean_fname(char *name, BOOL collapse_dot_dot)
char *sanitize_path(char *dest, const char *p, const char *rootdir, int depth)
{
char *start, *sanp;
char *sanitize_path(char *dest, const char *p, const char *rootdir, int depth)
{
char *start, *sanp;
- int rlen = 0;
+ int rlen = 0
, leave_one_dotdir = relative_paths
;
if (dest != p) {
int plen = strlen(p);
if (dest != p) {
int plen = strlen(p);
@@
-791,9
+791,13
@@
char *sanitize_path(char *dest, const char *p, const char *rootdir, int depth)
* always be left pointing after a slash
*/
if (*p == '.' && (p[1] == '/' || p[1] == '\0')) {
* always be left pointing after a slash
*/
if (*p == '.' && (p[1] == '/' || p[1] == '\0')) {
- /* skip "." component */
- p++;
- continue;
+ if (leave_one_dotdir && p[1])
+ leave_one_dotdir = 0;
+ else {
+ /* skip "." component */
+ p++;
+ continue;
+ }
}
if (*p == '.' && p[1] == '.' && (p[2] == '/' || p[2] == '\0')) {
/* ".." component followed by slash or end */
}
if (*p == '.' && p[1] == '.' && (p[2] == '/' || p[2] == '\0')) {
/* ".." component followed by slash or end */