exipick version 20060307.0
[exim.git] / src / OS / os.h-cygwin
1 /* $Cambridge: exim/src/OS/os.h-cygwin,v 1.4 2005/10/03 09:53:38 ph10 Exp $ */
2
3 /* Exim: OS-specific C header file for Cygwin */
4
5 /* This code was supplied by Pierre A. Humblet <Pierre.Humblet@ieee.org> */
6
7 /* Define the OS_INIT macro that we insert in exim.c:main()
8    to set the root and exim uid depending on the system */
9 /* We use a special routine to initialize */
10 void cygwin_init(int, char **, void *, void *, void *, void *, void *);
11 #define OS_INIT\
12   cygwin_init(argc, (char **) argv, &root_uid, &exim_uid, &exim_gid, &config_uid, &config_gid);
13
14 /* We need a special mkdir that
15    allows names starting with // */
16 #include <sys/stat.h> /* Do not redefine mkdir in sys/stat.h */
17 int cygwin_mkdir( const char *_path, mode_t __mode );
18 #define mkdir cygwin_mkdir /* redefine mkdir elsewhere */
19
20 /* Redefine the set*id calls to run when faking root */
21 #include <unistd.h>   /* Do not redefine in unitsd.h */
22 int cygwin_setuid(uid_t uid );
23 int cygwin_setgid(gid_t gid );
24 #define setuid cygwin_setuid
25 #define setgid cygwin_setgid
26
27 extern unsigned int cygwin_WinVersion;
28
29 #define BASE_62 36  /* Windows aliases lower and upper cases in filenames.
30                        Consider reducing MAX_LOCALHOST_NUMBER */
31 #define CRYPT_H
32 #define HAVE_MMAP
33 #define HAVE_SYS_VFS_H
34 #define NO_IP_VAR_H
35 #define NO_IP_OPTIONS
36 #define F_FREESP     O_TRUNC
37 /* Defining LOAD_AVG_NEEDS_ROOT causes an initial
38    call to os_getloadavg. In our case this is beneficial
39    because it initializes the counts */
40 #define LOAD_AVG_NEEDS_ROOT
41
42 typedef struct flock flock_t;
43
44 /* Macro to define variable length SID structures */
45 #define SID(n, name, sid...) \
46 struct  { \
47   BYTE  Revision; \
48   BYTE  SubAuthorityCount; \
49   SID_IDENTIFIER_AUTHORITY IdentifierAuthority; \
50   DWORD SubAuthority[n]; \
51 } name = { SID_REVISION, n, {SECURITY_NT_AUTHORITY}, {sid}}
52
53 /* End */