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

Reply via email to