summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac31
-rw-r--r--nt/inc/ms-w32.h1
-rw-r--r--src/filelock.c6
3 files changed, 32 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac
index 6e080c1c666..56c8cf1ae05 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2625,6 +2625,37 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
fi
AC_SUBST([AUTO_DEPEND])
+AC_CACHE_CHECK([for old but post-boot file],
+ [emacs_cv_boot_time_file],
+ [AS_CASE([$opsys],
+ [*bsd|darwin|dragonfly],
+ [emacs_cv_boot_time_file='not needed'],
+ [emacs_cv_boot_time_file=unknown
+ AS_IF([test $cross_compiling = no],
+ [# systemd puts it in /var/lib/systemd.
+ # initscripts puts it in /var/lib/urandom (previously /var/lib).
+ # Linux drivers/char/random.c before 2022-02-21 suggests /var/run.
+ for file in \
+ /var/lib/systemd/random-seed \
+ /var/lib/urandom/random-seed \
+ /var/lib/random-seed \
+ /var/run/random-seed
+ do
+ test -f $file && { emacs_cv_boot_time_file=$file; break; }
+ done])])])
+AS_CASE([$emacs_cv_boot_time_file],
+ [/*|*:*], [BOOT_TIME_FILE=\"$emacs_cv_boot_time_file\"],
+ [NULL|nullptr|0], [BOOT_TIME_FILE=$emacs_cv_boot_time_file],
+ ['not needed'], [BOOT_TIME_FILE=NULL],
+ [# Guess systemd if unknown.
+ # If guess is wrong, Emacs falls back on something else.
+ BOOT_TIME_FILE=\"/var/lib/systemd/random-seed\"])
+AC_DEFINE_UNQUOTED([BOOT_TIME_FILE], [$BOOT_TIME_FILE],
+ [Name of file that, if it exists, postdates boot and predates
+ the first Emacs invocation; or a null pointer if no such file is known.
+ This file is used only on GNU/Linux and other systems
+ that lack the FreeBSD-style sysctl with KERN_BOOTTIME.])
+
#### Choose a window system.
## We leave window_system equal to none if
diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h
index 58be1199345..b23fd5030fa 100644
--- a/nt/inc/ms-w32.h
+++ b/nt/inc/ms-w32.h
@@ -121,6 +121,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
the output, but that's gross. So this should do; if the file is
not there, the boot time will be returned as zero, and filelock.c
already handles that. */
+#undef BOOT_TIME_FILE
#define BOOT_TIME_FILE "C:/pagefile.sys"
/* ============================================================ */
diff --git a/src/filelock.c b/src/filelock.c
index 66b8fd2ceac..0ad130353f3 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -59,12 +59,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <utmp.h>
#endif
-/* A file whose last-modified time is just after the most recent boot.
- Define this to be NULL to disable checking for this file. */
-#ifndef BOOT_TIME_FILE
-#define BOOT_TIME_FILE "/var/run/random-seed"
-#endif
-
/* Boot time is not available on Android. */
#if defined HAVE_ANDROID && !defined ANDROID_STUBIFY