1 /*
2  * Copyright (c) 1999-2003 Damien Miller.  All rights reserved.
3  * Copyright (c) 2003 Ben Lindstrom. All rights reserved.
4  * Copyright (c) 2002 Tim Rice.  All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #ifndef _OPENBSD_COMPAT_H
28 #define _OPENBSD_COMPAT_H
29 
30 #include "includes.h"
31 
32 #include <sys/types.h>
33 #include <pwd.h>
34 
35 #include <sys/socket.h>
36 
37 #ifndef __DragonFly__
38 #include <stddef.h>  /* for wchar_t */
39 #endif
40 
41 /* OpenBSD function replacements */
42 #ifndef __DragonFly__
43 #include "base64.h"
44 #include "sigact.h"
45 #include "readpassphrase.h"
46 #include "vis.h"
47 #endif
48 #include "getrrsetbyname.h"
49 #ifndef __DragonFly__
50 #include "sha1.h"
51 #include "sha2.h"
52 #include "rmd160.h"
53 #include "md5.h"
54 #endif
55 #include "blf.h"
56 
57 #if !defined(HAVE_REALPATH) || defined(BROKEN_REALPATH)
58 /*
59  * glibc's FORTIFY_SOURCE can redefine this and prevent us picking up the
60  * compat version.
61  */
62 # ifdef BROKEN_REALPATH
63 #  define realpath(x, y) _ssh_compat_realpath(x, y)
64 # endif
65 
66 char *realpath(const char *path, char *resolved);
67 #endif
68 
69 #ifndef HAVE_FMT_SCALED
70 #define	FMT_SCALED_STRSIZE	7
71 int	fmt_scaled(long long number, char *result);
72 #endif
73 
74 #ifndef HAVE_SCAN_SCALED
75 int	scan_scaled(char *, long long *);
76 #endif
77 
78 /* Home grown routines */
79 #include "bsd-misc.h"
80 #ifndef __DragonFly__
81 #include "bsd-setres_id.h"
82 #endif
83 #include "bsd-signal.h"
84 #ifndef __DragonFly__
85 #include "bsd-statvfs.h"
86 #include "bsd-waitpid.h"
87 #include "bsd-poll.h"
88 #endif
89 
90 /*
91  * Some platforms unconditionally undefine va_copy() so we define VA_COPY()
92  * instead.  This is known to be the case on at least some configurations of
93  * AIX with the xlc compiler.
94  */
95 #ifndef VA_COPY
96 #  define VA_COPY(dest, src) va_copy(dest, src)
97 #endif
98 
99 #ifndef HAVE_BCRYPT_PBKDF
100 int	bcrypt_pbkdf(const char *, size_t, const u_int8_t *, size_t,
101     u_int8_t *, size_t, unsigned int);
102 #endif
103 
104 char *xcrypt(const char *password, const char *salt);
105 char *shadow_pw(struct passwd *pw);
106 
107 #ifndef __DragonFly__
108 /* rfc2553 socket API replacements */
109 #include "fake-rfc2553.h"
110 #endif
111 
112 #ifndef __DragonFly__
113 /* Routines for a single OS platform */
114 #include "bsd-cygwin_util.h"
115 #endif
116 
117 #ifndef __DragonFly__
118 #include "port-aix.h"
119 #include "port-irix.h"
120 #include "port-linux.h"
121 #include "port-solaris.h"
122 #endif
123 
124 #include "port-net.h"
125 #ifndef __DragonFly__
126 #include "port-uw.h"
127 #endif
128 
129 #endif /* _OPENBSD_COMPAT_H */
130