Imported Upstream version 2.14.2
[platform/upstream/fontconfig.git] / src / fcwindows.h
index a0eee67..23331f5 100644 (file)
 #  define WIN32_EXTRA_LEAN
 #  define STRICT
 #  include <windows.h>
+#  include <io.h>
+
+#if defined(_MSC_VER)
+#include <BaseTsd.h>
+typedef SSIZE_T ssize_t;
+#endif
+
+#define FC_UINT64_FORMAT       "I64u"
+
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+
+#ifndef S_ISDIR
+#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
 #endif
 
+#ifndef F_OK
+#define F_OK 0
+#endif
+#ifndef X_OK
+#define X_OK 0 /* no execute bit on windows */
+#endif
+#ifndef W_OK
+#define W_OK 2
+#endif
+#ifndef R_OK
+#define R_OK 4
+#endif
+
+/* MingW provides dirent.h / openddir(), but MSVC does not */
+#ifndef HAVE_DIRENT_H
+
+#define HAVE_STRUCT_DIRENT_D_TYPE 1
+
+typedef struct DIR DIR;
+
+typedef enum {
+  DT_UNKNOWN = 0,
+  DT_DIR,
+  DT_REG,
+} DIR_TYPE;
+
+typedef struct dirent {
+    const char *d_name;
+    DIR_TYPE d_type;
+} dirent;
+
+#define opendir(dirname) FcCompatOpendirWin32(dirname)
+#define closedir(d)      FcCompatClosedirWin32(d)
+#define readdir(d)       FcCompatReaddirWin32(d)
+
+DIR * FcCompatOpendirWin32 (const char *dirname);
+
+struct dirent * FcCompatReaddirWin32 (DIR *dir);
+
+int FcCompatClosedirWin32 (DIR *dir);
+
+#endif /* HAVE_DIRENT_H */
+
+#endif /* _WIN32 */
+
 #endif /* _FCWINDOWS_H_ */