]> granicus.if.org Git - postgresql/blob - src/include/port/win32.h
Allow Win32 to compile under MinGW. Major changes are:
[postgresql] / src / include / port / win32.h
1 /* $Header: /cvsroot/pgsql/src/include/port/win32.h,v 1.10 2003/05/15 16:35:29 momjian Exp $ */
2
3 /* undefine and redefine after #include */
4 #undef mkdir
5
6 #undef ERROR
7 #include <windows.h>
8 #undef near
9
10 /* Must be here to avoid conflicting with prototype in windows.h */
11 #define mkdir(a,b)      mkdir(a)
12
13
14 #define USES_WINSOCK
15 #define NOFILE            100
16
17 /* defines for dynamic linking on Win32 platform */
18 #ifdef __CYGWIN__
19
20 #if __GNUC__ && ! defined (__declspec)
21 #error You need egcs 1.1 or newer for compiling!
22 #endif
23
24 #ifdef BUILDING_DLL
25 #define DLLIMPORT __declspec (dllexport)
26 #else                                                   /* not BUILDING_DLL */
27 #define DLLIMPORT __declspec (dllimport)
28 #endif
29
30 #elif defined(WIN32) && defined(_MSC_VER)               /* not CYGWIN */
31
32 #if defined(_DLL)
33 #define DLLIMPORT __declspec (dllexport)
34 #else                                                   /* not _DLL */
35 #define DLLIMPORT __declspec (dllimport)
36 #endif
37
38 #else                                                   /* not CYGWIN, not MSVC */
39
40 #define DLLIMPORT
41
42 #endif
43
44 /*
45  *      IPC defines
46  */
47 #undef HAVE_UNION_SEMUN
48 #define HAVE_UNION_SEMUN 1
49
50 #define IPC_RMID 256
51 #define IPC_CREAT 512
52 #define IPC_EXCL 1024
53 #define IPC_PRIVATE 234564
54 #define IPC_NOWAIT      2048
55 #define IPC_STAT 4096
56
57 #define EACCESS 2048
58 #define EIDRM 4096
59
60 #define SETALL 8192
61 #define GETNCNT 16384
62 #define GETVAL 65536
63 #define SETVAL 131072
64 #define GETPID 262144
65
66 /*
67  *      Shared memory
68  */
69 struct shmid_ds
70 {
71         int             dummy;
72         int             shm_nattch;
73 };
74
75 int   shmdt(const void *shmaddr);
76 void* shmat(int memId, void* shmaddr, int flag);
77 int   shmctl(int shmid, int flag, struct shmid_ds * dummy);
78 int   shmget(int memKey, int size, int flag);
79
80
81 /*
82  *      Semaphores
83  */
84 union semun
85 {
86         int             val;
87         struct semid_ds *buf;
88         unsigned short *array;
89 };
90
91 struct sembuf
92 {
93         int             sem_flg;
94         int             sem_op;
95         int             sem_num;
96 };
97
98 int       semctl(int semId, int semNum, int flag, union semun);
99 int       semget(int semKey, int semNum, int flags);
100 int       semop(int semId, struct sembuf * sops, int flag);
101
102 #define sleep(sec)      (Sleep(sec * 1000), /* no return value */ 0)
103
104 /* Some extra signals */
105 #define SIGHUP                          1
106 #define SIGQUIT                         3
107 #define SIGTRAP                         5
108 #define SIGABRT                         22        /* Set to match W32 value -- not UNIX value */
109 #define SIGKILL                         9
110 #define SIGPIPE                         13
111 #define SIGALRM                         14
112 #define SIGSTOP                         17
113 #define SIGCONT                         19
114 #define SIGCHLD                         20
115 #define SIGTTIN                         21
116 #define SIGTTOU                         22        /* Same as SIGABRT -- no problem, I hope */
117 #define SIGWINCH                        28
118 #define SIGUSR1                         30
119 #define SIGUSR2                         31
120
121 struct timezone
122 {
123     int tz_minuteswest;         /* Minutes west of GMT.  */
124     int tz_dsttime;             /* Nonzero if DST is ever in effect.  */
125 };
126
127 /* FROM SRA */
128
129 /*
130  * Supplement to <sys/types.h>.
131  */
132 #define uid_t int
133 #define gid_t int
134 #define pid_t unsigned long
135 #define ssize_t int
136 #define mode_t int
137 #define key_t long
138 #define ushort unsigned short
139
140 /*
141  * Supplement to <sys/stat.h>.
142  */
143 #define lstat slat
144
145 #define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
146 #define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
147
148 #define S_IRUSR _S_IREAD
149 #define S_IWUSR _S_IWRITE
150 #define S_IXUSR _S_IEXEC
151 #define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
152
153 /*
154  * Supplement to <errno.h>.
155  */
156 #include <errno.h>
157 #undef EAGAIN
158 #undef EINTR
159 #define EINTR WSAEINTR
160 #define EAGAIN WSAEWOULDBLOCK
161 #define EMSGSIZE WSAEMSGSIZE
162 #define EAFNOSUPPORT WSAEAFNOSUPPORT
163 #define EWOULDBLOCK WSAEWOULDBLOCK
164 #define ECONNRESET WSAECONNRESET
165 #define EINPROGRESS WSAEINPROGRESS
166
167 /*
168  * Supplement to <math.h>.
169  */
170 #define isnan _isnan
171 #define finite _finite
172 extern double rint(double x);
173
174 /*
175  * Supplement to <stdio.h>.
176  */
177 #define snprintf _snprintf
178 #define vsnprintf _vsnprintf