X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-syncfs.c;h=66e5aaa4b3eb685aa60d6744239efe940f03b879;hb=4b46503646910df3617d4f2d44112eddf75d902b;hp=68f2e423e4c43ca6d52bafd25d4a26867acccab9;hpb=9acfd23b8707b49d642b3dc3f1ea531cba88604c;p=zpackage diff --git a/zpm-syncfs.c b/zpm-syncfs.c index 68f2e42..66e5aaa 100644 --- a/zpm-syncfs.c +++ b/zpm-syncfs.c @@ -628,8 +628,21 @@ static int remove_files(void *f, int ncols, char **vals, char **cols) { return 0; } + errno = 0; + if (lstat(dest, &st) == -1) { - return seterror(conf,"can't stat"); + switch (errno) { + case ENOENT: + /* TODO chatter if verbose */ + break; + case ENOTEMPTY: /* fall through */ + case EEXIST: + /* TODO chatter, or possibly require */ + break; + default: + return seterror(conf, "can't stat %s: %s", dest, strerror(errno)); + } + return 0; } if (S_ISDIR(st.st_mode)) { @@ -658,7 +671,7 @@ static int remove_files(void *f, int ncols, char **vals, char **cols) { case ENOENT: break; default: - return seterror(conf, "can't unlink"); + return seterror(conf, "can't unlink %s: %s", dest, strerror(errno)); } }