diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/indexer.c | 7 | ||||
-rw-r--r-- | src/odb_pack.c | 2 | ||||
-rw-r--r-- | src/pack-objects.c | 3 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/indexer.c b/src/indexer.c index 90fb52187..df1ce7cfb 100644 --- a/src/indexer.c +++ b/src/indexer.c @@ -37,6 +37,7 @@ struct git_indexer { struct git_pack_header hdr; struct git_pack_file *pack; git_filebuf pack_file; + unsigned int mode; git_off_t off; git_off_t entry_start; git_packfile_stream stream; @@ -119,6 +120,7 @@ static int objects_cmp(const void *a, const void *b) int git_indexer_new( git_indexer **out, const char *prefix, + unsigned int mode, git_odb *odb, git_transfer_progress_callback progress_cb, void *progress_payload) @@ -133,6 +135,7 @@ int git_indexer_new( idx->odb = odb; idx->progress_cb = progress_cb; idx->progress_payload = progress_payload; + idx->mode = mode ? mode : GIT_PACK_FILE_MODE; git_hash_ctx_init(&idx->trailer); error = git_buf_joinpath(&path, prefix, suff); @@ -141,7 +144,7 @@ int git_indexer_new( error = git_filebuf_open(&idx->pack_file, path.ptr, GIT_FILEBUF_TEMPORARY | GIT_FILEBUF_DO_NOT_BUFFER, - GIT_PACK_FILE_MODE); + idx->mode); git_buf_free(&path); if (error < 0) goto cleanup; @@ -905,7 +908,7 @@ int git_indexer_commit(git_indexer *idx, git_transfer_progress *stats) return -1; if (git_filebuf_open(&index_file, filename.ptr, - GIT_FILEBUF_HASH_CONTENTS, GIT_PACK_FILE_MODE) < 0) + GIT_FILEBUF_HASH_CONTENTS, idx->mode) < 0) goto on_error; /* Write out the header */ diff --git a/src/odb_pack.c b/src/odb_pack.c index 12f4591ec..fd2ca0fd8 100644 --- a/src/odb_pack.c +++ b/src/odb_pack.c @@ -558,7 +558,7 @@ static int pack_backend__writepack(struct git_odb_writepack **out, GITERR_CHECK_ALLOC(writepack); if (git_indexer_new(&writepack->indexer, - backend->pack_folder, odb, progress_cb, progress_payload) < 0) { + backend->pack_folder, 0, odb, progress_cb, progress_payload) < 0) { git__free(writepack); return -1; } diff --git a/src/pack-objects.c b/src/pack-objects.c index 91811b954..9967cab1f 100644 --- a/src/pack-objects.c +++ b/src/pack-objects.c @@ -1248,6 +1248,7 @@ static int write_cb(void *buf, size_t len, void *payload) int git_packbuilder_write( git_packbuilder *pb, const char *path, + unsigned int mode, git_transfer_progress_callback progress_cb, void *progress_cb_payload) { @@ -1258,7 +1259,7 @@ int git_packbuilder_write( PREPARE_PACK; if (git_indexer_new( - &indexer, path, pb->odb, progress_cb, progress_cb_payload) < 0) + &indexer, path, mode, pb->odb, progress_cb, progress_cb_payload) < 0) return -1; ctx.indexer = indexer; |