git-send-email: refactor duplicate $? checks into a function
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 Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									e585210e1b
								
							
						
					
					
						commit
						d21616c039
					
				|  | @ -212,22 +212,31 @@ my $dump_aliases = 0; | |||
| my $multiedit; | ||||
| my $editor; | ||||
|  | ||||
| sub system_or_msg { | ||||
| 	my ($args, $msg) = @_; | ||||
| 	system(@$args); | ||||
| 	my $signalled = $? & 127; | ||||
| 	my $exit_code = $? >> 8; | ||||
| 	return unless $signalled or $exit_code; | ||||
|  | ||||
| 	return sprintf(__("failed to run command %s, died with code %d"), | ||||
| 		       "@$args", $exit_code); | ||||
| } | ||||
|  | ||||
| sub system_or_die { | ||||
| 	my $msg = system_or_msg(@_); | ||||
| 	die $msg if $msg; | ||||
| } | ||||
|  | ||||
| sub do_edit { | ||||
| 	if (!defined($editor)) { | ||||
| 		$editor = Git::command_oneline('var', 'GIT_EDITOR'); | ||||
| 	} | ||||
| 	my $die_msg = __("the editor exited uncleanly, aborting everything"); | ||||
| 	if (defined($multiedit) && !$multiedit) { | ||||
| 		for (@_) { | ||||
| 			system('sh', '-c', $editor.' "$@"', $editor, $_); | ||||
| 			if (($? & 127) || ($? >> 8)) { | ||||
| 				die(__("the editor exited uncleanly, aborting everything")); | ||||
| 			} | ||||
| 		} | ||||
| 		system_or_die(['sh', '-c', $editor.' "$@"', $editor, $_], $die_msg) for @_; | ||||
| 	} else { | ||||
| 		system('sh', '-c', $editor.' "$@"', $editor, @_); | ||||
| 		if (($? & 127) || ($? >> 8)) { | ||||
| 			die(__("the editor exited uncleanly, aborting everything")); | ||||
| 		} | ||||
| 		system_or_die(['sh', '-c', $editor.' "$@"', $editor, @_], $die_msg); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | @ -698,9 +707,7 @@ if (@rev_list_opts) { | |||
| if ($validate) { | ||||
| 	foreach my $f (@files) { | ||||
| 		unless (-p $f) { | ||||
| 			my $error = validate_patch($f, $target_xfer_encoding); | ||||
| 			$error and die sprintf(__("fatal: %s: %s\nwarning: no patches were sent\n"), | ||||
| 						  $f, $error); | ||||
| 			validate_patch($f, $target_xfer_encoding); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -1952,11 +1959,13 @@ sub validate_patch { | |||
| 			chdir($repo->wc_path() or $repo->repo_path()) | ||||
| 				or die("chdir: $!"); | ||||
| 			local $ENV{"GIT_DIR"} = $repo->repo_path(); | ||||
| 			$hook_error = "rejected by sendemail-validate hook" | ||||
| 				if system($validate_hook, $target); | ||||
| 			$hook_error = system_or_msg([$validate_hook, $target]); | ||||
| 			chdir($cwd_save) or die("chdir: $!"); | ||||
| 		} | ||||
| 		return $hook_error if $hook_error; | ||||
| 		if ($hook_error) { | ||||
| 			die sprintf(__("fatal: %s: rejected by sendemail-validate hook\n" . | ||||
| 				       "warning: no patches were sent\n"), $fn); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	# Any long lines will be automatically fixed if we use a suitable transfer | ||||
|  | @ -1966,7 +1975,9 @@ sub validate_patch { | |||
| 			or die sprintf(__("unable to open %s: %s\n"), $fn, $!); | ||||
| 		while (my $line = <$fh>) { | ||||
| 			if (length($line) > 998) { | ||||
| 				return sprintf(__("%s: patch contains a line longer than 998 characters"), $.); | ||||
| 				die sprintf(__("fatal: %s: %d: patch contains a line longer than 998 characters\n" . | ||||
| 					       "warning: no patches were sent\n"), | ||||
| 					    $fn, $.); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Ævar Arnfjörð Bjarmason
						Ævar Arnfjörð Bjarmason