version 1.24, 2000/03/26 15:51:31 |
version 1.25, 2000/03/26 16:21:33 |
|
|
Lst l; |
Lst l; |
Suff *s; |
Suff *s; |
{ |
{ |
SuffUnRef((ClientData) l, (ClientData) s); |
SuffUnRef(l, s); |
} |
} |
|
|
/*- |
/*- |
|
|
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"); |
} |
} |
|
|
*/ |
*/ |
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) { |
/* |
/* |
|
|
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); |
|
|
*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 |
|
|
*/ |
*/ |
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 |
|
|
* 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 |
*/ |
*/ |
|
|
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)); |
|
|
|
|
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); |
} |
} |
} |
} |
|
|
|
|
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 { |
|
|
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; |
|
|
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; |
|
|
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 |
} |
} |
|
|
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 |
|
|
|
|
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); |
} |
} |
|
|
/*- |
/*- |
|
|
} |
} |
#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 |
|
|
|
|
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 |
|
|
#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 |
|
|
} |
} |
|
|
SuffAddLevel (srcs, s); |
SuffAddLevel (srcs, s); |
Lst_AtEnd(slst, (ClientData)s); |
Lst_AtEnd(slst, s); |
} |
} |
|
|
if (DEBUG(SUFF) && rs) { |
if (DEBUG(SUFF) && rs) { |
|
|
* 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 |
|
|
*/ |
*/ |
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 |
|
|
#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); |
} |
} |
|
|
* 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 |
|
|
*/ |
*/ |
*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++; |
} |
} |
|
|
* 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 |
|
|
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++; |
} |
} |
} |
} |
|
|
* 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)) { |
|
|
* 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); |
|
|
* 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++; |
} |
} |
} |
} |
|
|
* 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)) { |
|
|
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; |
} |
} |
|
|
|
|
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; |
} |
} |
} |
} |
|
|
* 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) { |
|
|
* 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); |
} |
} |
|
|
/* |
/* |
* 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; |
} |
} |
|
|
|
|
/* |
/* |
* 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... |
|
|
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); |
} |
} |
|
|
/* |
/* |
|
|
* 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)) { |
|
|
* 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; |
} |
} |
|
|
*/ |
*/ |
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; |
|
|
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); |
|
|
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) { |
|
|
} |
} |
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); |
|
|
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); |
} |
} |
|
|
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); |
} |
} |