From cb7cf979369b5b3b4db0154368e379ae8ab8aa25 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Sat, 6 Jan 2007 00:34:50 +0000 Subject: Choose the locations for temporary files more intelligently. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 821 --- src/i_sound.c | 10 ++++------ src/m_misc.c | 31 +++++++++++++++++++++++++++++++ src/m_misc.h | 2 ++ 3 files changed, 37 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/i_sound.c b/src/i_sound.c index ec3a68ad..ee0ad57b 100644 --- a/src/i_sound.c +++ b/src/i_sound.c @@ -677,7 +677,7 @@ static boolean ConvertMus(byte *musdata, int len, char *filename) void *I_RegisterSong(void *data, int len) { - char filename[64]; + char *filename; Mix_Music *music; if (!music_initialised) @@ -686,11 +686,7 @@ void *I_RegisterSong(void *data, int len) // MUS files begin with "MUS" // Reject anything which doesnt have this signature -#ifdef _WIN32 - sprintf(filename, "doom.mid"); -#else - sprintf(filename, "/tmp/doom-%i.mid", getpid()); -#endif + filename = M_TempFile("doom.mid"); if (IsMid(data, len) && len < MAXMIDLENGTH) { @@ -718,6 +714,8 @@ void *I_RegisterSong(void *data, int len) remove(filename); + Z_Free(filename); + return music; } diff --git a/src/m_misc.c b/src/m_misc.c index 5b98960a..13ca6768 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -198,6 +198,37 @@ int M_ReadFile(char const *name, byte **buffer) return length; } +// Returns the path to a temporary file of the given name, stored +// inside the system temporary directory. +// +// The returned value must be freed with Z_Free after use. + +char *M_TempFile(char *s) +{ + char *result; + char *tempdir; + +#ifdef _WIN32 + + // Check the TEMP environment variable to find the location. + + temp = getenv("TEMP"); + + if (temp == NULL) + { + tempdir = "."; + } +#else + // In Unix, just use /tmp. + + tempdir = "/tmp"; +#endif + + result = Z_Malloc(strlen(tempdir) + strlen(s) + 2, PU_STATIC, 0); + sprintf(result, "%s%c%s", tempdir, DIR_SEPARATOR, s); + + return result; +} // // DEFAULTS diff --git a/src/m_misc.h b/src/m_misc.h index 41ba96ae..b3412e9c 100644 --- a/src/m_misc.h +++ b/src/m_misc.h @@ -57,6 +57,8 @@ void M_SetConfigDir(void); void M_MakeDirectory(char *dir); +char *M_TempFile(char *s); + boolean M_FileExists(char *file); -- cgit v1.2.3