Replace tmpname() by mkstemp() on non-MSVC compilers

This commit is contained in:
miloyip
2014-08-28 22:19:56 +08:00
parent 8dfc97f5d6
commit 6f4c83ad30
3 changed files with 12 additions and 8 deletions

View File

@@ -67,13 +67,21 @@ inline Ch* StrDup(const Ch* str) {
return buffer;
}
inline void TempFilename(char *filename) {
inline FILE* TempFile(char *filename) {
#if _MSC_VER
filename = tmpnam(filename);
// For Visual Studio, tmpnam() adds a backslash in front. Remove it.
if (filename[0] == '\\')
for (int i = 0; filename[i] != '\0'; i++)
filename[i] = filename[i + 1];
return fopen(filename, "wb");
#else
strcpy(filename, "/tmp/fileXXXXXX");
int fd = mkstemp(filename);
return fdopen(fd, "w");
#endif
}
// Use exception for catching assert