1ba9bdd8bSchristos /* 2*2d40c451Schristos * Copyright (c) 2018-2021 Yubico AB. All rights reserved. 3ba9bdd8bSchristos * Use of this source code is governed by a BSD-style 4ba9bdd8bSchristos * license that can be found in the LICENSE file. 5*2d40c451Schristos * SPDX-License-Identifier: BSD-2-Clause 6ba9bdd8bSchristos */ 7ba9bdd8bSchristos 8ba9bdd8bSchristos #ifndef _OPENBSD_COMPAT_H 9ba9bdd8bSchristos #define _OPENBSD_COMPAT_H 10ba9bdd8bSchristos 11ba9bdd8bSchristos #if defined(_MSC_VER) 12ba9bdd8bSchristos #include "types.h" 13ba9bdd8bSchristos #endif 14ba9bdd8bSchristos 15ba9bdd8bSchristos #if defined(HAVE_ENDIAN_H) 16ba9bdd8bSchristos #include <endian.h> 17ba9bdd8bSchristos #endif 18ba9bdd8bSchristos 19ba9bdd8bSchristos #if defined(__APPLE__) && !defined(HAVE_ENDIAN_H) 20ba9bdd8bSchristos #include <libkern/OSByteOrder.h> 21ba9bdd8bSchristos #define be16toh(x) OSSwapBigToHostInt16((x)) 22ba9bdd8bSchristos #define htobe16(x) OSSwapHostToBigInt16((x)) 23ba9bdd8bSchristos #define be32toh(x) OSSwapBigToHostInt32((x)) 24*2d40c451Schristos #define htobe32(x) OSSwapHostToBigInt32((x)) 2595dbdf32Schristos #define htole32(x) OSSwapHostToLittleInt32((x)) 2695dbdf32Schristos #define htole64(x) OSSwapHostToLittleInt64((x)) 27ba9bdd8bSchristos #endif /* __APPLE__ && !HAVE_ENDIAN_H */ 28ba9bdd8bSchristos 29ba9bdd8bSchristos #if defined(_WIN32) && !defined(HAVE_ENDIAN_H) 3095dbdf32Schristos #include <stdint.h> 31ba9bdd8bSchristos #include <winsock2.h> 32ba9bdd8bSchristos #if !defined(_MSC_VER) 33ba9bdd8bSchristos #include <sys/param.h> 34ba9bdd8bSchristos #endif 35ba9bdd8bSchristos #define be16toh(x) ntohs((x)) 36ba9bdd8bSchristos #define htobe16(x) htons((x)) 37ba9bdd8bSchristos #define be32toh(x) ntohl((x)) 38*2d40c451Schristos #define htobe32(x) htonl((x)) 3995dbdf32Schristos uint32_t htole32(uint32_t); 4095dbdf32Schristos uint64_t htole64(uint64_t); 41ba9bdd8bSchristos #endif /* _WIN32 && !HAVE_ENDIAN_H */ 42ba9bdd8bSchristos 43*2d40c451Schristos #if (defined(__FreeBSD__) || defined(__MidnightBSD__)) && !defined(HAVE_ENDIAN_H) 44ba9bdd8bSchristos #include <sys/endian.h> 45ba9bdd8bSchristos #endif 46ba9bdd8bSchristos 47ba9bdd8bSchristos #include <stdlib.h> 4895dbdf32Schristos #include <string.h> 49ba9bdd8bSchristos 50ba9bdd8bSchristos #if !defined(HAVE_STRLCAT) 51ba9bdd8bSchristos size_t strlcat(char *, const char *, size_t); 52ba9bdd8bSchristos #endif 53ba9bdd8bSchristos 54ba9bdd8bSchristos #if !defined(HAVE_STRLCPY) 55ba9bdd8bSchristos size_t strlcpy(char *, const char *, size_t); 56ba9bdd8bSchristos #endif 57ba9bdd8bSchristos 58*2d40c451Schristos #if !defined(HAVE_STRSEP) 59*2d40c451Schristos char *strsep(char **, const char *); 60*2d40c451Schristos #endif 61*2d40c451Schristos 62ba9bdd8bSchristos #if !defined(HAVE_RECALLOCARRAY) 63ba9bdd8bSchristos void *recallocarray(void *, size_t, size_t, size_t); 64ba9bdd8bSchristos #endif 65ba9bdd8bSchristos 66ba9bdd8bSchristos #if !defined(HAVE_EXPLICIT_BZERO) 67ba9bdd8bSchristos void explicit_bzero(void *, size_t); 68ba9bdd8bSchristos #endif 69ba9bdd8bSchristos 7095dbdf32Schristos #if !defined(HAVE_FREEZERO) 7195dbdf32Schristos void freezero(void *, size_t); 7295dbdf32Schristos #endif 7395dbdf32Schristos 74ba9bdd8bSchristos #if !defined(HAVE_GETPAGESIZE) 75ba9bdd8bSchristos int getpagesize(void); 76ba9bdd8bSchristos #endif 77ba9bdd8bSchristos 78ba9bdd8bSchristos #if !defined(HAVE_TIMINGSAFE_BCMP) 79ba9bdd8bSchristos int timingsafe_bcmp(const void *, const void *, size_t); 80ba9bdd8bSchristos #endif 81ba9bdd8bSchristos 82ba9bdd8bSchristos #if !defined(HAVE_READPASSPHRASE) 83ba9bdd8bSchristos #include "readpassphrase.h" 84ba9bdd8bSchristos #else 85ba9bdd8bSchristos #include <readpassphrase.h> 86ba9bdd8bSchristos #endif 87ba9bdd8bSchristos 8895dbdf32Schristos #include <openssl/opensslv.h> 8995dbdf32Schristos 90ba9bdd8bSchristos #if !defined(HAVE_ERR_H) 91ba9bdd8bSchristos #include "err.h" 92ba9bdd8bSchristos #else 93ba9bdd8bSchristos #include <err.h> 94ba9bdd8bSchristos #endif 95ba9bdd8bSchristos 96ba9bdd8bSchristos #if !defined(HAVE_GETOPT) 97ba9bdd8bSchristos #include "getopt.h" 98ba9bdd8bSchristos #else 99ba9bdd8bSchristos #include <unistd.h> 100ba9bdd8bSchristos #endif 101ba9bdd8bSchristos 102ba9bdd8bSchristos #if !defined(HAVE_GETLINE) 103ba9bdd8bSchristos #include <stdio.h> 104ba9bdd8bSchristos ssize_t getline(char **, size_t *, FILE *); 105ba9bdd8bSchristos #endif 106ba9bdd8bSchristos 10795dbdf32Schristos #if defined(_MSC_VER) 10895dbdf32Schristos #define strerror_r(e, b, l) strerror_s((b), (l), (e)) 10995dbdf32Schristos #endif 11095dbdf32Schristos 1111fc1e710Schristos #include "time.h" 1121fc1e710Schristos 11395dbdf32Schristos #if !defined(HAVE_POSIX_IOCTL) 11495dbdf32Schristos #define IOCTL_REQ(x) (x) 11595dbdf32Schristos #else 11695dbdf32Schristos #define IOCTL_REQ(x) ((int)(x)) 11795dbdf32Schristos #endif 11895dbdf32Schristos 119*2d40c451Schristos #if !defined(HAVE_ASPRINTF) 120*2d40c451Schristos int asprintf(char **, const char *, ...); 121*2d40c451Schristos #endif 122*2d40c451Schristos 123ba9bdd8bSchristos #endif /* !_OPENBSD_COMPAT_H */ 124