diff options
| author | Frank Warmerdam <warmerdam@pobox.com> | 1999-03-18 16:34:52 +0000 |
|---|---|---|
| committer | Frank Warmerdam <warmerdam@pobox.com> | 1999-03-18 16:34:52 +0000 |
| commit | 565a4bd035b9d4a83955808efef20f1d8dfa24cf (patch) | |
| tree | 75785fc897708023f1ccdaf40079afcbaaf0fd3a /src/pj_open_lib.c | |
| download | PROJ-565a4bd035b9d4a83955808efef20f1d8dfa24cf.tar.gz PROJ-565a4bd035b9d4a83955808efef20f1d8dfa24cf.zip | |
New
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@776 4e78687f-474d-0410-85f9-8d5e500ac6b2
Diffstat (limited to 'src/pj_open_lib.c')
| -rw-r--r-- | src/pj_open_lib.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/pj_open_lib.c b/src/pj_open_lib.c new file mode 100644 index 00000000..3de0ad3e --- /dev/null +++ b/src/pj_open_lib.c @@ -0,0 +1,49 @@ +/* standard location file open procedure */ +#ifndef lint +static const char SCCSID[]="@(#)pj_open_lib.c 4.5 94/10/30 GIE REL"; +#endif +#define PJ_LIB__ +#include <projects.h> +#include <stdio.h> +#include <string.h> +#include <errno.h> + static char * +proj_lib_name = +#ifdef PROJ_LIB +PROJ_LIB; +#else +0; +#endif + FILE * +pj_open_lib(char *name, char *mode) { + char fname[MAX_PATH_FILENAME+1], *sysname; + FILE *fid; + int n = 0; + + /* check if ~/name */ + if (*name == '~' && name[1] == DIR_CHAR) + if (sysname = getenv("HOME")) { + (void)strcpy(fname, sysname); + fname[n = strlen(fname)] = DIR_CHAR; + fname[++n] = '\0'; + (void)strcpy(fname+n, name + 1); + sysname = fname; + } else + return NULL; + /* or fixed path: /name, ./name or ../name */ + else if (*name == DIR_CHAR || (*name == '.' && name[1] == DIR_CHAR) || + (!strncmp(name, "..", 2) && name[2] == DIR_CHAR) ) + sysname = name; + /* or is environment PROJ_LIB defined */ + else if ((sysname = getenv("PROJ_LIB")) || (sysname = proj_lib_name)) { + (void)strcpy(fname, sysname); + fname[n = strlen(fname)] = DIR_CHAR; + fname[++n] = '\0'; + (void)strcpy(fname+n, name); + sysname = fname; + } else /* just try it bare bones */ + sysname = name; + if (fid = fopen(sysname, mode)) + errno = 0; + return(fid); +} |
