summaryrefslogtreecommitdiff
path: root/src/OS/os.h-cygwin
diff options
context:
space:
mode:
Diffstat (limited to 'src/OS/os.h-cygwin')
-rw-r--r--src/OS/os.h-cygwin53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/OS/os.h-cygwin b/src/OS/os.h-cygwin
new file mode 100644
index 000000000..ebd9c848b
--- /dev/null
+++ b/src/OS/os.h-cygwin
@@ -0,0 +1,53 @@
+/* $Cambridge: exim/src/OS/os.h-cygwin,v 1.1 2004/10/06 15:07:39 ph10 Exp $ */
+
+/* Exim: OS-specific C header file for Cygwin */
+
+/* This code was supplied by Pierre A. Humblet <Pierre.Humblet@ieee.org> */
+
+/* Define the OS_INIT macro that we insert in exim.c:main()
+ to set the root and exim uid depending on the system */
+/* We use a special routine to initialize */
+void cygwin_init(int, char **, void *, void *, void *, void *);
+#define OS_INIT\
+ cygwin_init(argc, (char **) argv, &root_uid, &exim_uid, &exim_gid, &config_uid);
+
+/* We need a special mkdir that
+ allows names starting with // */
+#include <sys/stat.h> /* Do not redefine mkdir in sys/stat.h */
+int cygwin_mkdir( const char *_path, mode_t __mode );
+#define mkdir cygwin_mkdir /* redefine mkdir elsewhere */
+
+/* Redefine the set*id calls to run when faking root */
+#include <unistd.h> /* Do not redefine in unitsd.h */
+int cygwin_setuid(uid_t uid );
+int cygwin_setgid(gid_t gid );
+#define setuid cygwin_setuid
+#define setgid cygwin_setgid
+
+extern unsigned int cygwin_WinVersion;
+
+#define BASE_62 36 /* Windows aliases lower and upper cases in filenames.
+ Consider reducing MAX_LOCALHOST_NUMBER */
+#define CRYPT_H
+#define HAVE_MMAP
+#define HAVE_SYS_VFS_H
+#define NO_IP_VAR_H
+#define NO_IP_OPTIONS
+#define F_FREESP O_TRUNC
+/* Defining LOAD_AVG_NEEDS_ROOT causes an initial
+ call to os_getloadavg. In our case this is beneficial
+ because it initializes the counts */
+#define LOAD_AVG_NEEDS_ROOT
+
+typedef struct flock flock_t;
+
+/* Macro to define variable length SID structures */
+#define SID(n, name, sid...) \
+struct { \
+ BYTE Revision; \
+ BYTE SubAuthorityCount; \
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority; \
+ DWORD SubAuthority[n]; \
+} name = { SID_REVISION, n, {SECURITY_NT_AUTHORITY}, {sid}}
+
+/* End */