diff options
author | kdx <kikoodx@paranoici.org> | 2023-07-23 20:42:03 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-07-23 20:42:03 +0200 |
commit | c9a0df2e61b119317d39d26968e14ca0aa55b321 (patch) | |
tree | 962fa6e695c3a46054bf6af884799dd42aa68c64 | |
parent | d6241a239b0debccff0d587867156e1eb3e15206 (diff) | |
download | orga-c9a0df2e61b119317d39d26968e14ca0aa55b321.tar.gz |
eat input
-rw-r--r-- | src/orgaemu.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/orgaemu.c b/src/orgaemu.c index 246ba8d..f1a1ac4 100644 --- a/src/orgaemu.c +++ b/src/orgaemu.c @@ -1,8 +1,10 @@ #include "ops.h" +#include <fcntl.h> #include <stdarg.h> #include <stdio.h> #include <stdint.h> #include <stdlib.h> +#include <termios.h> #ifdef EMBED_ROM #include "rom.h" @@ -14,6 +16,7 @@ static uint16_t *mem = NULL, *stack = NULL, *rstack = NULL; static size_t stack_ptr = 0, rstack_ptr = 0; +static struct termios old_termios = {0}, new_termios = {0}; #ifndef NO_SDL #include <SDL2/SDL.h> @@ -144,6 +147,7 @@ fail(void) free(stack); if (rstack != NULL) free(rstack); + tcsetattr(0, TCSANOW, &old_termios); return 1; } @@ -416,6 +420,12 @@ main(int argc, char **argv) return 1; } + tcgetattr(0, &old_termios); + memcpy(&new_termios, &old_termios, sizeof(new_termios)); + new_termios.c_lflag &= ~ICANON; /* disable buffered IO */ + new_termios.c_lflag &= ~ECHO; /* disable echo */ + tcsetattr(0, TCSANOW, &new_termios); + FILE *const file = fopen(argv[1], "rb"); if (file == NULL) { perror(argv[1]); |