[BACK]Return to suff.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / make

Diff for /src/usr.bin/make/suff.c between version 1.24 and 1.25

version 1.24, 2000/03/26 15:51:31 version 1.25, 2000/03/26 16:21:33
Line 389 
Line 389 
     Lst l;      Lst l;
     Suff *s;      Suff *s;
 {  {
     SuffUnRef((ClientData) l, (ClientData) s);      SuffUnRef(l, s);
 }  }
   
 /*-  /*-
Line 431 
Line 431 
         if (DEBUG(SUFF)) {          if (DEBUG(SUFF)) {
             printf("at end of list\n");              printf("at end of list\n");
         }          }
         Lst_AtEnd (l, (ClientData)s);          Lst_AtEnd(l, s);
         Lst_AtEnd(s->ref, (ClientData) l);          Lst_AtEnd(s->ref, l);
     } else if (s2->sNum != s->sNum) {      } else if (s2->sNum != s->sNum) {
         if (DEBUG(SUFF)) {          if (DEBUG(SUFF)) {
             printf("before %s(%d)\n", s2->name, s2->sNum);              printf("before %s(%d)\n", s2->name, s2->sNum);
         }          }
         Lst_Insert(l, ln, (ClientData)s);          Lst_Insert(l, ln, s);
         Lst_AtEnd(s->ref, (ClientData) l);          Lst_AtEnd(s->ref, l);
     } else if (DEBUG(SUFF)) {      } else if (DEBUG(SUFF)) {
         printf("already there\n");          printf("already there\n");
     }      }
Line 511 
Line 511 
      */       */
     for (;;) {      for (;;) {
         if (srcLn == NULL) {          if (srcLn == NULL) {
             srcLn = Lst_Find(sufflist, SuffSuffIsPrefix, (ClientData)str);              srcLn = Lst_Find(sufflist, SuffSuffIsPrefix, str);
         } else {          } else {
             srcLn = Lst_FindFrom(Lst_Succ(srcLn),              srcLn = Lst_FindFrom(Lst_Succ(srcLn),
                                   SuffSuffIsPrefix, (ClientData)str);                                    SuffSuffIsPrefix, str);
         }          }
         if (srcLn == NULL) {          if (srcLn == NULL) {
             /*              /*
Line 542 
Line 542 
             single = src;              single = src;
             singleLn = srcLn;              singleLn = srcLn;
         } else {          } else {
             targLn = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)str2);              targLn = Lst_Find(sufflist, SuffSuffHasNameP, str2);
             if (targLn != NULL) {              if (targLn != NULL) {
                 *srcPtr = src;                  *srcPtr = src;
                 *targPtr = (Suff *)Lst_Datum(targLn);                  *targPtr = (Suff *)Lst_Datum(targLn);
Line 598 
Line 598 
                   *t;           /* target suffix */                    *t;           /* target suffix */
     LstNode       ln;           /* Node for existing transformation */      LstNode       ln;           /* Node for existing transformation */
   
     ln = Lst_Find(transforms, SuffGNHasNameP, (ClientData)line);      ln = Lst_Find(transforms, SuffGNHasNameP, line);
     if (ln == NULL) {      if (ln == NULL) {
         /*          /*
          * Make a new graph node for the transformation. It will be filled in           * Make a new graph node for the transformation. It will be filled in
          * by the Parse module.           * by the Parse module.
          */           */
         gn = Targ_NewGN (line);          gn = Targ_NewGN (line);
         Lst_AtEnd (transforms, (ClientData)gn);          Lst_AtEnd(transforms, gn);
     } else {      } else {
         /*          /*
          * New specification for transformation rule. Just nuke the old list           * New specification for transformation rule. Just nuke the old list
Line 727 
Line 727 
      */       */
     cp = SuffStrIsPrefix(s->name, transform->name);      cp = SuffStrIsPrefix(s->name, transform->name);
     if (cp != (char *)NULL) {      if (cp != (char *)NULL) {
         ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)cp);          ln = Lst_Find(sufflist, SuffSuffHasNameP, cp);
         if (ln != NULL) {          if (ln != NULL) {
             /*              /*
              * Found target. Link in and return, since it can't be anything               * Found target. Link in and return, since it can't be anything
Line 749 
Line 749 
          * Null-terminate the source suffix in order to find it.           * Null-terminate the source suffix in order to find it.
          */           */
         cp[1] = '\0';          cp[1] = '\0';
         ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)transform->name);          ln = Lst_Find(sufflist, SuffSuffHasNameP, transform->name);
         /*          /*
          * Replace the start of the target suffix           * Replace the start of the target suffix
          */           */
Line 787 
Line 787 
     Suff          *s;       /* new suffix descriptor */      Suff          *s;       /* new suffix descriptor */
     LstNode       ln;      LstNode       ln;
   
     ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)str);      ln = Lst_Find(sufflist, SuffSuffHasNameP, str);
     if (ln == NULL) {      if (ln == NULL) {
         s = (Suff *) emalloc (sizeof (Suff));          s = (Suff *) emalloc (sizeof (Suff));
   
Line 800 
Line 800 
         s->sNum =       sNum++;          s->sNum =       sNum++;
         s->flags =      0;          s->flags =      0;
   
         Lst_AtEnd(sufflist, (ClientData)s);          Lst_AtEnd(sufflist, s);
         /*          /*
          * Look for any existing transformations from or to this suffix.           * Look for any existing transformations from or to this suffix.
          * XXX: Only do this after a Suff_ClearSuffixes?           * XXX: Only do this after a Suff_ClearSuffixes?
          */           */
         Lst_ForEach (transforms, SuffRebuildGraph, (ClientData)s);          Lst_ForEach(transforms, SuffRebuildGraph, s);
     }      }
 }  }
   
Line 829 
Line 829 
     LstNode       ln;      LstNode       ln;
     Suff          *s;      Suff          *s;
   
     ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)sname);      ln = Lst_Find(sufflist, SuffSuffHasNameP, sname);
     if (ln == NULL) {      if (ln == NULL) {
         return (NULL);          return (NULL);
     } else {      } else {
Line 925 
Line 925 
     LstNode       ln;      LstNode       ln;
     Suff          *s;      Suff          *s;
   
     ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)sname);      ln = Lst_Find(sufflist, SuffSuffHasNameP, sname);
     if (ln != NULL) {      if (ln != NULL) {
         s = (Suff *) Lst_Datum (ln);          s = (Suff *) Lst_Datum (ln);
         s->flags |= SUFF_INCLUDE;          s->flags |= SUFF_INCLUDE;
Line 955 
Line 955 
     LstNode       ln;      LstNode       ln;
     Suff          *s;      Suff          *s;
   
     ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)sname);      ln = Lst_Find(sufflist, SuffSuffHasNameP, sname);
     if (ln != NULL) {      if (ln != NULL) {
         s = (Suff *) Lst_Datum (ln);          s = (Suff *) Lst_Datum (ln);
         s->flags |= SUFF_LIBRARY;          s->flags |= SUFF_LIBRARY;
Line 1004 
Line 1004 
         s2->suff =      s;          s2->suff =      s;
         s2->children =  0;          s2->children =  0;
         targ->children += 1;          targ->children += 1;
         Lst_AtEnd(ls->l, (ClientData)s2);          Lst_AtEnd(ls->l, s2);
 #ifdef DEBUG_SRC  #ifdef DEBUG_SRC
         s2->cp = Lst_Init();          s2->cp = Lst_Init();
         Lst_AtEnd(targ->cp, (ClientData) s2);          Lst_AtEnd(targ->cp, s2);
         printf("1 add %x %x to %x:", targ, s2, ls->l);          printf("1 add %x %x to %x:", targ, s2, ls->l);
         Lst_ForEach(ls->l, PrintAddr, (ClientData) 0);          Lst_ForEach(ls->l, PrintAddr, NULL);
         printf("\n");          printf("\n");
 #endif  #endif
     }      }
