Adjust to random-seed move

For some time, GNU/Linux systems have put their random-seed file
somewhere other than where src/filelock.c looks for it.
Catch up to this by having 'configure' scout for it.
* configure.ac (BOOT_TIME_FILE):
Define this at configure-time.
* nt/inc/ms-w32.h (BOOT_TIME_FILE): Override 'configure'.
* src/filelock.c (BOOT_TIME_FILE): Remove default definition,
since 'configure' defaults it now.
This commit is contained in:
Paul Eggert 2023-08-09 12:06:25 -07:00
parent 020b5d7fef
commit cc0a30a876
3 changed files with 32 additions and 6 deletions

View file

@ -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

View file

@ -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"
/* ============================================================ */

View file

@ -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