]> git.eshelyaron.com Git - emacs.git/commitdiff
Adjust to random-seed move
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 9 Aug 2023 19:06:25 +0000 (12:06 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 9 Aug 2023 19:15:47 +0000 (12:15 -0700)
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.

configure.ac
nt/inc/ms-w32.h
src/filelock.c

index 6e080c1c6664e86f62081be65c3b730176a26a70..56c8cf1ae051051bee67e66078c91e6a7c2cbc87 100644 (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
index 58be1199345bcf9ec435d08333fec2ef45b4f085..b23fd5030fa5629a8b3ef36713d47685f7e402d0 100644 (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"
 
 /* ============================================================ */
index 66b8fd2ceac69bfe389e56c2e5d370f91cd724a9..0ad130353f3718b1dc6a373d6aece77678a1dced 100644 (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