targLn = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)str2);
targLn = Lst_Find(sufflist, SuffSuffHasNameP, str2);
SuffParseTransform(str, srcPtr, targPtr)    char    	  	*str;	    	/* String being parsed */    Suff    	  	**srcPtr;   	/* Place to store source of trans. */    Suff    	  	**targPtr;  	/* Place to store target of trans. */{    register LstNode	srcLn;	    /* element in suffix list of trans source*/    register Suff    	*src;	    /* Source of transformation */    register LstNode    targLn;	    /* element in suffix list of trans target*/    register char    	*str2;	    /* Extra pointer (maybe target suffix) */    LstNode 	    	singleLn;   /* element in suffix list of any suffix				     * that exactly matches str */    Suff    	    	*single = NULL;/* Source of possible transformation to				     * null suffix */    srcLn = NULL;    singleLn = NULL;    /*     * Loop looking first for a suffix that matches the start of the     * string and then for one that exactly matches the rest of it. If     * we can find two that meet these criteria, we've successfully     * parsed the string.     */    for (;;) {	if (srcLn == NULL) {	    srcLn = Lst_Find(sufflist, SuffSuffIsPrefix, (ClientData)str);	} else {	    srcLn = Lst_FindFrom(Lst_Succ(srcLn), 				  SuffSuffIsPrefix, (ClientData)str);	}	if (srcLn == NULL) {	    /*	     * Ran out of source suffixes -- no such rule	     */	    if (singleLn != NULL) {		/*		 * Not so fast Mr. Smith! There was a suffix that encompassed		 * the entire string, so we assume it was a transformation		 * to the null suffix (thank you POSIX). We still prefer to		 * find a double rule over a singleton, hence we leave this		 * check until the end.		 *		 * XXX: Use emptySuff over suffNull?		 */		*srcPtr = single;		*targPtr = suffNull;		return(TRUE);	    }	    return (FALSE);	}	src = (Suff *) Lst_Datum (srcLn);	str2 = str + src->nameLen;	if (*str2 == '\0') {	    single = src;	    singleLn = srcLn;	} else {	    targLn = Lst_Find(sufflist, SuffSuffHasNameP, (ClientData)str2);	    if (targLn != NULL) {		*srcPtr = src;		*targPtr = (Suff *)Lst_Datum(targLn);		return (TRUE);	    }	}    }}