I think that wrapping the whole access is one step farther... The other two are better. But it is still better than redefining X_OK... :)
Alon. On Mon, Feb 20, 2012 at 11:32 PM, Gert Doering <g...@greenie.muc.de> wrote: > Hi, > > On Mon, Feb 20, 2012 at 10:44:31PM +0200, Alon Bar-Lev wrote: >> It still touches the same places... >> >> The difference is the usage: >> --- >> R_OK|PLATFORM_X_OK >> --- >> or: >> --- >> PLATFORM_MODE_MASK(R_OK | X_OK) >> --- > > Nah, that's not the way it should be. > > Given that we currently use X_OK only in options.c, and have MANY lines > of the form > > errs |= check_file_access (CHKACC_FILE, options->crl_file, R_OK|X_OK, > "--crl-verify directory"); > > and only a single place where it will actually call access() > (or _access()), anything that makes all these lines harder to read > is making the code harder to read. > > This code doesn't want or need to know anything about system dependencies, > that belongs inside check_file_access() - and there you have only a few > access() calls that need to do PLATFORM_MODE_MASK(). > > Or even better, do it in the openvpn_access() wrapper, in the #ifdef WIN32 > code block. That is the place where the WIN32 pain is, and nobody else > needs to bother. > > int > openvpn_access (const char *path, int mode) > { > #ifdef WIN32 > struct gc_arena gc = gc_new (); > int ret = _waccess (wide_string (path, &gc), (mode & ~X_OK) ); > gc_free (&gc); > return ret; > #else > return access (path, mode); > #endif > } > > gert > > > -- > USENET is *not* the non-clickable part of WWW! > //www.muc.de/~gert/ > Gert Doering - Munich, Germany g...@greenie.muc.de > fax: +49-89-35655025 g...@net.informatik.tu-muenchen.de