From 2ac101fa51da3bfe3a8a7952e54e9de69bfd0fdd Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 24 Feb 2018 23:01:55 +0100 Subject: [PATCH] - removed tmpfileplus, which was only used by the old Timidity++ player. --- src/CMakeLists.txt | 1 - .../music_timiditypp_mididevice.cpp | 1 - src/tmpfileplus.cpp | 201 ------------------ src/tmpfileplus.h | 43 ---- 4 files changed, 246 deletions(-) delete mode 100644 src/tmpfileplus.cpp delete mode 100644 src/tmpfileplus.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a35b3f3bf..689325a73 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1198,7 +1198,6 @@ set (PCH_SOURCES events.cpp GuillotineBinPack.cpp SkylineBinPack.cpp - tmpfileplus.cpp ) enable_precompiled_headers( g_pch.h PCH_SOURCES ) diff --git a/src/sound/mididevices/music_timiditypp_mididevice.cpp b/src/sound/mididevices/music_timiditypp_mididevice.cpp index 5730c81dc..00975a284 100644 --- a/src/sound/mididevices/music_timiditypp_mididevice.cpp +++ b/src/sound/mididevices/music_timiditypp_mididevice.cpp @@ -42,7 +42,6 @@ #include "cmdlib.h" #include "templates.h" #include "version.h" -#include "tmpfileplus.h" #include "m_misc.h" #include "v_text.h" #include "i_system.h" diff --git a/src/tmpfileplus.cpp b/src/tmpfileplus.cpp deleted file mode 100644 index 2c14e1563..000000000 --- a/src/tmpfileplus.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* $Id: tmpfileplus.c $ */ -/* - * $Date: 2016-06-01 03:31Z $ - * $Revision: 2.0.0 $ - * $Author: dai $ - */ - -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * Copyright (c) 2012-16 David Ireland, DI Management Services Pty Ltd - * . - */ - - -/* -* NAME -* tmpfileplus - create a unique temporary file -* -* SYNOPSIS -* FILE *tmpfileplus(const char *dir, const char *prefix, char **pathname, int keep) -* -* DESCRIPTION -* The tmpfileplus() function opens a unique temporary file in binary -* read/write (w+b) mode. The file is opened with the O_EXCL flag, -* guaranteeing that the caller is the only user. The filename will consist -* of the string given by `prefix` followed by 10 random characters. If -* `prefix` is NULL, then the string "tmp." will be used instead. The file -* will be created in an appropriate directory chosen by the first -* successful attempt in the following sequence: -* -* a) The directory given by the `dir` argument (so the caller can specify -* a secure directory to take precedence). -* -* b) The directory name in the environment variables: -* -* (i) "TMP" [Windows only] -* (ii) "TEMP" [Windows only] -* (iii) "TMPDIR" [Unix only] -* -* c) `P_tmpdir` as defined in [Unix only] (in Windows, this is -* usually "\", which is no good). -* -* d) The current working directory. -* -* If a file cannot be created in any of the above directories, then the -* function fails and NULL is returned. -* -* If the argument `pathname` is not a null pointer, then it will point to -* the full pathname of the file. The pathname is allocated using `malloc` -* and therefore should be freed by `free`. -* -* If `keep` is nonzero and `pathname` is not a null pointer, then the file -* will be kept after it is closed. Otherwise the file will be -* automatically deleted when it is closed or the program terminates. -* -* -* RETURN VALUE -* The tmpfileplus() function returns a pointer to the open file stream, -* or NULL if a unique file cannot be opened. -* -* -* ERRORS -* ENOMEM Not enough memory to allocate filename. -* -*/ - -#include "tmpfileplus.h" - -#include -#include -#include -#include -#include - -/* Non-ANSI include files that seem to work in both MSVC and Linux */ -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#ifdef _WIN32 -/* MSVC nags to enforce ISO C++ conformant function names with leading "_", - * so we define our own function names to avoid whingeing compilers... - */ -#define OPEN_ _open -#define FDOPEN_ _fdopen -#else -#define OPEN_ open -#define FDOPEN_ fdopen -#endif - -#include "m_random.h" -#include "cmdlib.h" -#include "zstring.h" - - -#define RANDCHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" -#define NRANDCHARS (sizeof(RANDCHARS) - 1) - -static FRandom pr_tmpfile; - -/** Replace each byte in string s with a random character from TEMPCHARS */ -static char *set_randpart(char *s) -{ - size_t i; - unsigned int r; - - - for (i = 0; i < strlen(s); i++) - { - r = pr_tmpfile() % NRANDCHARS; - s[i] = (RANDCHARS)[r]; - } - return s; -} - -/** - * Try and create a randomly-named file in directory `tmpdir`. - * If successful, allocate memory and set `tmpname_ptr` to full filepath, and return file pointer; - * otherwise return NULL. - * If `keep` is zero then create the file as temporary and it should not exist once closed. - */ -static FILE *mktempfile_internal(const char *tmpdir, const char *pfx, FString *tmpname_ptr, int keep) -/* PRE: - * pfx is not NULL and points to a valid null-terminated string - * tmpname_ptr is not NULL. - */ -{ - FILE *fp; - int fd; - char randpart[] = "1234567890"; - int i; - int oflag, pmode; - -/* In Windows, we use the _O_TEMPORARY flag with `open` to ensure the file is deleted when closed. - * In Unix, we use the remove function after opening the file. (This does not work in Windows, - * which does not allow an open file to be deleted.) - */ -#ifdef _WIN32 - /* MSVC flags */ - oflag = _O_BINARY|_O_CREAT|_O_RDWR; - if (!keep) - oflag |= _O_TEMPORARY; - pmode = _S_IREAD | _S_IWRITE; -#else - /* Standard POSIX flags */ - oflag = O_CREAT|O_RDWR; - pmode = S_IRUSR|S_IWUSR; -#endif - - if (!tmpdir || !DirExists(tmpdir)) { - errno = ENOENT; - return NULL; - } - - FString tempname; - - /* If we don't manage to create a file after 10 goes, there is something wrong... */ - for (i = 0; i < 10; i++) - { - tempname.Format("%s/%s%s", tmpdir, pfx, set_randpart(randpart)); - fd = OPEN_(tempname, oflag, pmode); - if (fd != -1) break; - } - if (fd != -1) - { /* Success, so return user a proper ANSI C file pointer */ - fp = FDOPEN_(fd, "w+b"); - errno = 0; - -#ifndef _WIN32 - /* [Unix only] And make sure the file will be deleted once closed */ - if (!keep) remove(tempname); -#endif - - } - else - { /* We failed */ - fp = NULL; - } - - if (tmpname_ptr) *tmpname_ptr = tempname; - return fp; -} - -/**********************/ -/* EXPORTED FUNCTIONS */ -/**********************/ - -FILE *tmpfileplus(const char *dir, const char *prefix, FString *pathname, int keep) -{ - FILE *fp = mktempfile_internal(dir, (prefix ? prefix : "tmp."), pathname, keep); - if (!fp && pathname) *pathname = ""; - return fp; -} - diff --git a/src/tmpfileplus.h b/src/tmpfileplus.h deleted file mode 100644 index 06219edd6..000000000 --- a/src/tmpfileplus.h +++ /dev/null @@ -1,43 +0,0 @@ -/* $Id: tmpfileplus.h $ */ -/* - * $Date: 2016-06-01 03:31Z $ - * $Revision: 2.0.0 $ - * $Author: dai $ - */ - -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * Copyright (c) 2012-16 David Ireland, DI Management Services Pty Ltd - * . - */ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#ifndef TMPFILEPLUS_H_ -#define TMPFILEPLUS_H_ - -#include - -class FString; - -/** Create a unique temporary file. -@param dir (optional) directory to create file. If NULL use default TMP directory. -@param prefix (optional) prefix for file name. If NULL use "tmp.". -@param pathname (optional) pointer to a buffer to receive the temp filename. - Allocated using `malloc()`; user to free. Ignored if NULL. -@param keep If `keep` is nonzero and `pathname` is not NULL, then keep the file after closing. - Otherwise file is automatically deleted when closed. -@return Pointer to stream opened in binary read/write (w+b) mode, or a null pointer on error. -@exception ENOMEM Not enough memory to allocate filename. -*/ -FILE *tmpfileplus(const char *dir, const char *prefix, FString *pathname, int keep); - - -#define TMPFILE_KEEP 1 - -#endif /* end TMPFILEPLUS_H_ */