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

Re: [PATCH 1/5] add an extra level of indirection to main()

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jul 1, 2016, 08:04 UTC
Message-ID
<alpine.DEB.2.20.1607010953440.12947@virtualbox>
In-Reply-To
<20160701055858.GA4593@sigill.intra.peff.net>
Hi Peff,
On Fri, 1 Jul 2016, Jeff King wrote:
> I waffled between the two mechanisms. Opinions welcome.

I am happy you took the cmd_main() approach: we do have to play some tricks on Windows, in particular in some upcoming changes that support building with MS Visual C++ (we want to ensure that `argv` is in UTF-8, which means that we actually have to use the UTF-16 versions and convert them manually lest argv has the current Windows encoding of strings). Which means that we still have to use that mingw_startup() trick you mentioned, and which would have interfered had you chosen a similar method.

Show 13 quoted lines
> diff --git a/common-main.c b/common-main.c
> new file mode 100644
> index 0000000..2b96bbf
> --- /dev/null
> +++ b/common-main.c
> @@ -0,0 +1,12 @@
> +#include "git-compat-util.h"
> +
> +int main(int argc, char **av)
> +{
> +	/*
> +	 * This const trickery is explained in
> +	 * 84d32bf7678259c08406571cd6ce4b7a6724dcba

This commit message says that mingw_main() is declared with char **argv, and that is the reason why we have to convert. Maybe spell that out here, and then in a subsequent commit, we can fix the mingw_main() declaration?

Show 5 quoted lines
> +	 */
> +	const char **argv = (const char **)av;
> +
> +	return cmd_main(argc, argv);
> +}

Ciao, Dscho

Previous: Jeff KingNext: Jeff King
Message 5 of 21 in “git-credentials-store.exe crash”
  1. dmh@ucar.eduJun 30, 2016
  2. Jeff KingJul 1, 2016
  3. 0/5 consistent setup code for external commandsJeff King, Jul 1, 2016
  4. 1/5 add an extra level of indirection to main()Jeff King, Jul 1, 2016
  5. Johannes SchindelinJul 1, 2016
  6. Jeff KingJul 1, 2016
  7. Johannes SchindelinJul 1, 2016
  8. Jeff KingJul 1, 2016
  9. Johannes SchindelinJul 2, 2016
  10. 2/5 common-main: call git_extract_argv0_path()Jeff King, Jul 1, 2016
  11. Johannes SchindelinJul 1, 2016
  12. 3/5 common-main: call sanitize_stdfds()Jeff King, Jul 1, 2016
  13. 5/5 common-main: call git_setup_gettext()Jeff King, Jul 1, 2016
  14. 4/5 common-main: call restore_sigpipe_to_default()Jeff King, Jul 1, 2016
  15. Johannes SchindelinJul 1, 2016
  16. Junio C HamanoJul 1, 2016
  17. Jeff KingJul 1, 2016
  18. Junio C HamanoJul 6, 2016
  19. Johannes SchindelinJul 6, 2016
  20. Johannes SchindelinJul 1, 2016
  21. Jeff KingJul 1, 2016

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.