xref: /freebsd/crypto/openssh/openbsd-compat/bsd-misc.h (revision e4a9863fb76a1f6b16ecbcbd31e88f4ad9a9565e)
1*e4a9863fSDag-Erling Smørgrav /* $Id: bsd-misc.h,v 1.25 2013/08/04 11:48:41 dtucker Exp $ */
2d95e11bfSDag-Erling Smørgrav 
383d2307dSDag-Erling Smørgrav /*
4efcad6b7SDag-Erling Smørgrav  * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org>
583d2307dSDag-Erling Smørgrav  *
6efcad6b7SDag-Erling Smørgrav  * Permission to use, copy, modify, and distribute this software for any
7efcad6b7SDag-Erling Smørgrav  * purpose with or without fee is hereby granted, provided that the above
8efcad6b7SDag-Erling Smørgrav  * copyright notice and this permission notice appear in all copies.
983d2307dSDag-Erling Smørgrav  *
10efcad6b7SDag-Erling Smørgrav  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11efcad6b7SDag-Erling Smørgrav  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12efcad6b7SDag-Erling Smørgrav  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13efcad6b7SDag-Erling Smørgrav  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14efcad6b7SDag-Erling Smørgrav  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15efcad6b7SDag-Erling Smørgrav  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16efcad6b7SDag-Erling Smørgrav  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1783d2307dSDag-Erling Smørgrav  */
1883d2307dSDag-Erling Smørgrav 
1983d2307dSDag-Erling Smørgrav #ifndef _BSD_MISC_H
2083d2307dSDag-Erling Smørgrav #define _BSD_MISC_H
2183d2307dSDag-Erling Smørgrav 
22d95e11bfSDag-Erling Smørgrav #include "includes.h"
2383d2307dSDag-Erling Smørgrav 
24d95e11bfSDag-Erling Smørgrav char *ssh_get_progname(char *);
2583d2307dSDag-Erling Smørgrav 
2683d2307dSDag-Erling Smørgrav #ifndef HAVE_SETSID
2783d2307dSDag-Erling Smørgrav #define setsid() setpgrp(0, getpid())
2883d2307dSDag-Erling Smørgrav #endif /* !HAVE_SETSID */
2983d2307dSDag-Erling Smørgrav 
3083d2307dSDag-Erling Smørgrav #ifndef HAVE_SETENV
31d95e11bfSDag-Erling Smørgrav int setenv(const char *, const char *, int);
3283d2307dSDag-Erling Smørgrav #endif /* !HAVE_SETENV */
3383d2307dSDag-Erling Smørgrav 
3483d2307dSDag-Erling Smørgrav #ifndef HAVE_SETLOGIN
35d95e11bfSDag-Erling Smørgrav int setlogin(const char *);
3683d2307dSDag-Erling Smørgrav #endif /* !HAVE_SETLOGIN */
3783d2307dSDag-Erling Smørgrav 
3883d2307dSDag-Erling Smørgrav #ifndef HAVE_INNETGR
39d95e11bfSDag-Erling Smørgrav int innetgr(const char *, const char *, const char *, const char *);
4083d2307dSDag-Erling Smørgrav #endif /* HAVE_INNETGR */
4183d2307dSDag-Erling Smørgrav 
4283d2307dSDag-Erling Smørgrav #if !defined(HAVE_SETEUID) && defined(HAVE_SETREUID)
43d95e11bfSDag-Erling Smørgrav int seteuid(uid_t);
4483d2307dSDag-Erling Smørgrav #endif /* !defined(HAVE_SETEUID) && defined(HAVE_SETREUID) */
4583d2307dSDag-Erling Smørgrav 
4683d2307dSDag-Erling Smørgrav #if !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID)
47d95e11bfSDag-Erling Smørgrav int setegid(uid_t);
4883d2307dSDag-Erling Smørgrav #endif /* !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID) */
4983d2307dSDag-Erling Smørgrav 
5083d2307dSDag-Erling Smørgrav #if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR)
51d95e11bfSDag-Erling Smørgrav const char *strerror(int);
5283d2307dSDag-Erling Smørgrav #endif
5383d2307dSDag-Erling Smørgrav 
54462c32cbSDag-Erling Smørgrav #if !defined(HAVE_SETLINEBUF)
55462c32cbSDag-Erling Smørgrav #define setlinebuf(a)	(setvbuf((a), NULL, _IOLBF, 0))
56462c32cbSDag-Erling Smørgrav #endif
5783d2307dSDag-Erling Smørgrav 
5883d2307dSDag-Erling Smørgrav #ifndef HAVE_UTIMES
5983d2307dSDag-Erling Smørgrav #ifndef HAVE_STRUCT_TIMEVAL
6083d2307dSDag-Erling Smørgrav struct timeval {
6183d2307dSDag-Erling Smørgrav 	long tv_sec;
6283d2307dSDag-Erling Smørgrav 	long tv_usec;
6383d2307dSDag-Erling Smørgrav }
6483d2307dSDag-Erling Smørgrav #endif /* HAVE_STRUCT_TIMEVAL */
6583d2307dSDag-Erling Smørgrav 
66d95e11bfSDag-Erling Smørgrav int utimes(char *, struct timeval *);
6783d2307dSDag-Erling Smørgrav #endif /* HAVE_UTIMES */
6883d2307dSDag-Erling Smørgrav 
6983d2307dSDag-Erling Smørgrav #ifndef HAVE_TRUNCATE
70d95e11bfSDag-Erling Smørgrav int truncate (const char *, off_t);
7183d2307dSDag-Erling Smørgrav #endif /* HAVE_TRUNCATE */
7283d2307dSDag-Erling Smørgrav 
73d0c8c0bcSDag-Erling Smørgrav #if !defined(HAVE_NANOSLEEP) && !defined(HAVE_NSLEEP)
74d0c8c0bcSDag-Erling Smørgrav #ifndef HAVE_STRUCT_TIMESPEC
75d0c8c0bcSDag-Erling Smørgrav struct timespec {
76d0c8c0bcSDag-Erling Smørgrav 	time_t	tv_sec;
77d0c8c0bcSDag-Erling Smørgrav 	long	tv_nsec;
78d0c8c0bcSDag-Erling Smørgrav };
79d0c8c0bcSDag-Erling Smørgrav #endif
80d95e11bfSDag-Erling Smørgrav int nanosleep(const struct timespec *, struct timespec *);
81d0c8c0bcSDag-Erling Smørgrav #endif
8283d2307dSDag-Erling Smørgrav 
836888a9beSDag-Erling Smørgrav #ifndef HAVE_USLEEP
846888a9beSDag-Erling Smørgrav int usleep(unsigned int useconds);
856888a9beSDag-Erling Smørgrav #endif
866888a9beSDag-Erling Smørgrav 
87d95e11bfSDag-Erling Smørgrav #ifndef HAVE_TCGETPGRP
88d95e11bfSDag-Erling Smørgrav pid_t tcgetpgrp(int);
89d95e11bfSDag-Erling Smørgrav #endif
90d95e11bfSDag-Erling Smørgrav 
91d95e11bfSDag-Erling Smørgrav #ifndef HAVE_TCSENDBREAK
92d95e11bfSDag-Erling Smørgrav int tcsendbreak(int, int);
93d95e11bfSDag-Erling Smørgrav #endif
94d95e11bfSDag-Erling Smørgrav 
9552028650SDag-Erling Smørgrav #ifndef HAVE_UNSETENV
96462c32cbSDag-Erling Smørgrav int unsetenv(const char *);
9752028650SDag-Erling Smørgrav #endif
9852028650SDag-Erling Smørgrav 
99d95e11bfSDag-Erling Smørgrav /* wrapper for signal interface */
100d95e11bfSDag-Erling Smørgrav typedef void (*mysig_t)(int);
101d95e11bfSDag-Erling Smørgrav mysig_t mysignal(int sig, mysig_t act);
102d95e11bfSDag-Erling Smørgrav 
103d95e11bfSDag-Erling Smørgrav #define signal(a,b) mysignal(a,b)
104d95e11bfSDag-Erling Smørgrav 
1054a421b63SDag-Erling Smørgrav #ifndef HAVE_ISBLANK
1064a421b63SDag-Erling Smørgrav int	isblank(int);
1074a421b63SDag-Erling Smørgrav #endif
1084a421b63SDag-Erling Smørgrav 
1096888a9beSDag-Erling Smørgrav #ifndef HAVE_GETPGID
1106888a9beSDag-Erling Smørgrav pid_t getpgid(pid_t);
1116888a9beSDag-Erling Smørgrav #endif
1126888a9beSDag-Erling Smørgrav 
113*e4a9863fSDag-Erling Smørgrav #ifndef HAVE_ENDGRENT
114*e4a9863fSDag-Erling Smørgrav # define endgrent() do { } while (0)
115*e4a9863fSDag-Erling Smørgrav #endif
116*e4a9863fSDag-Erling Smørgrav 
117*e4a9863fSDag-Erling Smørgrav #ifndef HAVE_KRB5_GET_ERROR_MESSAGE
118*e4a9863fSDag-Erling Smørgrav # define krb5_get_error_message krb5_get_err_text
119*e4a9863fSDag-Erling Smørgrav #endif
120*e4a9863fSDag-Erling Smørgrav 
121*e4a9863fSDag-Erling Smørgrav #ifndef HAVE_KRB5_FREE_ERROR_MESSAGE
122*e4a9863fSDag-Erling Smørgrav # define krb5_free_error_message(a,b) do { } while(0)
123*e4a9863fSDag-Erling Smørgrav #endif
124*e4a9863fSDag-Erling Smørgrav 
12583d2307dSDag-Erling Smørgrav #endif /* _BSD_MISC_H */
126