Hi Eric Thanks for looking at this series, sorry it has taken so long for me to reply. On 14/09/2018 00:49, Eric Sunshine wrote: > On Wed, Sep 12, 2018 at 6:11 AM Phillip Wood <phillip.wood@xxxxxxxxxxxx> wrote: >> Add read_author_script() to sequencer.c based on the implementation in >> builtin/am.c and update read_am_author_script() to use >> read_author_script(). The sequencer code that reads the author script >> will be updated in the next commit. >> >> Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> >> --- >> diff --git a/builtin/am.c b/builtin/am.c >> @@ -305,39 +279,16 @@ static int parse_key_value_squoted(char *buf, struct string_list *list) >> static int read_am_author_script(struct am_state *state) >> { > > This function returns 'int'... > >> const char *filename = am_path(state, "author-script"); >> + if (read_author_script(filename, &state->author_name, >> + &state->author_email, &state->author_date, 1)) >> + exit(128); > > ...but only ever exit()s... > >> + return 0; > > ... or returns 0. > >> } > > It's a little disturbing that it now invokes exit() directly rather > than calling die() since die() may involve extra functionality before > actually exiting. > > What if, instead of exit()ing directly, you drop the conditional and > instead return the value of read_author_script(): > > return read_author_script(...); > > and let the caller deal with the zero or non-zero return value as > usual? (True, you'd get two error messages upon failure rather than > just one, but that's not necessarily a bad thing.) > > A possibly valid response is that such a change is outside the scope > of this series since the original code shared this odd architecture of > sometimes returning 0, sometimes -1, and sometimes die()ing. My aim was to try and to keep the changes to a minimum as this patch isn't about changing the odd architecture of the original. I could add a follow up patch that cleans things up as you suggest. Best Wishes Phillip