diff options
Diffstat (limited to 'src/blogc-make/exec-native.c')
-rw-r--r-- | src/blogc-make/exec-native.c | 10 |
1 files changed, 7 insertions, 3 deletions
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); |