From 1ca59f25d00f626122cc9f7a5095f676959f1266 Mon Sep 17 00:00:00 2001 From: Eldred Habert Date: Mon, 10 Feb 2020 03:08:27 +0100 Subject: [PATCH] Revert "Make RGBASM overwrite output files atomically" --- src/asm/output.c | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/src/asm/output.c b/src/asm/output.c index e8d08cba..e1cfd87d 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -16,23 +16,6 @@ #include #include #include -#include -#include - -#ifdef _WIN32 -#include -#include -/* - * The semantics of `rename` on Windows differ from POSIX in that it errors out - * when the target file exists, instead of overwriting it. - * Thus, shim `rename` with similar semantics (note that the return value of - * `MoveFileExA` is inverted, and it uses `GetLastError` instead of `errno`) - */ -#define rename(oldname, newname) \ - MoveFileExA(oldname, newname, MOVEFILE_WRITE_THROUGH | \ - MOVEFILE_REPLACE_EXISTING) \ - ? 0 : (errno = GetLastError(), -1) -#endif #include "asm/asm.h" #include "asm/charmap.h" @@ -548,25 +531,13 @@ static void checksectionoverflow(uint32_t delta_size) */ void out_WriteObject(void) { - /* Write to a temporary file in the target's folder */ - char *objectNameCopy = strdup(tzObjectname); - char const *dirPath = dirname(objectNameCopy); - char tmpFileName[strlen(dirPath) + 1 + 16 + 1]; - - sprintf(tmpFileName, "%s/rgbasm_tmpXXXXXX", dirPath); - free(objectNameCopy); - int fd = mkstemp(tmpFileName); - FILE *f; struct PatchSymbol *pSym; struct Section *pSect; - if (fd == -1) - err(1, "Couldn't create temporary file"); - addexports(); - f = fdopen(fd, "wb"); + f = fopen(tzObjectname, "wb"); if (f == NULL) fatalerror("Couldn't write file '%s'\n", tzObjectname); @@ -589,11 +560,6 @@ void out_WriteObject(void) } fclose(f); - close(fd); - - if (rename(tmpFileName, tzObjectname) != 0) - err(1, "Couldn't create object file (temp file kept as %s)", - tmpFileName); } /*