Make temporary directory safely when ~/.w3m is unwritable

This commit is contained in:
Tatsuya Kinoshita
2018-01-21 10:34:11 +09:00
parent b592dac63b
commit 18dcbadf27
6 changed files with 16 additions and 2 deletions
+1
View File
@@ -210,6 +210,7 @@ typedef long clen_t;
#define HAVE_SRANDOM #define HAVE_SRANDOM
#undef HAVE_GETPASSPHRASE #undef HAVE_GETPASSPHRASE
#define HAVE_CHDIR #define HAVE_CHDIR
#define HAVE_MKDTEMP
#define SETJMP(env) sigsetjmp(env,1) #define SETJMP(env) sigsetjmp(env,1)
+1
View File
@@ -143,6 +143,7 @@ typedef long clen_t;
#undef HAVE_SRANDOM #undef HAVE_SRANDOM
#undef HAVE_GETPASSPHRASE #undef HAVE_GETPASSPHRASE
#undef HAVE_CHDIR #undef HAVE_CHDIR
#undef HAVE_MKDTEMP
#undef HAVE_SETPGRP #undef HAVE_SETPGRP
#undef HAVE_SETLOCALE #undef HAVE_SETLOCALE
#undef HAVE_LANGINFO_CODESET #undef HAVE_LANGINFO_CODESET
Vendored
+1 -1
View File
@@ -8767,7 +8767,7 @@ _ACEOF
for ac_func in strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale for ac_func in strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir mkdtemp getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale
do : do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+1 -1
View File
@@ -150,7 +150,7 @@ dnl AC_FUNC_MEMCMP
dnl AC_FUNC_MMAP dnl AC_FUNC_MMAP
dnl AC_FUNC_SETVBUF_REVERSED dnl AC_FUNC_SETVBUF_REVERSED
dnl AC_FUNC_VPRINTF dnl AC_FUNC_VPRINTF
AC_CHECK_FUNCS(strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale) AC_CHECK_FUNCS(strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir mkdtemp getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale)
AC_FUNC_STRFTIME AC_FUNC_STRFTIME
AC_FUNC_WAIT3 AC_FUNC_WAIT3
AC_FUNC_SETPGRP AC_FUNC_SETPGRP
+7
View File
@@ -5971,6 +5971,13 @@ w3m_exit(int i)
#endif #endif
#ifdef __MINGW32_VERSION #ifdef __MINGW32_VERSION
WSACleanup(); WSACleanup();
#endif
#ifdef HAVE_MKDTEMP
if (no_rc_dir && tmp_dir != rc_dir)
if (rmdir(tmp_dir) != 0) {
fprintf(stderr, "Can't remove temporary directory (%s)!\n", tmp_dir);
exit(1);
}
#endif #endif
exit(i); exit(i);
} }
+5
View File
@@ -1330,6 +1330,11 @@ init_rc(void)
((tmp_dir = getenv("TMP")) == NULL || *tmp_dir == '\0') && ((tmp_dir = getenv("TMP")) == NULL || *tmp_dir == '\0') &&
((tmp_dir = getenv("TEMP")) == NULL || *tmp_dir == '\0')) ((tmp_dir = getenv("TEMP")) == NULL || *tmp_dir == '\0'))
tmp_dir = "/tmp"; tmp_dir = "/tmp";
#ifdef HAVE_MKDTEMP
tmp_dir = mkdtemp(Strnew_m_charp(tmp_dir, "/w3m-XXXXXX", NULL)->ptr);
if (tmp_dir == NULL)
tmp_dir = rc_dir;
#endif
create_option_search_table(); create_option_search_table();
goto open_rc; goto open_rc;
} }