Re: [PATCH 2/2] git-send-email: refactor duplicate $? checks into a function
From: Junio C Hamano <hidden>
Date: 2021-04-02 21:36:52
Ævar Arnfjörð Bjarmason [off-list ref] writes:
quoted hunk
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@evledraar.gmail.com (local) Signed-off-by: Ævar Arnfjörð Bjarmason <redacted> --- 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.