diff options
-rw-r--r-- | compat.h | 9 | ||||
-rw-r--r-- | compat/fdforkpty.c | 34 | ||||
-rw-r--r-- | compat/forkpty-aix.c | 3 | ||||
-rw-r--r-- | compat/setenv.c | 4 | ||||
-rw-r--r-- | configure.ac | 8 |
5 files changed, 54 insertions, 4 deletions
@@ -18,6 +18,7 @@ #define COMPAT_H #include <sys/types.h> +#include <sys/ioctl.h> #include <sys/uio.h> #include <limits.h> @@ -283,9 +284,15 @@ int b64_ntop(const char *, size_t, char *, size_t); int b64_pton(const char *, u_char *, size_t); #endif +#ifndef HAVE_FDFORKPTY +/* fdforkpty.c */ +int getptmfd(void); +pid_t fdforkpty(int, int *, char *, struct termios *, + struct winsize *); +#endif + #ifndef HAVE_FORKPTY /* forkpty.c */ -#include <sys/ioctl.h> pid_t forkpty(int *, char *, struct termios *, struct winsize *); #endif diff --git a/compat/fdforkpty.c b/compat/fdforkpty.c new file mode 100644 index 00000000..c05f0dbf --- /dev/null +++ b/compat/fdforkpty.c @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com> + * + * 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 MIND, 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. + */ + +#include <sys/types.h> + +#include <limits.h> + +#include "compat.h" + +int +getptmfd(void) +{ + return (INT_MAX); +} + +pid_t +fdforkpty(__unused int ptmfd, int *master, char *name, struct termios *tio, + struct winsize *ws) +{ + return (forkpty(master, name, tio, ws)); +} diff --git a/compat/forkpty-aix.c b/compat/forkpty-aix.c index 31b084db..5eba9fd6 100644 --- a/compat/forkpty-aix.c +++ b/compat/forkpty-aix.c @@ -29,7 +29,8 @@ void fatal(const char *, ...); void fatalx(const char *, ...); pid_t -forkpty(int *master, unused char *name, struct termios *tio, struct winsize *ws) +forkpty(int *master, __unused char *name, struct termios *tio, + struct winsize *ws) { int slave = -1, fd, pipe_fd[2]; char *path, dummy; diff --git a/compat/setenv.c b/compat/setenv.c index 9f9295c8..d9235bcc 100644 --- a/compat/setenv.c +++ b/compat/setenv.c @@ -15,13 +15,15 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include <sys/types.h> + #include <stdlib.h> #include <string.h> #include "compat.h" int -setenv(const char *name, const char *value, unused int overwrite) +setenv(const char *name, const char *value, __unused int overwrite) { char *newval; diff --git a/configure.ac b/configure.ac index 31098d16..14a286b8 100644 --- a/configure.ac +++ b/configure.ac @@ -454,7 +454,13 @@ else AC_LIBOBJ(getopt) fi -# Look for forkpty in libutil. compat/forkpty-*.c is linked if not found. +# Look for fdforkpty and forkpty in libutil. +AC_SEARCH_LIBS(fdforkpty, util, found_fdforkpty=yes, found_fdforkpty=no) +if test "x$found_fdforkpty" = xyes; then + AC_DEFINE(HAVE_FDFORKPTY) +else + AC_LIBOBJ(fdforkpty) +fi AC_SEARCH_LIBS(forkpty, util, found_forkpty=yes, found_forkpty=no) if test "x$found_forkpty" = xyes; then AC_DEFINE(HAVE_FORKPTY) |