@ -0,0 +1,33 @@ | |||||
/* | |||||
* stdlib.h compatibility shim | |||||
* Public domain | |||||
*/ | |||||
#include_next <stdlib.h> | |||||
#ifndef LIBCOMPAT_STDLIB_H | |||||
#define LIBCOMPAT_STDLIB_H | |||||
#include <sys/stat.h> | |||||
#include <sys/time.h> | |||||
#include <stdint.h> | |||||
#ifndef HAVE_ARC4RANDOM_BUF | |||||
uint32_t arc4random(void); | |||||
uint32_t arc4random_uniform(uint32_t); | |||||
#endif | |||||
#ifndef HAVE_REALLOCARRAY | |||||
void *reallocarray(void *, size_t, size_t); | |||||
#endif | |||||
#ifndef HAVE_SETPROCTITLE | |||||
void setproctitle(const char *fmt, ...); | |||||
#endif | |||||
#ifndef HAVE_STRTONUM | |||||
long long strtonum(const char *nptr, long long minval, | |||||
long long maxval, const char **errstr); | |||||
#endif | |||||
#endif |
@ -0,0 +1,69 @@ | |||||
/* | |||||
* Public domain | |||||
* string.h compatibility shim | |||||
*/ | |||||
#include_next <string.h> | |||||
#ifndef LIBCOMPAT_STRING_H | |||||
#define LIBCOMPAT_STRING_H | |||||
#include <sys/types.h> | |||||
#if defined(__sun) || defined(__hpux) | |||||
/* Some functions historically defined in string.h were placed in strings.h by | |||||
* SUS. Use the same hack as OS X and FreeBSD use to work around on Solaris and HPUX. | |||||
*/ | |||||
#include <strings.h> | |||||
#endif | |||||
#ifndef HAVE_STRLCPY | |||||
size_t strlcpy(char *dst, const char *src, size_t siz); | |||||
#endif | |||||
#ifndef HAVE_STRLCAT | |||||
size_t strlcat(char *dst, const char *src, size_t siz); | |||||
#endif | |||||
#ifndef HAVE_STRNDUP | |||||
char * strndup(const char *str, size_t maxlen); | |||||
/* the only user of strnlen is strndup, so only build it if needed */ | |||||
#ifndef HAVE_STRNLEN | |||||
size_t strnlen(const char *str, size_t maxlen); | |||||
#endif | |||||
#endif | |||||
#ifndef HAVE_EXPLICIT_BZERO | |||||
void explicit_bzero(void *, size_t); | |||||
#endif | |||||
#ifndef HAVE_TIMINGSAFE_BCMP | |||||
int timingsafe_bcmp(const void *b1, const void *b2, size_t n); | |||||
#endif | |||||
#ifndef HAVE_TIMINGSAFE_MEMCMP | |||||
int timingsafe_memcmp(const void *b1, const void *b2, size_t len); | |||||
#endif | |||||
#ifndef HAVE_MEMMEM | |||||
void * memmem(const void *big, size_t big_len, const void *little, | |||||
size_t little_len); | |||||
#endif | |||||
#ifdef _WIN32 | |||||
#include <errno.h> | |||||
static inline char * | |||||
posix_strerror(int errnum) | |||||
{ | |||||
if (errnum == ECONNREFUSED) { | |||||
return "Connection refused"; | |||||
} | |||||
return strerror(errnum); | |||||
} | |||||
#define strerror(errnum) posix_strerror(errnum) | |||||
#endif | |||||
#endif |
@ -0,0 +1,12 @@ | |||||
/* | |||||
* Public domain | |||||
* sys/socket.h compatibility shim | |||||
*/ | |||||
#include_next <sys/socket.h> | |||||
#ifndef SA_LEN | |||||
#define SA_LEN(X) \ | |||||
(((struct sockaddr*)(X))->sa_family == AF_INET ? sizeof(struct sockaddr_in) : \ | |||||
((struct sockaddr*)(X))->sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr)) | |||||
#endif |
@ -0,0 +1,10 @@ | |||||
/* | |||||
* Public domain | |||||
* sys/time.h compatibility shim | |||||
*/ | |||||
#include_next <sys/time.h> | |||||
#include <stdint.h> | |||||
int adjfreq(const int64_t *freq, int64_t *oldfreq); |
@ -0,0 +1,25 @@ | |||||
/* | |||||
* Public domain | |||||
* sys/types.h compatibility shim | |||||
*/ | |||||
#include_next <sys/types.h> | |||||
#ifndef LIBCRYPTOCOMPAT_SYS_TYPES_H | |||||
#define LIBCRYPTOCOMPAT_SYS_TYPES_H | |||||
#include <stdint.h> | |||||
#ifdef __MINGW32__ | |||||
#include <_bsd_types.h> | |||||
#endif | |||||
#if !defined(HAVE_ATTRIBUTE__DEAD) && !defined(__dead) | |||||
#define __dead | |||||
#endif | |||||
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__) | |||||
# define __bounded__(x, y, z) | |||||
#endif | |||||
#endif |