On 11.09.2017 19:16, Kamil Rytarowski wrote: > openpty(3) might: > - exists in libc (OSX) > - exists in libutil (GNU, BSD) > - does not exist (SmartOS) > > Add a function to discover this function in the ./configure script. > Add new config types: CONFIG_OPENPTY_LIBC and CONFIG_OPENPTY_LIBUTIL, > respectively defined when openpts(3) links with -lc or -lutil. > > Replace the condition adding -lutil in tests (for openpty(3)) from > CONFIG_POSIX to CONFIG_OPENPTY_LIBUTIL. > > Replace the fallback openpty(3) impelementation comment from Solaris > to SmartOS. Solaris is EOL'ed and it's confirmed that it does not work > on Oracle Solaris.
Signed-off-by: Kamil Rytarowski <n...@gmx.com> > --- > configure | 25 +++++++++++++++++++++++++ > tests/Makefile.include | 2 +- > util/qemu-openpty.c | 4 ++-- > 3 files changed, 28 insertions(+), 3 deletions(-) > > diff --git a/configure b/configure > index fd7e3a5e81..a614adcd29 100755 > --- a/configure > +++ b/configure > @@ -3819,6 +3819,25 @@ EOF > fi > fi > > +########################################## > +# openpty probe > +openpty_libc=no > +openpty_libutil=no > +cat > $TMPC << EOF > +extern int openpty(int *amaster, int *aslave, char *name, void *termp, void > *winp); > + > +int main(void) > +{ > + int master_fd, slave_fd; > + return openpty(&master_fd, &slave_fd, 0, 0, 0) == 0; > +} > +EOF > +if compile_prog "" "" ; then > + openpty_libc=yes > +elif compile_prog "" "-lutil" ; then > + openpty_libutil=yes > +fi > + > ########################################## > # signalfd probe > signalfd="no" > @@ -5788,6 +5807,12 @@ fi > if test "$fdt" = "yes" ; then > echo "CONFIG_FDT=y" >> $config_host_mak > fi > +if test "$openpty_libc" = "yes" ; then > + echo "CONFIG_OPENPTY_LIBC=y" >> $config_host_mak > +fi > +if test "$openpty_libutil" = "yes" ; then > + echo "CONFIG_OPENPTY_LIBUTIL=y" >> $config_host_mak > +fi > if test "$signalfd" = "yes" ; then > echo "CONFIG_SIGNALFD=y" >> $config_host_mak > fi > diff --git a/tests/Makefile.include b/tests/Makefile.include > index fae5715e9c..e7e0bc2724 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -814,7 +814,7 @@ tests/migration/initrd-stress.img: > tests/migration/stress$(EXESUF) > rm $(INITRD_WORK_DIR)/init > rmdir $(INITRD_WORK_DIR) > > -ifeq ($(CONFIG_POSIX),y) > +ifeq ($(CONFIG_OPENPTY_LIBUTIL),y) > LIBS += -lutil > endif > > diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c > index 2e8b43bdf5..62c87e5563 100644 > --- a/util/qemu-openpty.c > +++ b/util/qemu-openpty.c > @@ -51,8 +51,8 @@ > # include <termios.h> > #endif > > -#ifdef __sun__ > -/* Once Solaris has openpty(), this is going to be removed. */ > +/* The fallback implementation is needed at least on SmartOS. */ > +#if !defined(CONFIG_OPENPTY_LIBC) && !defined(CONFIG_OPENPTY_LIBUTIL) > static int openpty(int *amaster, int *aslave, char *name, > struct termios *termp, struct winsize *winp) > { >
signature.asc
Description: OpenPGP digital signature