made some conditional changes to mod-sys.c
This commit is contained in:
		@ -69,6 +69,24 @@
 | 
			
		||||
#define FLOCK_GET (1 << 30)
 | 
			
		||||
#define FLOCK_WAIT (1 << 31)
 | 
			
		||||
 | 
			
		||||
#if defined(SOCK_CLOEXEC)
 | 
			
		||||
#	define X_SOCK_CLOEXEC SOCK_CLOEXEC
 | 
			
		||||
#else
 | 
			
		||||
#	define X_SOCK_CLOEXEC 0 /* 0 is effectless for a bit flag */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(SOCK_CLOEXEC)
 | 
			
		||||
#	define X_SOCK_CLOEXEC SOCK_NONBLOCK
 | 
			
		||||
#else
 | 
			
		||||
#	define X_SOCK_NONBLOCK 0 /* 0 is effectless for a bit flag */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(SO_REUSEPORT)
 | 
			
		||||
#	define X_SO_REUSEPORT SO_REUSEPORT
 | 
			
		||||
#else
 | 
			
		||||
#	define X_SO_REUSEPORT 9999999 /* this must be a non-existent code */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * IMPLEMENTATION NOTE:
 | 
			
		||||
 *   - hard failure only if it cannot make a final return value. (e.g. fnc_errmsg, fnc_fork, fnc_getpid)
 | 
			
		||||
@ -1973,15 +1991,19 @@ static int fnc_sleep (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
 | 
			
		||||
	rx = sleep(nt.sec);
 | 
			
		||||
	#endif
 | 
			
		||||
#elif defined(HAVE_NANOSLEEP)
 | 
			
		||||
	struct timespec req;
 | 
			
		||||
	req.tv_sec = nt.sec;
 | 
			
		||||
	req.tv_nsec = nt.nsec;
 | 
			
		||||
	rx = nanosleep(&req, HAWK_NULL);
 | 
			
		||||
	{
 | 
			
		||||
		struct timespec req;
 | 
			
		||||
		req.tv_sec = nt.sec;
 | 
			
		||||
		req.tv_nsec = nt.nsec;
 | 
			
		||||
		rx = nanosleep(&req, HAWK_NULL);
 | 
			
		||||
	}
 | 
			
		||||
#elif defined(HAVE_SELECT)
 | 
			
		||||
	struct timeval req;
 | 
			
		||||
	req.tv_sec = nt.sec;
 | 
			
		||||
	req.tv_usec = HAWK_NSEC_TO_USEC(nt.nsec);
 | 
			
		||||
	rx = select(0, HAWK_NULL, HAWK_NULL, HAWK_NULL, &req);
 | 
			
		||||
	{
 | 
			
		||||
		struct timeval req;
 | 
			
		||||
		req.tv_sec = nt.sec;
 | 
			
		||||
		req.tv_usec = HAWK_NSEC_TO_USEC(nt.nsec);
 | 
			
		||||
		rx = select(0, HAWK_NULL, HAWK_NULL, HAWK_NULL, &req);
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	/* no high-resolution sleep() is available */
 | 
			
		||||
	rx = sleep(nt.sec);
 | 
			
		||||
@ -3935,11 +3957,11 @@ static int fnc_accept (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
 | 
			
		||||
		fd_flags = fcntl(fd, F_GETFD, 0);
 | 
			
		||||
		if (fd_flags >= 0)
 | 
			
		||||
		{
 | 
			
		||||
		#if defined(FD_CLOEXEC)
 | 
			
		||||
			if (flags & SOCK_NONBLOCK) fd_flags |= FD_CLOEXEC;
 | 
			
		||||
		#if defined(FD_CLOEXEC) && defined(SOCK_CLOEXEC)
 | 
			
		||||
			if (flags & SOCK_CLOEXEC) fd_flags |= FD_CLOEXEC;
 | 
			
		||||
		#endif
 | 
			
		||||
		#if defined(O_NONBLOCK)
 | 
			
		||||
			if (flags & SOCK_CLOEXEC) fd_flags |= O_NONBLOCK;
 | 
			
		||||
		#if defined(O_NONBLOCK) && defined(SOCK_NONBLOCK)
 | 
			
		||||
			if (flags & SOCK_NONBLOCK) fd_flags |= O_NONBLOCK;
 | 
			
		||||
		#endif
 | 
			
		||||
			fcntl(fd, F_SETFD, fd_flags);
 | 
			
		||||
		}
 | 
			
		||||
@ -4694,9 +4716,9 @@ static inttab_t inttab[] =
 | 
			
		||||
	{ HAWK_T("SIGSEGV"),       { SIGSEGV } },
 | 
			
		||||
	{ HAWK_T("SIGTERM"),       { SIGTERM } },
 | 
			
		||||
 | 
			
		||||
	{ HAWK_T("SOCK_CLOEXEC"),  { SOCK_CLOEXEC } },
 | 
			
		||||
	{ HAWK_T("SOCK_CLOEXEC"),  { X_SOCK_CLOEXEC } },
 | 
			
		||||
	{ HAWK_T("SOCK_DGRAM"),    { SOCK_DGRAM } },
 | 
			
		||||
	{ HAWK_T("SOCK_NONBLOCK"), { SOCK_NONBLOCK } },
 | 
			
		||||
	{ HAWK_T("SOCK_NONBLOCK"), { X_SOCK_NONBLOCK } },
 | 
			
		||||
	{ HAWK_T("SOCK_STREAM"),   { SOCK_STREAM } },
 | 
			
		||||
 | 
			
		||||
	{ HAWK_T("SOL_SOCKET"),    { SOL_SOCKET } },
 | 
			
		||||
@ -4707,9 +4729,7 @@ static inttab_t inttab[] =
 | 
			
		||||
	{ HAWK_T("SO_RCVBUF"),     { SO_RCVBUF } },
 | 
			
		||||
	{ HAWK_T("SO_RCVTIMEO"),   { SO_RCVTIMEO } },
 | 
			
		||||
	{ HAWK_T("SO_REUSEADDR"),  { SO_REUSEADDR } },
 | 
			
		||||
#if defined(SO_REUSEPORT)
 | 
			
		||||
	{ HAWK_T("SO_REUSEPORT"),  { SO_REUSEPORT } },
 | 
			
		||||
#endif
 | 
			
		||||
	{ HAWK_T("SO_REUSEPORT"),  { X_SO_REUSEPORT } },
 | 
			
		||||
	{ HAWK_T("SO_SNDBUF"),     { SO_SNDBUF } },
 | 
			
		||||
	{ HAWK_T("SO_SNDTIMEO"),   { SO_SNDTIMEO } },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user