home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1992 Regents of the University of California */
-
- #ifndef lint
- static char SCCSid[] = "@(#)fropen.c 2.5 9/8/92 LBL";
- #endif
-
- /*
- * Find and open a Radiance library file.
- */
-
- #include <stdio.h>
-
- #include "paths.h"
-
- char *libpath = NULL; /* library search path */
-
-
- FILE *
- fropen(fname) /* find file and open for reading */
- register char *fname;
- {
- extern char *strcpy(), *getenv();
- FILE *fp;
- char pname[MAXPATH];
- register char *sp, *cp;
-
- if (fname == NULL)
- return(NULL);
-
- if (ISDIRSEP(fname[0]) || fname[0] == '.') /* absolute path */
- return(fopen(fname, "r"));
-
- if (libpath == NULL) { /* get search path */
- libpath = getenv(ULIBVAR);
- if (libpath == NULL)
- libpath = DEFPATH;
- }
- /* check search path */
- sp = libpath;
- do {
- cp = pname;
- while (*sp && (*cp = *sp++) != PATHSEP)
- cp++;
- if (cp > pname && !ISDIRSEP(cp[-1]))
- *cp++ = DIRSEP;
- strcpy(cp, fname);
- if ((fp = fopen(pname, "r")) != NULL)
- return(fp); /* got it! */
- } while (*sp);
- /* not found */
- return(NULL);
- }
-