From: SZEDER Gábor Date: Sat, 07 May 2016 14:44:51 GMT Subject: Re: [RFC PATCH] gc --auto: don't lie about running in background on Windows Message-ID: <20160507164451.Horde.S4kJBIYRkpnmQt7tw82MHDH@webmail.informatik.kit.edu> In-Reply-To: Quoting Junio C Hamano : > SZEDER Gábor writes: > >> Arguably this helper function could be just a simple variable. I >> opted for a function because: >> >> - I preferred a single '#ifdef NO_POSIX_GOODIES', and putting a >> static variable so near to EOF felt just wrong. (And this is why >> it's not an inline-able function defined in a header file.) >> >> - currently we know already at compile time that Windows can't >> daemonize, but in the future we might want to extend this helper >> function to perform some runtime checks, too. But this is perhaps >> like preparing for crossing a bridge where we'll never get to. > > Alternatively, the implementation of daemonize() and can_daemonize() > can live in compat/ and have the #ifdef switch in git-compat-util.h, > e.g. something along the lines of these: > > << git-compat-util.h >> > ... after conditional inclusion of compat/mingw.h ... > #ifndef can_daemonize > #define can_daemonize() 1 > #endif > > << compat/mingw.h >> > #define can_daemonize() 0 > #define daemonize() mingw_daemonize() > > << setup.c >> > ... > #ifndef NO_POSIX_GOODIES > int daemonize(void) > { > ... no ifdef around here ... > } > #endif config.mak.uname sets NO_POSIX_GOODIES only for Windows builds, but NO_POSIX_GOODIES doesn't sound Windows-specific at all. Currently if somebody were to decide to build with NO_POSIX_GOODIES=UnfortunatelyYes, then he would get a working git in the end, even on non-Windows platforms. With the proposed alternative above we would only provide an alternative daemonize() implementation for MINGW, breaking the build of those setting NO_POSIX_GOODIES by themselves. I don't know whether there are platforms out there besides Windows that need the NO_POSIX_GOODIES treatment, but we don't explicitly support them in config.mak.uname, or people who for whatever reason build with this knob turned on.