From bec75d9e62122e562931b4e41b164b3003ddaf12 Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Sun, 9 Feb 2014 01:11:11 +0100 Subject: [PATCH] Avoid tmpfile(). - tmpfile() tries to create files in the C: root dir on Windows where users usually don't have access. - tmpnam() uses the curent dir which doesn't seem to be a good idea either. - tempnam(NULL,NULL) is supposed to be cleverer. --- src/ar65.vcxproj | 4 ++-- src/ar65/library.c | 17 ++++++++++++++--- src/ar65/library.h | 3 --- src/ca65.vcxproj | 4 ++-- src/cc65.vcxproj | 4 ++-- src/cl65.vcxproj | 4 ++-- src/co65.vcxproj | 4 ++-- src/common.vcxproj | 4 ++-- src/da65.vcxproj | 4 ++-- src/grc65.vcxproj | 4 ++-- src/ld65.vcxproj | 4 ++-- src/od65.vcxproj | 4 ++-- src/sim65.vcxproj | 4 ++-- src/sp65.vcxproj | 4 ++-- 14 files changed, 38 insertions(+), 30 deletions(-) diff --git a/src/ar65.vcxproj b/src/ar65.vcxproj index e83f0f984..baf3efd6b 100644 --- a/src/ar65.vcxproj +++ b/src/ar65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/ar65/library.c b/src/ar65/library.c index 9046e315f..1f8a2425e 100644 --- a/src/ar65/library.c +++ b/src/ar65/library.c @@ -64,10 +64,11 @@ /* Name of the library file */ const char* LibName = 0; +static const char* NewLibName = 0; /* File descriptor for the library file */ -FILE* NewLib = 0; static FILE* Lib = 0; +static FILE* NewLib = 0; /* The library header */ static LibHeader Header = { @@ -246,10 +247,17 @@ void LibOpen (const char* Name, int MustExist, int NeedTemp) } if (NeedTemp) { + + /* Create the temporary library name */ + NewLibName = tempnam (NULL, NULL); + if (NewLibName == 0) { + Error ("Cannot create temporary library file name: %s", strerror (errno)); + } + /* Create the temporary library */ - NewLib = tmpfile (); + NewLib = fopen (NewLibName, "w+b"); if (NewLib == 0) { - Error ("Cannot create temporary file: %s", strerror (errno)); + Error ("Cannot create temporary library file: %s", strerror (errno)); } /* Write a dummy header to the temp file */ @@ -394,6 +402,9 @@ void LibClose (void) if (NewLib && fclose (NewLib) != 0) { Error ("Problem closing temporary library file: %s", strerror (errno)); } + if (NewLibName && remove (NewLibName) != 0) { + Error ("Problem deleting temporary library file: %s", strerror (errno)); + } } diff --git a/src/ar65/library.h b/src/ar65/library.h index abb8c475f..3453f1ea5 100644 --- a/src/ar65/library.h +++ b/src/ar65/library.h @@ -51,9 +51,6 @@ /* Name of the library file */ extern const char* LibName; -/* File descriptor for the new library file */ -extern FILE* NewLib; - /*****************************************************************************/ diff --git a/src/ca65.vcxproj b/src/ca65.vcxproj index 747b836cd..cb9727a81 100644 --- a/src/ca65.vcxproj +++ b/src/ca65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG true common @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG true common diff --git a/src/cc65.vcxproj b/src/cc65.vcxproj index 888fa53b7..62d4bb416 100644 --- a/src/cc65.vcxproj +++ b/src/cc65.vcxproj @@ -46,7 +46,7 @@ - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common Level3 true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/cl65.vcxproj b/src/cl65.vcxproj index ee348830d..8e11b90d3 100644 --- a/src/cl65.vcxproj +++ b/src/cl65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/co65.vcxproj b/src/co65.vcxproj index 7560cb866..ed63b91b0 100644 --- a/src/co65.vcxproj +++ b/src/co65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/common.vcxproj b/src/common.vcxproj index a386d0c06..938e4f032 100644 --- a/src/common.vcxproj +++ b/src/common.vcxproj @@ -143,7 +143,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_LIB;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_LIB;_DEBUG true @@ -161,7 +161,7 @@ true - _CRT_SECURE_NO_WARNINGS;_LIB;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_LIB;NDEBUG true diff --git a/src/da65.vcxproj b/src/da65.vcxproj index a71e46a65..8ca8935c1 100644 --- a/src/da65.vcxproj +++ b/src/da65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/grc65.vcxproj b/src/grc65.vcxproj index 29a8ca4b5..f41dafee3 100644 --- a/src/grc65.vcxproj +++ b/src/grc65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/ld65.vcxproj b/src/ld65.vcxproj index b837e1873..1674f0cd5 100644 --- a/src/ld65.vcxproj +++ b/src/ld65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/od65.vcxproj b/src/od65.vcxproj index abb2e7c8a..41639229a 100644 --- a/src/od65.vcxproj +++ b/src/od65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/sim65.vcxproj b/src/sim65.vcxproj index 7a65f9384..f8e9fd604 100644 --- a/src/sim65.vcxproj +++ b/src/sim65.vcxproj @@ -48,7 +48,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -63,7 +63,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true diff --git a/src/sp65.vcxproj b/src/sp65.vcxproj index 1651ab007..477e80859 100644 --- a/src/sp65.vcxproj +++ b/src/sp65.vcxproj @@ -47,7 +47,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;_DEBUG common true @@ -62,7 +62,7 @@ Level3 - _CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CONSOLE;NDEBUG common true