aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-07-23 20:42:03 +0200
committerkdx <kikoodx@paranoici.org>2023-07-23 20:42:03 +0200
commitc9a0df2e61b119317d39d26968e14ca0aa55b321 (patch)
tree962fa6e695c3a46054bf6af884799dd42aa68c64
parentd6241a239b0debccff0d587867156e1eb3e15206 (diff)
downloadorga-c9a0df2e61b119317d39d26968e14ca0aa55b321.tar.gz
eat input
-rw-r--r--src/orgaemu.c10
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]);