X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/14b61c63f00785c36e769142d98253229bde7354..ac1d2d338450eb005abf03002f5784097caf7e19:/util.c diff --git a/util.c b/util.c index d197a5f7..be639e44 100644 --- a/util.c +++ b/util.c @@ -28,6 +28,7 @@ #include "rsync.h" extern int verbose; +extern struct exclude_list_struct server_exclude_list; int sanitize_paths = 0; @@ -471,12 +472,11 @@ int lock_range(int fd, int offset, int len) 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'; - if (check_exclude(server_exclude_list, arg, 1)) { + if (check_exclude(&server_exclude_list, arg, 1)) { /* We must leave arg truncated! */ return 1; } @@ -785,9 +785,11 @@ char *alloc_sanitize_path(const char *path, const char *rootdir) char *buf; int rlen, plen = strlen(path); - if (*path == '/' && rootdir) + if (*path == '/' && 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"); @@ -795,11 +797,15 @@ char *alloc_sanitize_path(const char *path, const char *rootdir) memcpy(buf, rootdir, rlen); memcpy(buf + rlen, path, plen + 1); - if (rlen) + if (rlen > 1) 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; }