Hi Phillip, On Fri, 17 Aug 2018, Phillip Wood wrote: > On 10/08/2018 17:51, Alban Gruin wrote: > > > +{ > > + const char *quiet = getenv("GIT_QUIET"); > > + > > + if (head_name) > > + write_file(rebase_path_head_name(), "%s\n", head_name); > > write_file() can call die() which isn't encouraged for code in libgit. > I'm not sure how much it matters in this case. Rewriting all these as > > if (head_name && write_message(onto, strlen(onto), rebase_path_onto(), 1)) > return -1; > > is a bit tedious. An alternative would be it leave it for now and in the > longer term move this function (and the ones above which I've just > noticed also call write_file()) to in builtin/rebase.c (assuming that > builtin/rebase--interactive.c and builtin/rebase.c get merged once > they're finalized - I'm not sure if there is a plan for that or not.) This came up in the review, and Alban said exactly what you did. I then even dragged Peff into the discussion, as it was his idea to change `write_file()` from returning an `int` to returning a `void` (instead of libifying the function so that it would not `die()` in error cases and `return 0` otherwise): https://github.com/git/git/pull/518#discussion_r200606997 Christian Couder (one of Alban's mentors) then even jumped in and *agreed* that libifying code "could be seen as unnecessary code churn and rejected." In light of these two respected community members suggesting to Alban to go and not give a flying fish about proper error handling, I have to admit that I am sympathetic to Alban simply using `write_file()` as-is. I do agree with you, of course, that the over-use of `die()` in our code base is a pretty bad thing. But that's neither Alban's fault, nor should he be punished for the advice he has been given. In short: I agree with you that `write_file()` should be libified properly, and I would suggest not to burden Alban with this (Alban, of course you should feel free to work on this if this is something you care about, too). Ciao, Dscho