]> git.pond.sub.org Git - empserver/blobdiff - src/lib/w32/unistd.h
Use src/lib/w32/w32io.c for client
[empserver] / src / lib / w32 / unistd.h
index e640f5297afe6a0906e1db88bf4f391d7b5edbb5..eeb1c6e1bf76b43ef1bf1757394b73f82c52106e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
  *
  *  ---
  *
- *  unistd.h: POSIX emulation for WIN32
- * 
+ *  unistd.h: POSIX emulation for Windows
+ *
  *  Known contributors to this file:
  *     Ron Koenderink, 2007
+ *     Markus Armbruster, 2007-2009
+ */
+
+/*
+ * We can provide POSIX headers that don't exist in Windows, but we
+ * can't augment existing headers.  Some stuff that should be in such
+ * headers ends up here, and some in w32misc.h.  Can't be helped.
  */
 
 #ifndef UNISTD_H
 #define UNISTD_H
 
-#include "getopt.h"
+/*
+ * We override system functions by defining them as macros.  This
+ * breaks if the system's declaration is included later.  Include them
+ * here.  Major name space pollution, can't be helped.
+ */
+#include <getopt.h>
+#include <io.h>
+#include <direct.h>
+#include <sys/stat.h>
+#include "w32types.h"
+
+/*
+ * w32file.c
+ */
+/* Should be in sys/stat.h */
+#define mkdir(dir, perm)    w32_mkdir((dir), (perm))
+extern int w32_mkdir(const char *dirname, mode_t perm);
+
+/* Should be in sys/stat.h */
+#ifndef S_IRUSR
+#define S_IRUSR            _S_IREAD
+#define S_IWUSR            _S_IWRITE
+#define S_IXUSR            _S_IEXEC
+#define S_IRWXU            S_IRUSR | S_IWUSR | S_IXUSR
+#endif
+#ifndef S_IRGRP
+#define S_IRGRP            0
+#define S_IWGRP            0
+#define S_IXGRP            0
+#define S_IRWXG            S_IRGRP | S_IWGRP | S_IXGRP
+#endif
+#ifndef S_IROTH
+#define S_IROTH            0
+#define S_IWOTH            0
+#define S_IXOTH            0
+#define S_IRWXO            S_IROTH | S_IWOTH | S_IXOTH
+#endif
+
+/* Should be in fcntl.h */
+#define O_NONBLOCK  1
+
+#define F_GETFL            1
+#define F_SETFL            2
+
+extern int fcntl(int fd, int cmd, ...);
+
+/* Stuff that actually belongs here */
+#define close(fd) w32_close_function((fd))
+extern int (*w32_close_function)(int);
+#define ftruncate(fd, length) _chsize((fd), (length))
+#define read(fd, buf, sz) w32_read_function((fd), (buf), (sz))
+extern int (*w32_read_function)(int, void *, unsigned);
+#define write(fd, buf, sz) w32_write_function((fd), (buf), (sz))
+extern int (*w32_write_function)(int, const void *, unsigned);
+
 #endif /* UNISTD_H */