From 9e6f62d9887232a05b60dd7587b4d408b9ac954e Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Mon, 31 Aug 2015 14:15:29 +0200
Subject: [PATCH] preprocessor: fix build on wheezy due to bug introduced in
 f143b54142ae1c1f27a22842c3d994323e59f16d

---
 DynareMain.cc  | 23 ++++++-----------------
 DynareMain1.cc | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 Makefile.am    |  1 +
 3 files changed, 53 insertions(+), 17 deletions(-)
 create mode 100644 DynareMain1.cc

diff --git a/DynareMain.cc b/DynareMain.cc
index e1804b33..e78fe4f4 100644
--- a/DynareMain.cc
+++ b/DynareMain.cc
@@ -26,9 +26,9 @@
 #ifndef PACKAGE_VERSION
 # define PACKAGE_VERSION 4.
 #endif
-#include "macro/MacroDriver.hh"
 
 #include <unistd.h>
+#include "ParsingDriver.hh"
 #include "ExtendedPreprocessorTypes.hh"
 #include "ConfigFile.hh"
 
@@ -46,6 +46,10 @@ void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool
 #endif
            );
 
+void main1(char *modfile, string &basename, bool debug, bool save_macro, string &save_macro_file,
+           bool no_line_macro,
+           map<string, string> &defines, vector<string> &path, stringstream &macro_output);
+
 void
 usage()
 {
@@ -296,23 +300,8 @@ main(int argc, char **argv)
     path.push_back(*it);
 
   // Do macro processing
-  MacroDriver m;
-
   stringstream macro_output;
-  m.parse(argv[1], macro_output, debug, no_line_macro, defines, path);
-  if (save_macro)
-    {
-      if (save_macro_file.empty())
-        save_macro_file = basename + "-macroexp.mod";
-      ofstream macro_output_file(save_macro_file.c_str());
-      if (macro_output_file.fail())
-        {
-          cerr << "Cannot open " << save_macro_file << " for macro output" << endl;
-          exit(EXIT_FAILURE);
-        }
-      macro_output_file << macro_output.str();
-      macro_output_file.close();
-    }
+  main1(argv[1], basename, debug, save_macro, save_macro_file, no_line_macro, defines, path, macro_output);
 
   if (only_macro)
     return EXIT_SUCCESS;
diff --git a/DynareMain1.cc b/DynareMain1.cc
new file mode 100644
index 00000000..3cbd33f3
--- /dev/null
+++ b/DynareMain1.cc
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2015 Dynare Team
+ *
+ * This file is part of Dynare.
+ *
+ * Dynare is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Dynare is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sstream>
+#include <fstream>
+
+#include "macro/MacroDriver.hh"
+
+void
+main1(char *modfile, string &basename, bool debug, bool save_macro, string &save_macro_file, bool no_line_macro,
+      map<string, string> &defines, vector<string> &path, stringstream &macro_output)
+{
+  // Do macro processing
+  MacroDriver m;
+
+  m.parse(modfile, macro_output, debug, no_line_macro, defines, path);
+  if (save_macro)
+    {
+      if (save_macro_file.empty())
+        save_macro_file = basename + "-macroexp.mod";
+      ofstream macro_output_file(save_macro_file.c_str());
+      if (macro_output_file.fail())
+        {
+          cerr << "Cannot open " << save_macro_file << " for macro output" << endl;
+          exit(EXIT_FAILURE);
+        }
+      macro_output_file << macro_output.str();
+      macro_output_file.close();
+    }
+}
diff --git a/Makefile.am b/Makefile.am
index 77f87922..40083fdc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -45,6 +45,7 @@ dynare_m_SOURCES = \
 	MinimumFeedbackSet.cc \
 	MinimumFeedbackSet.hh \
 	DynareMain.cc \
+	DynareMain1.cc \
 	DynareMain2.cc \
 	CodeInterpreter.hh \
 	ExternalFunctionsTable.cc \
-- 
GitLab