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