os_win32.h has these two defines
 #define S_IXGRP S_IXUSR
 #define S_IXOTH S_IXUSR

They are used only here
char FileInfo::typeIndicator() const
{
        ...
        if (S_ISREG(buf_.st_mode) && 
            (buf_.st_mode & (S_IEXEC | S_IXGRP| S_IXOTH)))
        ....
}

where S_IEXEC is a synonym for S_IXUSR and
       S_IXUSR    00100     owner has execute permission
       S_IXGRP    00010     group has execute permission
       S_IXOTH    00001     others have execute permission

What should we do to enable this to work on Windows? configure tests to
generate HAVE_S_IXGRP, HAVE_S_IXOTH, followed by this block of code:

#ifndef HAVE_S_IXGRP
#define S_IXGRP S_IXUSR
#endif

#ifndef HAVE_S_IXOTH
#define S_IXOTH S_IXUSR
#endif

Where should this block go? In FileInfo.C itself (there's lots of similar,
nasty preprocessor stuff going on in FileInfo.C) or appended to the bottom
of config.h itself? (The AH_BOTTOM stuff in configure.ac)

Or given that there's already so much preprocessor stuff in FileInfo.C,
perhaps it would be simplest to just have this in FileInfo.C. No configure
stuff needed at all.

#ifndef S_IXGRP
#define S_IXGRP S_IXUSR
#endif

#ifndef S_IXOTH
#define S_IXOTH S_IXUSR
#endif

Thoughts on how best to proceed?

-- 
Angus

Reply via email to