Преглед на файлове

Fix S_IS*

For some reason, C handles `==` before `&`.
So `a & b == c` is the same thing as `a & (b == c)`.
jD91mZM2 преди 6 години
родител
ревизия
0de7d30656
променени са 1 файла, в които са добавени 7 реда и са изтрити 7 реда
  1. 7 7
      include/bits/sys/stat.h

+ 7 - 7
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