Re: [PATCH 1/1] do not add common-main to lib
- From
Christian Hesse <list@eworm.de>
- Date
- Aug 15, 2016, 12:21 UTC
- Message-ID
- <20160815142125.0ca30e0f@leda.localdomain>
- In-Reply-To
- <20160815120223.4lr23aiqmqzjprch@sigill.intra.peff.net>
Jeff King <peff@peff.net> on Mon, 2016/08/15 08:02:
Show 12 quoted lines
> On Mon, Aug 15, 2016 at 09:52:07AM +0200, Christian Hesse wrote: > > > From: Christian Hesse <mail@eworm.de> > > > > Commit 08aade70 (mingw: declare main()'s argv as const) changed > > declaration of main function. This breaks linking external projects > > (e.g. cgit) to libgit.a with: > > > > error: Multiple definition of `main' > > I'd expect the culprit is actually 3f2e229 (add an extra level of > indirection to main(), 2016-07-01).
Ah, probably you are right...
Show 7 quoted lines
> > So do not add common-main to lib and let projects have their own > > main function. > > That is certainly an option, but I think it means that those projects > are potentially buggy in the same way that some git commands were prior > to the common-main series. Namely, the common main() may do some > run-time setup that parts of libgit.a assume has been done.
Ok, got it.
> I would not be surprised if cgit crashes on Windows, for instance, for > the reasons detailed in 650c449 (common-main: call > git_extract_argv0_path(), 2016-07-01). I would also not be surprised if > nobody actually builds cgit on Windows. :)
I never tried and probably nobody else did. :-p
> The "right" way to do it (according to the way libgit.a views the world) > is for cgit's main to become cmd_main(), and let libgit.a do its > run-time startup before getting there.
Looks like that does the job. I will give it some more testing.
Please ignore my patch... ;) Thanks a lot!
--
main(a){char*c=/* Schoene Gruesse */"B?IJj;MEH"
"CX:;",b;for(a/* Best regards my address: */=0;b=c[a++];)
putchar(b-1/(/* Chris cc -ox -xc - && ./x */b/42*2-3)*42);}