summaryrefslogtreecommitdiff
path: root/builtin/prune.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2022-01-03 16:24:14 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2022-01-03 16:24:15 -0800
commit0dc90d954db852c6604796b8d817365f94e92a16 (patch)
tree9d4cf45af85370e4e7c89e74ff6ba74b39a28579 /builtin/prune.c
parentMerge branch 'jc/unleak-log' (diff)
parenttmp-objdir: disable ref updates when replacing the primary odb (diff)
downloadtgif-0dc90d954db852c6604796b8d817365f94e92a16.tar.xz
Merge branch 'ns/tmp-objdir'
New interface into the tmp-objdir API to help in-core use of the quarantine feature. * ns/tmp-objdir: tmp-objdir: disable ref updates when replacing the primary odb tmp-objdir: new API for creating temporary writable databases
Diffstat (limited to 'builtin/prune.c')
-rw-r--r--builtin/prune.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/builtin/prune.c b/builtin/prune.c
index 485c9a3c56..c2bcdc07db 100644
--- a/builtin/prune.c
+++ b/builtin/prune.c
@@ -26,10 +26,22 @@ static int prune_tmp_file(const char *fullpath)
return error("Could not stat '%s'", fullpath);
if (st.st_mtime > expire)
return 0;
- if (show_only || verbose)
- printf("Removing stale temporary file %s\n", fullpath);
- if (!show_only)
- unlink_or_warn(fullpath);
+ if (S_ISDIR(st.st_mode)) {
+ if (show_only || verbose)
+ printf("Removing stale temporary directory %s\n", fullpath);
+ if (!show_only) {
+ struct strbuf remove_dir_buf = STRBUF_INIT;
+
+ strbuf_addstr(&remove_dir_buf, fullpath);
+ remove_dir_recursively(&remove_dir_buf, 0);
+ strbuf_release(&remove_dir_buf);
+ }
+ } else {
+ if (show_only || verbose)
+ printf("Removing stale temporary file %s\n", fullpath);
+ if (!show_only)
+ unlink_or_warn(fullpath);
+ }
return 0;
}