object-store: move and rename odb_pack_keep()

The function `odb_pack_keep()` creates a file at the passed-in path. If
this fails, then the function re-tries by first creating any potentially
missing leading directories and then trying to create the file once
again. As such, this function doesn't host any kind of logic that is
specific to the object store, but is rather a generic helper function.

Rename the function to `safe_create_file_with_leading_directories()` and
move it into "path.c". While at it, refactor it so that it loses its
dependency on `the_repository`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2025-04-29 09:52:17 +02:00
committed by Junio C Hamano
parent 56ef85e82f
commit 0b8ed25b66
6 changed files with 24 additions and 22 deletions

7
path.h
View File

@@ -266,6 +266,13 @@ enum scld_error safe_create_leading_directories_const(struct repository *repo,
const char *path);
enum scld_error safe_create_leading_directories_no_share(char *path);
/*
* Create a file, potentially creating its leading directories in case they
* don't exist. Returns the return value of the open(3p) call.
*/
int safe_create_file_with_leading_directories(struct repository *repo,
const char *path);
# ifdef USE_THE_REPOSITORY_VARIABLE
# include "strbuf.h"
# include "repository.h"