[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
stat macros on MSVC
From: |
Bruno Haible |
Subject: |
stat macros on MSVC |
Date: |
Fri, 16 Sep 2011 23:20:49 +0200 |
User-agent: |
KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; ) |
On MSVC 9, S_IFIFO and S_IFBLK are not defined, leading to compilation errors
in tests/test-sys_stat.c. But _S_IFIFO is defined and can be used to define
S_IFIFO.
It appears ok to have a platform without S_IFBLK, so I'm relaxing the test
in this respect:
2011-09-16 Bruno Haible <address@hidden>
sys_stat: Support for MSVC.
* lib/sys_stat.in.h (S_IFIFO): Define to _S_IFIFO if that exists.
* tests/test-sys_stat.c: Don't assume that S_IFBLK exists.
* doc/posix-headers/sys_stat.texi: Mention missing S_IFIFO, S_IFBLK on
MSVC.
--- doc/posix-headers/sys_stat.texi.orig Fri Sep 16 23:13:48 2011
+++ doc/posix-headers/sys_stat.texi Fri Sep 16 22:59:28 2011
@@ -8,7 +8,8 @@
Portability problems fixed by Gnulib:
@itemize
@item
-Some macros, such as @code{S_IFMT}, are missing on some platforms.
+Some macros, such as @code{S_IFMT} or @code{S_IFIFO}, are missing on some
+platforms.
@item
The macros @code{S_ISBLK}, @code{S_ISCHR}, @code{S_ISDIR}, @code{S_ISFIFO},
@code{S_ISLNK}, @code{S_ISREG}, @code{S_ISSOCK} are broken on some platforms.
@@ -29,4 +30,7 @@
Portability problems not fixed by Gnulib:
@itemize
address@hidden
+The macro @code{S_IFBLK} is missing on some platforms:
+MSVC 9.
@end itemize
--- lib/sys_stat.in.h.orig Fri Sep 16 23:13:48 2011
+++ lib/sys_stat.in.h Fri Sep 16 22:57:00 2011
@@ -61,6 +61,12 @@
# include <direct.h> /* mingw64 */
#endif
+#ifndef S_IFIFO
+# ifdef _S_IFIFO
+# define S_IFIFO _S_IFIFO
+# endif
+#endif
+
#ifndef S_IFMT
# define S_IFMT 0170000
#endif
--- tests/test-sys_stat.c.orig Fri Sep 16 23:13:48 2011
+++ tests/test-sys_stat.c Fri Sep 16 22:57:00 2011
@@ -26,11 +26,14 @@
int a[] =
{
S_IFMT,
- S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
-#ifdef S_IFLNK /* missing on mingw and djgpp */
+#ifdef S_IFBLK /* missing on MSVC */
+ S_IFBLK,
+#endif
+ S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
+#ifdef S_IFLNK /* missing on native Windows and DJGPP */
S_IFLNK,
#endif
-#ifdef S_IFSOCK /* missing on mingw and djgpp */
+#ifdef S_IFSOCK /* missing on native Windows and DJGPP */
S_IFSOCK,
#endif
S_IRWXU, S_IRUSR, S_IWUSR, S_IXUSR,
@@ -61,7 +64,9 @@
verify (S_IRWXG == (S_IRGRP | S_IWGRP | S_IXGRP));
verify (S_IRWXO == (S_IROTH | S_IWOTH | S_IXOTH));
+#ifdef S_IFBLK
verify (S_ISBLK (S_IFBLK));
+#endif
verify (!S_ISBLK (S_IFCHR));
verify (!S_ISBLK (S_IFDIR));
verify (!S_ISBLK (S_IFIFO));
@@ -73,7 +78,9 @@
verify (!S_ISBLK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISCHR (S_IFBLK));
+#endif
verify (S_ISCHR (S_IFCHR));
verify (!S_ISCHR (S_IFDIR));
verify (!S_ISCHR (S_IFIFO));
@@ -85,7 +92,9 @@
verify (!S_ISCHR (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISDIR (S_IFBLK));
+#endif
verify (!S_ISDIR (S_IFCHR));
verify (S_ISDIR (S_IFDIR));
verify (!S_ISDIR (S_IFIFO));
@@ -97,7 +106,9 @@
verify (!S_ISDIR (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISFIFO (S_IFBLK));
+#endif
verify (!S_ISFIFO (S_IFCHR));
verify (!S_ISFIFO (S_IFDIR));
verify (S_ISFIFO (S_IFIFO));
@@ -109,7 +120,9 @@
verify (!S_ISFIFO (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISREG (S_IFBLK));
+#endif
verify (!S_ISREG (S_IFCHR));
verify (!S_ISREG (S_IFDIR));
verify (!S_ISREG (S_IFIFO));
@@ -121,7 +134,9 @@
verify (!S_ISREG (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISLNK (S_IFBLK));
+#endif
verify (!S_ISLNK (S_IFCHR));
verify (!S_ISLNK (S_IFDIR));
verify (!S_ISLNK (S_IFIFO));
@@ -133,7 +148,9 @@
verify (!S_ISLNK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISSOCK (S_IFBLK));
+#endif
verify (!S_ISSOCK (S_IFCHR));
verify (!S_ISSOCK (S_IFDIR));
verify (!S_ISSOCK (S_IFIFO));
@@ -145,7 +162,9 @@
verify (S_ISSOCK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISDOOR (S_IFBLK));
+#endif
verify (!S_ISDOOR (S_IFCHR));
verify (!S_ISDOOR (S_IFDIR));
verify (!S_ISDOOR (S_IFIFO));
@@ -157,7 +176,9 @@
verify (!S_ISDOOR (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISMPB (S_IFBLK));
+#endif
verify (!S_ISMPB (S_IFCHR));
verify (!S_ISMPB (S_IFDIR));
verify (!S_ISMPB (S_IFIFO));
@@ -169,7 +190,9 @@
verify (!S_ISMPB (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISNAM (S_IFBLK));
+#endif
verify (!S_ISNAM (S_IFCHR));
verify (!S_ISNAM (S_IFDIR));
verify (!S_ISNAM (S_IFIFO));
@@ -181,7 +204,9 @@
verify (!S_ISNAM (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISNWK (S_IFBLK));
+#endif
verify (!S_ISNWK (S_IFCHR));
verify (!S_ISNWK (S_IFDIR));
verify (!S_ISNWK (S_IFIFO));
@@ -193,7 +218,9 @@
verify (!S_ISNWK (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISPORT (S_IFBLK));
+#endif
verify (!S_ISPORT (S_IFCHR));
verify (!S_ISPORT (S_IFDIR));
verify (!S_ISPORT (S_IFIFO));
@@ -205,7 +232,9 @@
verify (!S_ISPORT (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISCTG (S_IFBLK));
+#endif
verify (!S_ISCTG (S_IFCHR));
verify (!S_ISCTG (S_IFDIR));
verify (!S_ISCTG (S_IFIFO));
@@ -217,7 +246,9 @@
verify (!S_ISCTG (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISOFD (S_IFBLK));
+#endif
verify (!S_ISOFD (S_IFCHR));
verify (!S_ISOFD (S_IFDIR));
verify (!S_ISOFD (S_IFIFO));
@@ -229,7 +260,9 @@
verify (!S_ISOFD (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISOFL (S_IFBLK));
+#endif
verify (!S_ISOFL (S_IFCHR));
verify (!S_ISOFL (S_IFDIR));
verify (!S_ISOFL (S_IFIFO));
@@ -241,7 +274,9 @@
verify (!S_ISOFL (S_IFSOCK));
#endif
+#ifdef S_IFBLK
verify (!S_ISWHT (S_IFBLK));
+#endif
verify (!S_ISWHT (S_IFCHR));
verify (!S_ISWHT (S_IFDIR));
verify (!S_ISWHT (S_IFIFO));
--
In memoriam Georgiy Gongadze <http://en.wikipedia.org/wiki/Georgiy_Gongadze>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- stat macros on MSVC,
Bruno Haible <=