xref: /freebsd/crypto/openssh/openbsd-compat/bsd-misc.h (revision 47dd1d1b619cc035b82b49a91a25544309ff95ae)
183d2307dSDag-Erling Smørgrav /*
2efcad6b7SDag-Erling Smørgrav  * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org>
383d2307dSDag-Erling Smørgrav  *
4efcad6b7SDag-Erling Smørgrav  * Permission to use, copy, modify, and distribute this software for any
5efcad6b7SDag-Erling Smørgrav  * purpose with or without fee is hereby granted, provided that the above
6efcad6b7SDag-Erling Smørgrav  * copyright notice and this permission notice appear in all copies.
783d2307dSDag-Erling Smørgrav  *
8efcad6b7SDag-Erling Smørgrav  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9efcad6b7SDag-Erling Smørgrav  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10efcad6b7SDag-Erling Smørgrav  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11efcad6b7SDag-Erling Smørgrav  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12efcad6b7SDag-Erling Smørgrav  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13efcad6b7SDag-Erling Smørgrav  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14efcad6b7SDag-Erling Smørgrav  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1583d2307dSDag-Erling Smørgrav  */
1683d2307dSDag-Erling Smørgrav 
1783d2307dSDag-Erling Smørgrav #ifndef _BSD_MISC_H
1883d2307dSDag-Erling Smørgrav #define _BSD_MISC_H
1983d2307dSDag-Erling Smørgrav 
20d95e11bfSDag-Erling Smørgrav #include "includes.h"
2183d2307dSDag-Erling Smørgrav 
22d95e11bfSDag-Erling Smørgrav char *ssh_get_progname(char *);
2383d2307dSDag-Erling Smørgrav 
2483d2307dSDag-Erling Smørgrav #ifndef HAVE_SETSID
2583d2307dSDag-Erling Smørgrav #define setsid() setpgrp(0, getpid())
2683d2307dSDag-Erling Smørgrav #endif /* !HAVE_SETSID */
2783d2307dSDag-Erling Smørgrav 
2883d2307dSDag-Erling Smørgrav #ifndef HAVE_SETENV
29d95e11bfSDag-Erling Smørgrav int setenv(const char *, const char *, int);
3083d2307dSDag-Erling Smørgrav #endif /* !HAVE_SETENV */
3183d2307dSDag-Erling Smørgrav 
3283d2307dSDag-Erling Smørgrav #ifndef HAVE_SETLOGIN
33d95e11bfSDag-Erling Smørgrav int setlogin(const char *);
3483d2307dSDag-Erling Smørgrav #endif /* !HAVE_SETLOGIN */
3583d2307dSDag-Erling Smørgrav 
3683d2307dSDag-Erling Smørgrav #ifndef HAVE_INNETGR
37d95e11bfSDag-Erling Smørgrav int innetgr(const char *, const char *, const char *, const char *);
3883d2307dSDag-Erling Smørgrav #endif /* HAVE_INNETGR */
3983d2307dSDag-Erling Smørgrav 
4083d2307dSDag-Erling Smørgrav #if !defined(HAVE_SETEUID) && defined(HAVE_SETREUID)
41d95e11bfSDag-Erling Smørgrav int seteuid(uid_t);
4283d2307dSDag-Erling Smørgrav #endif /* !defined(HAVE_SETEUID) && defined(HAVE_SETREUID) */
4383d2307dSDag-Erling Smørgrav 
4483d2307dSDag-Erling Smørgrav #if !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID)
45d95e11bfSDag-Erling Smørgrav int setegid(uid_t);
4683d2307dSDag-Erling Smørgrav #endif /* !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID) */
4783d2307dSDag-Erling Smørgrav 
4883d2307dSDag-Erling Smørgrav #if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR)
49d95e11bfSDag-Erling Smørgrav const char *strerror(int);
5083d2307dSDag-Erling Smørgrav #endif
5183d2307dSDag-Erling Smørgrav 
52462c32cbSDag-Erling Smørgrav #if !defined(HAVE_SETLINEBUF)
53462c32cbSDag-Erling Smørgrav #define setlinebuf(a)	(setvbuf((a), NULL, _IOLBF, 0))
54462c32cbSDag-Erling Smørgrav #endif
5583d2307dSDag-Erling Smørgrav 
5683d2307dSDag-Erling Smørgrav #ifndef HAVE_UTIMES
5783d2307dSDag-Erling Smørgrav #ifndef HAVE_STRUCT_TIMEVAL
5883d2307dSDag-Erling Smørgrav struct timeval {
5983d2307dSDag-Erling Smørgrav 	long tv_sec;
6083d2307dSDag-Erling Smørgrav 	long tv_usec;
6183d2307dSDag-Erling Smørgrav }
6283d2307dSDag-Erling Smørgrav #endif /* HAVE_STRUCT_TIMEVAL */
6383d2307dSDag-Erling Smørgrav 
64d95e11bfSDag-Erling Smørgrav int utimes(char *, struct timeval *);
6583d2307dSDag-Erling Smørgrav #endif /* HAVE_UTIMES */
6683d2307dSDag-Erling Smørgrav 
6783d2307dSDag-Erling Smørgrav #ifndef HAVE_TRUNCATE
68d95e11bfSDag-Erling Smørgrav int truncate (const char *, off_t);
6983d2307dSDag-Erling Smørgrav #endif /* HAVE_TRUNCATE */
7083d2307dSDag-Erling Smørgrav 
71d0c8c0bcSDag-Erling Smørgrav #if !defined(HAVE_NANOSLEEP) && !defined(HAVE_NSLEEP)
72d0c8c0bcSDag-Erling Smørgrav #ifndef HAVE_STRUCT_TIMESPEC
73d0c8c0bcSDag-Erling Smørgrav struct timespec {
74d0c8c0bcSDag-Erling Smørgrav 	time_t	tv_sec;
75d0c8c0bcSDag-Erling Smørgrav 	long	tv_nsec;
76d0c8c0bcSDag-Erling Smørgrav };
77d0c8c0bcSDag-Erling Smørgrav #endif
78d95e11bfSDag-Erling Smørgrav int nanosleep(const struct timespec *, struct timespec *);
79d0c8c0bcSDag-Erling Smørgrav #endif
8083d2307dSDag-Erling Smørgrav 
816888a9beSDag-Erling Smørgrav #ifndef HAVE_USLEEP
826888a9beSDag-Erling Smørgrav int usleep(unsigned int useconds);
836888a9beSDag-Erling Smørgrav #endif
846888a9beSDag-Erling Smørgrav 
85d95e11bfSDag-Erling Smørgrav #ifndef HAVE_TCGETPGRP
86d95e11bfSDag-Erling Smørgrav pid_t tcgetpgrp(int);
87d95e11bfSDag-Erling Smørgrav #endif
88d95e11bfSDag-Erling Smørgrav 
89d95e11bfSDag-Erling Smørgrav #ifndef HAVE_TCSENDBREAK
90d95e11bfSDag-Erling Smørgrav int tcsendbreak(int, int);
91d95e11bfSDag-Erling Smørgrav #endif
92d95e11bfSDag-Erling Smørgrav 
9352028650SDag-Erling Smørgrav #ifndef HAVE_UNSETENV
94462c32cbSDag-Erling Smørgrav int unsetenv(const char *);
9552028650SDag-Erling Smørgrav #endif
9652028650SDag-Erling Smørgrav 
974a421b63SDag-Erling Smørgrav #ifndef HAVE_ISBLANK
984a421b63SDag-Erling Smørgrav int	isblank(int);
994a421b63SDag-Erling Smørgrav #endif
1004a421b63SDag-Erling Smørgrav 
1016888a9beSDag-Erling Smørgrav #ifndef HAVE_GETPGID
1026888a9beSDag-Erling Smørgrav pid_t getpgid(pid_t);
1036888a9beSDag-Erling Smørgrav #endif
1046888a9beSDag-Erling Smørgrav 
105e4a9863fSDag-Erling Smørgrav #ifndef HAVE_ENDGRENT
106e4a9863fSDag-Erling Smørgrav # define endgrent() do { } while(0)
107e4a9863fSDag-Erling Smørgrav #endif
108e4a9863fSDag-Erling Smørgrav 
109e4a9863fSDag-Erling Smørgrav #ifndef HAVE_KRB5_GET_ERROR_MESSAGE
110e4a9863fSDag-Erling Smørgrav # define krb5_get_error_message krb5_get_err_text
111e4a9863fSDag-Erling Smørgrav #endif
112e4a9863fSDag-Erling Smørgrav 
113e4a9863fSDag-Erling Smørgrav #ifndef HAVE_KRB5_FREE_ERROR_MESSAGE
114e4a9863fSDag-Erling Smørgrav # define krb5_free_error_message(a,b) do { } while(0)
115e4a9863fSDag-Erling Smørgrav #endif
116e4a9863fSDag-Erling Smørgrav 
117acc1a9efSDag-Erling Smørgrav #ifndef HAVE_PLEDGE
118acc1a9efSDag-Erling Smørgrav int pledge(const char *promises, const char *paths[]);
119acc1a9efSDag-Erling Smørgrav #endif
120acc1a9efSDag-Erling Smørgrav 
121076ad2f8SDag-Erling Smørgrav /* bsd-err.h */
122076ad2f8SDag-Erling Smørgrav #ifndef HAVE_ERR
123076ad2f8SDag-Erling Smørgrav void err(int, const char *, ...) __attribute__((format(printf, 2, 3)));
124076ad2f8SDag-Erling Smørgrav #endif
125076ad2f8SDag-Erling Smørgrav #ifndef HAVE_ERRX
126076ad2f8SDag-Erling Smørgrav void errx(int, const char *, ...) __attribute__((format(printf, 2, 3)));
127076ad2f8SDag-Erling Smørgrav #endif
128076ad2f8SDag-Erling Smørgrav #ifndef HAVE_WARN
129076ad2f8SDag-Erling Smørgrav void warn(const char *, ...) __attribute__((format(printf, 1, 2)));
130076ad2f8SDag-Erling Smørgrav #endif
131076ad2f8SDag-Erling Smørgrav 
132d93a896eSDag-Erling Smørgrav #ifndef HAVE_LLABS
133d93a896eSDag-Erling Smørgrav long long llabs(long long);
134d93a896eSDag-Erling Smørgrav #endif
135d93a896eSDag-Erling Smørgrav 
136*47dd1d1bSDag-Erling Smørgrav #if defined(HAVE_DECL_BZERO) && HAVE_DECL_BZERO == 0
137*47dd1d1bSDag-Erling Smørgrav void bzero(void *, size_t);
138*47dd1d1bSDag-Erling Smørgrav #endif
139*47dd1d1bSDag-Erling Smørgrav 
140*47dd1d1bSDag-Erling Smørgrav #ifndef HAVE_RAISE
141*47dd1d1bSDag-Erling Smørgrav int raise(int);
142*47dd1d1bSDag-Erling Smørgrav #endif
143*47dd1d1bSDag-Erling Smørgrav 
144*47dd1d1bSDag-Erling Smørgrav #ifndef HAVE_GETSID
145*47dd1d1bSDag-Erling Smørgrav pid_t getsid(pid_t);
146*47dd1d1bSDag-Erling Smørgrav #endif
147*47dd1d1bSDag-Erling Smørgrav 
148*47dd1d1bSDag-Erling Smørgrav #ifndef HAVE_FLOCK
149*47dd1d1bSDag-Erling Smørgrav # define LOCK_SH		0x01
150*47dd1d1bSDag-Erling Smørgrav # define LOCK_EX		0x02
151*47dd1d1bSDag-Erling Smørgrav # define LOCK_NB		0x04
152*47dd1d1bSDag-Erling Smørgrav # define LOCK_UN		0x08
153*47dd1d1bSDag-Erling Smørgrav int flock(int, int);
154*47dd1d1bSDag-Erling Smørgrav #endif
155*47dd1d1bSDag-Erling Smørgrav 
156*47dd1d1bSDag-Erling Smørgrav #ifdef FFLUSH_NULL_BUG
157*47dd1d1bSDag-Erling Smørgrav # define fflush(x)	(_ssh_compat_fflush(x))
158*47dd1d1bSDag-Erling Smørgrav #endif
159*47dd1d1bSDag-Erling Smørgrav 
16083d2307dSDag-Erling Smørgrav #endif /* _BSD_MISC_H */
161