From: Mikko Rasa Date: Wed, 30 May 2012 18:16:18 +0000 (+0000) Subject: Add some error checks to Console functions X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=commitdiff_plain;h=69c5a20bb9ddc75686387d3fa9b7503caef613cc Add some error checks to Console functions --- diff --git a/source/io/console.cpp b/source/io/console.cpp index 447377b..d06b894 100644 --- a/source/io/console.cpp +++ b/source/io/console.cpp @@ -93,14 +93,18 @@ void Console::set_line_buffer(bool l) #ifdef WIN32 DWORD m; - GetConsoleMode(*handle, &m); - SetConsoleMode(*handle, (m&~ENABLE_LINE_INPUT) | (l?ENABLE_LINE_INPUT:0)); + if(!GetConsoleMode(*handle, &m)) + throw system_error("GetConsoleMode"); + if(!SetConsoleMode(*handle, (m&~ENABLE_LINE_INPUT) | (l?ENABLE_LINE_INPUT:0))) + throw system_error("SetConsoleMode"); #else // XXX ICANON does more than just set line buffering, may need a bit more thought termios t; - tcgetattr(*handle, &t); + if(tcgetattr(*handle, &t)==-1) + throw system_error("tcgetattr"); t.c_lflag = (t.c_lflag&~ICANON) | (l?ICANON:0); - tcsetattr(*handle, TCSADRAIN, &t); + if(tcsetattr(*handle, TCSADRAIN, &t)==-1) + throw system_error("tcsetattr"); #endif } @@ -114,7 +118,8 @@ void Console::get_size(unsigned &rows, unsigned &cols) cols = 80; #else struct winsize wsz; - ioctl(*handle, TIOCGWINSZ, &wsz); + if(ioctl(*handle, TIOCGWINSZ, &wsz)==-1) + throw system_error("ioctl TIOCGWINSZ"); rows = wsz.ws_row; cols = wsz.ws_col; #endif