Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): extract ResolveFullName from Dir_Updat...



details:   https://anonhg.NetBSD.org/src/rev/9264032e3fa4
branches:  trunk
changeset: 1016566:9264032e3fa4
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Nov 23 22:31:04 2020 +0000

description:
make(1): extract ResolveFullName from Dir_UpdateMTime

diffstat:

 usr.bin/make/dir.c |  51 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 32 insertions(+), 19 deletions(-)

diffs (88 lines):

diff -r 4111f815d735 -r 9264032e3fa4 usr.bin/make/dir.c
--- a/usr.bin/make/dir.c        Mon Nov 23 22:14:54 2020 +0000
+++ b/usr.bin/make/dir.c        Mon Nov 23 22:31:04 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dir.c,v 1.218 2020/11/23 22:14:54 rillig Exp $ */
+/*     $NetBSD: dir.c,v 1.219 2020/11/23 22:31:04 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.218 2020/11/23 22:14:54 rillig Exp $");
+MAKE_RCSID("$NetBSD: dir.c,v 1.219 2020/11/23 22:31:04 rillig Exp $");
 
 #define DIR_DEBUG0(text) DEBUG0(DIR, text)
 #define DIR_DEBUG1(fmt, arg1) DEBUG1(DIR, fmt, arg1)
@@ -1291,25 +1291,10 @@
        return NULL;
 }
 
-/* Search gn along dirSearchPath and store its modification time in gn->mtime.
- * If no file is found, store 0 instead.
- *
- * The found file is stored in gn->path, unless the node already had a path. */
-void
-Dir_UpdateMTime(GNode *gn, Boolean recheck)
+static char *
+ResolveFullName(GNode *gn)
 {
     char *fullName;
-    struct cached_stat cst;
-
-    if (gn->type & OP_ARCHV) {
-       Arch_UpdateMTime(gn);
-       return;
-    }
-
-    if (gn->type & OP_PHONY) {
-       gn->mtime = 0;
-       return;
-    }
 
     if (gn->path == NULL) {
        if (gn->type & OP_NOPATH)
@@ -1354,6 +1339,33 @@
     if (fullName == NULL)
        fullName = bmake_strdup(gn->name);
 
+    /* XXX: Is every piece of memory freed as it should? */
+
+    return fullName;
+}
+
+/* Search gn along dirSearchPath and store its modification time in gn->mtime.
+ * If no file is found, store 0 instead.
+ *
+ * The found file is stored in gn->path, unless the node already had a path. */
+void
+Dir_UpdateMTime(GNode *gn, Boolean recheck)
+{
+    char *fullName;
+    struct cached_stat cst;
+
+    if (gn->type & OP_ARCHV) {
+       Arch_UpdateMTime(gn);
+       return;
+    }
+
+    if (gn->type & OP_PHONY) {
+       gn->mtime = 0;
+       return;
+    }
+
+    fullName = ResolveFullName(gn);
+
     if (cached_stats(fullName, &cst, recheck ? CST_UPDATE : CST_NONE) < 0) {
        if (gn->type & OP_MEMBER) {
            if (fullName != gn->path)
@@ -1367,6 +1379,7 @@
 
     if (fullName != NULL && gn->path == NULL)
        gn->path = fullName;
+    /* XXX: else free(fullName)? */
 
     gn->mtime = cst.cst_mtime;
 }



Home | Main Index | Thread Index | Old Index