diff --git a/src/asm/output.c b/src/asm/output.c index a5168338..4e7585f3 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -471,7 +471,11 @@ 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..77f64f63 100644 --- a/src/link/main.c +++ b/src/link/main.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -126,7 +127,13 @@ 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 (mode[0] == 'r') + file = fdopen(0, mode); + else + file = fdopen(1, mode); if (!file) err(1, "Could not open file \"%s\"", fileName);