bool
findfile(path,n,fontmag,name,tfm,level)
char path[STRSIZE]; /* PIXEL path */
char n[STRSIZE]; /* name of font */
long fontmag; /* magnification */
char name[STRSIZE]; /* full name of PXL file (returned) */
bool tfm; /* are we searching for a tfm file? */
int level; /* recursion level to prevent calling of MakeTeXPK */
{
char local_path[STRSIZE];
#ifdef MAKETEXPK
char MakePKCommand[STRSIZE];
#endif
char *pathpt;
struct stat s;
int resolution, i;
char **pattern;
if (tfm) {
resolution = 0; /* dont'care */
#ifdef DEBUG
if (Debug)
fprintf(stderr,
"locating tfm %s, path %s, depth=%d\n",
n, path, level);
#endif
} else {
resolution = (int)(fontmag/5.0 + 0.5);
#ifdef DEBUG
if (Debug)
fprintf(stderr,
"locating raster %s, resolution %d on path %s, depth=%d\n",
n, resolution, path, level);
#endif
}
#ifndef vms
for( i=0; (pathpt = path_segment(i, path, local_path)) != NULL; i++) {
if (tfm) {
if (!stat( pprint(name,"%P/%N.tfm",pathpt,n,resolution,fontmag), &s))
return(TRUE);
} else {
for (pattern = raster_table; *pattern; pattern++) {
if (!stat( pprint(name,*pattern,pathpt,n,resolution,fontmag), &s))
return(TRUE);
}
}
}
#else
if (tfm) {
if ( !stat(pprint(name,"%P/%N.tfm",pathpt,n,resolution,fontmag), &s))
return(TRUE);
} else {
for (pattern = raster_table; *pattern; pattern++) {
if (!stat( pprint(name,*pattern,path,n,resolution,fontmag), &s))
return(TRUE);
}
}
#endif
#ifdef FUTURE
for(i=0; (pathpt=path_segment((bool)(i==0),VFPATH,local_path))!=NULL;i++) {
sprintf(name,"%s/%s.vfm",pathpt,n);
printf("searching virtual font <%s>\n",name);
if (stat(name,&s) == 0) return(TRUE);
}
#endif