| /* |
| * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> |
| * |
| * Permission to use, copy, modify, and distribute this software for any |
| * purpose with or without fee is hereby granted, provided that the above |
| * copyright notice and this permission notice appear in all copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| #ifndef _BSD_MISC_H |
| #define _BSD_MISC_H |
| |
| #include "includes.h" |
| |
| char *ssh_get_progname(char *); |
| |
| #ifndef HAVE_SETSID |
| #define setsid() setpgrp(0, getpid()) |
| #endif /* !HAVE_SETSID */ |
| |
| #ifndef HAVE_SETENV |
| int setenv(const char *, const char *, int); |
| #endif /* !HAVE_SETENV */ |
| |
| #ifndef HAVE_SETLOGIN |
| int setlogin(const char *); |
| #endif /* !HAVE_SETLOGIN */ |
| |
| #ifndef HAVE_INNETGR |
| int innetgr(const char *, const char *, const char *, const char *); |
| #endif /* HAVE_INNETGR */ |
| |
| #if !defined(HAVE_SETEUID) && defined(HAVE_SETREUID) |
| int seteuid(uid_t); |
| #endif /* !defined(HAVE_SETEUID) && defined(HAVE_SETREUID) */ |
| |
| #if !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID) |
| int setegid(uid_t); |
| #endif /* !defined(HAVE_SETEGID) && defined(HAVE_SETRESGID) */ |
| |
| #if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR) |
| const char *strerror(int); |
| #endif |
| |
| #if !defined(HAVE_SETLINEBUF) |
| #define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0)) |
| #endif |
| |
| #ifndef HAVE_UTIMES |
| #ifndef HAVE_STRUCT_TIMEVAL |
| struct timeval { |
| long tv_sec; |
| long tv_usec; |
| } |
| #endif /* HAVE_STRUCT_TIMEVAL */ |
| |
| int utimes(char *, struct timeval *); |
| #endif /* HAVE_UTIMES */ |
| |
| #ifndef AT_FDCWD |
| # define AT_FDCWD (-2) |
| #endif |
| |
| #ifndef HAVE_FCHMODAT |
| int fchmodat(int, const char *, mode_t, int); |
| #endif |
| |
| #ifndef HAVE_FCHOWNAT |
| int fchownat(int, const char *, uid_t, gid_t, int); |
| #endif |
| |
| #ifndef HAVE_TRUNCATE |
| int truncate (const char *, off_t); |
| #endif /* HAVE_TRUNCATE */ |
| |
| #ifndef HAVE_STRUCT_TIMESPEC |
| struct timespec { |
| time_t tv_sec; |
| long tv_nsec; |
| }; |
| |
| #if !defined(HAVE_NANOSLEEP) && !defined(HAVE_NSLEEP) |
| int nanosleep(const struct timespec *, struct timespec *); |
| #endif |
| |
| #ifndef HAVE_UTIMENSAT |
| /* start with the high bits and work down to minimise risk of overlap */ |
| # ifndef AT_SYMLINK_NOFOLLOW |
| # define AT_SYMLINK_NOFOLLOW 0x80000000 |
| # endif |
| int utimensat(int, const char *, const struct timespec[2], int); |
| #endif /* !HAVE_UTIMENSAT */ |
| |
| #endif /* !HAVE_STRUCT_TIMESPEC */ |
| |
| #ifndef HAVE_USLEEP |
| int usleep(unsigned int useconds); |
| #endif |
| |
| #ifndef HAVE_TCGETPGRP |
| pid_t tcgetpgrp(int); |
| #endif |
| |
| #ifndef HAVE_TCSENDBREAK |
| int tcsendbreak(int, int); |
| #endif |
| |
| #ifndef HAVE_UNSETENV |
| int unsetenv(const char *); |
| #endif |
| |
| #ifndef HAVE_ISBLANK |
| int isblank(int); |
| #endif |
| |
| #ifndef HAVE_GETPGID |
| pid_t getpgid(pid_t); |
| #endif |
| |
| #ifndef HAVE_ENDGRENT |
| # define endgrent() do { } while(0) |
| #endif |
| |
| #ifndef HAVE_KRB5_GET_ERROR_MESSAGE |
| # define krb5_get_error_message krb5_get_err_text |
| #endif |
| |
| #ifndef HAVE_KRB5_FREE_ERROR_MESSAGE |
| # define krb5_free_error_message(a,b) do { } while(0) |
| #endif |
| |
| #ifndef HAVE_PLEDGE |
| int pledge(const char *promises, const char *paths[]); |
| #endif |
| |
| /* bsd-err.h */ |
| #ifndef HAVE_ERR |
| void err(int, const char *, ...) __attribute__((format(printf, 2, 3))); |
| #endif |
| #ifndef HAVE_ERRX |
| void errx(int, const char *, ...) __attribute__((format(printf, 2, 3))); |
| #endif |
| #ifndef HAVE_WARN |
| void warn(const char *, ...) __attribute__((format(printf, 1, 2))); |
| #endif |
| |
| #ifndef HAVE_LLABS |
| long long llabs(long long); |
| #endif |
| |
| #if defined(HAVE_DECL_BZERO) && HAVE_DECL_BZERO == 0 |
| void bzero(void *, size_t); |
| #endif |
| |
| #ifndef HAVE_RAISE |
| int raise(int); |
| #endif |
| |
| #ifndef HAVE_GETSID |
| pid_t getsid(pid_t); |
| #endif |
| |
| #ifndef HAVE_FLOCK |
| # define LOCK_SH 0x01 |
| # define LOCK_EX 0x02 |
| # define LOCK_NB 0x04 |
| # define LOCK_UN 0x08 |
| int flock(int, int); |
| #endif |
| |
| #ifdef FFLUSH_NULL_BUG |
| # define fflush(x) (_ssh_compat_fflush(x)) |
| #endif |
| |
| #endif /* _BSD_MISC_H */ |