static void SuffPrintName __P((ClientData)); static void SuffPrintSuff __P((ClientData)); static void SuffPrintTrans __P((ClientData));
static void SuffPrintName __P((void *)); static void SuffPrintSuff __P((void *)); static void SuffPrintTrans __P((void *));
static char *SuffSuffIsSuffix __P((Suff *, char *));static int SuffSuffIsSuffixP __P((ClientData, ClientData));static int SuffSuffHasNameP __P((ClientData, ClientData));static int SuffSuffIsPrefix __P((ClientData, ClientData));static int SuffGNHasNameP __P((ClientData, ClientData));static void SuffUnRef __P((ClientData, ClientData));static void SuffFree __P((ClientData));static void SuffInsert __P((Lst, Suff *));static void SuffRemove __P((Lst, Suff *));static Boolean SuffParseTransform __P((char *, Suff **, Suff **));static void SuffRebuildGraph __P((ClientData, ClientData));static void SuffAddSrc __P((ClientData, ClientData));static int SuffRemoveSrc __P((Lst));static void SuffAddLevel __P((Lst, Src *));static Src *SuffFindThem __P((Lst, Lst));static Src *SuffFindCmds __P((Src *, Lst));static void SuffExpandChildren __P((ClientData, ClientData));static Boolean SuffApplyTransform __P((GNode *, GNode *, Suff *, Suff *));static void SuffFindDeps __P((GNode *, Lst));static void SuffFindArchiveDeps __P((GNode *, Lst));static void SuffFindNormalDeps __P((GNode *, Lst));static void SuffPrintName __P((ClientData));static void SuffPrintSuff __P((ClientData));static void SuffPrintTrans __P((ClientData));	/*************** Lst Predicates ****************//*- *----------------------------------------------------------------------- * SuffStrIsPrefix  -- *	See if pref is a prefix of str. * * Results: *	NULL if it ain't, pointer to character in str after prefix if so * * Side Effects: *	None *----------------------------------------------------------------------- */static char    *SuffStrIsPrefix (pref, str)    register char  *pref;	/* possible prefix */    register char  *str;	/* string to check */{    while (*str && *pref == *str) {	pref++;	str++;    }    return (*pref ? NULL : str);}/*- *----------------------------------------------------------------------- * SuffSuffIsSuffix  -- *	See if suff is a suffix of str. Str should point to THE END of the *	string to check. (THE END == the null byte) * * Results: *	NULL if it ain't, pointer to character in str before suffix if *	it is. * * Side Effects: *	None *----------------------------------------------------------------------- */static char *SuffSuffIsSuffix (s, str)    register Suff  *s;		/* possible suffix */    char           *str;	/* string to examine */{    register char  *p1;	    	/* Pointer into suffix name */    register char  *p2;	    	/* Pointer into string being examined */    p1 = s->name + s->nameLen;    p2 = str;    while (p1 >= s->name && *p1 == *p2) {	p1--;	p2--;    }    return (p1 == s->name - 1 ? p2 : NULL);}