ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/fropen.c
Revision: 2.5
Committed: Tue Sep 8 10:04:29 1992 UTC (31 years, 7 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.4: +4 -4 lines
Log Message:
modified testing of DIRSEP to allow multiple possible values

File Contents

# Content
1 /* Copyright (c) 1992 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * Find and open a Radiance library file.
9 */
10
11 #include <stdio.h>
12
13 #include "paths.h"
14
15 char *libpath = NULL; /* library search path */
16
17
18 FILE *
19 fropen(fname) /* find file and open for reading */
20 register char *fname;
21 {
22 extern char *strcpy(), *getenv();
23 FILE *fp;
24 char pname[MAXPATH];
25 register char *sp, *cp;
26
27 if (fname == NULL)
28 return(NULL);
29
30 if (ISDIRSEP(fname[0]) || fname[0] == '.') /* absolute path */
31 return(fopen(fname, "r"));
32
33 if (libpath == NULL) { /* get search path */
34 libpath = getenv(ULIBVAR);
35 if (libpath == NULL)
36 libpath = DEFPATH;
37 }
38 /* check search path */
39 sp = libpath;
40 do {
41 cp = pname;
42 while (*sp && (*cp = *sp++) != PATHSEP)
43 cp++;
44 if (cp > pname && !ISDIRSEP(cp[-1]))
45 *cp++ = DIRSEP;
46 strcpy(cp, fname);
47 if ((fp = fopen(pname, "r")) != NULL)
48 return(fp); /* got it! */
49 } while (*sp);
50 /* not found */
51 return(NULL);
52 }