https://invisible-island.net/xterm/xtoolkit/
XtFindFile - search for a file using substitutions in the path list
#include <X11/Intrinsic.h>
char * XtFindFile(const char *path, Substitution substitutions, Cardi-
nal num_substitutions, XtFilePredicate predicate);
path Specifies a path of file names, including substitution char-
acters.
substitutions
Specifies a list of substitutions to make into a path.
num_substitutions
Specifies the number of substitutions passed in.
predicate Specifies a procedure to call to judge a potential file name,
or NULL.
The path parameter specifies a string that consists of a series of po-
tential file names delimited by colons. Within each name, the percent
character specifies a string substitution selected by the following
character. The character sequence "%:" specifies an embedded colon
that is not a delimiter; the sequence is replaced by a single colon.
The character sequence "%%" specifies a percent character that does not
introduce a substitution; the sequence is replaced by a single percent
character. If a percent character is followed by any other character,
XtFindFile looks through the specified substitutions for that character
in the match field and if found replaces the percent and match charac-
ters with the string in the corresponding substitution field. A sub-
stitution field entry of NULL is equivalent to a pointer to an empty
string. If the operating system does not interpret multiple embedded
name separators in the path (i.e., "/" in POSIX) the same way as a sin-
gle separator, XtFindFile will collapse multiple separators into a sin-
gle one after performing all string substitutions. Except for collaps-
ing embedded separators, the contents of the string substitutions are
not interpreted by XtFindFile and may therefore contain any operating-
system-dependent characters, including additional name separators.
Each resulting string is passed to the predicate procedure until a
string is found for which the procedure returns True; this string is
the return value for XtFindFile. If no string yields a True return
from the predicate, XtFindFile returns NULL.
If the predicate parameter is NULL, an internal procedure that checks
if the file exists, is readable, and is not a directory will be used.
It is the responsibility of the caller to free the returned string us-
ing XtFree when it is no longer needed.
X Toolkit Intrinsics - C Language Interface
Xlib - C Language X Interface
X Version 11 libXt 1.3.1 XtFindFile(3)