From: Roberto Oliveira <robertoguimaraes8@gmail.com>
Date: Tue, 4 Apr 2017 16:46:50 +0000
Subject: [PATCH] Fix build with musl on ppc64le

mosh was breaking when building in ppc64le using musl, because ioctl() is defined
as ioctl(int, int) in musl and mosh is using TIOCSWINSZ macro as parameter. This was
triggering a gcc warning and make the build fail.

This patch does an explicit integer conversion in TIOCSWINSZ, as no bits get
lost.

--- a/src/frontend/mosh-server.cc
+++ b/src/frontend/mosh-server.cc
@@ -714,7 +714,12 @@
 	      }
 	      window_size.ws_col = res->width;
 	      window_size.ws_row = res->height;
-	      if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) {
+
+	      #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
+	      if ( ioctl( host_fd, (int) TIOCSWINSZ, &window_size ) < 0 ) { 
+	      #else
+	      if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) { 
+	      #endif
 		perror( "ioctl TIOCSWINSZ" );
 		network.start_shutdown();
 	      }
--- a/src/examples/termemu.cc
+++ a/src/examples/termemu.cc
@@ -226,7 +226,11 @@
   }
 
   /* tell child process */
+  #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
+  if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
+  #else
   if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) {
+  #endif
     perror( "ioctl TIOCSWINSZ" );
     return;
   }
@@ -306,7 +310,11 @@
       complete.act( &r );
 
       /* tell child process */
+      #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
+      if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
+      #else
       if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) {
+      #endif
 	perror( "ioctl TIOCSWINSZ" );
 	return;
       }