commit f2e80f4b6d7a56834b6c44f055317c88c833d277 from: Stefan Sperling date: Sat Sep 15 11:05:16 2018 UTC move far indented parts of print_commits() to separate function commit - 2ff12563f8266a459fcfc4d3b635d320c0a761d7 commit + f2e80f4b6d7a56834b6c44f055317c88c833d277 blob - dc93773792aa9667b7dafd1a5e2848fe8ea478d7 blob + 35b21af9e318560aaca023f05525b854d82e4b56 --- got/got.c +++ got/got.c @@ -367,6 +367,39 @@ print_commit(struct got_commit_object *commit, struct } return err; +} + +static const struct got_error * +detect_change(int *changed, struct got_object_id *commit_id, + struct got_object *obj, const char *path, struct got_repository *repo) +{ + const struct got_error *err = NULL; + struct got_object_id *id, *pid; + struct got_object *pobj; + + err = got_object_open_by_path(&pobj, repo, commit_id, path); + if (err) { + if (err->code != GOT_ERR_NO_OBJ) + return err; + *changed = 1; + return NULL; + } + + id = got_object_get_id(obj); + if (id == NULL) + return got_error_from_errno(); + pid = got_object_get_id(pobj); + if (pid == NULL) { + err = got_error_from_errno(); + free(id); + return err; + } + + *changed = (got_object_id_cmp(id, pid) != 0); + got_object_close(pobj); + free(id); + free(pid); + return NULL; } static const struct got_error * @@ -433,39 +466,13 @@ print_commits(struct got_object *root_obj, struct got_ found_obj = 1; pid = SIMPLEQ_FIRST(&commit->parent_ids); - if (pid != NULL) { - struct got_object *pobj; - err = got_object_open_by_path(&pobj, repo, - pid->id, path); + if (pid) { + err = detect_change(&changed, pid->id, obj, + path, repo); if (err) { - if (err->code != GOT_ERR_NO_OBJ) { - got_object_close(obj); - got_object_commit_close(commit); - break; - } - err = NULL; - changed = 1; - } else { - struct got_object_id *id, *pid; - id = got_object_get_id(obj); - if (id == NULL) { - err = got_error_from_errno(); - got_object_close(obj); - break; - } - pid = got_object_get_id(pobj); - if (pid == NULL) { - err = got_error_from_errno(); - free(id); - got_object_close(obj); - got_object_close(pobj); - break; - } - changed = - (got_object_id_cmp(id, pid) != 0); - got_object_close(pobj); - free(id); - free(pid); + got_object_close(obj); + got_object_commit_close(commit); + break; } } got_object_close(obj);