Module Name:    src
Committed By:   rillig
Date:           Sun Nov  8 09:06:23 UTC 2020

Modified Files:
        src/usr.bin/make: arch.c dir.c make.c nonints.h

Log Message:
make(1): change return type of Arch_MemberMTime to void

This makes it easier to prove that Dir_MTime always returns gn->mtime,
without looking at the implementation of Arch_UpdateMemberMTime.


To generate a diff of this commit:
cvs rdiff -u -r1.172 -r1.173 src/usr.bin/make/arch.c
cvs rdiff -u -r1.198 -r1.199 src/usr.bin/make/dir.c
cvs rdiff -u -r1.192 -r1.193 src/usr.bin/make/make.c
cvs rdiff -u -r1.156 -r1.157 src/usr.bin/make/nonints.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/arch.c
diff -u src/usr.bin/make/arch.c:1.172 src/usr.bin/make/arch.c:1.173
--- src/usr.bin/make/arch.c:1.172	Sun Nov  8 08:33:07 2020
+++ src/usr.bin/make/arch.c	Sun Nov  8 09:06:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: arch.c,v 1.172 2020/11/08 08:33:07 rillig Exp $	*/
+/*	$NetBSD: arch.c,v 1.173 2020/11/08 09:06:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -98,7 +98,7 @@
  *			placed in the member's GNode. Returns the
  *			modification time.
  *
- *	Arch_MemberMTime
+ *	Arch_UpdateMemberMTime
  *			Find the modification time of a member of
  *			an archive. Called when the member doesn't
  *			already exist. Looks in the archive for the
@@ -125,7 +125,7 @@
 #include "config.h"
 
 /*	"@(#)arch.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: arch.c,v 1.172 2020/11/08 08:33:07 rillig Exp $");
+MAKE_RCSID("$NetBSD: arch.c,v 1.173 2020/11/08 09:06:22 rillig Exp $");
 
 typedef struct List ArchList;
 typedef struct ListNode ArchListNode;
@@ -906,10 +906,10 @@ Arch_MTime(GNode *gn)
     return modTime;
 }
 
-/* Given a non-existent archive member's node, get its modification time from
- * its archived form, if it exists. gn->mtime is filled in as well. */
-time_t
-Arch_MemberMTime(GNode *gn)
+/* Given a non-existent archive member's node, update gn->mtime from its
+ * archived form, if it exists. */
+void
+Arch_UpdateMemberMTime(GNode *gn)
 {
     GNodeListNode *ln;
 
@@ -941,8 +941,6 @@ Arch_MemberMTime(GNode *gn)
 	    break;
 	}
     }
-
-    return gn->mtime;
 }
 
 /* Search for a library along the given search path.

Index: src/usr.bin/make/dir.c
diff -u src/usr.bin/make/dir.c:1.198 src/usr.bin/make/dir.c:1.199
--- src/usr.bin/make/dir.c:1.198	Sat Nov  7 20:45:21 2020
+++ src/usr.bin/make/dir.c	Sun Nov  8 09:06:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: dir.c,v 1.198 2020/11/07 20:45:21 rillig Exp $	*/
+/*	$NetBSD: dir.c,v 1.199 2020/11/08 09:06:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -134,7 +134,7 @@
 #include "job.h"
 
 /*	"@(#)dir.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: dir.c,v 1.198 2020/11/07 20:45:21 rillig Exp $");
+MAKE_RCSID("$NetBSD: dir.c,v 1.199 2020/11/08 09:06:22 rillig Exp $");
 
 #define DIR_DEBUG0(text) DEBUG0(DIR, text)
 #define DIR_DEBUG1(fmt, arg1) DEBUG1(DIR, fmt, arg1)
@@ -1349,13 +1349,13 @@ Dir_MTime(GNode *gn, Boolean recheck)
     if (fullName == NULL)
 	fullName = bmake_strdup(gn->name);
 
-
     flags = recheck ? CST_UPDATE : CST_NONE;
     if (cached_stats(&mtimes, fullName, &mst, flags) < 0) {
 	if (gn->type & OP_MEMBER) {
 	    if (fullName != gn->path)
 		free(fullName);
-	    return Arch_MemberMTime(gn);
+	    Arch_UpdateMemberMTime(gn);
+	    return gn->mtime;
 	}
 
 	mst.mst_mtime = 0;

Index: src/usr.bin/make/make.c
diff -u src/usr.bin/make/make.c:1.192 src/usr.bin/make/make.c:1.193
--- src/usr.bin/make/make.c:1.192	Sun Nov  8 08:55:25 2020
+++ src/usr.bin/make/make.c	Sun Nov  8 09:06:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.c,v 1.192 2020/11/08 08:55:25 rillig Exp $	*/
+/*	$NetBSD: make.c,v 1.193 2020/11/08 09:06:23 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -108,7 +108,7 @@
 #include "job.h"
 
 /*	"@(#)make.c	8.1 (Berkeley) 6/6/93"	*/
-MAKE_RCSID("$NetBSD: make.c,v 1.192 2020/11/08 08:55:25 rillig Exp $");
+MAKE_RCSID("$NetBSD: make.c,v 1.193 2020/11/08 09:06:23 rillig Exp $");
 
 /* Sequence # to detect recursion. */
 static unsigned int checked = 1;
@@ -553,6 +553,9 @@ Make_Recheck(GNode *gn)
 	       gn->name, Targ_FmtTime(gn->mtime));
     }
 #endif
+
+    /* XXX: The returned mtime may differ from gn->mtime.
+     * Intentionally? */
     return mtime;
 }
 

Index: src/usr.bin/make/nonints.h
diff -u src/usr.bin/make/nonints.h:1.156 src/usr.bin/make/nonints.h:1.157
--- src/usr.bin/make/nonints.h:1.156	Sat Nov  7 21:31:07 2020
+++ src/usr.bin/make/nonints.h	Sun Nov  8 09:06:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: nonints.h,v 1.156 2020/11/07 21:31:07 rillig Exp $	*/
+/*	$NetBSD: nonints.h,v 1.157 2020/11/08 09:06:23 rillig Exp $	*/
 
 /*-
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -80,7 +80,7 @@ Boolean Arch_ParseArchive(char **, GNode
 void Arch_Touch(GNode *);
 void Arch_TouchLib(GNode *);
 time_t Arch_MTime(GNode *);
-time_t Arch_MemberMTime(GNode *);
+void Arch_UpdateMemberMTime(GNode *gn);
 void Arch_FindLib(GNode *, SearchPath *);
 Boolean Arch_LibOODate(GNode *);
 Boolean Arch_IsLib(GNode *);

Reply via email to