aboutsummaryrefslogtreecommitdiffhomepage
path: root/input_common.cpp
diff options
context:
space:
mode:
authorGravatar Łukasz Niemier <lukasz@niemier.pl>2012-11-18 11:23:22 +0100
committerGravatar Łukasz Niemier <lukasz@niemier.pl>2012-11-18 11:23:22 +0100
commit47df1ae40adecd0a02fc7dd06ab0745cb18c3fe0 (patch)
tree13bf3e8fdcae60fdfb5fa5e26c95818dc7a49790 /input_common.cpp
parentb79854ad1aa814d9d35d76a1929b4726fa4bffa5 (diff)
Remove trailing whitespaces and change tabs to spaces
Diffstat (limited to 'input_common.cpp')
-rw-r--r--input_common.cpp326
1 files changed, 163 insertions, 163 deletions
diff --git a/input_common.cpp b/input_common.cpp
index 6f410c35..8f973836 100644
--- a/input_common.cpp
+++ b/input_common.cpp
@@ -1,5 +1,5 @@
/** \file input_common.c
-
+
Implementation file for the low level input library
*/
@@ -53,7 +53,7 @@ static void (*poll_handler)();
void input_common_init( int (*ih)() )
{
- interrupt_handler = ih;
+ interrupt_handler = ih;
}
void input_common_set_poll_callback(void (*handler)(void))
@@ -63,7 +63,7 @@ void input_common_set_poll_callback(void (*handler)(void))
void input_common_destroy()
{
-
+
}
/**
@@ -73,192 +73,192 @@ void input_common_destroy()
static wint_t readb()
{
/* do_loop must be set on every path through the loop; leaving it uninitialized allows the static analyzer to assist in catching mistakes. */
- unsigned char arr[1];
- bool do_loop;
-
- do
- {
+ unsigned char arr[1];
+ bool do_loop;
+
+ do
+ {
/* Invoke any poll handler */
if (poll_handler)
poll_handler();
-
- fd_set fdset;
- int fd_max=0;
- int ioport = iothread_port();
- int res;
-
- FD_ZERO( &fdset );
- FD_SET( 0, &fdset );
- if( env_universal_server.fd > 0 )
- {
- FD_SET( env_universal_server.fd, &fdset );
- if (fd_max < env_universal_server.fd) fd_max = env_universal_server.fd;
- }
- if (ioport > 0) {
- FD_SET( ioport, &fdset );
- if (fd_max < ioport) fd_max = ioport;
- }
-
- res = select( fd_max + 1, &fdset, 0, 0, 0 );
- if( res==-1 )
- {
- switch( errno )
- {
- case EINTR:
- case EAGAIN:
- {
- if( interrupt_handler )
- {
- int res = interrupt_handler();
- if( res )
- {
- return res;
- }
- if( lookahead_count )
- {
- return lookahead_arr[--lookahead_count];
- }
-
- }
-
-
- do_loop = true;
- break;
- }
- default:
- {
- /*
- The terminal has been closed. Save and exit.
- */
- return R_EOF;
- }
- }
- }
- else
- {
+
+ fd_set fdset;
+ int fd_max=0;
+ int ioport = iothread_port();
+ int res;
+
+ FD_ZERO( &fdset );
+ FD_SET( 0, &fdset );
+ if( env_universal_server.fd > 0 )
+ {
+ FD_SET( env_universal_server.fd, &fdset );
+ if (fd_max < env_universal_server.fd) fd_max = env_universal_server.fd;
+ }
+ if (ioport > 0) {
+ FD_SET( ioport, &fdset );
+ if (fd_max < ioport) fd_max = ioport;
+ }
+
+ res = select( fd_max + 1, &fdset, 0, 0, 0 );
+ if( res==-1 )
+ {
+ switch( errno )
+ {
+ case EINTR:
+ case EAGAIN:
+ {
+ if( interrupt_handler )
+ {
+ int res = interrupt_handler();
+ if( res )
+ {
+ return res;
+ }
+ if( lookahead_count )
+ {
+ return lookahead_arr[--lookahead_count];
+ }
+
+ }
+
+
+ do_loop = true;
+ break;
+ }
+ default:
+ {
+ /*
+ The terminal has been closed. Save and exit.
+ */
+ return R_EOF;
+ }
+ }
+ }
+ else
+ {
/* Assume we loop unless we see a character in stdin */
do_loop = true;
-
+
if( env_universal_server.fd > 0 && FD_ISSET( env_universal_server.fd, &fdset ) )
{
- debug( 3, L"Wake up on universal variable event" );
+ debug( 3, L"Wake up on universal variable event" );
env_universal_read_all();
if( lookahead_count )
{
return lookahead_arr[--lookahead_count];
}
- }
-
- if ( ioport > 0 && FD_ISSET(ioport, &fdset))
- {
+ }
+
+ if ( ioport > 0 && FD_ISSET(ioport, &fdset))
+ {
iothread_service_completion();
if( lookahead_count )
{
return lookahead_arr[--lookahead_count];
}
- }
-
- if( FD_ISSET( STDIN_FILENO, &fdset ) )
- {
- if( read_blocked( 0, arr, 1 ) != 1 )
- {
- /* The teminal has been closed. Save and exit. */
- return R_EOF;
- }
-
+ }
+
+ if( FD_ISSET( STDIN_FILENO, &fdset ) )
+ {
+ if( read_blocked( 0, arr, 1 ) != 1 )
+ {
+ /* The teminal has been closed. Save and exit. */
+ return R_EOF;
+ }
+
/* We read from stdin, so don't loop */
- do_loop = false;
- }
- }
- }
- while( do_loop );
-
- return arr[0];
+ do_loop = false;
+ }
+ }
+ }
+ while( do_loop );
+
+ return arr[0];
}
wchar_t input_common_readch( int timed )
{
- if( lookahead_count == 0 )
- {
- if( timed )
- {
- int count;
- fd_set fds;
- struct timeval tm=
- {
- 0,
- 1000 * WAIT_ON_ESCAPE
- }
- ;
-
- FD_ZERO( &fds );
- FD_SET( 0, &fds );
- count = select(1, &fds, 0, 0, &tm);
-
- switch( count )
- {
- case 0:
- return WEOF;
-
- case -1:
- return WEOF;
- break;
- default:
- break;
-
- }
- }
-
- wchar_t res;
- static mbstate_t state;
-
- while(1)
- {
- wint_t b = readb();
- char bb;
-
- size_t sz;
-
- if( (b >= R_NULL) && (b < R_NULL + 1000) )
- return b;
-
- bb=b;
-
- sz = mbrtowc( &res, &bb, 1, &state );
-
- switch( sz )
- {
- case (size_t)(-1):
- memset (&state, '\0', sizeof (state));
- debug( 2, L"Illegal input" );
- return R_NULL;
- case (size_t)(-2):
- break;
- case 0:
- return 0;
- default:
-
- return res;
- }
- }
- }
- else
- {
- if( !timed )
- {
- while( (lookahead_count >= 0) && (lookahead_arr[lookahead_count-1] == WEOF) )
- lookahead_count--;
- if( lookahead_count == 0 )
- return input_common_readch(0);
- }
-
- return lookahead_arr[--lookahead_count];
- }
+ if( lookahead_count == 0 )
+ {
+ if( timed )
+ {
+ int count;
+ fd_set fds;
+ struct timeval tm=
+ {
+ 0,
+ 1000 * WAIT_ON_ESCAPE
+ }
+ ;
+
+ FD_ZERO( &fds );
+ FD_SET( 0, &fds );
+ count = select(1, &fds, 0, 0, &tm);
+
+ switch( count )
+ {
+ case 0:
+ return WEOF;
+
+ case -1:
+ return WEOF;
+ break;
+ default:
+ break;
+
+ }
+ }
+
+ wchar_t res;
+ static mbstate_t state;
+
+ while(1)
+ {
+ wint_t b = readb();
+ char bb;
+
+ size_t sz;
+
+ if( (b >= R_NULL) && (b < R_NULL + 1000) )
+ return b;
+
+ bb=b;
+
+ sz = mbrtowc( &res, &bb, 1, &state );
+
+ switch( sz )
+ {
+ case (size_t)(-1):
+ memset (&state, '\0', sizeof (state));
+ debug( 2, L"Illegal input" );
+ return R_NULL;
+ case (size_t)(-2):
+ break;
+ case 0:
+ return 0;
+ default:
+
+ return res;
+ }
+ }
+ }
+ else
+ {
+ if( !timed )
+ {
+ while( (lookahead_count >= 0) && (lookahead_arr[lookahead_count-1] == WEOF) )
+ lookahead_count--;
+ if( lookahead_count == 0 )
+ return input_common_readch(0);
+ }
+
+ return lookahead_arr[--lookahead_count];
+ }
}
void input_common_unreadch( wint_t ch )
{
- lookahead_arr[lookahead_count++] = ch;
+ lookahead_arr[lookahead_count++] = ch;
}