_S_IFMT
#define S_IFMT _S_IFMT
#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR) /* directory */
#define S_ISCHR(m) (((m) & _S_IFMT) == _S_IFCHR) /* char special */
#define S_ISBLK(m) (((m) & _S_IFMT) == _S_IFBLK) /* block special */
#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG) /* regular file */
#define S_ISFIFO(m) (((m) & _S_IFMT) == _S_IFIFO) /* fifo */
#define S_ISLNK(m) (((m) & _S_IFMT) == _S_IFLNK) /* symbolic link */
#define S_ISSOCK(m) (((m) & _S_IFMT) == _S_IFSOCK) /* socket */
#define S_ISWHT(m) (((m) & _S_IFMT) == _S_IFWHT) /* whiteout */