From 7e620bff817c5826adc5a73acd7bc1774d835c74 Mon Sep 17 00:00:00 2001 From: Daid Date: Mon, 26 Oct 2020 20:28:15 +0100 Subject: [PATCH 1/3] Allow rgbasm and rgblink to use stdout and stdin as input and output --- src/asm/output.c | 7 ++++++- src/link/main.c | 10 +++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/asm/output.c b/src/asm/output.c index a5168338..0d04d7e8 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -471,7 +471,12 @@ static void registerExportedSymbol(struct Symbol *symbol, void *arg) */ void out_WriteObject(void) { - FILE *f = fopen(tzObjectname, "wb"); + FILE *f; + if (strcmp(tzObjectname, "-") != 0) { + f = fopen(tzObjectname, "wb"); + } else { + f = fdopen(1, "wb"); + } if (!f) err(1, "Couldn't write file '%s'", tzObjectname); diff --git a/src/link/main.c b/src/link/main.c index 00bc1ae3..64256aed 100644 --- a/src/link/main.c +++ b/src/link/main.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -126,7 +127,14 @@ FILE *openFile(char const *fileName, char const *mode) if (!fileName) return NULL; - FILE *file = fopen(fileName, mode); + FILE *file; + if (strcmp(fileName, "-") != 0) { + file = fopen(fileName, mode); + } else if (strchr(mode, 'r')) { + file = fdopen(0, mode); + } else { + file = fdopen(1, mode); + } if (!file) err(1, "Could not open file \"%s\"", fileName); From 84edfb3d885e84f7ca8e02c3db11ca29718a8e3f Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 3 Nov 2020 13:33:02 +0100 Subject: [PATCH 2/3] Update output.c --- src/asm/output.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/asm/output.c b/src/asm/output.c index 0d04d7e8..4e7585f3 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -472,11 +472,10 @@ static void registerExportedSymbol(struct Symbol *symbol, void *arg) void out_WriteObject(void) { FILE *f; - if (strcmp(tzObjectname, "-") != 0) { + if (strcmp(tzObjectname, "-") != 0) f = fopen(tzObjectname, "wb"); - } else { + else f = fdopen(1, "wb"); - } if (!f) err(1, "Couldn't write file '%s'", tzObjectname); From 642daf1a76847fbe4b361f3d0810b60c41aad89e Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 3 Nov 2020 13:33:57 +0100 Subject: [PATCH 3/3] Update main.c --- src/link/main.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/link/main.c b/src/link/main.c index 64256aed..77f64f63 100644 --- a/src/link/main.c +++ b/src/link/main.c @@ -128,13 +128,12 @@ FILE *openFile(char const *fileName, char const *mode) return NULL; FILE *file; - if (strcmp(fileName, "-") != 0) { + if (strcmp(fileName, "-") != 0) file = fopen(fileName, mode); - } else if (strchr(mode, 'r')) { + else if (mode[0] == 'r') file = fdopen(0, mode); - } else { + else file = fdopen(1, mode); - } if (!file) err(1, "Could not open file \"%s\"", fileName);