path: root/compat/mingw.h
diff options
authorJohannes Sixt <>2007-11-12 11:52:41 (GMT)
committerJohannes Sixt <>2008-06-26 06:45:11 (GMT)
commitfc2ded5b08e071beed974117c0148781b1acc94a (patch)
tree2aa9f32e7a58fb1e0f1fb701f69c9454a0a9b7b8 /compat/mingw.h
parent7c0ffa1cb753f9b909dfb3bc7a5d5417b8de39c2 (diff)
Windows: Use a customized struct stat that also has the st_blocks member.
Windows's struct stat does not have a st_blocks member. Since we already have our own stat/lstat/fstat implementations, we can just as well use a customized struct stat. This patch introduces just that, and also fills in the st_blocks member. On the other hand, we don't provide members that are never used. Signed-off-by: Johannes Sixt <>
Diffstat (limited to 'compat/mingw.h')
1 files changed, 13 insertions, 5 deletions
diff --git a/compat/mingw.h b/compat/mingw.h
index 92e9273..624b32d 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -59,8 +59,6 @@ struct itimerval {
#define ITIMER_REAL 0
-#define st_blocks st_size/512 /* will be cleaned up later */
* trivial stubs
@@ -161,12 +159,22 @@ int mingw_rename(const char*, const char*);
/* Use mingw_lstat() instead of lstat()/stat() and
* mingw_fstat() instead of fstat() on Windows.
+ * struct stat is redefined because it lacks the st_blocks member.
-int mingw_lstat(const char *file_name, struct stat *buf);
-int mingw_fstat(int fd, struct stat *buf);
+struct mingw_stat {
+ unsigned st_mode;
+ time_t st_mtime, st_atime, st_ctime;
+ unsigned st_dev, st_ino, st_uid, st_gid;
+ size_t st_size;
+ size_t st_blocks;
+int mingw_lstat(const char *file_name, struct mingw_stat *buf);
+int mingw_fstat(int fd, struct mingw_stat *buf);
#define fstat mingw_fstat
#define lstat mingw_lstat
-#define stat(x,y) mingw_lstat(x,y)
+#define stat mingw_stat
+static inline int mingw_stat(const char *file_name, struct mingw_stat *buf)
+{ return mingw_lstat(file_name, buf); }
int mingw_utime(const char *file_name, const struct utimbuf *times);
#define utime mingw_utime