From 3cb84fe9335228f10257ac049b838a166fb531c4 Mon Sep 17 00:00:00 2001
From: Paul Smith <psmith@gnu.org>
Date: Sat, 1 Oct 2022 17:17:26 -0400
Subject: [PATCH] * src/filedef.h (is_ordinary_mtime): Check for "ordinary" mod
 time.

* src/remake.c (update_file_1): Use the new macro.
---
 src/filedef.h | 2 ++
 src/remake.c  | 3 +--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/filedef.h b/src/filedef.h
index 304a07f6..ac7df008 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -212,6 +212,8 @@ FILE_TIMESTAMP f_mtime (struct file *file, int search);
                              << FILE_TIMESTAMP_LO_BITS) \
                             + ORDINARY_MTIME_MIN + FILE_TIMESTAMPS_PER_S - 1)
 
+#define is_ordinary_mtime(_t) ((_t) >= ORDINARY_MTIME_MIN && (_t) <= ORDINARY_MTIME_MAX)
+
 /* Modtime value to use for 'infinitely new'.  We used to get the current time
    from the system and use that whenever we wanted 'new'.  But that causes
    trouble when the machine running make and the machine holding a file have
diff --git a/src/remake.c b/src/remake.c
index 69a0e6cb..a97431b9 100644
--- a/src/remake.c
+++ b/src/remake.c
@@ -491,8 +491,7 @@ update_file_1 (struct file *file, unsigned int depth)
   noexist = this_mtime == NONEXISTENT_MTIME;
   if (noexist)
     DBF (DB_BASIC, _("File '%s' does not exist.\n"));
-  else if (ORDINARY_MTIME_MIN <= this_mtime && this_mtime <= ORDINARY_MTIME_MAX
-           && file->low_resolution_time)
+  else if (is_ordinary_mtime (this_mtime) && file->low_resolution_time)
     {
       /* Avoid spurious rebuilds due to low resolution time stamps.  */
       int ns = FILE_TIMESTAMP_NS (this_mtime);