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): clean up Dir_AddDir
details: https://anonhg.NetBSD.org/src/rev/4f07ad15e494
branches: trunk
changeset: 937847:4f07ad15e494
user: rillig <rillig%NetBSD.org@localhost>
date: Fri Aug 28 04:59:17 2020 +0000
description:
make(1): clean up Dir_AddDir
Extract the null check for path to the top level. This has the
side-effect of only incrementing dotLast.refCount if that entry is
actually used.
Reduce the indentation of the code by returning early from the simple
branches.
diffstat:
usr.bin/make/dir.c | 73 +++++++++++++++++++++++++----------------------------
1 files changed, 35 insertions(+), 38 deletions(-)
diffs (116 lines):
diff -r 3f575497db93 -r 4f07ad15e494 usr.bin/make/dir.c
--- a/usr.bin/make/dir.c Fri Aug 28 04:48:56 2020 +0000
+++ b/usr.bin/make/dir.c Fri Aug 28 04:59:17 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: dir.c,v 1.119 2020/08/28 04:48:57 rillig Exp $ */
+/* $NetBSD: dir.c,v 1.120 2020/08/28 04:59:17 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.119 2020/08/28 04:48:57 rillig Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.120 2020/08/28 04:59:17 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94";
#else
-__RCSID("$NetBSD: dir.c,v 1.119 2020/08/28 04:48:57 rillig Exp $");
+__RCSID("$NetBSD: dir.c,v 1.120 2020/08/28 04:59:17 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -1564,57 +1564,54 @@
DIR *d; /* for reading directory */
struct dirent *dp; /* entry in directory */
- if (strcmp(name, ".DOTLAST") == 0) {
- ln = path != NULL ? Lst_Find(path, DirFindName, name) : NULL;
+ if (path != NULL && strcmp(name, ".DOTLAST") == 0) {
+ ln = Lst_Find(path, DirFindName, name);
if (ln != NULL)
return Lst_Datum(ln);
- else {
- /* XXX: It is wrong to increment the refCount if dotLast is not
- * used afterwards. */
- dotLast->refCount += 1;
- if (path != NULL)
- Lst_Prepend(path, dotLast);
- }
+
+ dotLast->refCount++;
+ Lst_Prepend(path, dotLast);
}
- if (path)
+ if (path != NULL)
ln = Lst_Find(openDirectories, DirFindName, name);
if (ln != NULL) {
p = Lst_Datum(ln);
- if (path && Lst_Member(path, p) == NULL) {
+ if (Lst_Member(path, p) == NULL) {
p->refCount += 1;
Lst_Append(path, p);
}
- } else {
- DIR_DEBUG1("Caching %s ...", name);
+ return p;
+ }
+
+ DIR_DEBUG1("Caching %s ...", name);
- if ((d = opendir(name)) != NULL) {
- p = bmake_malloc(sizeof(Path));
- p->name = bmake_strdup(name);
- p->hits = 0;
- p->refCount = 1;
- Hash_InitTable(&p->files, -1);
+ if ((d = opendir(name)) != NULL) {
+ p = bmake_malloc(sizeof(Path));
+ p->name = bmake_strdup(name);
+ p->hits = 0;
+ p->refCount = 1;
+ Hash_InitTable(&p->files, -1);
- while ((dp = readdir(d)) != NULL) {
+ while ((dp = readdir(d)) != NULL) {
#if defined(sun) && defined(d_ino) /* d_ino is a sunos4 #define for d_fileno */
- /*
- * The sun directory library doesn't check for a 0 inode
- * (0-inode slots just take up space), so we have to do
- * it ourselves.
- */
- if (dp->d_fileno == 0) {
- continue;
- }
+ /*
+ * The sun directory library doesn't check for a 0 inode
+ * (0-inode slots just take up space), so we have to do
+ * it ourselves.
+ */
+ if (dp->d_fileno == 0) {
+ continue;
+ }
#endif /* sun && d_ino */
- (void)Hash_CreateEntry(&p->files, dp->d_name, NULL);
- }
- (void)closedir(d);
- Lst_Append(openDirectories, p);
- if (path != NULL)
- Lst_Append(path, p);
+ (void)Hash_CreateEntry(&p->files, dp->d_name, NULL);
}
- DIR_DEBUG0("done\n");
+ (void)closedir(d);
+ Lst_Append(openDirectories, p);
+ if (path != NULL)
+ Lst_Append(path, p);
}
+ DIR_DEBUG0("done\n");
return p;
}
Home |
Main Index |
Thread Index |
Old Index