FreeBSD-Date: 2005/03/18 15:23:49
authorMax Okumoto <okumoto@dragonflybsd.org>
Fri, 18 Mar 2005 22:12:47 +0000 (22:12 +0000)
committerMax Okumoto <okumoto@dragonflybsd.org>
Fri, 18 Mar 2005 22:12:47 +0000 (22:12 +0000)
FreeBSD-Date: 2005/03/18 15:25:23
Author: harti

o Replace a bogus use of Lst_Find with explicite LST_FOREACH calls
  and remove the unneeded second argument to ReadMakefile.

o Replace Lst_Find calls with LST_FOREACH loops. This helps in
  constification and simplifies the code because the one-liner
  predicates can be inlined into the code.

usr.bin/make/cond.c
usr.bin/make/job.c
usr.bin/make/main.c

index a4350ba..e8b9cdf 100644 (file)
@@ -38,7 +38,7 @@
  *
  * @(#)cond.c  8.2 (Berkeley) 1/2/94
  * $FreeBSD: src/usr.bin/make/cond.c,v 1.39 2005/02/07 07:49:16 harti Exp $
- * $DragonFly: src/usr.bin/make/cond.c,v 1.30 2005/02/18 01:23:22 okumoto Exp $
+ * $DragonFly: src/usr.bin/make/cond.c,v 1.31 2005/03/18 22:12:47 okumoto Exp $
  */
 
 /*-
@@ -302,27 +302,6 @@ CondDoDefined(int argLen, char *arg)
     return (result);
 }
 
-/*-
- *-----------------------------------------------------------------------
- * CondStrMatch --
- *     Front-end for Str_Match so it returns 0 on match and non-zero
- *     on mismatch. Callback function for CondDoMake via Lst_Find
- *
- * Results:
- *     0 if string matches pattern
- *
- * Side Effects:
- *     None
- *
- *-----------------------------------------------------------------------
- */
-static int
-CondStrMatch(const void *string, const void *pattern)
-{
-
-    return (!Str_Match(string, pattern));
-}
-
 /*-
  *-----------------------------------------------------------------------
  * CondDoMake --
@@ -341,12 +320,15 @@ CondDoMake(int argLen, char *arg)
 {
     char    savec = arg[argLen];
     Boolean result;
+    const LstNode *ln;
 
     arg[argLen] = '\0';
-    if (Lst_Find(&create, arg, CondStrMatch) == NULL) {
-       result = FALSE;
-    } else {
-       result = TRUE;
+    result = FALSE;
+    LST_FOREACH(ln, &create) {
+       if (Str_Match(Lst_Datum(ln), arg)) {
+           result = TRUE;
+           break;
+       }
     }
     arg[argLen] = savec;
     return (result);
index 77cc333..40e7ad3 100644 (file)
@@ -38,7 +38,7 @@
  *
  * @(#)job.c   8.2 (Berkeley) 3/19/94
  * $FreeBSD: src/usr.bin/make/job.c,v 1.75 2005/02/10 14:32:14 harti Exp $
- * $DragonFly: src/usr.bin/make/job.c,v 1.47 2005/03/16 20:03:00 okumoto Exp $
+ * $DragonFly: src/usr.bin/make/job.c,v 1.48 2005/03/18 22:12:47 okumoto Exp $
  */
 
 #ifndef OLD_JOKE
@@ -418,27 +418,6 @@ JobPassSig(int signo)
     sigaction(signo, &act, NULL);
 }
 
