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
In add_exclude_file(), if we're word-splitting, stop reading a "line"
[rsync/rsync.git]
/
util.c
diff --git
a/util.c
b/util.c
index
d197a5f
..
5c3f26c
100644
(file)
--- a/
util.c
+++ b/
util.c
@@
-28,6
+28,7
@@
#include "rsync.h"
extern int verbose;
#include "rsync.h"
extern int verbose;
+extern struct exclude_list_struct server_exclude_list;
int sanitize_paths = 0;
int sanitize_paths = 0;
@@
-471,12
+472,12
@@
int lock_range(int fd, int offset, int len)
static int exclude_server_path(char *arg)
{
char *s;
static int exclude_server_path(char *arg)
{
char *s;
- extern struct exclude_struct **server_exclude_list;
- if (server_exclude_list) {
+ if (server_exclude_list
.head
) {
for (s = arg; (s = strchr(s, '/')) != NULL; ) {
*s = '\0';
for (s = arg; (s = strchr(s, '/')) != NULL; ) {
*s = '\0';
- if (check_exclude(server_exclude_list, arg, 1)) {
+ if (check_exclude(&server_exclude_list, arg, 1,
+ "server pattern")) {
/* We must leave arg truncated! */
return 1;
}
/* We must leave arg truncated! */
return 1;
}
@@
-785,9
+786,11
@@
char *alloc_sanitize_path(const char *path, const char *rootdir)
char *buf;
int rlen, plen = strlen(path);
char *buf;
int rlen, plen = strlen(path);
- if (*path == '/' && rootdir)
+ if (*path == '/' && rootdir)
{
rlen = strlen(rootdir);
rlen = strlen(rootdir);
- else
+ if (rlen == 1)
+ path++;
+ } else
rlen = 0;
if (!(buf = new_array(char, rlen + plen + 1)))
out_of_memory("alloc_sanitize_path");
rlen = 0;
if (!(buf = new_array(char, rlen + plen + 1)))
out_of_memory("alloc_sanitize_path");
@@
-795,11
+798,15
@@
char *alloc_sanitize_path(const char *path, const char *rootdir)
memcpy(buf, rootdir, rlen);
memcpy(buf + rlen, path, plen + 1);
memcpy(buf, rootdir, rlen);
memcpy(buf + rlen, path, plen + 1);
- if (rlen)
+ if (rlen
> 1
)
rlen++;
sanitize_path(buf + rlen, NULL);
rlen++;
sanitize_path(buf + rlen, NULL);
- if (rlen && buf[rlen] == '.' && buf[rlen+1] == '\0')
- buf[rlen-1] = '\0';
+ if (rlen && buf[rlen] == '.' && buf[rlen+1] == '\0') {
+ if (rlen > 1)
+ rlen--;
+ buf[rlen] = '\0';
+ }
+ fprintf(stderr, "p:`%s'\n", buf);
return buf;
}
return buf;
}