Temporary fix for WSL

This commit is contained in:
Renaud 2021-08-19 10:07:13 +08:00
parent e6921a8ed1
commit 679d8d098b
2 changed files with 27 additions and 25 deletions

View File

@ -7,7 +7,7 @@
# if __NetBSD__ # if __NetBSD__
# define BSD 1 # define BSD 1
# define POSIX 1 # define POSIX 1
# elsif __linux__ # elif __linux__
# define USG 1 # define USG 1
# define SVR4 1 /* locks */ # define SVR4 1 /* locks */
# define POSIX 1 # define POSIX 1
@ -45,7 +45,7 @@
# include <stdlib.h> # include <stdlib.h>
void *allocate( size_t size) ; void *allocate( size_t size) ;
void release( void *ptr) ; void release( void *ptr) ;
# define malloc allocate # define malloc allocate
# define free release # define free release
#endif #endif

48
posix.c
View File

@ -9,7 +9,7 @@
display. All operating systems. display. All operating systems.
modified by Petri Kutvonen modified by Petri Kutvonen
based on termio.c, with all the old cruft removed, and based on termio.c, with all the old cruft removed, and
fixed for termios rather than the old termio.. Linus Torvalds fixed for termios rather than the old termio.. Linus Torvalds
*/ */
@ -149,27 +149,28 @@ void ttflush(void)
exit(15); exit(15);
} }
/*
* Read a character from the terminal, performing no editing and doing no echo
* at all.
* Very simple on CPM, because the system can do exactly what you want.
*/
int ttgetc(void)
{
static char buffer[32];
static int pending;
unicode_t c;
int count, bytes = 1, expected;
count = pending; /* Read a character from the terminal, performing no editing and doing no
if (!count) { echo at all.
count = read(0, buffer, sizeof(buffer)); */
if (count <= 0) int ttgetc( void) {
return 0; static char buffer[ 32] ;
pending = count; static int pending ;
unicode_t c ;
int count = pending ;
if( !count) {
count = read( 0, buffer, sizeof( buffer)) ;
if( count <= 0)
return 0 ;
pending = count ;
} }
c = (unsigned char) buffer[0]; int bytes = 1 ;
c = (unsigned char) buffer[ 0] ;
#if 0 // temporary fix for wsl
if (c >= 32 && c < 128) if (c >= 32 && c < 128)
goto done; goto done;
@ -186,7 +187,7 @@ int ttgetc(void)
* delay for some *very* unusual utf8 character * delay for some *very* unusual utf8 character
* input. * input.
*/ */
expected = 2; int expected = 2;
if ((c & 0xe0) == 0xe0) if ((c & 0xe0) == 0xe0)
expected = 6; expected = 6;
@ -220,9 +221,10 @@ int ttgetc(void)
bytes = utf8_to_unicode(buffer, 0, pending, &c); bytes = utf8_to_unicode(buffer, 0, pending, &c);
done: done:
pending -= bytes; #endif
memmove(buffer, buffer+bytes, pending); pending -= bytes ;
return c; memmove( buffer, buffer + bytes, pending) ;
return c ;
} }
/* typahead: Check to see if any characters are already in the /* typahead: Check to see if any characters are already in the