-/*-
- *-----------------------------------------------------------------------
- * JobCmpPid  --
- *     Compare the pid of the job with the given pid and return 0 if they
- *     are equal. This function is called from Job_CatchChildren via
- *     Lst_Find to find the job descriptor of the finished job.
- *
- * Results:
- *     0 if the pid's match
- *
- * Side Effects:
- *     None
- *-----------------------------------------------------------------------
- */
-static int
-JobCmpPid(const void *job, const void *pid)
-{
-
-    return (*(const int *)pid - ((const Job *)job)->pid);
-}
-
 /*-
  *-----------------------------------------------------------------------
  * JobPrintCommand  --
@@ -1919,11 +1898,17 @@ Job_CatchChildren(Boolean block)
            break;
        DEBUGF(JOB, ("Process %d exited or stopped.\n", pid));
 
-       jnode = Lst_Find(&jobs, &pid, JobCmpPid);
+       LST_FOREACH(jnode, &jobs) {
+           if (((const Job *)Lst_Datum(jnode))->pid == pid)
+               break;
+       }
 
        if (jnode == NULL) {
            if (WIFSIGNALED(status) && (WTERMSIG(status) == SIGCONT)) {
-               jnode = Lst_Find(&stoppedJobs, &pid, JobCmpPid);
+               LST_FOREACH(jnode, &stoppedJobs) {
+                   if (((const Job *)Lst_Datum(jnode))->pid == pid)
+                       break;
+               }
                if (jnode == NULL) {
                    Error("Resumed child (%d) not in table", pid);
                    continue;
index a41741e..b1f722b 100644 (file)
@@ -38,7 +38,7 @@
  * @(#) Copyright (c) 1988, 1989, 1990, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)main.c  8.3 (Berkeley) 3/19/94
  * $FreeBSD: src/usr.bin/make/main.c,v 1.118 2005/02/13 13:33:56 harti Exp $
- * $DragonFly: src/usr.bin/make/main.c,v 1.62 2005/03/18 18:39:07 okumoto Exp $
+ * $DragonFly: src/usr.bin/make/main.c,v 1.63 2005/03/18 22:12:47 okumoto Exp $
  */
 
 /*-
@@ -130,7 +130,7 @@ Boolean                     jobsRunning;    /* TRUE if the jobs might be running */
 
 static void            MainParseArgs(int, char **);
 char                   *chdir_verify_path(const char *, char *);
-static int             ReadMakefile(const void *, const void *);
+static int             ReadMakefile(const char *);
 static void            usage(void);
 
 static char *curdir;                   /* startup directory */
@@ -748,7 +748,10 @@ main(int argc, char **argv)
                Dir_Expand(PATH_DEFSYSMK, &sysIncPath, &sysMkPath);
                if (Lst_IsEmpty(&sysMkPath))
                        Fatal("make: no system rules (%s).", PATH_DEFSYSMK);
-               ln = Lst_Find(&sysMkPath, NULL, ReadMakefile);
+               LST_FOREACH(ln, &sysMkPath) {
+                       if (!ReadMakefile(Lst_Datum(ln)))
+                               break;
+               }
                if (ln != NULL)
                        Fatal("make: cannot open %s.", (char *)Lst_Datum(ln));
                Lst_Destroy(&sysMkPath, free);
@@ -757,14 +760,17 @@ main(int argc, char **argv)
        if (!Lst_IsEmpty(&makefiles)) {
                LstNode *ln;
 
-               ln = Lst_Find(&makefiles, NULL, ReadMakefile);
+               LST_FOREACH(ln, &makefiles) {
+                       if (!ReadMakefile(Lst_Datum(ln)))
+                               break;
+               }
                if (ln != NULL)
                        Fatal("make: cannot open %s.", (char *)Lst_Datum(ln));
-       } else if (!ReadMakefile("BSDmakefile", NULL))
-           if (!ReadMakefile("makefile", NULL))
-               ReadMakefile("Makefile", NULL);
+       } else if (!ReadMakefile("BSDmakefile"))
+           if (!ReadMakefile("makefile"))
+               ReadMakefile("Makefile");
 
-       ReadMakefile(".depend", NULL);
+       ReadMakefile(".depend");
 
        /* Install all the flags into the MAKE envariable. */
        if (((p = Var_Value(MAKEFLAGS, VAR_GLOBAL, &p1)) != NULL) && *p)
@@ -922,7 +928,7 @@ main(int argc, char **argv)
  *     lots
  */
 static Boolean
-ReadMakefile(const void *p, const void *q __unused)
+ReadMakefile(const char *p)
 {
        char *fname;                    /* makefile to read */
        FILE *stream;