Hello community,

here is the log from the commit of package mosh for openSUSE:Factory checked in 
at 2017-07-28 09:48:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mosh (Old)
 and      /work/SRC/openSUSE:Factory/.mosh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mosh"

Fri Jul 28 09:48:08 2017 rev:16 rq:512857 version:1.3.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/mosh/mosh.changes        2017-04-07 
13:56:45.590211642 +0200
+++ /work/SRC/openSUSE:Factory/.mosh.new/mosh.changes   2017-07-28 
09:48:09.971839875 +0200
@@ -1,0 +2,23 @@
+Mon Jul 24 13:38:47 UTC 2017 - [email protected]
+
+- Update to version 1.3.2:
+  * Platform support:
+    + Explicitly enable binding to both IPv4 and IPv6 addresses.
+      (Giel van Schijndel)
+    + Restore perl 5.8.8 support for RHEL5.
+      (Alexander Chernyakhovsky)
+    + Make tests detect UTF-8 locale with a helper executable.
+      (John Hood)
+    + Don't print /etc/motd on IllumOS.  (John Hood)
+    + Print {,/var}/run/motd.dynamic on Ubuntu.  (John Hood)
+    + Fix build on Haiku. (Adrien Destugues)
+    + Disable unicode-later-combining.test for tmux 2.4.
+      This fixes build failures.  (John Hood)
+  * Bug fixes:
+    + In tests, explicitly set 80x24 tmux window, for newer versions
+      of tmux.  (John Hood)
+    + Work around JuiceSSH rendering bug.  (John Hood)
+    + Do not move cursor for SCROLL UP and SCROLL DOWN--
+      fixes an issue with tmux 2.4.  (John Hood)
+
+-------------------------------------------------------------------

Old:
----
  mosh-1.3.0.tar.gz

New:
----
  mosh-1.3.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mosh.spec ++++++
--- /var/tmp/diff_new_pack.n9WEDw/_old  2017-07-28 09:48:10.419776779 +0200
+++ /var/tmp/diff_new_pack.n9WEDw/_new  2017-07-28 09:48:10.419776779 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           mosh
-Version:        1.3.0
+Version:        1.3.2
 Release:        0
 Summary:        The mobile shell
 License:        GPL-3.0+
@@ -66,10 +66,9 @@
   %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/mosh
 
 %check
-make check
+make %{?_smp_mflags} check
 
 %files
-%defattr(-,root,root)
 %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/mosh
 %dir %{_sysconfdir}/ufw/
 %dir %{_sysconfdir}/ufw/applications.d/

++++++ mosh-1.3.0.tar.gz -> mosh-1.3.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/ChangeLog new/mosh-1.3.2/ChangeLog
--- old/mosh-1.3.0/ChangeLog    2017-03-26 21:04:29.000000000 +0200
+++ new/mosh-1.3.2/ChangeLog    2017-07-22 23:14:53.000000000 +0200
@@ -1,3 +1,25 @@
+2017-07-21 Keith Winstein <[email protected]>
+
+       * Version 1.3.2 released.
+
+       * Platform support:
+               * Explicitly enable binding to both IPv4 and IPv6 addresses.
+                 (Giel van Schijndel)
+               * Restore perl 5.8.8 support for RHEL5.  (Alexander 
Chernyakhovsky)
+               * Make tests detect UTF-8 locale with a helper executable.  
(John Hood)
+               * Don't print /etc/motd on IllumOS.  (John Hood)
+               * Print {,/var}/run/motd.dynamic on Ubuntu.  (John Hood)
+               * Fix build on Haiku. (Adrien Destugues)
+               * Disable unicode-later-combining.test for tmux 2.4.
+                 This fixes build failures.  (John Hood)
+
+       * Bug fixes:
+               * In tests, explicitly set 80x24 tmux window, for newer versions
+                 of tmux.  (John Hood)
+               * Work around JuiceSSH rendering bug.  (John Hood)
+               * Do not move cursor for SCROLL UP and SCROLL DOWN--
+                 fixes an issue with tmux 2.4.  (John Hood)
+
 2017-03-25 Keith Winstein <[email protected]>
 
        * Version 1.3.0 released.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/Makefile.in new/mosh-1.3.2/Makefile.in
--- old/mosh-1.3.0/Makefile.in  2017-03-26 21:04:58.000000000 +0200
+++ new/mosh-1.3.2/Makefile.in  2017-07-22 23:15:12.000000000 +0200
@@ -247,7 +247,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/README.md new/mosh-1.3.2/README.md
--- old/mosh-1.3.0/README.md    2017-03-26 21:04:29.000000000 +0200
+++ new/mosh-1.3.2/README.md    2017-07-22 23:14:53.000000000 +0200
@@ -139,6 +139,11 @@
 intensive and mostly sits idle when the user is not typing, we think
 the results suggest that `-O2` (the default) is preferable.
 
+Our Debian and Fedora packaging presents Mosh as a single package.
+Mosh has a Perl dependency that is only required for client use.  For
+some platforms, it may make sense to have separate mosh-server and
+mosh-client packages to allow mosh-server usage without Perl.
+
 More info
 ---------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/THANKS new/mosh-1.3.2/THANKS
--- old/mosh-1.3.0/THANKS       2017-03-26 21:04:29.000000000 +0200
+++ new/mosh-1.3.2/THANKS       2017-07-22 23:14:53.000000000 +0200
@@ -92,3 +92,7 @@
 * HIGUCHI Yuta
 
 * Baruch Siach
+
+* Adrien Destugues
+
+* Giel van Schijndel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/conf/Makefile.in 
new/mosh-1.3.2/conf/Makefile.in
--- old/mosh-1.3.0/conf/Makefile.in     2017-03-26 21:04:58.000000000 +0200
+++ new/mosh-1.3.2/conf/Makefile.in     2017-07-22 23:15:12.000000000 +0200
@@ -200,7 +200,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/configure new/mosh-1.3.2/configure
--- old/mosh-1.3.0/configure    2017-03-26 21:04:58.000000000 +0200
+++ new/mosh-1.3.2/configure    2017-07-22 23:15:11.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mosh 1.3.0.
+# Generated by GNU Autoconf 2.69 for mosh 1.3.2.
 #
 # Report bugs to <[email protected]>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='mosh'
 PACKAGE_TARNAME='mosh'
-PACKAGE_VERSION='1.3.0'
-PACKAGE_STRING='mosh 1.3.0'
+PACKAGE_VERSION='1.3.2'
+PACKAGE_STRING='mosh 1.3.2'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -631,7 +631,6 @@
 BASH_COMPLETION_CFLAGS
 protobuf_LIBS
 protobuf_CFLAGS
-LIBUTIL
 CRYPTO_LDFLAGS
 CRYPTO_CPPFLAGS
 CRYPTO_LIBS
