Workaround for missing APPDATA on Windows XP
[shibboleth/cpp-xmltooling.git] / 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))