Download raw body.
move got_opentempfd out of blame_open
On Tue, Jun 28, 2022 at 11:32:19AM -0600, Tracey Emery wrote: > Here is the diff to move got_opentempfd out of blame_open. > > Ok? ok! > > -- > > Tracey Emery > > diff /home/tracey/src/got > commit - eb81bc23c735e8aa9eaee796a230c7d7c76657ba > path + /home/tracey/src/got > blob - e4665492a3022c605cf1a1fa244f10c606b8b0b7 > file + got/got.c > --- got/got.c > +++ got/got.c > @@ -5316,7 +5316,7 @@ cmd_blame(int argc, char *argv[]) > struct got_blob_object *blob = NULL; > char *commit_id_str = NULL; > struct blame_cb_args bca; > - int ch, obj_type, i, fd = -1; > + int ch, obj_type, i, fd = -1, fd1 = -1; > off_t filesize; > int *pack_fds = NULL; > > @@ -5505,8 +5505,13 @@ cmd_blame(int argc, char *argv[]) > } > bca.repo = repo; > > + fd1 = got_opentempfd(); > + if (fd1 == -1) { > + error = got_error_from_errno("got_opentempfd"); > + goto done; > + } > error = got_blame(link_target ? link_target : in_repo_path, commit_id, > - repo, blame_cb, &bca, check_cancelled, NULL); > + repo, blame_cb, &bca, check_cancelled, NULL, fd1); > done: > free(in_repo_path); > free(link_target); > @@ -5518,6 +5523,8 @@ done: > got_object_commit_close(commit); > if (fd != -1 && close(fd) == -1 && error == NULL) > error = got_error_from_errno("close"); > + if (fd1 != -1 && close(fd1) == -1 && error == NULL) > + error = got_error_from_errno("close"); > if (blob) > got_object_blob_close(blob); > if (worktree) > blob - ffc24fe2d445b82dd5d5ff2616a3ce538f584cb8 > file + gotweb/gotweb.c > --- gotweb/gotweb.c > +++ gotweb/gotweb.c > @@ -4064,7 +4064,7 @@ gw_output_file_blame(struct gw_trans *gw_trans, struct > struct got_blob_object *blob = NULL; > char *path = NULL, *in_repo_path = NULL; > struct gw_blame_cb_args bca; > - int i, obj_type, fd = -1; > + int i, obj_type, fd = -1, fd1 = -1; > off_t filesize; > > fd = got_opentempfd(); > @@ -4147,8 +4147,14 @@ gw_output_file_blame(struct gw_trans *gw_trans, struct > bca.repo = gw_trans->repo; > bca.gw_trans = gw_trans; > > + fd1 = got_opentempfd(); > + if (fd1 == -1) { > + error = got_error_from_errno("got_opentempfd"); > + goto done; > + } > + > error = got_blame(in_repo_path, commit_id, gw_trans->repo, gw_blame_cb, > - &bca, NULL, NULL); > + &bca, NULL, NULL, fd1); > done: > free(in_repo_path); > free(commit_id); > @@ -4157,6 +4163,9 @@ done: > > if (fd != -1 && close(fd) == -1 && error == NULL) > error = got_error_from_errno("close"); > + if (fd1 != -1 && close(fd1) == -1 && error == NULL) > + error = got_error_from_errno("close"); > + > if (blob) { > free(bca.line_offsets); > for (i = 0; i < bca.nlines; i++) { > blob - e360955ca287d181a8ff24dbf66100470e96de18 > file + include/got_blame.h > --- include/got_blame.h > +++ include/got_blame.h > @@ -36,4 +36,4 @@ typedef const struct got_error *(*got_blame_cb)(void * > */ > const struct got_error *got_blame(const char *, > struct got_object_id *, struct got_repository *, > - got_blame_cb, void *, got_cancel_cb, void *); > + got_blame_cb, void *, got_cancel_cb, void *, int); > blob - ccdc439eeee3aee6cb11526d0cd547f98bb7612c > file + lib/blame.c > --- lib/blame.c > +++ lib/blame.c > @@ -508,7 +508,8 @@ close_file2_and_reuse_file1(struct got_blame *blame) > static const struct got_error * > blame_open(struct got_blame **blamep, const char *path, > struct got_object_id *start_commit_id, struct got_repository *repo, > - got_blame_cb cb, void *arg, got_cancel_cb cancel_cb, void *cancel_arg) > + got_blame_cb cb, void *arg, got_cancel_cb cancel_cb, void *cancel_arg, > + int fd) > { > const struct got_error *err = NULL; > struct got_commit_object *start_commit = NULL, *last_commit = NULL; > @@ -516,13 +517,9 @@ blame_open(struct got_blame **blamep, const char *path > struct got_blob_object *blob = NULL; > struct got_blame *blame = NULL; > struct got_object_id *id = NULL; > - int lineno, fd = -1; > + int lineno; > struct got_commit_graph *graph = NULL; > > - fd = got_opentempfd(); > - if (fd == -1) > - return got_error_from_errno("got_opentempfd"); > - > *blamep = NULL; > > err = got_object_open_as_commit(&start_commit, repo, start_commit_id); > @@ -645,8 +642,6 @@ done: > if (graph) > got_commit_graph_close(graph); > free(obj_id); > - if (fd != -1 && close(fd) == -1 && err == NULL) > - err = got_error_from_errno("close"); > if (blob) > got_object_blob_close(blob); > if (start_commit) > @@ -665,7 +660,7 @@ done: > const struct got_error * > got_blame(const char *path, struct got_object_id *commit_id, > struct got_repository *repo, got_blame_cb cb, void *arg, > - got_cancel_cb cancel_cb, void* cancel_arg) > + got_cancel_cb cancel_cb, void* cancel_arg, int fd) > { > const struct got_error *err = NULL, *close_err = NULL; > struct got_blame *blame; > @@ -675,7 +670,7 @@ got_blame(const char *path, struct got_object_id *comm > return got_error_from_errno2("asprintf", path); > > err = blame_open(&blame, abspath, commit_id, repo, cb, arg, > - cancel_cb, cancel_arg); > + cancel_cb, cancel_arg, fd); > free(abspath); > if (blame) > close_err = blame_close(blame); > blob - 02357b5d2aa6509aa4c4c341f9bc46ba93cf213d > file + tog/tog.c > --- tog/tog.c > +++ tog/tog.c > @@ -4657,14 +4657,18 @@ blame_thread(void *arg) > const struct got_error *err, *close_err; > struct tog_blame_thread_args *ta = arg; > struct tog_blame_cb_args *a = ta->cb_args; > - int errcode; > + int errcode, fd = -1; > > + fd = got_opentempfd(); > + if (fd == -1) > + return (void *)got_error_from_errno("got_opentempfd"); > + > err = block_signals_used_by_main_thread(); > if (err) > return (void *)err; > > err = got_blame(ta->path, a->commit_id, ta->repo, > - blame_cb, ta->cb_args, ta->cancel_cb, ta->cancel_arg); > + blame_cb, ta->cb_args, ta->cancel_cb, ta->cancel_arg, fd); > if (err && err->code == GOT_ERR_CANCELLED) > err = NULL; > > @@ -4683,6 +4687,9 @@ blame_thread(void *arg) > if (errcode && err == NULL) > err = got_error_set_errno(errcode, "pthread_mutex_unlock"); > > + if (fd != -1 && close(fd) == -1 && err == NULL) > + err = got_error_from_errno("close"); > + > return (void *)err; > } > >
move got_opentempfd out of blame_open