On 07/02/20 10:39, Thomas Huth wrote: > Recent versions of Solaris (v11.4) now feature an openpty() function, > too, causing a build failure since we ship our own implementation of > openpty() for Solaris in util/qemu-openpty.c so far. Since there are > now both variants available in the wild, with and without this function, > let's introduce a proper HAVE_OPENPTY define for this to fix the build > failure. > > Signed-off-by: Thomas Huth > --- > Note: Untested, since I do not have a VM with Solaris. Michele, > Peter, I'd really appreciate a "Tested-by:" from you here. Thanks! Sorry, I was off on another project (doing my taxes). Is this patch missing something? It looks like there should be more. The last line is static void cfmakeraw (struct termios *termios_p) { with no matching "}". - Michele > > configure | 9 ++++++++- > util/qemu-openpty.c | 4 +++- > 2 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/configure b/configure > index 4a22dcd563..0b5fd30fc4 100755 > --- a/configure > +++ b/configure > @@ -5134,10 +5134,14 @@ extern int openpty(int *am, int *as, char *name, void *termp, void *winp); > int main(void) { return openpty(0, 0, 0, 0, 0); } > EOF > > -if ! compile_prog "" "" ; then > +have_openpty="no" > +if compile_prog "" "" ; then > + have_openpty="yes" > +else > if compile_prog "" "-lutil" ; then > libs_softmmu="-lutil $libs_softmmu" > libs_tools="-lutil $libs_tools" > + have_openpty="yes" > fi > fi > > @@ -7380,6 +7384,9 @@ fi > if test "$have_broken_size_max" = "yes" ; then > echo "HAVE_BROKEN_SIZE_MAX=y">> $config_host_mak > fi > +if test "$have_openpty" = "yes" ; then > + echo "HAVE_OPENPTY=y">> $config_host_mak > +fi > > # Work around a system header bug with some kernel/XFS header > # versions where they both try to define 'struct fsxattr': > diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c > index 2e8b43bdf5..14e5c8ae8f 100644 > --- a/util/qemu-openpty.c > +++ b/util/qemu-openpty.c > @@ -52,7 +52,8 @@ > #endif > > #ifdef __sun__ > -/* Once Solaris has openpty(), this is going to be removed. */ > + > +#if !defined(HAVE_OPENPTY) > static int openpty(int *amaster, int *aslave, char *name, > struct termios *termp, struct winsize *winp) > { > @@ -93,6 +94,7 @@ err: > close(mfd); > return -1; > } > +#endif > > static void cfmakeraw (struct termios *termios_p) > {