Line 1021 
Line 1021 
     s2->suff =      s;      s2->suff =      s;
     s2->children =  0;      s2->children =  0;
     targ->children += 1;      targ->children += 1;
     Lst_AtEnd(ls->l, (ClientData)s2);      Lst_AtEnd(ls->l, s2);
 #ifdef DEBUG_SRC  #ifdef DEBUG_SRC
     s2->cp = Lst_Init();      s2->cp = Lst_Init();
     Lst_AtEnd(targ->cp, (ClientData)s2);      Lst_AtEnd(targ->cp, s2);
     printf("2 add %x %x to %x:", targ, s2, ls->l);      printf("2 add %x %x to %x:", targ, s2, ls->l);
     Lst_ForEach(ls->l, PrintAddr, (ClientData) 0);      Lst_ForEach(ls->l, PrintAddr, NULL);
     printf("\n");      printf("\n");
 #endif  #endif
   
Line 1055 
Line 1055 
     ls.s = targ;      ls.s = targ;
     ls.l = l;      ls.l = l;
   
     Lst_ForEach (targ->suff->children, SuffAddSrc, (ClientData)&ls);      Lst_ForEach (targ->suff->children, SuffAddSrc, &ls);
 }  }
   
 /*-  /*-
Line 1083 
Line 1083 
     }      }
 #ifdef DEBUG_SRC  #ifdef DEBUG_SRC
     printf("cleaning %lx: ", (unsigned long) l);      printf("cleaning %lx: ", (unsigned long) l);
     Lst_ForEach(l, PrintAddr, (ClientData) 0);      Lst_ForEach(l, PrintAddr, NULL);
     printf("\n");      printf("\n");
 #endif  #endif
   
Line 1096 
Line 1096 
                 free((Address)s->pref);                  free((Address)s->pref);
             else {              else {
 #ifdef DEBUG_SRC  #ifdef DEBUG_SRC
                 LstNode ln = Lst_Member(s->parent->cp, (ClientData)s);                  LstNode ln = Lst_Member(s->parent->cp, s);
                 if (ln != NULL)                  if (ln != NULL)
                     Lst_Remove(s->parent->cp, ln);                      Lst_Remove(s->parent->cp, ln);
 #endif  #endif
Line 1115 
Line 1115 
 #ifdef DEBUG_SRC  #ifdef DEBUG_SRC
         else {          else {
             printf("keep: [l=%x] p=%x %d: ", l, s, s->children);              printf("keep: [l=%x] p=%x %d: ", l, s, s->children);
             Lst_ForEach(s->cp, PrintAddr, (ClientData) 0);              Lst_ForEach(s->cp, PrintAddr, NULL);
             printf("\n");              printf("\n");
         }          }
 #endif  #endif
Line 1180 
Line 1180 
         }          }
   
         SuffAddLevel (srcs, s);          SuffAddLevel (srcs, s);
         Lst_AtEnd(slst, (ClientData)s);          Lst_AtEnd(slst, s);
     }      }
   
     if (DEBUG(SUFF) && rs) {      if (DEBUG(SUFF) && rs) {
Line 1235 
Line 1235 
              * The node matches the prefix ok, see if it has a known               * The node matches the prefix ok, see if it has a known
              * suffix.               * suffix.
              */               */
             ln = Lst_Find(sufflist, SuffSuffHasNameP,              ln = Lst_Find(sufflist, SuffSuffHasNameP, &cp[prefLen]);
                 (ClientData)&cp[prefLen]);  
             if (ln != NULL) {              if (ln != NULL) {
                 /*                  /*
                  * It even has a known suffix, see if there's a transformation                   * It even has a known suffix, see if there's a transformation
Line 1246 
Line 1245 
                  */                   */
                 suff = (Suff *)Lst_Datum (ln);                  suff = (Suff *)Lst_Datum (ln);
   
                 if (Lst_Member (suff->parents,                  if (Lst_Member(suff->parents, targ->suff) != NULL)
                                 (ClientData)targ->suff) != NULL)  
                 {                  {
                     /*                      /*
                      * Hot Damn! Create a new Src structure to describe                       * Hot Damn! Create a new Src structure to describe
Line 1266 
Line 1264 
 #ifdef DEBUG_SRC  #ifdef DEBUG_SRC
                     ret->cp = Lst_Init();                      ret->cp = Lst_Init();
                     printf("3 add %x %x\n", targ, ret);                      printf("3 add %x %x\n", targ, ret);
                     Lst_AtEnd(targ->cp, (ClientData)ret);                      Lst_AtEnd(targ->cp, ret);
 #endif  #endif
                     Lst_AtEnd(slst, (ClientData)ret);                      Lst_AtEnd(slst, ret);
                     if (DEBUG(SUFF)) {                      if (DEBUG(SUFF)) {
                         printf ("\tusing existing source %s\n", s->name);                          printf ("\tusing existing source %s\n", s->name);
                     }                      }
Line 1313 
Line 1311 
      * New nodes effectively take the place of the child, so place them       * New nodes effectively take the place of the child, so place them
      * after the child       * after the child
      */       */
     prevLN = Lst_Member(pgn->children, (ClientData)cgn);      prevLN = Lst_Member(pgn->children, cgn);
   
     /*      /*
      * First do variable expansion -- this takes precedence over       * First do variable expansion -- this takes precedence over
Line 1360 
Line 1358 
                          */                           */
                         *cp++ = '\0';                          *cp++ = '\0';
                         gn = Targ_FindNode(start, TARG_CREATE);                          gn = Targ_FindNode(start, TARG_CREATE);
                         Lst_AtEnd(members, (ClientData)gn);                          Lst_AtEnd(members, gn);
                         while (*cp == ' ' || *cp == '\t') {                          while (*cp == ' ' || *cp == '\t') {
                             cp++;                              cp++;
                         }                          }
Line 1399 
Line 1397 
                      * Stuff left over -- add it to the list too                       * Stuff left over -- add it to the list too
                      */                       */
                     gn = Targ_FindNode(start, TARG_CREATE);                      gn = Targ_FindNode(start, TARG_CREATE);
                     Lst_AtEnd(members, (ClientData)gn);                      Lst_AtEnd(members, gn);
                 }                  }
                 /*                  /*
                  * Point cp back at the beginning again so the variable value                   * Point cp back at the beginning again so the variable value
Line 1414 
Line 1412 
                 if (DEBUG(SUFF)) {                  if (DEBUG(SUFF)) {
                     printf("%s...", gn->name);                      printf("%s...", gn->name);
                 }                  }
                 if (Lst_Member(pgn->children, (ClientData)gn) == NULL) {                  if (Lst_Member(pgn->children, gn) == NULL) {
                     Lst_Append(pgn->children, prevLN, (ClientData)gn);                      Lst_Append(pgn->children, prevLN, gn);
                     prevLN = Lst_Succ(prevLN);                      prevLN = Lst_Succ(prevLN);
                     Lst_AtEnd(gn->parents, (ClientData)pgn);                      Lst_AtEnd(gn->parents, pgn);
                     pgn->unmade++;                      pgn->unmade++;
                 }                  }
             }              }
Line 1431 
Line 1429 
          * Now the source is expanded, remove it from the list of children to           * Now the source is expanded, remove it from the list of children to
          * keep it from being processed.           * keep it from being processed.
          */           */
         ln = Lst_Member(pgn->children, (ClientData)cgn);          ln = Lst_Member(pgn->children, cgn);
         pgn->unmade--;          pgn->unmade--;
         Lst_Remove(pgn->children, ln);          Lst_Remove(pgn->children, ln);
         if (DEBUG(SUFF)) {          if (DEBUG(SUFF)) {
Line 1450 
Line 1448 
          * Else use the default system search path.           * Else use the default system search path.
          */           */
         cp = cgn->name + strlen(cgn->name);          cp = cgn->name + strlen(cgn->name);
         ln = Lst_Find(sufflist, SuffSuffIsSuffixP, (ClientData)cp);          ln = Lst_Find(sufflist, SuffSuffIsSuffixP, cp);
   
         if (DEBUG(SUFF)) {          if (DEBUG(SUFF)) {
             printf("Wildcard expanding \"%s\"...", cgn->name);              printf("Wildcard expanding \"%s\"...", cgn->name);
Line 1487 
Line 1485 
              * If gn isn't already a child of the parent, make it so and               * If gn isn't already a child of the parent, make it so and
              * up the parent's count of unmade children.               * up the parent's count of unmade children.
              */               */
             if (Lst_Member(pgn->children, (ClientData)gn) == NULL) {              if (Lst_Member(pgn->children, gn) == NULL) {
                 Lst_Append(pgn->children, prevLN, (ClientData)gn);                  Lst_Append(pgn->children, prevLN, gn);
                 prevLN = Lst_Succ(prevLN);                  prevLN = Lst_Succ(prevLN);
                 Lst_AtEnd(gn->parents, (ClientData)pgn);                  Lst_AtEnd(gn->parents, pgn);
                 pgn->unmade++;                  pgn->unmade++;
             }              }
         }          }
Line 1504 
Line 1502 
          * Now the source is expanded, remove it from the list of children to           * Now the source is expanded, remove it from the list of children to
          * keep it from being processed.           * keep it from being processed.
          */           */
         ln = Lst_Member(pgn->children, (ClientData)cgn);          ln = Lst_Member(pgn->children, cgn);
         pgn->unmade--;          pgn->unmade--;
         Lst_Remove(pgn->children, ln);          Lst_Remove(pgn->children, ln);
         if (DEBUG(SUFF)) {          if (DEBUG(SUFF)) {
Line 1544 
Line 1542 
     char        *tname;     /* Name of transformation rule */      char        *tname;     /* Name of transformation rule */
     GNode       *gn;        /* Node for same */      GNode       *gn;        /* Node for same */
   
     if (Lst_Member(tGn->children, (ClientData)sGn) == NULL) {      if (Lst_Member(tGn->children, sGn) == NULL) {
         /*          /*
          * Not already linked, so form the proper links between the           * Not already linked, so form the proper links between the
          * target and source.           * target and source.
          */           */
         Lst_AtEnd(tGn->children, (ClientData)sGn);          Lst_AtEnd(tGn->children, sGn);
         Lst_AtEnd(sGn->parents, (ClientData)tGn);          Lst_AtEnd(sGn->parents, tGn);
         tGn->unmade += 1;          tGn->unmade += 1;
     }      }
   
Line 1564 
Line 1562 
         for (ln=Lst_First(sGn->cohorts); ln != NULL; ln=Lst_Succ(ln)) {          for (ln=Lst_First(sGn->cohorts); ln != NULL; ln=Lst_Succ(ln)) {
             gn = (GNode *)Lst_Datum(ln);              gn = (GNode *)Lst_Datum(ln);
   
             if (Lst_Member(tGn->children, (ClientData)gn) == NULL) {              if (Lst_Member(tGn->children, gn) == NULL) {
                 /*                  /*
                  * Not already linked, so form the proper links between the                   * Not already linked, so form the proper links between the
                  * target and source.                   * target and source.
                  */                   */
                 Lst_AtEnd(tGn->children, (ClientData)gn);                  Lst_AtEnd(tGn->children, gn);
                 Lst_AtEnd(gn->parents, (ClientData)tGn);                  Lst_AtEnd(gn->parents, tGn);
                 tGn->unmade += 1;                  tGn->unmade += 1;
             }              }
         }          }
Line 1579 
Line 1577 
      * Locate the transformation rule itself       * Locate the transformation rule itself
      */       */
     tname = str_concat(s->name, t->name, 0);      tname = str_concat(s->name, t->name, 0);
     ln = Lst_Find(transforms, SuffGNHasNameP, (ClientData)tname);      ln = Lst_Find(transforms, SuffGNHasNameP, tname);
     free(tname);      free(tname);
   
     if (ln == NULL) {      if (ln == NULL) {
Line 1611 
Line 1609 
      * Deal with wildcards and variables in any acquired sources       * Deal with wildcards and variables in any acquired sources
      */       */
     ln = Lst_Succ(ln);      ln = Lst_Succ(ln);
     if (ln != NULL) {      if (ln != NULL)
         Lst_ForEachFrom(tGn->children, ln,          Lst_ForEachFrom(tGn->children, ln, SuffExpandChildren, tGn);
                         SuffExpandChildren, (ClientData)tGn);  
     }  
   
     /*      /*
      * Keep track of another parent to which this beast is transformed so       * Keep track of another parent to which this beast is transformed so
      * the .IMPSRC variable can be set correctly for the parent.       * the .IMPSRC variable can be set correctly for the parent.
      */       */
     Lst_AtEnd(sGn->iParents, (ClientData)tGn);      Lst_AtEnd(sGn->iParents, tGn);
   
     return(TRUE);      return(TRUE);
 }  }
Line 1682 
Line 1678 
     /*      /*
      * Create the link between the two nodes right off       * Create the link between the two nodes right off
      */       */
     if (Lst_Member(gn->children, (ClientData)mem) == NULL) {      if (Lst_Member(gn->children, mem) == NULL) {
         Lst_AtEnd(gn->children, (ClientData)mem);          Lst_AtEnd(gn->children, mem);
         Lst_AtEnd(mem->parents, (ClientData)gn);          Lst_AtEnd(mem->parents, gn);
         gn->unmade += 1;          gn->unmade += 1;
     }      }
   
Line 1864 
Line 1860 
             /*              /*
              * Record the target so we can nuke it               * Record the target so we can nuke it
              */               */
             Lst_AtEnd(targs, (ClientData)targ);              Lst_AtEnd(targs, targ);
   
             /*              /*
              * Search from this suffix's successor...               * Search from this suffix's successor...
Line 1906 
Line 1902 
         if (DEBUG(SUFF))          if (DEBUG(SUFF))
             printf("adding suffix rules\n");              printf("adding suffix rules\n");
   
         Lst_AtEnd(targs, (ClientData)targ);          Lst_AtEnd(targs, targ);
     }      }
   
     /*      /*
Line 1949 
Line 1945 
      * Now we've got the important local variables set, expand any sources       * Now we've got the important local variables set, expand any sources
      * that still contain variables or wildcards in their names.       * that still contain variables or wildcards in their names.
      */       */
     Lst_ForEach(gn->children, SuffExpandChildren, (ClientData)gn);      Lst_ForEach(gn->children, SuffExpandChildren, gn);
   
     if (targ == NULL) {      if (targ == NULL) {
         if (DEBUG(SUFF)) {          if (DEBUG(SUFF)) {
Line 2042 
Line 2038 
              * up to, but not including, the parent node.               * up to, but not including, the parent node.
              */               */
             while (bottom && bottom->parent != NULL) {              while (bottom && bottom->parent != NULL) {
                 if (Lst_Member(slst, (ClientData) bottom) == NULL) {                  if (Lst_Member(slst, bottom) == NULL) {
                     Lst_AtEnd(slst, (ClientData) bottom);                      Lst_AtEnd(slst, bottom);
                 }                  }
                 bottom = bottom->parent;                  bottom = bottom->parent;
             }              }
Line 2118 
Line 2114 
      */       */
 sfnd_return:  sfnd_return:
     if (bottom)      if (bottom)
         if (Lst_Member(slst, (ClientData) bottom) == NULL)          if (Lst_Member(slst, bottom) == NULL)
             Lst_AtEnd(slst, (ClientData) bottom);              Lst_AtEnd(slst, bottom);
   
     while (SuffRemoveSrc(srcs) || SuffRemoveSrc(targs))      while (SuffRemoveSrc(srcs) || SuffRemoveSrc(targs))
         continue;          continue;
Line 2200 
Line 2196 
         LstNode ln;          LstNode ln;
         Suff    *s;          Suff    *s;
   
         ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)LIBSUFF);          ln = Lst_Find(sufflist, SuffSuffHasNameP, LIBSUFF);
         if (ln != NULL) {          if (ln != NULL) {
             gn->suffix = s = (Suff *) Lst_Datum (ln);              gn->suffix = s = (Suff *) Lst_Datum (ln);
             Arch_FindLib (gn, s->searchPath);              Arch_FindLib (gn, s->searchPath);
Line 2243 
Line 2239 
     Suff    *s;      Suff    *s;
     LstNode ln;      LstNode ln;
   
     ln = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)name);      ln = Lst_Find(sufflist, SuffSuffHasNameP, name);
     if (ln != NULL) {      if (ln != NULL) {
         s = (Suff *)Lst_Datum(ln);          s = (Suff *)Lst_Datum(ln);
         if (suffNull != (Suff *)NULL) {          if (suffNull != (Suff *)NULL) {
Line 2373 
Line 2369 
     }      }
     fputc ('\n', stdout);      fputc ('\n', stdout);
     printf ("#\tTo: ");      printf ("#\tTo: ");
     Lst_ForEach (s->parents, SuffPrintName, (ClientData)0);      Lst_ForEach(s->parents, SuffPrintName, NULL);
     fputc ('\n', stdout);      fputc ('\n', stdout);
     printf ("#\tFrom: ");      printf ("#\tFrom: ");
     Lst_ForEach (s->children, SuffPrintName, (ClientData)0);      Lst_ForEach(s->children, SuffPrintName, NULL);
     fputc ('\n', stdout);      fputc ('\n', stdout);
     printf ("#\tSearch Path: ");      printf ("#\tSearch Path: ");
     Dir_PrintPath (s->searchPath);      Dir_PrintPath (s->searchPath);
Line 2394 
Line 2390 
     printf ("%-16s: ", t->name);      printf ("%-16s: ", t->name);
     Targ_PrintType (t->type);      Targ_PrintType (t->type);
     fputc ('\n', stdout);      fputc ('\n', stdout);
     Lst_ForEach (t->commands, Targ_PrintCmd, (ClientData)0);      Lst_ForEach(t->commands, Targ_PrintCmd, NULL);
     fputc ('\n', stdout);      fputc ('\n', stdout);
     return(dummy ? 0 : 0);      return(dummy ? 0 : 0);
 }  }
Line 2403 
Line 2399 
 Suff_PrintAll()  Suff_PrintAll()
 {  {
     printf ("#*** Suffixes:\n");      printf ("#*** Suffixes:\n");
     Lst_ForEach (sufflist, SuffPrintSuff, (ClientData)0);      Lst_ForEach(sufflist, SuffPrintSuff, NULL);
   
     printf ("#*** Transformations:\n");      printf ("#*** Transformations:\n");
     Lst_ForEach (transforms, SuffPrintTrans, (ClientData)0);      Lst_ForEach(transforms, SuffPrintTrans, NULL);
 }  }

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25