MCPcopy Index your code
hub / github.com/git/git / reftable_addition_add

Function reftable_addition_add

reftable/stack.c:854–956  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

852}
853
854int reftable_addition_add(struct reftable_addition *add,
855 int (*write_table)(struct reftable_writer *wr,
856 void *arg),
857 void *arg)
858{
859 struct reftable_buf temp_tab_file_name = REFTABLE_BUF_INIT;
860 struct reftable_buf tab_file_name = REFTABLE_BUF_INIT;
861 struct reftable_buf next_name = REFTABLE_BUF_INIT;
862 struct reftable_writer *wr = NULL;
863 struct reftable_tmpfile tab_file = REFTABLE_TMPFILE_INIT;
864 struct fd_writer writer = {
865 .opts = &add->stack->opts,
866 };
867 int err = 0;
868
869 reftable_buf_reset(&next_name);
870
871 err = format_name(&next_name, add->next_update_index, add->next_update_index);
872 if (err < 0)
873 goto done;
874
875 err = stack_filename(&temp_tab_file_name, add->stack, next_name.buf);
876 if (err < 0)
877 goto done;
878
879 err = reftable_buf_addstr(&temp_tab_file_name, ".temp.XXXXXX");
880 if (err < 0)
881 goto done;
882
883 err = tmpfile_from_pattern(&tab_file, temp_tab_file_name.buf);
884 if (err < 0)
885 goto done;
886 if (add->stack->opts.default_permissions) {
887 if (chmod(tab_file.path,
888 add->stack->opts.default_permissions)) {
889 err = REFTABLE_IO_ERROR;
890 goto done;
891 }
892 }
893
894 writer.fd = tab_file.fd;
895 err = reftable_writer_new(&wr, fd_writer_write, fd_writer_flush,
896 &writer, &add->stack->opts);
897 if (err < 0)
898 goto done;
899
900 err = write_table(wr, arg);
901 if (err < 0)
902 goto done;
903
904 err = reftable_writer_close(wr);
905 if (err == REFTABLE_EMPTY_TABLE_ERROR) {
906 err = 0;
907 goto done;
908 }
909 if (err < 0)
910 goto done;
911

Calls 14

reftable_buf_resetFunction · 0.85
format_nameFunction · 0.85
stack_filenameFunction · 0.85
reftable_buf_addstrFunction · 0.85
tmpfile_from_patternFunction · 0.85
reftable_writer_newFunction · 0.85
write_tableFunction · 0.85
reftable_writer_closeFunction · 0.85
tmpfile_closeFunction · 0.85
tmpfile_renameFunction · 0.85
reftable_buf_detachFunction · 0.85
tmpfile_deleteFunction · 0.85