X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibreadline.so_src%2Fmain.c;h=5937c6bd3d25cb59edc3d827099f067684fea136;hb=f8cde3fab5eb27ebacf9d76a7ac478a68a36a38b;hp=a12abc595f01a583782b4badfbbd01268ad88afc;hpb=8b31abd0e78318f75f952e59a8c3b65eea41cb86;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libreadline.so_src/main.c b/Usermode/Libraries/libreadline.so_src/main.c index a12abc59..5937c6bd 100644 --- a/Usermode/Libraries/libreadline.so_src/main.c +++ b/Usermode/Libraries/libreadline.so_src/main.c @@ -10,6 +10,7 @@ #include #include #include +#include #define STDIN_FD 0 #define STDOUT_FD 1 @@ -105,6 +106,7 @@ char *Readline_NonBlock(tReadline *Info) } // Return NULL when command is still being edited + errno = EAGAIN; return NULL; } @@ -116,7 +118,7 @@ char *Readline(tReadline *Info) struct ptymode mode = {.InputMode = 0, .OutputMode = 0}; _SysIOCtl(STDIN_FD, PTY_IOCTL_SETMODE, &mode); - while( NULL == (ret = Readline_NonBlock(Info)) ); + while( NULL == (ret = Readline_NonBlock(Info)) && errno == EAGAIN ); // stty +echo,canon mode.InputMode = PTYIMODE_CANON|PTYIMODE_ECHO; @@ -280,7 +282,7 @@ int Readline_int_ParseCharacter(tReadline *Info, char *Input) case '\b': if(Info->BufferWritePos <= 0) break; // Protect against underflows // Write the backsapce - _SysWrite(STDOUT_FD, &ch, 1); + _SysWrite(STDOUT_FD, "\b \b", 3); if(Info->BufferWritePos == Info->BufferUsed) // Simple case: End of string { Info->BufferUsed --;