STATIC MACRO *getMacroNode( const char *name ) /********************************************* * returns: pointer to MACRO with this name */ { BOOLEAN caseSensitive; assert( name != NULL && *name != ENVVAR ); if( Glob.compat_nmake || Glob.compat_posix ) { caseSensitive = TRUE; } else { caseSensitive = FALSE; } return( (MACRO *)FindHashNode( macTab, name, caseSensitive ) ); }
STATIC SUFFIX *findSuffixNode( const char *name, const char **p ) /**************************************************************** * returns: pointer to SUFFIX named name, or NULL. If p != NULL, then * *p will be the pointer to the first dot not in the first * position of name. ie: * .src.dest returns SUFFIX src, and p = ".dest" * src.dest same * .src or src returns SUFFIX src, and p = NULL */ { char sufname[MAX_SUFFIX]; const char *s; char *d; assert( name != NULL ); if( name[0] == DOT ) { ++name; } d = sufname; s = name; while( *s != NULLCHAR && *s != DOT ) { *d++ = *s++; } *d = NULLCHAR; if( p != NULL ) { if( *s == DOT ) { *p = s; } else { *p = NULL; } } FixName( sufname ); return( (SUFFIX *)FindHashNode( sufTab, sufname, CASESENSITIVE ) ); }