inifile: Whack preprocessor access.
authorNathan Binkert <nate@binkert.org>
Fri, 19 Sep 2008 16:11:40 +0000 (09:11 -0700)
committerNathan Binkert <nate@binkert.org>
Fri, 19 Sep 2008 16:11:40 +0000 (09:11 -0700)
We haven't used the preprocessor feature of the inifile stuff in a
very long time, so let's get rid of it since it would otherwise take
effort to maintain.

src/base/inifile.cc
src/base/inifile.hh

index 809cbe172c521ea1bf9bab9472044dffcec05feb..24d0013c4aad31b00d2df1d31c0fb94e422353ff 100644 (file)
  *          Steve Reinhardt
  */
 
-#define USE_CPP
-
-#ifdef USE_CPP
-#include <sys/signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include <libgen.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#endif
-
 #include <fstream>
 #include <iostream>
-
 #include <vector>
 #include <string>
 
@@ -67,103 +53,6 @@ IniFile::~IniFile()
     }
 }
 
-
-#ifdef USE_CPP
-bool
-IniFile::loadCPP(const string &file, vector<char *> &cppArgs)
-{
-    // Open the file just to verify that we can.  Otherwise if the
-    // file doesn't exist or has bad permissions the user will get
-    // confusing errors from cpp/g++.
-    ifstream tmpf(file.c_str());
-
-    if (!tmpf.is_open())
-        return false;
-
-    tmpf.close();
-
-    char *cfile = strncpy(new char[file.size() + 1], file.c_str(),
-                          file.size());
-    char *dir = dirname(cfile);
-    char *dir_arg = NULL;
-    if (*dir != '.') {
-        string arg = "-I";
-        arg += dir;
-
-        dir_arg = new char[arg.size() + 1];
-        strncpy(dir_arg, arg.c_str(), arg.size());
-    }
-
-    delete [] cfile;
-
-    char tempfile[] = "/tmp/configXXXXXX";
-    int tmp_fd = mkstemp(tempfile);
-
-    int pid = fork();
-
-    if (pid == -1)
-        return false;
-
-    if (pid == 0) {
-        char filename[FILENAME_MAX];
-        string::size_type i = file.copy(filename, sizeof(filename) - 1);
-        filename[i] = '\0';
-
-        int arg_count = cppArgs.size();
-
-        const char **args = new const char *[arg_count + 20];
-
-        int nextArg = 0;
-        args[nextArg++] = "g++";
-        args[nextArg++] = "-E";
-        args[nextArg++] = "-P";
-        args[nextArg++] = "-nostdinc";
-        args[nextArg++] = "-nostdinc++";
-        args[nextArg++] = "-x";
-        args[nextArg++] = "c++";
-        args[nextArg++] = "-undef";
-
-        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;
-
-        close(STDOUT_FILENO);
-        if (dup2(tmp_fd, STDOUT_FILENO) == -1)
-            exit(1);
-
-        // execvp signature is intentionally broken wrt const-ness for
-        // backwards compatibility... see man page
-        execvp("g++", const_cast<char * const *>(args));
-
-        exit(0);
-    }
-
-    int retval;
-    waitpid(pid, &retval, 0);
-
-    delete [] dir_arg;
-
-    // check for normal completion of CPP
-    if (!WIFEXITED(retval) || WEXITSTATUS(retval) != 0)
-        return false;
-
-    close(tmp_fd);
-
-    bool status = false;
-
-    status = load(tempfile);
-
-    unlink(tempfile);
-
-    return status;
-}
-#endif
-
 bool
 IniFile::load(const string &file)
 {
index a2692919f8bc8af646420b0e64c33e30c7165319..83cf80cf014b4d009413673de06f16471cf35ed5 100644 (file)
@@ -167,14 +167,6 @@ class IniFile
     /// @retval True if successful, false if errors were encountered.
     bool load(std::istream &f);
 
-    /// Load the specified file, passing it through the C preprocessor.
-    /// Parameter settings found in the file will be merged with any
-    /// already defined in this object.
-    /// @param file The path of the file to load.
-    /// @param cppFlags Vector of extra flags to pass to cpp.
-    /// @retval True if successful, false if errors were encountered.
-    bool loadCPP(const std::string &file, std::vector<char *> &cppFlags);
-
     /// Load the specified file.
     /// Parameter settings found in the file will be merged with any
     /// already defined in this object.