@@ -1353,7 +1352,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mosh 1.3.0 to adapt to many kinds of systems.
+\`configure' configures mosh 1.3.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1420,7 +1419,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mosh 1.3.0:";;
+     short | recursive ) echo "Configuration of mosh 1.3.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1565,7 +1564,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mosh configure 1.3.0
+mosh configure 1.3.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2376,7 +2375,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mosh $as_me 1.3.0, which was
+It was created by mosh $as_me 1.3.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3239,7 +3238,7 @@
 
 # Define the identity of the package.
  PACKAGE='mosh'
- VERSION='1.3.0'
+ VERSION='1.3.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -6085,7 +6084,7 @@
   return 0;
 }
 _ACEOF
-for ac_lib in '' socket; do
+for ac_lib in '' socket network; do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
@@ -9302,13 +9301,12 @@
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lutil" >&5
-$as_echo_n "checking for forkpty in -lutil... " >&6; }
-if ${ac_cv_lib_util_forkpty+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing 
forkpty" >&5
+$as_echo_n "checking for library containing forkpty... " >&6; }
+if ${ac_cv_search_forkpty+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lutil  $LIBS"
+  ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -9327,24 +9325,39 @@
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_util_forkpty=yes
-else
-  ac_cv_lib_util_forkpty=no
+for ac_lib in '' util bsd; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_forkpty=$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+    conftest$ac_exeext
+  if ${ac_cv_search_forkpty+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_forkpty+:} false; then :
+
+else
+  ac_cv_search_forkpty=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_forkpty" >&5
-$as_echo "$ac_cv_lib_util_forkpty" >&6; }
-if test "x$ac_cv_lib_util_forkpty" = xyes; then :
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_forkpty" >&5
+$as_echo "$ac_cv_search_forkpty" >&6; }
+ac_res=$ac_cv_search_forkpty
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 
 $as_echo "#define HAVE_FORKPTY /**/" >>confdefs.h
 
-  LIBUTIL="-lutil"
-
 
 fi
 
@@ -10421,7 +10434,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mosh $as_me 1.3.0, which was
+This file was extended by mosh $as_me 1.3.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -10487,7 +10500,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mosh config.status 1.3.0
+mosh config.status 1.3.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/configure.ac new/mosh-1.3.2/configure.ac
--- old/mosh-1.3.0/configure.ac 2017-03-26 21:04:29.000000000 +0200
+++ new/mosh-1.3.2/configure.ac 2017-07-22 23:14:53.000000000 +0200
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.61])
-AC_INIT([mosh], [1.3.0], [[email protected]])
+AC_INIT([mosh], [1.3.2], [[email protected]])
 AM_INIT_AUTOMAKE([foreign std-options -Wall -Werror])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 AC_CONFIG_SRCDIR([src/frontend/mosh-client.cc])
@@ -179,7 +179,7 @@
 
 AC_SEARCH_LIBS([compress], [z], , [AC_MSG_ERROR([Unable to find zlib.])])
 
-AC_SEARCH_LIBS([socket], [socket])
+AC_SEARCH_LIBS([socket], [socket network])
 AC_SEARCH_LIBS([inet_addr], [nsl])
 
 AC_SEARCH_LIBS([clock_gettime], [rt])
@@ -352,10 +352,8 @@
   , [[#include <sys/types.h>
   #include <libutil.h>]])
 
-AC_CHECK_LIB([util], [forkpty], [
+AC_SEARCH_LIBS([forkpty], [util bsd], [
   AC_DEFINE([HAVE_FORKPTY],, [Define if you have forkpty().])
-  LIBUTIL="-lutil"
-  AC_SUBST([LIBUTIL])
 ])
 
 AC_MSG_CHECKING([whether pipe2(..., O_CLOEXEC) is supported])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/man/Makefile.in 
new/mosh-1.3.2/man/Makefile.in
--- old/mosh-1.3.0/man/Makefile.in      2017-03-26 21:04:58.000000000 +0200
+++ new/mosh-1.3.2/man/Makefile.in      2017-07-22 23:15:12.000000000 +0200
@@ -197,7 +197,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/scripts/Makefile.in 
new/mosh-1.3.2/scripts/Makefile.in
--- old/mosh-1.3.0/scripts/Makefile.in  2017-03-26 21:04:58.000000000 +0200
+++ new/mosh-1.3.2/scripts/Makefile.in  2017-07-22 23:15:12.000000000 +0200
@@ -194,7 +194,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/scripts/mosh.pl 
new/mosh-1.3.2/scripts/mosh.pl
--- old/mosh-1.3.0/scripts/mosh.pl      2017-03-26 21:04:29.000000000 +0200
+++ new/mosh-1.3.2/scripts/mosh.pl      2017-07-22 23:14:53.000000000 +0200
@@ -30,14 +30,14 @@
 #   this exception statement from all source files in the program, then
 #   also delete it here.
 
-use 5.10.0;
+use 5.8.8;
 
 use warnings;
 use strict;
 use Getopt::Long;
 use IO::Socket;
 use Text::ParseWords;
-use Socket qw( IPPROTO_IP IPPROTO_IPV6 IPPROTO_TCP IPPROTO_UDP );
+use Socket qw(IPPROTO_TCP);
 use Errno qw(EINTR);
 use POSIX qw(_exit);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/Makefile.in 
new/mosh-1.3.2/src/Makefile.in
--- old/mosh-1.3.0/src/Makefile.in      2017-03-26 21:04:58.000000000 +0200
+++ new/mosh-1.3.2/src/Makefile.in      2017-07-22 23:15:12.000000000 +0200
@@ -224,7 +224,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/crypto/Makefile.in 
new/mosh-1.3.2/src/crypto/Makefile.in
--- old/mosh-1.3.0/src/crypto/Makefile.in       2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/crypto/Makefile.in       2017-07-22 23:15:12.000000000 
+0200
@@ -224,7 +224,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/examples/Makefile.am 
new/mosh-1.3.2/src/examples/Makefile.am
--- old/mosh-1.3.0/src/examples/Makefile.am     2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/examples/Makefile.am     2017-07-22 23:14:53.000000000 
+0200
@@ -15,16 +15,16 @@
 
 parse_SOURCES = parse.cc
 parse_CPPFLAGS = -I$(srcdir)/../terminal -I$(srcdir)/../util
-parse_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a $(LIBUTIL)
+parse_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a
 
 termemu_SOURCES = termemu.cc
 termemu_CPPFLAGS = -I$(srcdir)/../terminal -I$(srcdir)/../util 
-I$(srcdir)/../statesync -I../protobufs
-termemu_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a 
../statesync/libmoshstatesync.a ../protobufs/libmoshprotos.a $(LIBUTIL) 
$(TINFO_LIBS) $(protobuf_LIBS)
+termemu_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a 
../statesync/libmoshstatesync.a ../protobufs/libmoshprotos.a $(TINFO_LIBS) 
$(protobuf_LIBS)
 
 ntester_SOURCES = ntester.cc
 ntester_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../statesync 
-I$(srcdir)/../terminal -I$(srcdir)/../network -I$(srcdir)/../crypto 
-I../protobufs $(protobuf_CFLAGS)
-ntester_LDADD = ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../network/libmoshnetwork.a ../crypto/libmoshcrypto.a 
../protobufs/libmoshprotos.a ../util/libmoshutil.a $(LIBUTIL) -lm 
$(protobuf_LIBS)  $(CRYPTO_LIBS)
+ntester_LDADD = ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../network/libmoshnetwork.a ../crypto/libmoshcrypto.a 
../protobufs/libmoshprotos.a ../util/libmoshutil.a -lm $(protobuf_LIBS)  
$(CRYPTO_LIBS)
 
 benchmark_SOURCES = benchmark.cc
 benchmark_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../statesync 
-I$(srcdir)/../terminal -I../protobufs -I$(srcdir)/../frontend 
-I$(srcdir)/../crypto -I$(srcdir)/../network $(protobuf_CFLAGS)
-benchmark_LDADD = ../frontend/terminaloverlay.o 
../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../protobufs/libmoshprotos.a ../network/libmoshnetwork.a 
../crypto/libmoshcrypto.a ../util/libmoshutil.a $(STDDJB_LDFLAGS) $(LIBUTIL) 
-lm $(TINFO_LIBS) $(protobuf_LIBS) $(CRYPTO_LIBS)
+benchmark_LDADD = ../frontend/terminaloverlay.o 
../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../protobufs/libmoshprotos.a ../network/libmoshnetwork.a 
../crypto/libmoshcrypto.a ../util/libmoshutil.a $(STDDJB_LDFLAGS) -lm 
$(TINFO_LIBS) $(protobuf_LIBS) $(CRYPTO_LIBS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/examples/Makefile.in 
new/mosh-1.3.2/src/examples/Makefile.in
--- old/mosh-1.3.0/src/examples/Makefile.in     2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/examples/Makefile.in     2017-07-22 23:15:12.000000000 
+0200
@@ -113,7 +113,7 @@
        ../protobufs/libmoshprotos.a ../network/libmoshnetwork.a \
        ../crypto/libmoshcrypto.a ../util/libmoshutil.a \
        $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1)
 am_decrypt_OBJECTS = decrypt-decrypt.$(OBJEXT)
 decrypt_OBJECTS = $(am_decrypt_OBJECTS)
 decrypt_DEPENDENCIES = ../crypto/libmoshcrypto.a $(am__DEPENDENCIES_1)
@@ -126,17 +126,17 @@
        ../terminal/libmoshterminal.a ../network/libmoshnetwork.a \
        ../crypto/libmoshcrypto.a ../protobufs/libmoshprotos.a \
        ../util/libmoshutil.a $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1)
 am_parse_OBJECTS = parse-parse.$(OBJEXT)
 parse_OBJECTS = $(am_parse_OBJECTS)
 parse_DEPENDENCIES = ../terminal/libmoshterminal.a \
-       ../util/libmoshutil.a $(am__DEPENDENCIES_1)
+       ../util/libmoshutil.a
 am_termemu_OBJECTS = termemu-termemu.$(OBJEXT)
 termemu_OBJECTS = $(am_termemu_OBJECTS)
 termemu_DEPENDENCIES = ../terminal/libmoshterminal.a \
        ../util/libmoshutil.a ../statesync/libmoshstatesync.a \
        ../protobufs/libmoshprotos.a $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -244,7 +244,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
@@ -331,16 +330,16 @@
 decrypt_LDADD = ../crypto/libmoshcrypto.a $(CRYPTO_LIBS)
 parse_SOURCES = parse.cc
 parse_CPPFLAGS = -I$(srcdir)/../terminal -I$(srcdir)/../util
-parse_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a $(LIBUTIL)
+parse_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a
 termemu_SOURCES = termemu.cc
 termemu_CPPFLAGS = -I$(srcdir)/../terminal -I$(srcdir)/../util 
-I$(srcdir)/../statesync -I../protobufs
-termemu_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a 
../statesync/libmoshstatesync.a ../protobufs/libmoshprotos.a $(LIBUTIL) 
$(TINFO_LIBS) $(protobuf_LIBS)
+termemu_LDADD = ../terminal/libmoshterminal.a ../util/libmoshutil.a 
../statesync/libmoshstatesync.a ../protobufs/libmoshprotos.a $(TINFO_LIBS) 
$(protobuf_LIBS)
 ntester_SOURCES = ntester.cc
 ntester_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../statesync 
-I$(srcdir)/../terminal -I$(srcdir)/../network -I$(srcdir)/../crypto 
-I../protobufs $(protobuf_CFLAGS)
-ntester_LDADD = ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../network/libmoshnetwork.a ../crypto/libmoshcrypto.a 
../protobufs/libmoshprotos.a ../util/libmoshutil.a $(LIBUTIL) -lm 
$(protobuf_LIBS)  $(CRYPTO_LIBS)
+ntester_LDADD = ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../network/libmoshnetwork.a ../crypto/libmoshcrypto.a 
../protobufs/libmoshprotos.a ../util/libmoshutil.a -lm $(protobuf_LIBS)  
$(CRYPTO_LIBS)
 benchmark_SOURCES = benchmark.cc
 benchmark_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../statesync 
-I$(srcdir)/../terminal -I../protobufs -I$(srcdir)/../frontend 
-I$(srcdir)/../crypto -I$(srcdir)/../network $(protobuf_CFLAGS)
-benchmark_LDADD = ../frontend/terminaloverlay.o 
../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../protobufs/libmoshprotos.a ../network/libmoshnetwork.a 
../crypto/libmoshcrypto.a ../util/libmoshutil.a $(STDDJB_LDFLAGS) $(LIBUTIL) 
-lm $(TINFO_LIBS) $(protobuf_LIBS) $(CRYPTO_LIBS)
+benchmark_LDADD = ../frontend/terminaloverlay.o 
../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../protobufs/libmoshprotos.a ../network/libmoshnetwork.a 
../crypto/libmoshcrypto.a ../util/libmoshutil.a $(STDDJB_LDFLAGS) -lm 
$(TINFO_LIBS) $(protobuf_LIBS) $(CRYPTO_LIBS)
 all: all-am
 
 .SUFFIXES:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/frontend/Makefile.am 
new/mosh-1.3.2/src/frontend/Makefile.am
--- old/mosh-1.3.0/src/frontend/Makefile.am     2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/frontend/Makefile.am     2017-07-22 23:14:53.000000000 
+0200
@@ -3,7 +3,7 @@
 AM_LDFLAGS  = $(HARDEN_LDFLAGS)
 LDADD = ../crypto/libmoshcrypto.a ../network/libmoshnetwork.a 
../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../util/libmoshutil.a ../protobufs/libmoshprotos.a -lm $(TINFO_LIBS) 
$(protobuf_LIBS) $(CRYPTO_LIBS)
 
-mosh_server_LDADD = $(LDADD) $(LIBUTIL)
+mosh_server_LDADD = $(LDADD)
 
 bin_PROGRAMS =
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/frontend/Makefile.in 
new/mosh-1.3.2/src/frontend/Makefile.in
--- old/mosh-1.3.0/src/frontend/Makefile.in     2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/frontend/Makefile.in     2017-07-22 23:15:12.000000000 
+0200
@@ -124,7 +124,7 @@
        ../terminal/libmoshterminal.a ../util/libmoshutil.a \
        ../protobufs/libmoshprotos.a $(am__DEPENDENCIES_1) \
        $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-mosh_server_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+mosh_server_DEPENDENCIES = $(am__DEPENDENCIES_2)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -237,7 +237,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
@@ -318,7 +317,7 @@
 AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) 
$(MISC_CXXFLAGS)
 AM_LDFLAGS = $(HARDEN_LDFLAGS)
 LDADD = ../crypto/libmoshcrypto.a ../network/libmoshnetwork.a 
../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a 
../util/libmoshutil.a ../protobufs/libmoshprotos.a -lm $(TINFO_LIBS) 
$(protobuf_LIBS) $(CRYPTO_LIBS)
-mosh_server_LDADD = $(LDADD) $(LIBUTIL)
+mosh_server_LDADD = $(LDADD)
 mosh_client_SOURCES = mosh-client.cc stmclient.cc stmclient.h 
terminaloverlay.cc terminaloverlay.h
 mosh_server_SOURCES = mosh-server.cc
 all: all-am
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/frontend/mosh-server.cc 
new/mosh-1.3.2/src/frontend/mosh-server.cc
--- old/mosh-1.3.0/src/frontend/mosh-server.cc  2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/frontend/mosh-server.cc  2017-07-22 23:14:53.000000000 
+0200
@@ -118,7 +118,7 @@
   fprintf( stream, "Usage: %s new [-s] [-v] [-i LOCALADDR] [-p PORT[:PORT2]] 
[-c COLORS] [-l NAME=VALUE] [-- COMMAND...]\n", argv0 );
 }
 
-static void print_motd( void );
+static bool print_motd( const char *filename );
 static void chdir_homedir( void );
 static bool motd_hushed( void );
 static void warn_unattached( const string & ignore_entry );
@@ -554,7 +554,20 @@
     chdir_homedir();
 
     if ( with_motd && (!motd_hushed()) ) {
-      print_motd();
+      // On illumos motd is printed by /etc/profile.
+#ifndef __sun
+      // For Ubuntu, try and print one of {,/var}/run/motd.dynamic.
+      // This file is only updated when pam_motd is run, but when
+      // mosh-server is run in the usual way with ssh via the script,
+      // this always happens.
+      // XXX Hackish knowledge of Ubuntu PAM configuration.
+      // But this seems less awful than build-time detection with autoconf.
+      if (!print_motd("/run/motd.dynamic")) {
+       print_motd("/var/run/motd.dynamic");
+      }
+      // Always print traditional /etc/motd.
+      print_motd("/etc/motd");
+#endif
       warn_unattached( utmp_entry );
     }
 
@@ -877,12 +890,12 @@
   }
 }
 
-/* OpenSSH prints the motd on startup, so we will too */
-static void print_motd( void )
+/* Print the motd from a given file, if available */
+static bool print_motd( const char *filename )
 {
-  FILE *motd = fopen( "/etc/motd", "r" );
+  FILE *motd = fopen( filename, "r" );
   if ( !motd ) {
-    return; /* don't report error on missing or forbidden motd */
+    return false;
   }
 
   const int BUFSIZE = 256;
@@ -900,6 +913,7 @@
   }
 
   fclose( motd );
+  return true;
 }
 
 static void chdir_homedir( void )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/network/Makefile.in 
new/mosh-1.3.2/src/network/Makefile.in
--- old/mosh-1.3.0/src/network/Makefile.in      2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/network/Makefile.in      2017-07-22 23:15:12.000000000 
+0200
@@ -223,7 +223,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/network/network.cc 
new/mosh-1.3.2/src/network/network.cc
--- old/mosh-1.3.0/src/network/network.cc       2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/network/network.cc       2017-07-22 23:14:53.000000000 
+0200
@@ -41,6 +41,7 @@
 #include <netinet/in.h>
 #include <assert.h>
 #include <errno.h>
+#include <string.h>
 #include <unistd.h>
 
 #include "dos_assert.h"
@@ -326,6 +327,14 @@
       throw NetworkException( "Unknown address family", 0 );
     }
 
+    if ( local_addr.sa.sa_family == AF_INET6
+      && memcmp(&local_addr.sin6.sin6_addr, &in6addr_any, sizeof(in6addr_any)) 
== 0 ) {
+      const int off = 0;
+      if ( setsockopt( sock(), IPPROTO_IPV6, IPV6_V6ONLY, &off, sizeof(off) ) 
) {
+        perror( "setsockopt( IPV6_V6ONLY, off )" );
+      }
+    }
+
     if ( bind( sock(), &local_addr.sa, local_addr_len ) == 0 ) {
       set_MTU( local_addr.sa.sa_family );
       return true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/protobufs/Makefile.in 
new/mosh-1.3.2/src/protobufs/Makefile.in
--- old/mosh-1.3.0/src/protobufs/Makefile.in    2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/protobufs/Makefile.in    2017-07-22 23:15:12.000000000 
+0200
@@ -227,7 +227,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/statesync/Makefile.in 
new/mosh-1.3.2/src/statesync/Makefile.in
--- old/mosh-1.3.0/src/statesync/Makefile.in    2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/statesync/Makefile.in    2017-07-22 23:15:12.000000000 
+0200
@@ -223,7 +223,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/terminal/Makefile.in 
new/mosh-1.3.2/src/terminal/Makefile.in
--- old/mosh-1.3.0/src/terminal/Makefile.in     2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/terminal/Makefile.in     2017-07-22 23:15:12.000000000 
+0200
@@ -226,7 +226,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/terminal/terminaldisplay.cc 
new/mosh-1.3.2/src/terminal/terminaldisplay.cc
--- old/mosh-1.3.0/src/terminal/terminaldisplay.cc      2017-03-26 
21:04:29.000000000 +0200
+++ new/mosh-1.3.2/src/terminal/terminaldisplay.cc      2017-07-22 
23:14:53.000000000 +0200
@@ -386,7 +386,7 @@
       frame.append_silent_move( frame_y, frame_x - clear_count );
       frame.update_rendition( blank_renditions );
       bool can_use_erase = has_bce || ( frame.current_rendition == 
initial_rendition() );
-      if ( can_use_erase && has_ech ) {
+      if ( can_use_erase && has_ech && clear_count > 4 ) {
        snprintf( tmp, 64, "\033[%dX", clear_count );
        frame.append( tmp );
       } else {
@@ -436,8 +436,8 @@
     frame.append_silent_move( frame_y, frame_x - clear_count );
     frame.update_rendition( blank_renditions );
 
-    bool can_use_erase = !wrap_this && ( has_bce || ( frame.current_rendition 
== initial_rendition() ) );
-    if ( can_use_erase ) {
+    bool can_use_erase = has_bce || ( frame.current_rendition == 
initial_rendition() );
+    if ( can_use_erase && !wrap_this ) {
       frame.append( "\033[K" );
     } else {
       frame.append( clear_count, ' ' );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/terminal/terminalframebuffer.cc 
new/mosh-1.3.2/src/terminal/terminalframebuffer.cc
--- old/mosh-1.3.0/src/terminal/terminalframebuffer.cc  2017-03-26 
21:04:29.000000000 +0200
+++ new/mosh-1.3.2/src/terminal/terminalframebuffer.cc  2017-07-22 
23:14:53.000000000 +0200
@@ -119,11 +119,8 @@
 {
   if ( N >= 0 ) {
     delete_line( ds.get_scrolling_region_top_row(), N );
-    ds.move_row( -N, true );
   } else {
-    N = -N;
-    insert_line( ds.get_scrolling_region_top_row(), N );
-    ds.move_row( N, true );
+    insert_line( ds.get_scrolling_region_top_row(), -N );
   }
 }
 
@@ -187,9 +184,13 @@
   }
 
   if ( ds.get_cursor_row() + rows > ds.get_scrolling_region_bottom_row() ) {
-    scroll( ds.get_cursor_row() + rows - ds.get_scrolling_region_bottom_row() 
);
+    int N = ds.get_cursor_row() + rows - ds.get_scrolling_region_bottom_row();
+    scroll( N );
+    ds.move_row( -N, true );
   } else if ( ds.get_cursor_row() + rows < ds.get_scrolling_region_top_row() ) 
{
-    scroll( ds.get_cursor_row() + rows - ds.get_scrolling_region_top_row() );
+    int N = ds.get_cursor_row() + rows - ds.get_scrolling_region_top_row();
+    scroll( N );
+    ds.move_row( -N, true );
   }
 
   ds.move_row( rows, true );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/Makefile.am 
new/mosh-1.3.2/src/tests/Makefile.am
--- old/mosh-1.3.0/src/tests/Makefile.am        2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/tests/Makefile.am        2017-07-22 23:14:53.000000000 
+0200
@@ -22,6 +22,7 @@
        emulation-back-tab.test \
        emulation-cursor-motion.test \
        emulation-multiline-scroll.test \
+       emulation-scroll.test \
        emulation-wrap-across-frames.test \
        network-no-diff.test \
        prediction-unicode.test \
@@ -35,7 +36,7 @@
        unicode-later-combining.test \
        window-resize.test
 
-check_PROGRAMS = ocb-aes encrypt-decrypt base64 nonce-incr inpty
+check_PROGRAMS = ocb-aes encrypt-decrypt base64 nonce-incr inpty is-utf8-locale
 TESTS = ocb-aes encrypt-decrypt base64 nonce-incr local.test $(displaytests)
 XFAIL_TESTS = \
        e2e-failure.test \
@@ -63,7 +64,11 @@
 
 inpty_SOURCES = inpty.cc
 inpty_CPPFLAGS = -I$(srcdir)/../util
-inpty_LDADD = ../util/libmoshutil.a $(LIBUTIL)
+inpty_LDADD = ../util/libmoshutil.a
+
+is_utf8_locale_SOURCES = is-utf8-locale.cc
+is_utf8_locale_CPPFLAGS = -I$(srcdir)/../util
+is_utf8_locale_LDADD = ../util/libmoshutil.a $(LIBUTIL)
 
 clean-local: clean-local-check
 .PHONY: clean-local-check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/Makefile.in 
new/mosh-1.3.2/src/tests/Makefile.in
--- old/mosh-1.3.0/src/tests/Makefile.in        2017-03-26 21:04:59.000000000 
+0200
+++ new/mosh-1.3.2/src/tests/Makefile.in        2017-07-22 23:15:12.000000000 
+0200
@@ -86,7 +86,8 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 check_PROGRAMS = ocb-aes$(EXEEXT) encrypt-decrypt$(EXEEXT) \
-       base64$(EXEEXT) nonce-incr$(EXEEXT) inpty$(EXEEXT)
+       base64$(EXEEXT) nonce-incr$(EXEEXT) inpty$(EXEEXT) \
+       is-utf8-locale$(EXEEXT)
 TESTS = ocb-aes$(EXEEXT) encrypt-decrypt$(EXEEXT) base64$(EXEEXT) \
        nonce-incr$(EXEEXT) local.test $(displaytests)
 subdir = src/tests
@@ -118,7 +119,10 @@
        ../util/libmoshutil.a $(am__DEPENDENCIES_1)
 am_inpty_OBJECTS = inpty-inpty.$(OBJEXT)
 inpty_OBJECTS = $(am_inpty_OBJECTS)
-inpty_DEPENDENCIES = ../util/libmoshutil.a $(am__DEPENDENCIES_1)
+inpty_DEPENDENCIES = ../util/libmoshutil.a
+am_is_utf8_locale_OBJECTS = is_utf8_locale-is-utf8-locale.$(OBJEXT)
+is_utf8_locale_OBJECTS = $(am_is_utf8_locale_OBJECTS)
+is_utf8_locale_DEPENDENCIES = ../util/libmoshutil.a
 am_nonce_incr_OBJECTS = nonce_incr-nonce-incr.$(OBJEXT)
 nonce_incr_OBJECTS = $(am_nonce_incr_OBJECTS)
 nonce_incr_DEPENDENCIES = ../network/libmoshnetwork.a \
@@ -175,9 +179,11 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(base64_SOURCES) $(encrypt_decrypt_SOURCES) \
-       $(inpty_SOURCES) $(nonce_incr_SOURCES) $(ocb_aes_SOURCES)
+       $(inpty_SOURCES) $(is_utf8_locale_SOURCES) \
+       $(nonce_incr_SOURCES) $(ocb_aes_SOURCES)
 DIST_SOURCES = $(base64_SOURCES) $(encrypt_decrypt_SOURCES) \
-       $(inpty_SOURCES) $(nonce_incr_SOURCES) $(ocb_aes_SOURCES)
+       $(inpty_SOURCES) $(is_utf8_locale_SOURCES) \
+       $(nonce_incr_SOURCES) $(ocb_aes_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -452,7 +458,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
@@ -552,6 +557,7 @@
        emulation-back-tab.test \
        emulation-cursor-motion.test \
        emulation-multiline-scroll.test \
+       emulation-scroll.test \
        emulation-wrap-across-frames.test \
        network-no-diff.test \
        prediction-unicode.test \
@@ -583,7 +589,10 @@
 nonce_incr_LDADD = ../network/libmoshnetwork.a ../crypto/libmoshcrypto.a 
../util/libmoshutil.a $(CRYPTO_LIBS)
 inpty_SOURCES = inpty.cc
 inpty_CPPFLAGS = -I$(srcdir)/../util
-inpty_LDADD = ../util/libmoshutil.a $(LIBUTIL)
+inpty_LDADD = ../util/libmoshutil.a
+is_utf8_locale_SOURCES = is-utf8-locale.cc
+is_utf8_locale_CPPFLAGS = -I$(srcdir)/../util
+is_utf8_locale_LDADD = ../util/libmoshutil.a $(LIBUTIL)
 CLEANFILES = base64_vector.cc
 all: all-am
 
@@ -634,6 +643,10 @@
        @rm -f inpty$(EXEEXT)
        $(AM_V_CXXLD)$(CXXLINK) $(inpty_OBJECTS) $(inpty_LDADD) $(LIBS)
 
+is-utf8-locale$(EXEEXT): $(is_utf8_locale_OBJECTS) 
$(is_utf8_locale_DEPENDENCIES) $(EXTRA_is_utf8_locale_DEPENDENCIES) 
+       @rm -f is-utf8-locale$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(is_utf8_locale_OBJECTS) 
$(is_utf8_locale_LDADD) $(LIBS)
+
 nonce-incr$(EXEEXT): $(nonce_incr_OBJECTS) $(nonce_incr_DEPENDENCIES) 
$(EXTRA_nonce_incr_DEPENDENCIES) 
        @rm -f nonce-incr$(EXEEXT)
        $(AM_V_CXXLD)$(CXXLINK) $(nonce_incr_OBJECTS) $(nonce_incr_LDADD) 
$(LIBS)
@@ -653,6 +666,7 @@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/encrypt_decrypt-encrypt-decrypt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/encrypt_decrypt-test_utils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inpty-inpty.Po@am__quote@
+@AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/is_utf8_locale-is-utf8-locale.Po@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/nonce_incr-nonce-incr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ocb_aes-ocb-aes.Po@am__quote@
 @AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/ocb_aes-test_utils.Po@am__quote@
@@ -741,6 +755,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(inpty_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) 
$(CXXFLAGS) -c -o inpty-inpty.obj `if test -f 'inpty.cc'; then $(CYGPATH_W) 
'inpty.cc'; else $(CYGPATH_W) '$(srcdir)/inpty.cc'; fi`
 
+is_utf8_locale-is-utf8-locale.o: is-utf8-locale.cc
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(is_utf8_locale_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 
-MT is_utf8_locale-is-utf8-locale.o -MD -MP -MF 
$(DEPDIR)/is_utf8_locale-is-utf8-locale.Tpo -c -o 
is_utf8_locale-is-utf8-locale.o `test -f 'is-utf8-locale.cc' || echo 
'$(srcdir)/'`is-utf8-locale.cc
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) 
$(DEPDIR)/is_utf8_locale-is-utf8-locale.Tpo 
$(DEPDIR)/is_utf8_locale-is-utf8-locale.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='is-utf8-locale.cc' 
object='is_utf8_locale-is-utf8-locale.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(is_utf8_locale_CPPFLAGS) $(CPPFLAGS) 
$(AM_CXXFLAGS) $(CXXFLAGS) -c -o is_utf8_locale-is-utf8-locale.o `test -f 
'is-utf8-locale.cc' || echo '$(srcdir)/'`is-utf8-locale.cc
+
+is_utf8_locale-is-utf8-locale.obj: is-utf8-locale.cc
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(is_utf8_locale_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 
-MT is_utf8_locale-is-utf8-locale.obj -MD -MP -MF 
$(DEPDIR)/is_utf8_locale-is-utf8-locale.Tpo -c -o 
is_utf8_locale-is-utf8-locale.obj `if test -f 'is-utf8-locale.cc'; then 
$(CYGPATH_W) 'is-utf8-locale.cc'; else $(CYGPATH_W) 
'$(srcdir)/is-utf8-locale.cc'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) 
$(DEPDIR)/is_utf8_locale-is-utf8-locale.Tpo 
$(DEPDIR)/is_utf8_locale-is-utf8-locale.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='is-utf8-locale.cc' 
object='is_utf8_locale-is-utf8-locale.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(is_utf8_locale_CPPFLAGS) $(CPPFLAGS) 
$(AM_CXXFLAGS) $(CXXFLAGS) -c -o is_utf8_locale-is-utf8-locale.obj `if test -f 
'is-utf8-locale.cc'; then $(CYGPATH_W) 'is-utf8-locale.cc'; else $(CYGPATH_W) 
'$(srcdir)/is-utf8-locale.cc'; fi`
+
 nonce_incr-nonce-incr.o: nonce-incr.cc
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(nonce_incr_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT 
nonce_incr-nonce-incr.o -MD -MP -MF $(DEPDIR)/nonce_incr-nonce-incr.Tpo -c -o 
nonce_incr-nonce-incr.o `test -f 'nonce-incr.cc' || echo 
'$(srcdir)/'`nonce-incr.cc
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/nonce_incr-nonce-incr.Tpo 
$(DEPDIR)/nonce_incr-nonce-incr.Po
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/e2e-test 
new/mosh-1.3.2/src/tests/e2e-test
--- old/mosh-1.3.0/src/tests/e2e-test   2017-03-26 21:04:29.000000000 +0200
+++ new/mosh-1.3.2/src/tests/e2e-test   2017-07-22 23:14:53.000000000 +0200
@@ -60,11 +60,22 @@
 # Tmux check.
 tmux_check()
 {
+    # OpenBSD tmux does not have '-V'.
+    if [ "$(uname -s)" = "OpenBSD" ]; then
+       openbsd_major="$(uname -r)"
+       openbsd_major="${openbsd_major%%.*}"
+       if [ "${openbsd_major}" -ge 6 ]; then
+           return 0
+       fi
+    fi
     version=$(tmux -V)
     if [ $? != 0 ]; then
        error "tmux unavailable\n"
        return 1
     fi
+    if [ "$version" = "tmux master" ]; then
+       return 0
+    fi
     version=${version##tmux }
     version_major=${version%%.*}
     version_minor=${version##*.}
@@ -74,7 +85,8 @@
        error "tmux version %s too old\n" "$version"
        return 1
     fi
-    return 0
+    # Finally, check that tmux actually works to some degree.
+    tmux -C new-session true
 }
 
 ssh_localhost_check()
@@ -108,10 +120,6 @@
 }
 
 # main
-if ! set_locale; then
-    test_error "e2e-test: no usable locale\n"
-fi
-
 # Set up environment
 if [ -z "$srcdir" ]; then
     export srcdir=$PWD
@@ -137,10 +145,6 @@
        ;;
 esac
 
-if ! tmux_check; then
-    test_skipped "tmux unavailable\n"
-fi
-
 if [ $# -lt 2 ]; then
     test_error "not enough args\n"
 fi
@@ -153,6 +157,15 @@
 test_dir=$(basename "${test_name}").d
 test_script="${test_name}"
 
+tests_dir=$(dirname "${test_name}")
+if ! set_locale "${tests_dir}"; then
+    test_error "e2e-test: no usable locale\n"
+fi
+
+if ! tmux_check; then
+    test_skipped "tmux unavailable\n"
+fi
+
 rm -rf "${test_dir}"
 mkdir "${test_dir}"
 
@@ -230,9 +243,13 @@
     # XXX tmux 1.8 requires shell command as a single arg; once we move to 
2.0, undo these quotes
     # XXX this ignores $TMPDIR, because it results in an overlong pathname on 
OS X
     tmux_socket="/tmp/.tmux-mosh-test-$$"
-    ${tmux_stdin} tmux -f /dev/null -S "${tmux_socket}" -C new-session 
"${srcdir}/print-exitstatus ${client_wrapper} ${sut} ${server_wrapper} 
\"${PWD}/${test_dir}/${run}\" \"${PWD}/${test_script} ${run}\"" > 
"${test_dir}/${run}.tmux.log"
+    ln -fs "${tmux_socket}" "${test_dir}/tmux-socket"
+    # tmux <= 2.5 ignore -x/-y, but the client sets the session to 80x24.
+    # tmux from 2017-05-27 and later should default to an 80x24 session,
+    # but do use -x/-y on control-master clients.
+    ${tmux_stdin} tmux -f /dev/null -S "${tmux_socket}" -C new-session -x 80 
-y 24 "${srcdir}/print-exitstatus ${client_wrapper} ${sut} ${server_wrapper} 
\"${PWD}/${test_dir}/${run}\" \"${PWD}/${test_script} ${run}\"" > 
"${test_dir}/${run}.tmux.log"
     rv=$?
-    rm -f "${tmux_socket}"
+    rm -f "${tmux_socket}" "${test_dir}/tmux-socket"
     if [ $rv -ne 0 ]; then
        test_error "tmux failure on test %s\n" "$run"
     fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/e2e-test-server 
new/mosh-1.3.2/src/tests/e2e-test-server
--- old/mosh-1.3.0/src/tests/e2e-test-server    2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/tests/e2e-test-server    2017-07-22 23:14:53.000000000 
+0200
@@ -5,6 +5,29 @@
 # then captures screen with `tmux capture-pane`.  Captures exitstatus
 # of both and returns appropriate errors.
 #
+
+# If MOSH_E2E_WAIT is set, then the test will wait for another tmux
+# client to attach to the test session before starting, and will wait
+# for other tmux clients to detach before exiting.
+wait_for_clients()
+{
+    if [ -z "$MOSH_E2E_WAIT" ]; then
+       return
+    fi
+    expected=$1
+    while true; do 
+       n=$(tmux list-clients -F . | wc -l)
+       if [ $expected -eq 1 ]; then
+           if [ $n -eq 1 ]; then
+               return
+           fi
+       elif [ $n -ne 1 ]; then
+           return
+       fi
+       sleep 1
+    done
+}
+
 export MOSH_SERVER_PID=$PPID
 
 if [ $# -lt 2 ]; then
@@ -26,6 +49,7 @@
     printf "not running under tmux\n" >&2
     exit 99
 fi
+wait_for_clients 2
 # run harnessed command
 eval "$@"
 testret=$?
@@ -37,6 +61,7 @@
 # Wait for tmux client screen to become up to date.
 sleep 1
 printf "@@@ server complete @@@" >&2
+wait_for_clients 1
 i=0
 while [ $i -lt 60 ]; do
     if grep -q "@@@ server complete @@@" "$testname.tmux.log"; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/e2e-test-subrs 
new/mosh-1.3.2/src/tests/e2e-test-subrs
--- old/mosh-1.3.0/src/tests/e2e-test-subrs     2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/tests/e2e-test-subrs     2017-07-22 23:14:53.000000000 
+0200
@@ -10,6 +10,12 @@
     exit 99
 }
 
+skip()
+{
+    printf "$@" 2>&1
+    exit 77
+}
+
 sleepf()
 {
     (sleep .1 || sleep 1) > /dev/null 2>&1
@@ -60,15 +66,14 @@
 set_locale()
 {
     # Test for a usable locale.
-    map=$(locale charmap 2>/dev/null)
-    if [ "$map" = "utf-8" ] || [ "$map" = "UTF-8" ]; then
+    if ./is-utf8-locale 2> /dev/null; then
        return 0
     fi
     # Attempt to find/set a usable locale.
+    unset LANG LC_CTYPE LC_COLLATE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME 
LC_ALL
     for i in en_US.UTF-8 en_US.utf8 C.UTF-8; do
-       map="$(env LANG=$i locale charmap 2>/dev/null)"
-       if [ "$map" = "utf-8" ] || [ "$map" = "UTF-8" ]; then
-           export LANG=$i LC_ALL=''
+       if env LC_ALL=$i ./is-utf8-locale 2> /dev/null; then
+           export LC_ALL=$i
            return 0
        fi
     done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/emulation-scroll.test 
new/mosh-1.3.2/src/tests/emulation-scroll.test
--- old/mosh-1.3.0/src/tests/emulation-scroll.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/mosh-1.3.2/src/tests/emulation-scroll.test      2017-07-22 
23:14:53.000000000 +0200
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+#
+# This is a regression test for a bug in Mosh: it would move the
+# cursor for the SCROLL UP and SCROLL DOWN commands, though it should
+# not.
+#
+
+# shellcheck source=e2e-test-subrs
+. "$(dirname "$0")/e2e-test-subrs"
+PATH=$PATH:.:$srcdir
+# Top-level wrapper.
+if [ $# -eq 0 ]; then
+    e2e-test "$0" baseline post
+    exit
+fi
+
+# OK, we have arguments, we're one of the test hooks.
+if [ $# -ne 1 ]; then
+    fail "bad arguments %s\n" "$@"
+fi
+
+baseline()
+{
+    # Clear
+    printf '\033[H\033[J'
+    # Fill with sample text
+    for i in $(seq 1 24); do
+       printf '\ntext %s' "$i"
+    done
+    # Scroll up 4 lines
+    printf '\033[4S'
+    # Then down 2
+    printf '\033[2T'
+
+    # The cursor should not have moved and this should print on the
+    # last line, and not overprint 'line 24'
+    printf '\rBad line'
+    # Overprint on line 24
+    printf '\033[24;1HLast line'
+    # and line 1
+    printf '\033[HFirst line\n'
+
+}
+
+post()
+{
+    local capture
+    capture="$(basename "$0").d/baseline.capture"
+    # 'Bad line' should have been overwritten
+    if grep -q '^Bad line$' "$capture"; then
+       exit 1
+    fi
+    # The first four lines should have scrolled off
+    if grep -q '^text [1-4]$' "$capture"; then
+       exit 1
+    fi
+    # The last line should not have scrolled off or been overwritten
+    if ! grep -q '^text 24$' "$capture"; then
+       exit 1
+    fi
+    # 20 lines of the original text should remain
+    if [ "$(grep -c '^text' "$capture")" -ne 20 ]; then
+       exit 1
+    fi
+    exit 0
+}
+
+case $1 in
+    baseline)
+       baseline;;
+    post)
+       post;;
+    *)
+       fail "unknown test argument %s\n" "$1";;
+esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/is-utf8-locale.cc 
new/mosh-1.3.2/src/tests/is-utf8-locale.cc
--- old/mosh-1.3.0/src/tests/is-utf8-locale.cc  1970-01-01 01:00:00.000000000 
+0100
+++ new/mosh-1.3.2/src/tests/is-utf8-locale.cc  2017-07-22 23:14:53.000000000 
+0200
@@ -0,0 +1,45 @@
+/*
+    Mosh: the mobile shell
+    Copyright 2012 Keith Winstein
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+    In addition, as a special exception, the copyright holders give
+    permission to link the code of portions of this program with the
+    OpenSSL library under certain conditions as described in each
+    individual source file, and distribute linked combinations including
+    the two.
+
+    You must obey the GNU General Public License in all respects for all
+    of the code used other than OpenSSL. If you modify file(s) with this
+    exception, you may extend this exception to your version of the
+    file(s), but you are not obligated to do so. If you do not wish to do
+    so, delete this exception statement from your version. If you delete
+    this exception statement from all source files in the program, then
+    also delete it here.
+*/
+
+#include <stdio.h>
+
+#include "locale_utils.h"
+
+int main( int argc __attribute__(( unused )), char **argv __attribute__(( 
unused )))
+{
+  set_native_locale();
+  if ( !is_utf8_locale() ) {
+    fprintf( stderr, "not a UTF-8 locale\n" );
+    return 1;
+  }
+  return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/mosh-client 
new/mosh-1.3.2/src/tests/mosh-client
--- old/mosh-1.3.0/src/tests/mosh-client        2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/tests/mosh-client        2017-07-22 23:14:53.000000000 
+0200
@@ -60,11 +60,22 @@
 # Tmux check.
 tmux_check()
 {
+    # OpenBSD tmux does not have '-V'.
+    if [ "$(uname -s)" = "OpenBSD" ]; then
+       openbsd_major="$(uname -r)"
+       openbsd_major="${openbsd_major%%.*}"
+       if [ "${openbsd_major}" -ge 6 ]; then
+           return 0
+       fi
+    fi
     version=$(tmux -V)
     if [ $? != 0 ]; then
        error "tmux unavailable\n"
        return 1
     fi
+    if [ "$version" = "tmux master" ]; then
+       return 0
+    fi
     version=${version##tmux }
     version_major=${version%%.*}
     version_minor=${version##*.}
@@ -74,7 +85,8 @@
        error "tmux version %s too old\n" "$version"
        return 1
     fi
-    return 0
+    # Finally, check that tmux actually works to some degree.
+    tmux -C new-session true
 }
 
 ssh_localhost_check()
@@ -108,10 +120,6 @@
 }
 
 # main
-if ! set_locale; then
-    test_error "e2e-test: no usable locale\n"
-fi
-
 # Set up environment
 if [ -z "$srcdir" ]; then
     export srcdir=$PWD
@@ -137,10 +145,6 @@
        ;;
 esac
 
-if ! tmux_check; then
-    test_skipped "tmux unavailable\n"
-fi
-
 if [ $# -lt 2 ]; then
     test_error "not enough args\n"
 fi
@@ -153,6 +157,15 @@
 test_dir=$(basename "${test_name}").d
 test_script="${test_name}"
 
+tests_dir=$(dirname "${test_name}")
+if ! set_locale "${tests_dir}"; then
+    test_error "e2e-test: no usable locale\n"
+fi
+
+if ! tmux_check; then
+    test_skipped "tmux unavailable\n"
+fi
+
 rm -rf "${test_dir}"
 mkdir "${test_dir}"
 
@@ -230,9 +243,13 @@
     # XXX tmux 1.8 requires shell command as a single arg; once we move to 
2.0, undo these quotes
     # XXX this ignores $TMPDIR, because it results in an overlong pathname on 
OS X
     tmux_socket="/tmp/.tmux-mosh-test-$$"
-    ${tmux_stdin} tmux -f /dev/null -S "${tmux_socket}" -C new-session 
"${srcdir}/print-exitstatus ${client_wrapper} ${sut} ${server_wrapper} 
\"${PWD}/${test_dir}/${run}\" \"${PWD}/${test_script} ${run}\"" > 
"${test_dir}/${run}.tmux.log"
+    ln -fs "${tmux_socket}" "${test_dir}/tmux-socket"
+    # tmux <= 2.5 ignore -x/-y, but the client sets the session to 80x24.
+    # tmux from 2017-05-27 and later should default to an 80x24 session,
+    # but do use -x/-y on control-master clients.
+    ${tmux_stdin} tmux -f /dev/null -S "${tmux_socket}" -C new-session -x 80 
-y 24 "${srcdir}/print-exitstatus ${client_wrapper} ${sut} ${server_wrapper} 
\"${PWD}/${test_dir}/${run}\" \"${PWD}/${test_script} ${run}\"" > 
"${test_dir}/${run}.tmux.log"
     rv=$?
-    rm -f "${tmux_socket}"
+    rm -f "${tmux_socket}" "${test_dir}/tmux-socket"
     if [ $rv -ne 0 ]; then
        test_error "tmux failure on test %s\n" "$run"
     fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/mosh-server 
new/mosh-1.3.2/src/tests/mosh-server
--- old/mosh-1.3.0/src/tests/mosh-server        2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/tests/mosh-server        2017-07-22 23:14:53.000000000 
+0200
@@ -60,11 +60,22 @@
 # Tmux check.
 tmux_check()
 {
+    # OpenBSD tmux does not have '-V'.
+    if [ "$(uname -s)" = "OpenBSD" ]; then
+       openbsd_major="$(uname -r)"
+       openbsd_major="${openbsd_major%%.*}"
+       if [ "${openbsd_major}" -ge 6 ]; then
+           return 0
+       fi
+    fi
     version=$(tmux -V)
     if [ $? != 0 ]; then
        error "tmux unavailable\n"
        return 1
     fi
+    if [ "$version" = "tmux master" ]; then
+       return 0
+    fi
     version=${version##tmux }
     version_major=${version%%.*}
     version_minor=${version##*.}
@@ -74,7 +85,8 @@
        error "tmux version %s too old\n" "$version"
        return 1
     fi
-    return 0
+    # Finally, check that tmux actually works to some degree.
+    tmux -C new-session true
 }
 
 ssh_localhost_check()
@@ -108,10 +120,6 @@
 }
 
 # main
-if ! set_locale; then
-    test_error "e2e-test: no usable locale\n"
-fi
-
 # Set up environment
 if [ -z "$srcdir" ]; then
     export srcdir=$PWD
@@ -137,10 +145,6 @@
        ;;
 esac
 
-if ! tmux_check; then
-    test_skipped "tmux unavailable\n"
-fi
-
 if [ $# -lt 2 ]; then
     test_error "not enough args\n"
 fi
@@ -153,6 +157,15 @@
 test_dir=$(basename "${test_name}").d
 test_script="${test_name}"
 
+tests_dir=$(dirname "${test_name}")
+if ! set_locale "${tests_dir}"; then
+    test_error "e2e-test: no usable locale\n"
+fi
+
+if ! tmux_check; then
+    test_skipped "tmux unavailable\n"
+fi
+
 rm -rf "${test_dir}"
 mkdir "${test_dir}"
 
@@ -230,9 +243,13 @@
     # XXX tmux 1.8 requires shell command as a single arg; once we move to 
2.0, undo these quotes
     # XXX this ignores $TMPDIR, because it results in an overlong pathname on 
OS X
     tmux_socket="/tmp/.tmux-mosh-test-$$"
-    ${tmux_stdin} tmux -f /dev/null -S "${tmux_socket}" -C new-session 
"${srcdir}/print-exitstatus ${client_wrapper} ${sut} ${server_wrapper} 
\"${PWD}/${test_dir}/${run}\" \"${PWD}/${test_script} ${run}\"" > 
"${test_dir}/${run}.tmux.log"
+    ln -fs "${tmux_socket}" "${test_dir}/tmux-socket"
+    # tmux <= 2.5 ignore -x/-y, but the client sets the session to 80x24.
+    # tmux from 2017-05-27 and later should default to an 80x24 session,
+    # but do use -x/-y on control-master clients.
+    ${tmux_stdin} tmux -f /dev/null -S "${tmux_socket}" -C new-session -x 80 
-y 24 "${srcdir}/print-exitstatus ${client_wrapper} ${sut} ${server_wrapper} 
\"${PWD}/${test_dir}/${run}\" \"${PWD}/${test_script} ${run}\"" > 
"${test_dir}/${run}.tmux.log"
     rv=$?
-    rm -f "${tmux_socket}"
+    rm -f "${tmux_socket}" "${test_dir}/tmux-socket"
     if [ $rv -ne 0 ]; then
        test_error "tmux failure on test %s\n" "$run"
     fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/tests/unicode-later-combining.test 
new/mosh-1.3.2/src/tests/unicode-later-combining.test
--- old/mosh-1.3.0/src/tests/unicode-later-combining.test       2017-03-26 
21:04:29.000000000 +0200
+++ new/mosh-1.3.2/src/tests/unicode-later-combining.test       2017-07-22 
23:14:53.000000000 +0200
@@ -37,6 +37,9 @@
 post()
 {
     export LANG=C
+    if [ "$(tmux -V)" = "tmux 2.4" ]; then
+       skip "tmux 2.4 unicode combining bug breaks this test\n"
+    fi
     if grep -q "$(printf '^\302\240\314\202$')" "$(basename 
"$0").d/baseline.capture"; then
        exit 0
     fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/util/Makefile.in 
new/mosh-1.3.2/src/util/Makefile.in
--- old/mosh-1.3.0/src/util/Makefile.in 2017-03-26 21:04:59.000000000 +0200
+++ new/mosh-1.3.2/src/util/Makefile.in 2017-07-22 23:15:12.000000000 +0200
@@ -223,7 +223,6 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
-LIBUTIL = @LIBUTIL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MISC_CXXFLAGS = @MISC_CXXFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mosh-1.3.0/src/util/locale_utils.cc 
new/mosh-1.3.2/src/util/locale_utils.cc
--- old/mosh-1.3.0/src/util/locale_utils.cc     2017-03-26 21:04:29.000000000 
+0200
+++ new/mosh-1.3.2/src/util/locale_utils.cc     2017-07-22 23:14:53.000000000 
+0200
@@ -88,9 +88,9 @@
   /* Verify locale calls for UTF-8 */
   if ( strcmp( locale_charset(), "UTF-8" ) != 0 &&
        strcmp( locale_charset(), "utf-8" ) != 0 ) {
-    return 0;
+    return false;
   }
-  return 1;
+  return true;
 }
 
 void set_native_locale( void ) {


Reply via email to