16 #ifndef PG_WIN32_PORT_H
17 #define PG_WIN32_PORT_H
35 #define _WINSOCK_DEPRECATED_NO_WARNINGS
42 #if !defined(__MINGW64_VERSION_MAJOR) || defined(_MSC_VER)
57 #define WIN32_LEAN_AND_MEAN
58 #define UMDF_USING_NTSTATUS
73 #define fstat microsoft_native_fstat
74 #define stat microsoft_native_stat
80 #define mkdir(a,b) mkdir(a)
82 #define ftruncate(a,b) chsize(a,b)
85 #define fsync(fd) _commit(fd)
92 #undef HAVE_UNION_SEMUN
93 #define HAVE_UNION_SEMUN 1
98 #define IPC_PRIVATE 234564
99 #define IPC_NOWAIT 2048
100 #define IPC_STAT 4096
108 #define GETNCNT 16384
110 #define SETVAL 131072
111 #define GETPID 262144
152 #define WIFEXITED(w) (((w) & 0XFFFFFF00) == 0)
153 #define WIFSIGNALED(w) (!WIFEXITED(w))
154 #define WEXITSTATUS(w) (w)
155 #define WTERMSIG(w) (w)
157 #define sigmask(sig) ( 1 << ((sig)-1) )
163 #define SIG_DFL ((pqsigfunc)0)
164 #define SIG_ERR ((pqsigfunc)-1)
165 #define SIG_IGN ((pqsigfunc)1)
190 #define ITIMER_REAL 0
207 #define pgoff_t __int64
210 extern int _pgfseeko64(FILE *stream,
pgoff_t offset,
int origin);
211 extern pgoff_t _pgftello64(FILE *stream);
212 #define fseeko(stream, offset, origin) _pgfseeko64(stream, offset, origin)
213 #define ftello(stream) _pgftello64(stream)
216 #define fseeko(stream, offset, origin) fseeko64(stream, offset, origin)
219 #define ftello(stream) ftello64(stream)
232 extern int pgsymlink(
const char *oldpath,
const char *newpath);
235 #define symlink(oldpath, newpath) pgsymlink(oldpath, newpath)
236 #define readlink(path, buf, size) pgreadlink(path, buf, size)
243 #ifndef PLPERL_HAVE_UID_GID
283 #define fstat(fileno, sb) _pgfstat64(fileno, sb)
284 #define stat(path, sb) _pgstat64(path, sb)
285 #define lstat(path, sb) _pglstat64(path, sb)
289 #define S_IRUSR _S_IREAD
292 #define S_IWUSR _S_IWRITE
295 #define S_IXUSR _S_IEXEC
298 #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
325 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
328 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
338 #error "S_ISLNK is already defined"
341 #error "S_IFLNK is already defined"
343 #define S_IFLNK S_IFCHR
344 #define S_ISLNK(m) (((m) & S_IFLNK) == S_IFLNK)
352 #define O_DSYNC 0x0080
372 #define EAGAIN WSAEWOULDBLOCK
374 #define EINTR WSAEINTR
376 #define EMSGSIZE WSAEMSGSIZE
378 #define EAFNOSUPPORT WSAEAFNOSUPPORT
380 #define EWOULDBLOCK WSAEWOULDBLOCK
382 #define ECONNABORTED WSAECONNABORTED
384 #define ECONNRESET WSAECONNRESET
386 #define EINPROGRESS WSAEINPROGRESS
388 #define EISCONN WSAEISCONN
390 #define ENOBUFS WSAENOBUFS
391 #undef EPROTONOSUPPORT
392 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
394 #define ECONNREFUSED WSAECONNREFUSED
396 #define ENOTSOCK WSAENOTSOCK
398 #define EOPNOTSUPP WSAEOPNOTSUPP
400 #define EADDRINUSE WSAEADDRINUSE
402 #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
404 #define EHOSTDOWN WSAEHOSTDOWN
406 #define EHOSTUNREACH WSAEHOSTUNREACH
408 #define ENETDOWN WSAENETDOWN
410 #define ENETRESET WSAENETRESET
412 #define ENETUNREACH WSAENETUNREACH
414 #define ENOTCONN WSAENOTCONN
416 #define ETIMEDOUT WSAETIMEDOUT
424 #define locale_t _locale_t
425 #define tolower_l _tolower_l
426 #define toupper_l _toupper_l
427 #define towlower_l _towlower_l
428 #define towupper_l _towupper_l
429 #define isdigit_l _isdigit_l
430 #define iswdigit_l _iswdigit_l
431 #define isalpha_l _isalpha_l
432 #define iswalpha_l _iswalpha_l
433 #define isalnum_l _isalnum_l
434 #define iswalnum_l _iswalnum_l
435 #define isupper_l _isupper_l
436 #define iswupper_l _iswupper_l
437 #define islower_l _islower_l
438 #define iswlower_l _iswlower_l
439 #define isgraph_l _isgraph_l
440 #define iswgraph_l _iswgraph_l
441 #define isprint_l _isprint_l
442 #define iswprint_l _iswprint_l
443 #define ispunct_l _ispunct_l
444 #define iswpunct_l _iswpunct_l
445 #define isspace_l _isspace_l
446 #define iswspace_l _iswspace_l
447 #define strcoll_l _strcoll_l
448 #define strxfrm_l _strxfrm_l
449 #define wcscoll_l _wcscoll_l
457 #if defined(setlocale)
467 #define setlocale(a,b) pgwin32_setlocale(a,b)
476 #define UNBLOCKED_SIGNAL_QUEUE() (pg_signal_queue & ~pg_signal_mask)
477 #define PG_SIGNAL_COUNT 32
485 #define kill(pid,sig) pgkill(pid,sig)
490 #define socket(af, type, protocol) pgwin32_socket(af, type, protocol)
491 #define bind(s, addr, addrlen) pgwin32_bind(s, addr, addrlen)
492 #define listen(s, backlog) pgwin32_listen(s, backlog)
493 #define accept(s, addr, addrlen) pgwin32_accept(s, addr, addrlen)
494 #define connect(s, name, namelen) pgwin32_connect(s, name, namelen)
495 #define select(n, r, w, e, timeout) pgwin32_select(n, r, w, e, timeout)
496 #define recv(s, buf, len, flags) pgwin32_recv(s, buf, len, flags)
497 #define send(s, buf, len, flags) pgwin32_send(s, buf, len, flags)
500 extern int pgwin32_bind(SOCKET s,
struct sockaddr *addr,
int addrlen);
502 extern SOCKET
pgwin32_accept(SOCKET s,
struct sockaddr *addr,
int *addrlen);
504 extern int pgwin32_select(
int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
const struct timeval *timeout);
520 extern void *
dlopen(
const char *file,
int mode);
521 extern void *
dlsym(
void *handle,
const char *
symbol);
522 extern int dlclose(
void *handle);
526 #define RTLD_GLOBAL 0
536 #define putenv(x) pgwin32_putenv(x)
537 #define setenv(x,y,z) pgwin32_setenv(x,y,z)
538 #define unsetenv(x) pgwin32_unsetenv(x)
551 typedef long ssize_t;
553 typedef __int64 ssize_t;
556 typedef unsigned short mode_t;
564 #if defined(__MINGW32__) || defined(__MINGW64__)
575 #define HAVE_BUGGY_STRTOF 1
579 extern ssize_t
pg_pread(
int fd,
void *
buf,
size_t nbyte, off_t offset);
static PgChecksumMode mode
static int fd(const char *x, int i)
struct timeval it_interval
static void overwrite(PGconn *conn, Oid lobjId, int start, int len)
HANDLE pgwin32_create_signal_listener(pid_t pid)
int pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout)
void pg_queue_signal(int signum)
int pgwin32_send(SOCKET s, const void *buf, int len, int flags)
PGDLLIMPORT int pgwin32_noblock
int pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout)
SOCKET pgwin32_socket(int af, int type, int protocol)
int _pgfstat64(int fileno, struct stat *buf)
int pgwin32_connect(SOCKET s, const struct sockaddr *name, int namelen)
int pgwin32_recv(SOCKET s, char *buf, int len, int flags)
void pgwin32_dispatch_queued_signals(void)
void pgwin32_install_crashdump_handler(void)
BOOL AddUserToTokenDacl(HANDLE hToken)
int _pgstat64(const char *name, struct stat *buf)
int pgwin32_unsetenv(const char *name)
SOCKET pgwin32_accept(SOCKET s, struct sockaddr *addr, int *addrlen)
PGDLLIMPORT volatile int pg_signal_queue
ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset)
void _dosmaperr(unsigned long)
int pgreadlink(const char *path, char *buf, size_t size)
void * dlsym(void *handle, const char *symbol)
DWORD pgwin32_get_file_type(HANDLE hFile)
void * dlopen(const char *file, int mode)
PGDLLIMPORT HANDLE pgwin32_initial_signal_pipe
int pgwin32_bind(SOCKET s, struct sockaddr *addr, int addrlen)
ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset)
PGDLLIMPORT int pg_signal_mask
int pgwin32_putenv(const char *)
int pgwin32_is_service(void)
int pgwin32_ReserveSharedMemoryRegion(HANDLE)
int pgsymlink(const char *oldpath, const char *newpath)
int _pglstat64(const char *name, struct stat *buf)
PGDLLIMPORT HANDLE pgwin32_signal_event
void pgwin32_signal_initialize(void)
int pgwin32_is_admin(void)
char * pgwin32_setlocale(int category, const char *locale)
int pgwin32_setenv(const char *name, const char *value, int overwrite)
int pgkill(int pid, int sig)
int dlclose(void *handle)
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue)
int pgwin32_listen(SOCKET s, int backlog)
int gettimeofday(struct timeval *tp, void *tzp)