From 0de7d30656d905bde82974ea8a5edf523cea7654 Mon Sep 17 00:00:00 2001 From: jD91mZM2 <me@krake.one> Date: Sun, 7 Oct 2018 13:00:51 +0200 Subject: [PATCH] Fix S_IS* For some reason, C handles `==` before `&`. So `a & b == c` is the same thing as `a & (b == c)`. --- include/bits/sys/stat.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/bits/sys/stat.h b/include/bits/sys/stat.h index 199097aa7..1a27d243e 100644 --- a/include/bits/sys/stat.h +++ b/include/bits/sys/stat.h @@ -1,13 +1,13 @@ #ifndef _BITS_STAT_H #define _BITS_STAT_H -#define S_ISDIR(mode) mode & S_IFMT == S_IFDIR -#define S_ISCHR(mode) mode & S_IFMT == S_IFCHR -#define S_ISBLK(mode) mode & S_IFMT == S_IFBLK -#define S_ISREG(mode) mode & S_IFMT == S_IFREG -#define S_ISFIFO(mode) mode & S_IFMT == S_IFIFO -#define S_ISLNK(mode) mode & S_IFMT == S_IFLNK -#define S_ISSOCK(mode) mode & S_IFMT == S_IFSOCK +#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) +#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) +#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) +#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) +#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) #define st_atime st_atim.tv_sec #define st_mtime st_mtim.tv_sec -- GitLab