Print warnings when IUTF8 missing

This commit is contained in:
Keith Winstein
2012-03-31 15:20:30 -04:00
parent 9119fa1c7d
commit 9a7f3ad33d
4 changed files with 17 additions and 1 deletions
+5
View File
@@ -31,6 +31,7 @@
#include <wctype.h> #include <wctype.h>
#include <iostream> #include <iostream>
#include <typeinfo> #include <typeinfo>
#include <termios.h>
#if HAVE_PTY_H #if HAVE_PTY_H
#include <pty.h> #include <pty.h>
@@ -65,10 +66,14 @@ int main( int argc __attribute__((unused)),
child_termios = saved_termios; child_termios = saved_termios;
#ifdef HAVE_IUTF8
if ( !(child_termios.c_iflag & IUTF8) ) { if ( !(child_termios.c_iflag & IUTF8) ) {
fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" ); fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" );
child_termios.c_iflag |= IUTF8; child_termios.c_iflag |= IUTF8;
} }
#else
fprintf( stderr, "Warning: termios IUTF8 flag not defined. Character-erase of multibyte character sequence probably does not work properly on this platform.\n" );
#endif /* HAVE_IUTF8 */
pid_t child = forkpty( &master, NULL, &child_termios, NULL ); pid_t child = forkpty( &master, NULL, &child_termios, NULL );
+4
View File
@@ -74,10 +74,14 @@ int main( void )
child_termios = saved_termios; child_termios = saved_termios;
#ifdef HAVE_IUTF8
if ( !(child_termios.c_iflag & IUTF8) ) { if ( !(child_termios.c_iflag & IUTF8) ) {
fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" ); fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" );
child_termios.c_iflag |= IUTF8; child_termios.c_iflag |= IUTF8;
} }
#else
fprintf( stderr, "Warning: termios IUTF8 flag not defined. Character-erase of multibyte character sequence probably does not work properly on this platform.\n" );
#endif /* HAVE_IUTF8 */
pid_t child = forkpty( &master, NULL, &child_termios, NULL ); pid_t child = forkpty( &master, NULL, &child_termios, NULL );
+4
View File
@@ -265,11 +265,15 @@ int run_server( const char *desired_ip, const char *desired_port,
int master; int master;
#ifdef HAVE_IUTF8
if ( !(child_termios.c_iflag & IUTF8) ) { if ( !(child_termios.c_iflag & IUTF8) ) {
/* SSH should also convey IUTF8 across connection. */ /* SSH should also convey IUTF8 across connection. */
// fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" ); // fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" );
child_termios.c_iflag |= IUTF8; child_termios.c_iflag |= IUTF8;
} }
#else
fprintf( stderr, "\nWarning: termios IUTF8 flag not defined.\nCharacter-erase of multibyte character sequence\nprobably does not work properly on this platform.\n" );
#endif /* HAVE_IUTF8 */
/* Fork child process */ /* Fork child process */
pid_t child = forkpty( &master, NULL, &child_termios, &window_size ); pid_t child = forkpty( &master, NULL, &child_termios, &window_size );
+4 -1
View File
@@ -62,11 +62,14 @@ void STMClient::init( void )
/* Put terminal driver in raw mode */ /* Put terminal driver in raw mode */
raw_termios = saved_termios; raw_termios = saved_termios;
#ifdef HAVE_IUTF8
if ( !(raw_termios.c_iflag & IUTF8) ) { if ( !(raw_termios.c_iflag & IUTF8) ) {
/* SSH should also convey IUTF8 across connection. */
// fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" ); // fprintf( stderr, "Warning: Locale is UTF-8 but termios IUTF8 flag not set. Setting IUTF8 flag.\n" );
/* Probably not really necessary since we are putting terminal driver into raw mode anyway. */
raw_termios.c_iflag |= IUTF8; raw_termios.c_iflag |= IUTF8;
} }
#endif /* HAVE_IUTF8 */
cfmakeraw( &raw_termios ); cfmakeraw( &raw_termios );