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