diff options
author | kdx <kikoodx@paranoici.org> | 2023-12-11 02:32:50 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-12-11 02:45:35 +0100 |
commit | 7d9fae54818967743ff05700157290a5d7c31608 (patch) | |
tree | 23b754704426b2a4c3818e20f471975fc0d581e1 /src/orgaemu.c | |
parent | e57454faf9d5c99c063c2d13a192fef171e69bc8 (diff) | |
download | orga-7d9fae54818967743ff05700157290a5d7c31608.tar.gz |
orgaasm & orgaemu: support pipping input
Diffstat (limited to 'src/orgaemu.c')
-rw-r--r-- | src/orgaemu.c | 22 |
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 |