From a4bddf83cbbac86c3734b8c399e65c7341385a85 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Tue, 3 Jan 2017 03:15:07 +0100 Subject: blogc-make: fixed clean rule --- src/blogc-make/exec-native.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/blogc-make/exec-native.c') diff --git a/src/blogc-make/exec-native.c b/src/blogc-make/exec-native.c index 32874b4..8b87d18 100644 --- a/src/blogc-make/exec-native.c +++ b/src/blogc-make/exec-native.c @@ -89,7 +89,7 @@ bm_exec_native_cp(bm_filectx_t *source, bm_filectx_t *dest, bool verbose) int -bm_exec_native_rm(bm_filectx_t *dest, bool verbose) +bm_exec_native_rm(const char *output_dir, bm_filectx_t *dest, bool verbose) { if (verbose) printf("Removing file '%s'\n", dest->path); @@ -111,8 +111,7 @@ bm_exec_native_rm(bm_filectx_t *dest, bool verbose) char *dir_short = dirname(short_path); char *dir = dirname(path); - while (0 != strcmp(dir_short, ".")) { - + while ((0 != strcmp(dir_short, ".")) && (0 != strcmp(dir, output_dir))) { DIR *d = opendir(dir); if (d == NULL) { fprintf(stderr, "error: failed to open directory (%s): %s\n", @@ -154,6 +153,11 @@ bm_exec_native_rm(bm_filectx_t *dest, bool verbose) dir = dirname(dir); } + // try to remove output dir + // this is done on a best-effort basis, if we can't remove it, it probably + // have files, so we don't really want to remove it. + rmdir(output_dir); + free(short_path); free(path); -- cgit v1.2.3-18-g5258