_BUF 1024

#define LOCK_SH 1
#define LOCK_EX 2
#define LOCK_NB 4
#define LOCK_UN 8
#ifndef EWOULDBLOCK
#define EWOULDBLOCK 10035 /* EBASEERR + 35 (winsock.h) */
#endif

#ifdef popen
#undef popen
#define popen    mypopen
#endif
#ifdef pclose
#undef pclose
#define pclose   mypclose
#endif

/* #undef va_start */
/* #undef va_end */

#ifdef accept
#undef accept
#endif
#define accept myaccept

#ifdef bind
#undef bind
#endif
#define bind mybind

#ifdef connect
#undef connect
#endif
#define connect myconnect

#undef FD_SET
#define FD_SET myfdset

#undef FD_CLR
#define FD_CLR myfdclr

#undef FD_ISSET
#define FD_ISSET myfdisset

#undef select
#define select myselect

#ifdef getpeername
#undef getpeername
#endif
#define getpeername mygetpeername

#ifdef getsockname
#undef getsockname
#endif
#define getsockname mygetsockname

#ifdef getsockopt
#undef getsockopt
#endif
#define getsockopt mygetsockopt

#ifdef ioctlsocket
#undef ioctlsocket
#endif
#define ioctlsocket myioctlsocket

#ifdef listen
#undef listen
#endif
#define listen mylisten

#ifdef recv
#undef recv
#endif
#define recv myrecv

#ifdef recvfrom
#undef recvfrom
#endif
#define recvfrom myrecvfrom

#ifdef send
#undef send
#endif
#define send mysend

#ifdef sendto
#undef sendto
#endif
#define sendto mysendto

#ifdef setsockopt
#undef setsockopt
#endif
#define setsockopt mysetsockopt

#ifdef shutdown
#undef shutdown
#endif
#define shutdown myshutdown

#ifdef socket
#undef socket
#endif
#define socket mysocket

#ifdef gethostbyaddr
#undef gethostbyaddr
#endif
#define gethostbyaddr mygethostbyaddr

#ifdef gethostbyname
#undef gethostbyname
#endif
#define gethostbyname mygethostbyname

#ifdef gethostname
#undef gethostname
#endif
#define gethostname mygethostname

#ifdef getprotobyname
#undef getprotobyname
#endif
#define getprotobyname mygetprotobyname

#ifdef getprotobynumber
#undef getprotobynumber
#endif
#define getprotobynumber mygetprotobynumber

#ifdef getservbyname
#undef getservbyname
#endif
#define getservbyname mygetservbyname

#ifdef getservbyport
#undef getservbyport
#endif
#define getservbyport mygetservbyport

#ifdef get_osfhandle
#undef get_osfhandle
#endif
#define get_osfhandle myget_osfhandle

#ifdef getcwd
#undef getcwd
#endif
#define getcwd win32_getcwd

#ifdef getenv
#undef getenv
#endif
#define getenv win32_getenv

#ifdef rename
#undef rename
#endif
#define rename myrename

struct tms {
	long	tms_utime;
	long	tms_stime;
	long	tms_cutime;
	long	tms_cstime;
};

#ifdef times
#undef times
#endif
#define times mytimes

/* thread stuff */
HANDLE GetCurrentThreadHandle(void);
int win32_main_context(int arg, void (*handler)(int));
int win32_sleep(unsigned long msec);
void win32_enter_syscall(void);
void win32_leave_syscall(void);
void win32_disable_interrupt(void);
void win32_enable_interrupt(void);
int  win32_close(int);
int  win32_fclose(FILE*);
#define Sleep(msec) (void)win32_sleep(msec)

/*
== ***CAUTION***
Since this function is very dangerous, ((*NEVER*))
* lock any HANDLEs(i.e. Mutex, Semaphore, CriticalSection and so on) or,
* use anything like TRAP_BEG...TRAP_END block structure,
in asynchronous_func_t.
*/
typedef DWORD (*asynchronous_func_t)(DWORD self, int argc, DWORD* argv);
DWORD win32_asynchronize(asynchronous_func_t func, DWORD self, int argc, DWORD* argv, DWORD intrval);

#endif
