Workaround for missing APPDATA on Windows XP
authorscantor <scantor@de75baf8-a10c-0410-a50a-987c0e22f00f>
Thu, 7 Jun 2012 01:56:04 +0000 (01:56 +0000)
committerscantor <scantor@de75baf8-a10c-0410-a50a-987c0e22f00f>
Thu, 7 Jun 2012 01:56:04 +0000 (01:56 +0000)
git-svn-id: https://svn.shibboleth.net/cpp-xmltooling/branches/REL_1@977 de75baf8-a10c-0410-a50a-987c0e22f00f

xmltooling/util/PathResolver.cpp

index 4ca48ec..f6e3ec7 100644 (file)
@@ -104,6 +104,10 @@ const string& PathResolver::resolve(string& s, file_type_t filetype, const char*
 #ifdef WIN32
     // Check for possible environment variable(s).
     if (s.find('%') != string::npos) {
+        // This is an ugly workaround for Windows XP, which doesn't support the APPDATA variable.
+        if (!getenv("APPDATA") && s.find("%APPDATA%") != string::npos) {
+            s.replace(s.find("%APPDATA%"), 9, "%ALLUSERSPROFILE%\\Application Data");
+        }
         char expbuf[MAX_PATH + 2];
         DWORD cnt = ExpandEnvironmentStrings(s.c_str(), expbuf, sizeof(expbuf));
         if (cnt != 0 && cnt <= sizeof(expbuf))