aboutsummaryrefslogtreecommitdiff
path: root/src/orgaemu.c
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-12-11 02:32:50 +0100
committerkdx <kikoodx@paranoici.org>2023-12-11 02:45:35 +0100
commit7d9fae54818967743ff05700157290a5d7c31608 (patch)
tree23b754704426b2a4c3818e20f471975fc0d581e1 /src/orgaemu.c
parente57454faf9d5c99c063c2d13a192fef171e69bc8 (diff)
downloadorga-7d9fae54818967743ff05700157290a5d7c31608.tar.gz
orgaasm & orgaemu: support pipping input
Diffstat (limited to 'src/orgaemu.c')
-rw-r--r--src/orgaemu.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/orgaemu.c b/src/orgaemu.c
index b84dfab..73bfb6f 100644
--- a/src/orgaemu.c
+++ b/src/orgaemu.c
@@ -426,15 +426,19 @@ main(int argc, char **argv)
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]);
- return 1;
+ size_t size = 0;
+ unsigned char *data;
+ if (strcmp(argv[1], "-") == 0)
+ data = (unsigned char*)drain_stdin(&size);
+ else {
+ FILE *const file = fopen(argv[1], "rb");
+ if (file == NULL) {
+ perror(argv[1]);
+ return 1;
+ }
+ data = (unsigned char*)drain(file, &size);
+ fclose(file);
}
-
- long size;
- unsigned char *const data = (unsigned char*)drain(file, &size);
- fclose(file);
if (data == NULL)
return 1;
if (size >= MEM_SIZE) {
@@ -449,7 +453,7 @@ main(int argc, char **argv)
free(data);
return 1;
}
- for (long i = 0; i < size; i += 2)
+ for (size_t i = 0; i < size; i += 2)
mem[i / 2] = get_short(data + i);
#endif