From c4e0b10f18255bc45a9e15c5bde9b11b95e9ad0f Mon Sep 17 00:00:00 2001 From: Po Lu Date: Thu, 10 Aug 2023 01:53:26 +0000 Subject: [PATCH] Fix the MS-DOS, Haiku, USG, etc builds * configure.ac (emacs_cv_boot_time_file): Only compute this on GNU/Linux, the sole system with systemd. * nt/inc/ms-w32.h (BOOT_TIME_FILE): Remove now redundant #undef. * src/filelock.c (get_boot_time): Eschew BOOT_TIME_FILE if not defined. --- configure.ac | 23 +++++++++++++---------- nt/inc/ms-w32.h | 1 - src/filelock.c | 3 ++- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index 56c8cf1ae05..b5f8a0d5416 100644 --- a/configure.ac +++ b/configure.ac @@ -2625,11 +2625,11 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then fi AC_SUBST([AUTO_DEPEND]) +BOOT_TIME_FILE= 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'], + [gnu-linux], [emacs_cv_boot_time_file=unknown AS_IF([test $cross_compiling = no], [# systemd puts it in /var/lib/systemd. @@ -2642,19 +2642,22 @@ AC_CACHE_CHECK([for old but post-boot file], /var/run/random-seed do test -f $file && { emacs_cv_boot_time_file=$file; break; } - done])])]) + done])], + [*], [emacs_cv_boot_time_file=not-needed])]) + 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], + ['not needed'], [BOOT_TIME_FILE=], [# 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.]) + +AS_IF([test -n "$BOOT_TIME_FILE"], + [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. diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h index b23fd5030fa..58be1199345 100644 --- a/nt/inc/ms-w32.h +++ b/nt/inc/ms-w32.h @@ -121,7 +121,6 @@ along with GNU Emacs. If not, see . */ 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 0ad130353f3..3b1ff8ad566 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -159,7 +159,7 @@ get_boot_time (void) } #endif /* defined (CTL_KERN) && defined (KERN_BOOTTIME) */ - if (BOOT_TIME_FILE) +#ifdef BOOT_TIME_FILE { struct stat st; if (stat (BOOT_TIME_FILE, &st) == 0) @@ -168,6 +168,7 @@ get_boot_time (void) return boot_time; } } +#endif /* BOOT_TIME_FILE */ #if defined (BOOT_TIME) /* The utmp routines maintain static state. Don't touch that state -- 2.39.2