odb: get rid of the_repository in odb_mkstemp()
Get rid of our dependency on `the_repository` in `odb_mkstemp()` by passing in the object database as a parameter and adjusting all callers. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
961038856b
commit
1b1679c688
@@ -763,7 +763,8 @@ static void start_packfile(void)
|
|||||||
struct packed_git *p;
|
struct packed_git *p;
|
||||||
int pack_fd;
|
int pack_fd;
|
||||||
|
|
||||||
pack_fd = odb_mkstemp(&tmp_file, "pack/tmp_pack_XXXXXX");
|
pack_fd = odb_mkstemp(the_repository->objects, &tmp_file,
|
||||||
|
"pack/tmp_pack_XXXXXX");
|
||||||
FLEX_ALLOC_STR(p, pack_name, tmp_file.buf);
|
FLEX_ALLOC_STR(p, pack_name, tmp_file.buf);
|
||||||
strbuf_release(&tmp_file);
|
strbuf_release(&tmp_file);
|
||||||
|
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ static const char *open_pack_file(const char *pack_name)
|
|||||||
input_fd = 0;
|
input_fd = 0;
|
||||||
if (!pack_name) {
|
if (!pack_name) {
|
||||||
struct strbuf tmp_file = STRBUF_INIT;
|
struct strbuf tmp_file = STRBUF_INIT;
|
||||||
output_fd = odb_mkstemp(&tmp_file,
|
output_fd = odb_mkstemp(the_repository->objects, &tmp_file,
|
||||||
"pack/tmp_pack_XXXXXX");
|
"pack/tmp_pack_XXXXXX");
|
||||||
pack_name = strbuf_detach(&tmp_file, NULL);
|
pack_name = strbuf_detach(&tmp_file, NULL);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -278,7 +278,8 @@ static char *find_temp_filename(void)
|
|||||||
* Find a temporary filename that is available. This is briefly
|
* Find a temporary filename that is available. This is briefly
|
||||||
* racy, but unlikely to collide.
|
* racy, but unlikely to collide.
|
||||||
*/
|
*/
|
||||||
fd = odb_mkstemp(&name, "bundles/tmp_uri_XXXXXX");
|
fd = odb_mkstemp(the_repository->objects, &name,
|
||||||
|
"bundles/tmp_uri_XXXXXX");
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
warning(_("failed to create temporary file"));
|
warning(_("failed to create temporary file"));
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
9
odb.c
9
odb.c
@@ -63,7 +63,8 @@ static const struct cached_object *find_cached_object(struct object_database *ob
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
|
int odb_mkstemp(struct object_database *odb,
|
||||||
|
struct strbuf *temp_filename, const char *pattern)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
/*
|
/*
|
||||||
@@ -71,15 +72,15 @@ int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
|
|||||||
* restrictive except to remove write permission.
|
* restrictive except to remove write permission.
|
||||||
*/
|
*/
|
||||||
int mode = 0444;
|
int mode = 0444;
|
||||||
repo_git_path_replace(the_repository, temp_filename, "objects/%s", pattern);
|
repo_git_path_replace(odb->repo, temp_filename, "objects/%s", pattern);
|
||||||
fd = git_mkstemp_mode(temp_filename->buf, mode);
|
fd = git_mkstemp_mode(temp_filename->buf, mode);
|
||||||
if (0 <= fd)
|
if (0 <= fd)
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
/* slow path */
|
/* slow path */
|
||||||
/* some mkstemp implementations erase temp_filename on failure */
|
/* some mkstemp implementations erase temp_filename on failure */
|
||||||
repo_git_path_replace(the_repository, temp_filename, "objects/%s", pattern);
|
repo_git_path_replace(odb->repo, temp_filename, "objects/%s", pattern);
|
||||||
safe_create_leading_directories(the_repository, temp_filename->buf);
|
safe_create_leading_directories(odb->repo, temp_filename->buf);
|
||||||
return xmkstemp_mode(temp_filename->buf, mode);
|
return xmkstemp_mode(temp_filename->buf, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
7
odb.h
7
odb.h
@@ -201,12 +201,13 @@ void odb_clear(struct object_database *o);
|
|||||||
struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
|
struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a temporary file rooted in the object database directory, or
|
* Create a temporary file rooted in the primary alternate's directory, or die
|
||||||
* die on failure. The filename is taken from "pattern", which should have the
|
* on failure. The filename is taken from "pattern", which should have the
|
||||||
* usual "XXXXXX" trailer, and the resulting filename is written into the
|
* usual "XXXXXX" trailer, and the resulting filename is written into the
|
||||||
* "template" buffer. Returns the open descriptor.
|
* "template" buffer. Returns the open descriptor.
|
||||||
*/
|
*/
|
||||||
int odb_mkstemp(struct strbuf *temp_filename, const char *pattern);
|
int odb_mkstemp(struct object_database *odb,
|
||||||
|
struct strbuf *temp_filename, const char *pattern);
|
||||||
|
|
||||||
void *repo_read_object_file(struct repository *r,
|
void *repo_read_object_file(struct repository *r,
|
||||||
const struct object_id *oid,
|
const struct object_id *oid,
|
||||||
|
|||||||
@@ -1052,7 +1052,8 @@ void bitmap_writer_finish(struct bitmap_writer *writer,
|
|||||||
|
|
||||||
struct bitmap_disk_header header;
|
struct bitmap_disk_header header;
|
||||||
|
|
||||||
int fd = odb_mkstemp(&tmp_file, "pack/tmp_bitmap_XXXXXX");
|
int fd = odb_mkstemp(writer->repo->objects, &tmp_file,
|
||||||
|
"pack/tmp_bitmap_XXXXXX");
|
||||||
|
|
||||||
if (writer->pseudo_merges_nr)
|
if (writer->pseudo_merges_nr)
|
||||||
options |= BITMAP_OPT_PSEUDO_MERGES;
|
options |= BITMAP_OPT_PSEUDO_MERGES;
|
||||||
|
|||||||
10
pack-write.c
10
pack-write.c
@@ -84,7 +84,8 @@ const char *write_idx_file(struct repository *repo,
|
|||||||
} else {
|
} else {
|
||||||
if (!index_name) {
|
if (!index_name) {
|
||||||
struct strbuf tmp_file = STRBUF_INIT;
|
struct strbuf tmp_file = STRBUF_INIT;
|
||||||
fd = odb_mkstemp(&tmp_file, "pack/tmp_idx_XXXXXX");
|
fd = odb_mkstemp(repo->objects, &tmp_file,
|
||||||
|
"pack/tmp_idx_XXXXXX");
|
||||||
index_name = strbuf_detach(&tmp_file, NULL);
|
index_name = strbuf_detach(&tmp_file, NULL);
|
||||||
} else {
|
} else {
|
||||||
unlink(index_name);
|
unlink(index_name);
|
||||||
@@ -259,7 +260,8 @@ char *write_rev_file_order(struct repository *repo,
|
|||||||
if (flags & WRITE_REV) {
|
if (flags & WRITE_REV) {
|
||||||
if (!rev_name) {
|
if (!rev_name) {
|
||||||
struct strbuf tmp_file = STRBUF_INIT;
|
struct strbuf tmp_file = STRBUF_INIT;
|
||||||
fd = odb_mkstemp(&tmp_file, "pack/tmp_rev_XXXXXX");
|
fd = odb_mkstemp(repo->objects, &tmp_file,
|
||||||
|
"pack/tmp_rev_XXXXXX");
|
||||||
path = strbuf_detach(&tmp_file, NULL);
|
path = strbuf_detach(&tmp_file, NULL);
|
||||||
} else {
|
} else {
|
||||||
unlink(rev_name);
|
unlink(rev_name);
|
||||||
@@ -342,7 +344,7 @@ static char *write_mtimes_file(struct repository *repo,
|
|||||||
if (!to_pack)
|
if (!to_pack)
|
||||||
BUG("cannot call write_mtimes_file with NULL packing_data");
|
BUG("cannot call write_mtimes_file with NULL packing_data");
|
||||||
|
|
||||||
fd = odb_mkstemp(&tmp_file, "pack/tmp_mtimes_XXXXXX");
|
fd = odb_mkstemp(repo->objects, &tmp_file, "pack/tmp_mtimes_XXXXXX");
|
||||||
mtimes_name = strbuf_detach(&tmp_file, NULL);
|
mtimes_name = strbuf_detach(&tmp_file, NULL);
|
||||||
f = hashfd(repo->hash_algo, fd, mtimes_name);
|
f = hashfd(repo->hash_algo, fd, mtimes_name);
|
||||||
|
|
||||||
@@ -531,7 +533,7 @@ struct hashfile *create_tmp_packfile(struct repository *repo,
|
|||||||
struct strbuf tmpname = STRBUF_INIT;
|
struct strbuf tmpname = STRBUF_INIT;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
fd = odb_mkstemp(&tmpname, "pack/tmp_pack_XXXXXX");
|
fd = odb_mkstemp(repo->objects, &tmpname, "pack/tmp_pack_XXXXXX");
|
||||||
*pack_tmp_name = strbuf_detach(&tmpname, NULL);
|
*pack_tmp_name = strbuf_detach(&tmpname, NULL);
|
||||||
return hashfd(repo->hash_algo, fd, *pack_tmp_name);
|
return hashfd(repo->hash_algo, fd, *pack_tmp_name);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user