Add the directory where the ini file was found into the #include
authorNathan Binkert <binkertn@umich.edu>
Sat, 25 Oct 2003 22:19:32 +0000 (18:19 -0400)
committerNathan Binkert <binkertn@umich.edu>
Sat, 25 Oct 2003 22:19:32 +0000 (18:19 -0400)
search path

--HG--
extra : convert_revision : 9a6bceb931613b718bf5a561b354ba9ccb847a78

base/inifile.cc

index 6baf2285034150eef569830817abb01dab06e672..52468f46e691a0501ef1fa17748026f18982dca3 100644 (file)
@@ -85,6 +85,17 @@ IniFile::loadCPP(const string &file, vector<char *> &cppArgs)
 
     tmpf.close();
 
+    const char *cfile = file.c_str();
+    char *dir = basename(cfile);
+    char *dir_arg = NULL;
+    if (*dir != '.' && dir != cfile) {
+        string arg = "-I";
+        arg += dir;
+
+        dir_arg = new char[arg.size() + 1];
+        strcpy(dir_arg, arg.c_str());
+    }
+
 #ifdef CPP_PIPE
     if (pipe(fd) == -1)
         return false;
@@ -120,6 +131,9 @@ IniFile::loadCPP(const string &file, vector<char *> &cppArgs)
         for (int i = 0; i < arg_count; i++)
             args[nextArg++] = cppArgs[i];
 
+        if (dir_arg)
+            args[nextArg++] = dir_arg;
+
         args[nextArg++] = filename;
         args[nextArg++] = NULL;
 
@@ -135,6 +149,8 @@ IniFile::loadCPP(const string &file, vector<char *> &cppArgs)
     int retval;
     waitpid(pid, &retval, 0);
 
+    delete [] dir_arg;
+
     // check for normal completion of CPP
     if (!WIFEXITED(retval) || WEXITSTATUS(retval) != 0)
         return false;