From: Wayne Davison Date: Mon, 24 Aug 2015 03:52:59 +0000 (-0700) Subject: Improve make_path() error return for non-dir element. X-Git-Tag: v3.1.2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d1cd2437c81dadb5d1a7eff2cec0c529d10289a;p=thirdparty%2Frsync.git Improve make_path() error return for non-dir element. --- diff --git a/util.c b/util.c index 0775add8..c0e239d4 100644 --- a/util.c +++ b/util.c @@ -190,7 +190,7 @@ int make_path(char *fname, int flags) if (flags & MKP_DROP_NAME) { end = strrchr(fname, '/'); - if (!end) + if (!end || end == fname) return 0; *end = '\0'; } else @@ -210,8 +210,10 @@ int make_path(char *fname, int flags) ret++; break; } + if (errno != ENOENT) { - if (errno != EEXIST) + STRUCT_STAT st; + if (errno != EEXIST || (do_stat(fname, &st) == 0 && !S_ISDIR(st.st_mode))) ret = -ret - 1; break; }