|  | @@ -43,6 +43,10 @@
 | 
	
		
			
				|  |  |  #ifndef __STDC_LIMIT_MACROS
 | 
	
		
			
				|  |  |  #define __STDC_LIMIT_MACROS   /* C++ wants that for INT64_MAX */
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | +#ifdef __sun
 | 
	
		
			
				|  |  | +#define __EXTENSIONS__	/* to expose flockfile and friends in stdio.h */ 
 | 
	
		
			
				|  |  | +#define __inline inline	/* not recognized on older compiler versions */
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #if defined (_MSC_VER)
 | 
	
	
		
			
				|  | @@ -243,10 +247,6 @@ typedef long off_t;
 | 
	
		
			
				|  |  |  #define USE_TIMERS
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#if !defined(va_copy)
 | 
	
		
			
				|  |  | -#define va_copy(x, y) x = y
 | 
	
		
			
				|  |  | -#endif /* !va_copy MINGW #defines va_copy */
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  #if !defined(fileno)
 | 
	
		
			
				|  |  |  #define fileno(x) _fileno(x)
 | 
	
		
			
				|  |  |  #endif /* !fileno MINGW #defines fileno */
 | 
	
	
		
			
				|  | @@ -371,8 +371,30 @@ typedef unsigned short int in_port_t;
 | 
	
		
			
				|  |  |  typedef int SOCKET;
 | 
	
		
			
				|  |  |  #define WINCDECL
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#if defined(__hpux)
 | 
	
		
			
				|  |  | +/* HPUX 11 does not have monotonic, fall back to realtime */
 | 
	
		
			
				|  |  | +#ifndef CLOCK_MONOTONIC
 | 
	
		
			
				|  |  | +#define CLOCK_MONOTONIC CLOCK_REALTIME
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* HPUX defines socklen_t incorrectly as size_t which is 64bit on
 | 
	
		
			
				|  |  | + * Itanium.  Without defining _XOPEN_SOURCE or _XOPEN_SOURCE_EXTENDED
 | 
	
		
			
				|  |  | + * the prototypes use int* rather than socklen_t* which matches the
 | 
	
		
			
				|  |  | + * actual library expectation.  When called with the wrong size arg
 | 
	
		
			
				|  |  | + * accept() returns a zero client inet addr and check_acl() always
 | 
	
		
			
				|  |  | + * fails.  Since socklen_t is widely used below, just force replace
 | 
	
		
			
				|  |  | + * their typedef with int. - DTL
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define socklen_t int
 | 
	
		
			
				|  |  | +#endif /* hpux */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #endif /* End of Windows and UNIX specific includes */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* va_copy should always be a macro, C99 and C++11 - DTL */
 | 
	
		
			
				|  |  | +#ifndef va_copy
 | 
	
		
			
				|  |  | +#define va_copy(x, y) x = y
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #ifdef _WIN32
 | 
	
		
			
				|  |  |  static CRITICAL_SECTION global_log_file_lock;
 | 
	
		
			
				|  |  |  static DWORD pthread_self(void)
 | 
	
	
		
			
				|  | @@ -1026,6 +1048,8 @@ void mg_set_thread_name(const char* name)
 | 
	
		
			
				|  |  |  #elif defined(BSD) || defined(__FreeBSD__) || defined(__OpenBSD__)
 | 
	
		
			
				|  |  |     /* BSD (TODO: test) */
 | 
	
		
			
				|  |  |     pthread_set_name_np(pthread_self(), threadName);
 | 
	
		
			
				|  |  | +#elif defined(_AIX) || defined(__hpux) || defined(__sun)
 | 
	
		
			
				|  |  | +   /* no name function */
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  |     /* POSIX */
 | 
	
		
			
				|  |  |     (void)pthread_setname_np(pthread_self(), threadName);
 |