summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertise.dev>2020-12-14 22:58:01 -0300
committerFelipe Magno de Almeida <felipe@expertise.dev>2020-12-15 16:10:26 -0300
commit39c77ec5909e9698436ad45295e32cb62536dc70 (patch)
treeabcae95f7bb385b9983983386b7b38a5a7463a48
parentd0d660ec29a78d66ccac1294e86052578b564f74 (diff)
downloadefl-39c77ec5909e9698436ad45295e32cb62536dc70.tar.gz
evil: Add stat constants not defined in MSVC's runtime
-rw-r--r--src/lib/evil/evil_private.h1
-rw-r--r--src/lib/evil/evil_stat.h38
2 files changed, 39 insertions, 0 deletions
diff --git a/src/lib/evil/evil_private.h b/src/lib/evil/evil_private.h
index 82a912e8af..1e1b5316e9 100644
--- a/src/lib/evil/evil_private.h
+++ b/src/lib/evil/evil_private.h
@@ -84,6 +84,7 @@ extern "C" {
#include "evil_time.h"
#include "evil_unistd.h"
#include "evil_util.h"
+#include "evil_stat.h"
#define sigsetjmp(Env, Save) setjmp(Env)
diff --git a/src/lib/evil/evil_stat.h b/src/lib/evil/evil_stat.h
new file mode 100644
index 0000000000..9bbf5764c1
--- /dev/null
+++ b/src/lib/evil/evil_stat.h
@@ -0,0 +1,38 @@
+#ifndef __EVIL_STAT_H__
+#define __EVIL_STAT_H__
+
+#ifdef _MSC_VER
+# include <evil_private.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <errno.h>
+# include <corecrt_io.h>
+# include <corecrt.h>
+
+// Missing definitions:
+# define S_IRWXU 0 /* RWX user */
+# define S_IRUSR S_IREAD /* Read user */
+# define S_IWUSR S_IWRITE /* Write user */
+# define S_IXUSR 0 /* Execute user */
+# define S_IRWXG 0 /* RWX group */
+# define S_IRGRP 0 /* Read group */
+# define S_IWGRP 0 /* Write group */
+# define S_IXGRP 0 /* Execute group */
+# define S_IRWXO 0 /* RWX others */
+# define S_IROTH 0 /* Read others */
+# define S_IWOTH 0 /* Write others */
+# define S_IXOTH 0 /* Execute others */
+
+// Missing definitions from ucrt
+# define S_IFIFO _S_IFIFO
+
+# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
+# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
+# define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
+# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
+# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
+# define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
+
+#endif /* _MSV_VER */
+
+#endif /* __EVIL_STAT_H__ */