1*7dd7cddfSDavid du Colombier /* Wrapper around the ugly sys/stat includes/ifdefs */ 2*7dd7cddfSDavid du Colombier /* $Id$ */ 3*7dd7cddfSDavid du Colombier 4*7dd7cddfSDavid du Colombier /* assumes <sys/types.h> already included */ 5*7dd7cddfSDavid du Colombier #include <sys/stat.h> 6*7dd7cddfSDavid du Colombier 7*7dd7cddfSDavid du Colombier #ifndef HAVE_LSTAT 8*7dd7cddfSDavid du Colombier # define lstat(path, buf) stat(path, buf) 9*7dd7cddfSDavid du Colombier #endif /* HAVE_LSTAT */ 10*7dd7cddfSDavid du Colombier 11*7dd7cddfSDavid du Colombier #ifdef STAT_MACROS_BROKEN 12*7dd7cddfSDavid du Colombier # undef S_ISREG 13*7dd7cddfSDavid du Colombier # undef S_ISDIR 14*7dd7cddfSDavid du Colombier # undef S_ISCHR 15*7dd7cddfSDavid du Colombier # undef S_ISBLK 16*7dd7cddfSDavid du Colombier # undef S_ISFIFO 17*7dd7cddfSDavid du Colombier # undef S_ISSOCK 18*7dd7cddfSDavid du Colombier # undef S_ISLNK 19*7dd7cddfSDavid du Colombier #endif /* STAT_MACROS_BROKEN */ 20*7dd7cddfSDavid du Colombier 21*7dd7cddfSDavid du Colombier #if !defined(S_ISREG) && defined(S_IFREG) 22*7dd7cddfSDavid du Colombier # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 23*7dd7cddfSDavid du Colombier #endif /* S_ISREG */ 24*7dd7cddfSDavid du Colombier #if !defined(S_ISDIR) && defined(S_IFDIR) 25*7dd7cddfSDavid du Colombier # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 26*7dd7cddfSDavid du Colombier #endif /* S_ISDIR */ 27*7dd7cddfSDavid du Colombier #if !defined(S_ISCHR) && defined(S_IFCHR) 28*7dd7cddfSDavid du Colombier # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 29*7dd7cddfSDavid du Colombier #endif /* S_ISCHR */ 30*7dd7cddfSDavid du Colombier #if !defined(S_ISBLK) && defined(S_IFBLK) 31*7dd7cddfSDavid du Colombier # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 32*7dd7cddfSDavid du Colombier #endif /* S_ISBLK */ 33*7dd7cddfSDavid du Colombier #if !defined(S_ISFIFO) && defined(S_IFIFO) 34*7dd7cddfSDavid du Colombier # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 35*7dd7cddfSDavid du Colombier #endif /* S_ISFIFO */ 36*7dd7cddfSDavid du Colombier #if !defined(S_ISLNK) && defined(S_IFLNK) 37*7dd7cddfSDavid du Colombier # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 38*7dd7cddfSDavid du Colombier #endif /* S_ISLNK */ 39*7dd7cddfSDavid du Colombier #if !defined(S_ISSOCK) && defined(S_IFSOCK) 40*7dd7cddfSDavid du Colombier # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 41*7dd7cddfSDavid du Colombier #endif /* S_ISSOCK */ 42*7dd7cddfSDavid du Colombier #if !defined(S_ISCDF) && defined(S_CDF) 43*7dd7cddfSDavid du Colombier # define S_ISCDF(m) (S_ISDIR(m) && ((m) & S_CDF)) 44*7dd7cddfSDavid du Colombier #endif /* S_ISSOCK */ 45*7dd7cddfSDavid du Colombier 46*7dd7cddfSDavid du Colombier #ifndef S_ISVTX 47*7dd7cddfSDavid du Colombier # define S_ISVTX 01000 /* sticky bit */ 48*7dd7cddfSDavid du Colombier #endif /* S_ISVTX */ 49*7dd7cddfSDavid du Colombier 50*7dd7cddfSDavid du Colombier #ifndef S_IXUSR 51*7dd7cddfSDavid du Colombier # define S_IXUSR 00100 /* user execute bit */ 52*7dd7cddfSDavid du Colombier #endif /* S_IXUSR */ 53*7dd7cddfSDavid du Colombier #ifndef S_IXGRP 54*7dd7cddfSDavid du Colombier # define S_IXGRP 00010 /* user execute bit */ 55*7dd7cddfSDavid du Colombier #endif /* S_IXGRP */ 56*7dd7cddfSDavid du Colombier #ifndef S_IXOTH 57*7dd7cddfSDavid du Colombier # define S_IXOTH 00001 /* user execute bit */ 58*7dd7cddfSDavid du Colombier #endif /* S_IXOTH */ 59