X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-syncfs.c;h=d4fe2806eb9a3436764d2d1edc5a0c588cd6cc7c;hb=a05f1728d09e6e17ca2b74c42052314cf88f7599;hp=51b010ef3f96daa8b32f8321f538851b20ecdff3;hpb=24b5f57f47823105a26f391c52131ec4c6374dce;p=zpackage diff --git a/zpm-syncfs.c b/zpm-syncfs.c index 51b010e..d4fe280 100644 --- a/zpm-syncfs.c +++ b/zpm-syncfs.c @@ -628,8 +628,17 @@ 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; + default: + return seterror(conf, "can't stat %s: %s", dest, strerror(errno)); + } + return 0; } if (S_ISDIR(st.st_mode)) { @@ -658,7 +667,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)); } } @@ -1475,7 +1484,7 @@ int main(int ac, char **av) { fprintf(stderr, "file ops: %d\n", conf.ops_total); if (conf.ops_remove > 0) { if (conf.verbose) { - fprintf(stderr, "removing %d files\n", conf.ops_remove); + fprintf(stderr, "removing %d file%s\n", conf.ops_remove, conf.ops_remove > 0 ? "s" : ""); } conf.reverse = 1; conf.ops_completed = 0; @@ -1489,7 +1498,7 @@ int main(int ac, char **av) { if (conf.ops_update > 0) { if (conf.verbose) { - fprintf(stderr, "updating %d files\n", conf.ops_update); + fprintf(stderr, "updating %d file%s\n", conf.ops_update, conf.ops_update > 0 ? "s" : ""); } conf.reverse = 0; conf.ops_completed = 0; @@ -1503,7 +1512,7 @@ int main(int ac, char **av) { if (conf.ops_install > 0) { if (conf.verbose) { - fprintf(stderr, "installing %d files\n", conf.ops_install); + fprintf(stderr, "installing %d file%s\n", conf.ops_install, conf.ops_install > 0 ? "s" : ""); } conf.reverse = 0; conf.ops_completed = 0;