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