Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > Refactor the duplicate checking of $? into a function. There's an > outstanding series[1] wanting to add a third use of system() in this > file, let's not copy this boilerplate anymore when that happens. > > 1. http://lore.kernel.org/git/87y2esg22j.fsf@xxxxxxxxxxxxxxxxxxx > > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> > --- > git-send-email.perl | 49 +++++++++++++++++++++++++++++---------------- > 1 file changed, 32 insertions(+), 17 deletions(-) > > diff --git a/git-send-email.perl b/git-send-email.perl > index 6893c8e5808..901c935455d 100755 > --- a/git-send-email.perl > +++ b/git-send-email.perl > @@ -212,22 +212,30 @@ sub format_2822_time { > my $multiedit; > my $editor; > > +sub system_or_msg { > + my ($args, $msg) = @_; > + system(@$args); > + return unless (($? & 127) || ($? >> 8)); > + > + die $msg if $msg; > + return sprintf(__("failed to run command %s, died with code %d"), > + "@$args", $? >> 8); > +} That sounds more like system_and_die_or_msg to me. More importantly, the name of the helper makes it clear what difference this has with ... > +sub system_or_die { > + my $msg = system_or_msg(@_); > + die $msg if $msg; > +} ... this one. The former does nto die but returns message only when X? If that X were in its name, readers who look at the caller of system_or_msg vs system_or_die would immediately know that why the callsite is using one and not the other variant.