X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fcompat.c;h=cc3132481cf376a3cdb1d2681039e0c93b70079c;hb=6f22223d9d80a148babc60a6483dd50c74cce723;hp=d1c253f6b2ebf263287180f0515d733d5219c603;hpb=ed506a25fb6056b4a226c88591d259015c61be4b;p=srvx.git diff --git a/src/compat.c b/src/compat.c index d1c253f..cc31324 100644 --- a/src/compat.c +++ b/src/compat.c @@ -16,7 +16,7 @@ #endif #if !defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME) -extern gettimeofday(struct timeval * tv, struct timezone * tz); +extern int gettimeofday(struct timeval * tv, struct timezone * tz) { if (!tv) { @@ -30,13 +30,16 @@ extern gettimeofday(struct timeval * tv, struct timezone * tz); tv->tv_sec = tb.time; tv->tv_usec = ((long)tb.millitm)*1000; - if (tz) - { - tz->tz_minuteswest = 0; - tz->tz_dsttime = 0; - } - return 0; + return 0; (void)tz; +} +#endif + +#ifndef HAVE_GETLOCALTIME_R +extern struct tm *localtime_r(const time_t *timep, struct tm *result) +{ + memcpy(result, localtime(timep), sizeof(*result)); + return result; } #endif @@ -416,3 +419,48 @@ void freeaddrinfo(struct addrinfo *res) } #endif + +#ifndef HAVE_GAI_STRERROR +const char *gai_strerror(int errcode) +{ + switch (errcode) { +#if defined(EAI_ADDRFAMILY) + case EAI_ADDRFAMILY: return "Address family not supported."; +#endif +#if defined(EAI_AGAIN) + case EAI_AGAIN: return "A temporary failure occurred during name resolution."; +#endif +#if defined(EAI_BADFLAGS) + case EAI_BADFLAGS: return "Invalid flags hint."; +#endif +#if defined(EAI_FAIL) + case EAI_FAIL: return "An unrecoverable failure occurred during name resolution."; +#endif +#if defined(EAI_FAMILY) + case EAI_FAMILY: return "Address family not supported."; +#endif +#if defined(EAI_MEMORY) + case EAI_MEMORY: return "Not enough memory."; +#endif +#if defined(EAI_NODATA) + case EAI_NODATA: return "The name resolves to an empty record."; +#endif +#if defined(EAI_NONAME) + case EAI_NONAME: return "The name does not resolve."; +#endif +#if defined(EAI_OVERFLOW) + case EAI_OVERFLOW: return "Resolved name was too large for buffer."; +#endif +#if defined(EAI_SERVICE) + case EAI_SERVICE: return "The socket type does not support the requested service."; +#endif +#if defined(EAI_SOCKTYPE) + case EAI_SOCKTYPE: return "Unknown socket type."; +#endif +#if defined(EAI_SYSTEM) + case EAI_SYSTEM: return "A system error occurred during name resolution."; +#endif + } + return "Unknown GAI_* error"; +} +#endif