Commit | Line | Data |
---|---|---|
f74acd1f | 1 | /* $Cambridge: exim/src/OS/os.h-cygwin,v 1.4 2005/10/03 09:53:38 ph10 Exp $ */ |
61ec970d PH |
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 */ | |
b6c6011d | 10 | void cygwin_init(int, char **, void *, void *, void *, void *, void *); |
61ec970d | 11 | #define OS_INIT\ |
b6c6011d | 12 | cygwin_init(argc, (char **) argv, &root_uid, &exim_uid, &exim_gid, &config_uid, &config_gid); |
61ec970d PH |
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. | |
b6c6011d | 30 | Consider reducing MAX_LOCALHOST_NUMBER */ |
61ec970d PH |
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 */ |