diff --git a/CMakeLists.txt b/CMakeLists.txt index 0151169..84c86c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,17 +23,6 @@ macro (optional_pkg_check_modules prefix) endif() endmacro() -check_symbol_exists(mkdtemp "stdlib.h;unistd.h" HAVE_MKDTEMP) -check_symbol_exists(gettimeofday "sys/time.h" HAVE_GETTIMEOFDAY) -if (NOT HAVE_MKDTEMP) - include(CheckIncludeFiles) - check_include_files("stddef.h;stdlib.h;string.h" STDC_HEADERS) - check_include_file(fcntl.h HAVE_FCNTL_H) - check_include_file(sys/time.h HAVE_SYS_TIME_H) - check_include_file(stdint.h HAVE_STDINT_H) - check_include_file(unistd.h HAVE_UNISTD_H) -endif() - if (EMSCRIPTEN) set(SDL2_FOUND 1) set(FREETYPE_FOUND 1) diff --git a/config.h.in b/config.h.in index dab50c4..8f002c6 100644 --- a/config.h.in +++ b/config.h.in @@ -29,9 +29,6 @@ #cmakedefine QUIET_MIDI @QUIET_MIDI@ -#cmakedefine STDC_HEADERS @STDC_HEADERS@ -#cmakedefine HAVE_MKDTEMP @HAVE_MKDTEMP@ -#cmakedefine HAVE_GETTIMEOFDAY @HAVE_GETTIMEOFDAY@ #cmakedefine HAVE_SDLJOY @HAVE_SDLJOY@ #cmakedefine HAVE_XF86VMODE @HAVE_XF86VMODE@ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8762895..6196600 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,7 +41,7 @@ target_sources(xsystem35 PRIVATE # Misc target_sources(xsystem35 PRIVATE LittleEndian.c counter.c imput.c profile.c mt19937-1.c utfsjis.c - filecheck.c tempname.c) + filecheck.c) # Scenario target_sources(xsystem35 PRIVATE diff --git a/src/nact.h b/src/nact.h index 177d704..8d8442e 100644 --- a/src/nact.h +++ b/src/nact.h @@ -63,7 +63,6 @@ typedef struct { boolean popupmenu_opened; /* popup menu が 開いているか */ boolean mmx_is_ok; /* MMX が有効かどうか */ - char *tmpdir; char game_title_name[31]; int scenario_version; diff --git a/src/tempname.c b/src/tempname.c deleted file mode 100644 index 8391c88..0000000 --- a/src/tempname.c +++ /dev/null @@ -1,265 +0,0 @@ -/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#if HAVE_CONFIG_H -# include -#endif - -#if !(HAVE_MKDTEMP) - - -#include -#include - -#include -#ifndef __set_errno -# define __set_errno(Val) errno = (Val) -#endif - -#include -#ifndef P_tmpdir -# define P_tmpdir "/tmp" -#endif -#ifndef TMP_MAX -# define TMP_MAX 238328 -#endif -#ifndef __GT_FILE -# define __GT_FILE 0 -# define __GT_BIGFILE 1 -# define __GT_DIR 2 -# define __GT_NOCREATE 3 -#endif - -#if STDC_HEADERS -# include -# include -# include -#endif - -#if HAVE_FCNTL_H -# include -#endif - -#if HAVE_SYS_TIME_H -# include -#endif - -#if HAVE_STDINT_H -# include -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#include -#if STAT_MACROS_BROKEN -# undef S_ISDIR -#endif -#if !defined S_ISDIR && defined S_IFDIR -# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) -#endif -#if !S_IRUSR && S_IREAD -# define S_IRUSR S_IREAD -#endif -#if !S_IRUSR -# define S_IRUSR 00400 -#endif -#if !S_IWUSR && S_IWRITE -# define S_IWUSR S_IWRITE -#endif -#if !S_IWUSR -# define S_IWUSR 00200 -#endif -#if !S_IXUSR && S_IEXEC -# define S_IXUSR S_IEXEC -#endif -#if !S_IXUSR -# define S_IXUSR 00100 -#endif - -#define struct_stat64 struct stat -#define __getpid getpid -#define __gettimeofday gettimeofday -#define __mkdir mkdir -#define __open open -#define __open64 open -#define __lxstat64(version, path, buf) lstat (path, buf) -#define __xstat64(version, path, buf) stat (path, buf) - - -#if ! (HAVE___SECURE_GETENV) -# define __secure_getenv getenv -#endif - -/* Use the widest available unsigned type if uint64_t is not - available. The algorithm below extracts a number less than 62**6 - (approximately 2**35.725) from uint64_t, so ancient hosts where - uintmax_t is only 32 bits lose about 3.725 bits of randomness, - which is better than not having mkstemp at all. */ -#if !defined uint64_t -# define uint64_t guint64 -#endif - -/* These are the characters used in temporary filenames. */ -static const char letters[] = -"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - -/* Generate a temporary file name based on TMPL. TMPL must match the - rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed - does not exist at the time of the call to __gen_tempname. TMPL is - overwritten with the result. - - KIND may be one of: - __GT_NOCREATE: simply verify that the name does not exist - at the time of the call. - __GT_FILE: create the file using open(O_CREAT|O_EXCL) - and return a read-write fd. The file is mode 0600. - __GT_BIGFILE: same as __GT_FILE but use open64(). - __GT_DIR: create a directory, which will be mode 0700. - - We use a clever algorithm to get hard-to-predict names. */ -static int -__gen_tempname (char *tmpl, int kind) -{ - int len; - char *XXXXXX; - static uint64_t value; - uint64_t random_time_bits; - unsigned int count; - int fd = -1; - int save_errno = errno; - struct_stat64 st; - - /* A lower bound on the number of temporary files to attempt to - generate. The maximum total number of temporary file names that - can exist for a given template is 62**6. It should never be - necessary to try all these combinations. Instead if a reasonable - number of names is tried (we define reasonable as 62**3) fail to - give the system administrator the chance to remove the problems. */ - unsigned int attempts_min = 62 * 62 * 62; - - /* The number of times to attempt to generate a temporary file. To - conform to POSIX, this must be no smaller than TMP_MAX. */ - unsigned int attempts = attempts_min < TMP_MAX ? TMP_MAX : attempts_min; - - len = strlen (tmpl); - if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX")) - { - __set_errno (EINVAL); - return -1; - } - - /* This is where the Xs start. */ - XXXXXX = &tmpl[len - 6]; - - /* Get some more or less random data. */ -#if HAVE_GETTIMEOFDAY - { - struct timeval tv; - __gettimeofday (&tv, NULL); - random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; - } -#else - random_time_bits = time (NULL); -#endif - value += random_time_bits ^ __getpid (); - - for (count = 0; count < attempts; value += 7777, ++count) - { - uint64_t v = value; - - /* Fill in the random bits. */ - XXXXXX[0] = letters[v % 62]; - v /= 62; - XXXXXX[1] = letters[v % 62]; - v /= 62; - XXXXXX[2] = letters[v % 62]; - v /= 62; - XXXXXX[3] = letters[v % 62]; - v /= 62; - XXXXXX[4] = letters[v % 62]; - v /= 62; - XXXXXX[5] = letters[v % 62]; - - switch (kind) - { - case __GT_FILE: - fd = __open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); - break; - - case __GT_BIGFILE: - fd = __open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); - break; - - case __GT_DIR: - fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR); - break; - - case __GT_NOCREATE: - /* This case is backward from the other three. __gen_tempname - succeeds if __xstat fails because the name does not exist. - Note the continue to bypass the common logic at the bottom - of the loop. */ - if (__lxstat64 (_STAT_VER, tmpl, &st) < 0) - { - if (errno == ENOENT) - { - __set_errno (save_errno); - return 0; - } - else - /* Give up now. */ - return -1; - } - continue; - - default: - assert (! "invalid KIND in __gen_tempname"); - } - - if (fd >= 0) - { - __set_errno (save_errno); - return fd; - } - else if (errno != EEXIST) - return -1; - } - - /* We got out of the loop because we ran out of combinations to try. */ - __set_errno (EEXIST); - return -1; -} - -/* Generate a unique temporary directory from TEMPLATE. - The last six characters of TEMPLATE must be "XXXXXX"; - they are replaced with a string that makes the filename unique. - The directory is created, mode 700, and its name is returned. - (This function comes from OpenBSD.) */ -char * -mkdtemp (template) - char *template; -{ - if (__gen_tempname (template, __GT_DIR)) - return NULL; - else - return template; -} - -#endif diff --git a/src/xsystem35.c b/src/xsystem35.c index ced63d4..45e9a88 100644 --- a/src/xsystem35.c +++ b/src/xsystem35.c @@ -38,12 +38,6 @@ # include #endif -#ifdef HAVE_MKDTEMP -#include -#else -extern char *mkdtemp (char *template); -#endif - #ifdef __EMSCRIPTEN__ #include #endif @@ -536,9 +530,6 @@ static void sys35_remove() { fclose(fpdebuglog); } #endif - if (nact->tmpdir && 0 != strcmp(nact->tmpdir, "/tmp")) { - rmdir(nact->tmpdir); - } } void sys_reset() { @@ -548,10 +539,6 @@ void sys_reset() { s39ini_remove(); #endif - if (0 != strcmp(nact->tmpdir, "/tmp")) { - rmdir(nact->tmpdir); - } - execvp(saved_argv[0], saved_argv); sys_error("exec fail"); } @@ -803,12 +790,6 @@ int main(int argc, char **argv) { init_signalhandler(); - nact->tmpdir = strdup("/tmp/xsystem35-XXXXXX"); - if (NULL == mkdtemp(nact->tmpdir)) { - free(nact->tmpdir); - nact->tmpdir = strdup("/tmp"); - } - mus_init(audio_buffer_size); #ifdef ENABLE_NLS