diff options
| author | Frank Warmerdam <warmerdam@pobox.com> | 2007-03-11 17:03:18 +0000 |
|---|---|---|
| committer | Frank Warmerdam <warmerdam@pobox.com> | 2007-03-11 17:03:18 +0000 |
| commit | 89d7239332e73cb6e5b2afee5e01cfc18fff91f9 (patch) | |
| tree | 5feb648adad7cd50e419fd1d8cd3bb2fea928277 /src/pj_open_lib.c | |
| parent | 6c82df1cb408bf513a916c4c3428ec00619ce7f0 (diff) | |
| download | PROJ-89d7239332e73cb6e5b2afee5e01cfc18fff91f9.tar.gz PROJ-89d7239332e73cb6e5b2afee5e01cfc18fff91f9.zip | |
support drive letter prefixes on win32 and related fixes (bug 1499)
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@1392 4e78687f-474d-0410-85f9-8d5e500ac6b2
Diffstat (limited to 'src/pj_open_lib.c')
| -rw-r--r-- | src/pj_open_lib.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/pj_open_lib.c b/src/pj_open_lib.c index e53e8e2d..1340654c 100644 --- a/src/pj_open_lib.c +++ b/src/pj_open_lib.c @@ -31,6 +31,9 @@ ****************************************************************************** * * $Log$ + * Revision 1.8 2007/03/11 17:03:18 fwarmerdam + * support drive letter prefixes on win32 and related fixes (bug 1499) + * * Revision 1.7 2006/11/17 22:16:30 mloskot * Uploaded PROJ.4 port for Windows CE. * @@ -113,11 +116,16 @@ pj_open_lib(char *name, char *mode) { FILE *fid; int n = 0; int i; +#ifdef WIN32 + static const char dir_chars[] = "/\\"; +#else + static const char dir_chars[] = "/"; +#endif #ifndef _WIN32_WCE /* check if ~/name */ - if (*name == '~' && name[1] == DIR_CHAR) + if (*name == '~' && strchr(dir_chars,name[1]) ) if (sysname = getenv("HOME")) { (void)strcpy(fname, sysname); fname[n = strlen(fname)] = DIR_CHAR; @@ -128,8 +136,10 @@ pj_open_lib(char *name, char *mode) { 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) ) + else if (strchr(dir_chars,*name) + || (*name == '.' && strchr(dir_chars,name[1])) + || (!strncmp(name, "..", 2) && strchr(dir_chars,name[2])) + || (name[1] == ':' && strchr(dir_chars,name[2])) ) sysname = name; /* or try to use application provided file finder */ |
