11305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* $Id: openbsd-compat.h,v 1.51 2010/10/07 10:25:29 djm Exp $ */ 21305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 31305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* 41305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Copyright (c) 1999-2003 Damien Miller. All rights reserved. 51305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Copyright (c) 2003 Ben Lindstrom. All rights reserved. 61305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Copyright (c) 2002 Tim Rice. All rights reserved. 71305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * 81305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Redistribution and use in source and binary forms, with or without 91305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * modification, are permitted provided that the following conditions 101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * are met: 111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * 1. Redistributions of source code must retain the above copyright 121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * notice, this list of conditions and the following disclaimer. 131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * 2. Redistributions in binary form must reproduce the above copyright 141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * notice, this list of conditions and the following disclaimer in the 151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * documentation and/or other materials provided with the distribution. 161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * 171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood */ 281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef _OPENBSD_COMPAT_H 301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define _OPENBSD_COMPAT_H 311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "includes.h" 331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <sys/types.h> 351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <pwd.h> 361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <sys/socket.h> 381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* OpenBSD function replacements */ 401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "base64.h" 411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "sigact.h" 421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "glob.h" 431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "readpassphrase.h" 441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "vis.h" 451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "getrrsetbyname.h" 461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "sha2.h" 471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_BASENAME 491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *basename(const char *path); 501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_BINDRESVPORT_SA 531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint bindresvport_sa(int sd, struct sockaddr *sa); 541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_CLOSEFROM 571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid closefrom(int); 581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_GETCWD 611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *getcwd(char *pt, size_t size); 621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if !defined(HAVE_REALPATH) || defined(BROKEN_REALPATH) 651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *realpath(const char *path, char *resolved); 661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_RRESVPORT_AF 691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint rresvport_af(int *alport, sa_family_t af); 701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRLCPY 731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* #include <sys/types.h> XXX Still needed? */ 741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodsize_t strlcpy(char *dst, const char *src, size_t siz); 751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRLCAT 781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* #include <sys/types.h> XXX Still needed? */ 791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodsize_t strlcat(char *dst, const char *src, size_t siz); 801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_SETENV 831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint setenv(register const char *name, register const char *value, int rewrite); 841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRMODE 871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid strmode(int mode, char *p); 881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRPTIME 911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <time.h> 921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *strptime(const char *buf, const char *fmt, struct tm *tm); 931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if !defined(HAVE_MKDTEMP) || defined(HAVE_STRICT_MKSTEMP) 961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint mkstemps(char *path, int slen); 971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint mkstemp(char *path); 981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *mkdtemp(char *path); 991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_DAEMON 1021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint daemon(int nochdir, int noclose); 1031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_DIRNAME 1061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *dirname(const char *path); 1071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_FMT_SCALED 1101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define FMT_SCALED_STRSIZE 7 1111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint fmt_scaled(long long number, char *result); 1121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if defined(BROKEN_INET_NTOA) || !defined(HAVE_INET_NTOA) 1151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *inet_ntoa(struct in_addr in); 1161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_INET_NTOP 1191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodconst char *inet_ntop(int af, const void *src, char *dst, size_t size); 1201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_INET_ATON 1231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint inet_aton(const char *cp, struct in_addr *addr); 1241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRSEP 1271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *strsep(char **stringp, const char *delim); 1281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_SETPROCTITLE 1311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid setproctitle(const char *fmt, ...); 1321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid compat_init_setproctitle(int argc, char *argv[]); 1331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_GETGROUPLIST 1361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* #include <grp.h> XXXX Still needed ? */ 1371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint getgrouplist(const char *, gid_t, gid_t *, int *); 1381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if !defined(HAVE_GETOPT) || !defined(HAVE_GETOPT_OPTRESET) 1411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint BSDgetopt(int argc, char * const *argv, const char *opts); 1421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if defined(HAVE_DECL_WRITEV) && HAVE_DECL_WRITEV == 0 1451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# include <sys/types.h> 1461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# include <sys/uio.h> 1471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint writev(int, struct iovec *, int); 1481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Home grown routines */ 1511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "bsd-misc.h" 1521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "bsd-statvfs.h" 1531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "bsd-waitpid.h" 1541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "bsd-poll.h" 1551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_GETPEEREID 1571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint getpeereid(int , uid_t *, gid_t *); 1581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_ARC4RANDOM 1611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodunsigned int arc4random(void); 1621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid arc4random_stir(void); 1631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif /* !HAVE_ARC4RANDOM */ 1641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_ARC4RANDOM_BUF 1661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid arc4random_buf(void *, size_t); 1671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_ARC4RANDOM_UNIFORM 1701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodu_int32_t arc4random_uniform(u_int32_t); 1711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_ASPRINTF 1741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint asprintf(char **, const char *, ...); 1751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_OPENPTY 1781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# include <sys/ioctl.h> /* for struct winsize */ 1791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint openpty(int *, int *, char *, struct termios *, struct winsize *); 1801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif /* HAVE_OPENPTY */ 1811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* #include <sys/types.h> XXX needed? For size_t */ 1831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_SNPRINTF 1851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint snprintf(char *, size_t, SNPRINTF_CONST char *, ...); 1861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRTOLL 1891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodlong long strtoll(const char *, char **, int); 1901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STRTONUM 1931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodlong long strtonum(const char *, long long, long long, const char **); 1941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 1961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if !defined(HAVE_VASPRINTF) || !defined(HAVE_VSNPRINTF) 1971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# include <stdarg.h> 1981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 1991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_VASPRINTF 2011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint vasprintf(char **, const char *, va_list); 2021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 2031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_VSNPRINTF 2051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint vsnprintf(char *, size_t, const char *, va_list); 2061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 2071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_USER_FROM_UID 2091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *user_from_uid(uid_t, int); 2101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 2111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_GROUP_FROM_GID 2131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *group_from_gid(gid_t, int); 2141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 2151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_TIMINGSAFE_BCMP 2171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint timingsafe_bcmp(const void *, const void *, size_t); 2181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif 2191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid *xmmap(size_t size); 2211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *xcrypt(const char *password, const char *salt); 2221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodchar *shadow_pw(struct passwd *pw); 2231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* rfc2553 socket API replacements */ 2251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "fake-rfc2553.h" 2261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Routines for a single OS platform */ 2281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "bsd-cray.h" 2291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "bsd-cygwin_util.h" 2301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "port-aix.h" 2321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "port-irix.h" 2331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "port-linux.h" 2341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "port-solaris.h" 2351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "port-tun.h" 2361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "port-uw.h" 2371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 2381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif /* _OPENBSD_COMPAT_H */ 239