aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Warmerdam <warmerdam@pobox.com>2007-03-11 17:03:18 +0000
committerFrank Warmerdam <warmerdam@pobox.com>2007-03-11 17:03:18 +0000
commit89d7239332e73cb6e5b2afee5e01cfc18fff91f9 (patch)
tree5feb648adad7cd50e419fd1d8cd3bb2fea928277
parent6c82df1cb408bf513a916c4c3428ec00619ce7f0 (diff)
downloadPROJ-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
-rw-r--r--ChangeLog7
-rw-r--r--src/pj_open_lib.c16
-rw-r--r--src/projects.h14
3 files changed, 33 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e3e0172..4d1f1318 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-03-11 Frank Warmerdam <warmerdam@pobox.com>
+
+ * src/projects.h: Ensure that WIN32 is defined on win32 systems.
+
+ * src/pj_open_lib.c: support drive letter prefixes on absolute
+ paths. Support either \ or / as a dir delimeter on windows (bug 1499)
+
2007-03-07 Frank Warmerdam <warmerdam@pobox.com>
* src/PJ_krovak.c: info string change to report ellipsoidal instead
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 */
diff --git a/src/projects.h b/src/projects.h
index a8e6e28e..660c4a3b 100644
--- a/src/projects.h
+++ b/src/projects.h
@@ -28,6 +28,9 @@
******************************************************************************
*
* $Log$
+ * Revision 1.26 2007/03/11 17:03:18 fwarmerdam
+ * support drive letter prefixes on win32 and related fixes (bug 1499)
+ *
* Revision 1.25 2006/11/17 22:16:30 mloskot
* Uploaded PROJ.4 port for Windows CE.
*
@@ -176,8 +179,17 @@ extern double hypot(double, double);
#define ID_TAG_MAX 50
#endif
+/* Use WIN32 as a standard windows 32 bit declaration */
+#if defined(_WIN32) && !defined(WIN32) && !defined(_WIN32_WCE)
+# define WIN32
+#endif
+
+#if defined(_WINDOWS) && !defined(WIN32) && !defined(_WIN32_WCE)
+# define WIN32
+#endif
+
/* directory delimiter for DOS support */
-#ifdef DOS
+#ifdef WIN32
#define DIR_CHAR '\\'
#else
#define DIR_CHAR '/'