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
Jeff King <peff@peff.net>
Date
Jul 1, 2016, 08:19 UTC
Message-ID
<20160701081919.GA21076@sigill.intra.peff.net>
In-Reply-To
<alpine.DEB.2.20.1607010953440.12947@virtualbox>
On Fri, Jul 01, 2016 at 10:04:44AM +0200, Johannes Schindelin wrote:
Show 14 quoted lines
> 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.

I actually wondered if it would make sense to get rid of the mingw_main() macro, and do it here as just:

    #ifdef MINGW
    mingw_startup();
    #endif

or something. But I didn't look deeply at it, and anyway I am afraid to touch anything in that area because I can't even compile-test it.

Show 17 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?

The description was sufficiently long that I didn't want to try repeating it, and opted for a reference instead. If you're planning to fix mingw_main(), I'd be happy to do that as a preparatory patch, and then just skip this trickery entirely. :)

-Peff
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 6 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.