1*462c32cbSDag-Erling Smørgrav /* $Id: bsd-misc.h,v 1.21 2012/07/03 22:50:10 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 54*462c32cbSDag-Erling Smørgrav #if !defined(HAVE_SETLINEBUF) 55*462c32cbSDag-Erling Smørgrav #define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0)) 56*462c32cbSDag-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 83d95e11bfSDag-Erling Smørgrav #ifndef HAVE_TCGETPGRP 84d95e11bfSDag-Erling Smørgrav pid_t tcgetpgrp(int); 85d95e11bfSDag-Erling Smørgrav #endif 86d95e11bfSDag-Erling Smørgrav 87d95e11bfSDag-Erling Smørgrav #ifndef HAVE_TCSENDBREAK 88d95e11bfSDag-Erling Smørgrav int tcsendbreak(int, int); 89d95e11bfSDag-Erling Smørgrav #endif 90d95e11bfSDag-Erling Smørgrav 9152028650SDag-Erling Smørgrav #ifndef HAVE_UNSETENV 92*462c32cbSDag-Erling Smørgrav int unsetenv(const char *); 9352028650SDag-Erling Smørgrav #endif 9452028650SDag-Erling Smørgrav 95d95e11bfSDag-Erling Smørgrav /* wrapper for signal interface */ 96d95e11bfSDag-Erling Smørgrav typedef void (*mysig_t)(int); 97d95e11bfSDag-Erling Smørgrav mysig_t mysignal(int sig, mysig_t act); 98d95e11bfSDag-Erling Smørgrav 99d95e11bfSDag-Erling Smørgrav #define signal(a,b) mysignal(a,b) 100d95e11bfSDag-Erling Smørgrav 1014a421b63SDag-Erling Smørgrav #ifndef HAVE_ISBLANK 1024a421b63SDag-Erling Smørgrav int isblank(int); 1034a421b63SDag-Erling Smørgrav #endif 1044a421b63SDag-Erling Smørgrav 10583d2307dSDag-Erling Smørgrav #endif /* _BSD_MISC_H */ 106