git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v7 5/6] bisect--helper: reimplement `bisect_run` shell function in C

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Sep 13, 2021, 19:27 UTC
Message-ID
<875yv446hj.fsf@evledraar.gmail.com>
In-Reply-To
<20210913173905.44438-6-mirucam@gmail.com>
On Mon, Sep 13 2021, Miriam Rubio wrote:
Show 12 quoted lines
> +static int print_file_to_stdout(const char *path)
> +{
> +	int fd = open(path, O_RDONLY);
> +	int ret = 0;
> +
> +	if (fd < 0)
> +		return error_errno(_("cannot open file '%s' for reading"), path);
> +	if (copy_fd(fd, 1) < 0)
> +		ret = error_errno(_("failed to read '%s'"), path);
> +	close(fd);
> +	return ret;
> +}

Returns int, but that return value is ignored here, and we don't seem to gain a caller in 6/6?

Show 6 quoted lines
> +	if (argc)
> +		sq_quote_argv(&command, argv);
> +	else {
> +		error(_("bisect run failed: no command provided."));
> +		return BISECT_FAILED;
> +	}
Not new in this series & I see this is v7 already, so ....

Just odd to see this BISECT_FAILED pattern (which is defined to -1), instead of "return error(..." like elsewhere.

Then we take that enum and do a "return -res" from main(), i.e. it's not even that we're somehow guarding everything with these BISECT_* codes in this file (see 30276765c11 (bisect--helper: use '-res' in 'cmd_bisect__helper' return, 2020-08-28)).

Anyway, can be cleaned up some other time, but...
> +		if (temporary_stdout_fd < 0)
> +			return error_errno(_("cannot open file '%s' for writing"), git_path_bisect_run());
Here we're doing a "return error...(" directly.
Show 9 quoted lines
> +	case BISECT_RUN:
> +		if (!argc)
> +			return error(_("bisect run failed: no command provided."));
> +		get_terms(&terms);
> +		res = bisect_run(&terms, argv, argc);
> +		break;
>  	default:
>  		BUG("unknown subcommand %d", cmdmode);
>  	}

Also not a new issue, but if we just covered the BISECT_AUTOSTART case here, then we wouldn't need this default/BUG, the compiler would check that we checked all existing enum arms.

Previous: Miriam Rubio
Message 8 of 8 in “Finish converting git bisect to C part 4”
  1. 0/6 Finish converting git bisect to C part 4Miriam Rubio, Sep 13, 2021
  2. 1/6 t6030-bisect-porcelain: add tests to control bisect run exit casesMiriam Rubio, Sep 13, 2021
  3. 2/6 t6030-bisect-porcelain: add test for bisect visualizeMiriam Rubio, Sep 13, 2021
  4. 3/6 run-command: make `exists_in_PATH()` non-staticMiriam Rubio, Sep 13, 2021
  5. 4/6 bisect--helper: reimplement `bisect_visualize()` shell function in CMiriam Rubio, Sep 13, 2021
  6. 6/6 bisect--helper: retire `--bisect-next-check` subcommandMiriam Rubio, Sep 13, 2021
  7. 5/6 bisect--helper: reimplement `bisect_run` shell function in CMiriam Rubio, Sep 13, 2021
  8. Ævar Arnfjörð BjarmasonSep 13, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.