Re: [PATCH 3/8] use child_process members "args" and "env" directly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 27 2022, René Scharfe wrote:

> Build argument list and environment of child processes by using
> struct child_process and populating its members "args" and "env"
> directly instead of maintaining separate strvecs and letting
> run_command_v_opt() and friends populate these members.  This is
> simpler, shorter and slightly more efficient.

General comment: Here you make 2x of the flags in in run-command.h
orphans, we could just remove them here atomically. I.e. squash in part
of 8/8.

>  static int similarity_index(struct diff_filepair *p)
> diff --git a/git.c b/git.c
> index ee7758dcb0..6662548986 100644
> --- a/git.c
> +++ b/git.c
> @@ -787,7 +787,7 @@ static int run_argv(int *argcp, const char ***argv)
>  		if (!done_alias)
>  			handle_builtin(*argcp, *argv);
>  		else if (get_builtin(**argv)) {
> -			struct strvec args = STRVEC_INIT;
> +			struct child_process cmd = CHILD_PROCESS_INIT;
>  			int i;
>
>  			/*
> @@ -804,18 +804,21 @@ static int run_argv(int *argcp, const char ***argv)
>
>  			commit_pager_choice();
>
> -			strvec_push(&args, "git");
> +			strvec_push(&cmd.args, "git");
>  			for (i = 0; i < *argcp; i++)
> -				strvec_push(&args, (*argv)[i]);
> +				strvec_push(&cmd.args, (*argv)[i]);
>
> -			trace_argv_printf(args.v, "trace: exec:");
> +			trace_argv_printf(cmd.args.v, "trace: exec:");
>
>  			/*
>  			 * if we fail because the command is not found, it is
>  			 * OK to return. Otherwise, we just pass along the status code.
>  			 */
> -			i = run_command_v_opt_tr2(args.v, RUN_SILENT_EXEC_FAILURE |
> -						  RUN_CLEAN_ON_EXIT | RUN_WAIT_AFTER_CLEAN, "git_alias");

^^ here, I didn't look carefully at the rest of the commits, but maybe
there's similar squashes elsewhere...




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux