diff --git a/DynareMain.cc b/DynareMain.cc index 23f75e07..79201e39 100644 --- a/DynareMain.cc +++ b/DynareMain.cc @@ -30,6 +30,8 @@ using namespace std; #endif #include "macro/MacroDriver.hh" +#include + /* Prototype for second part of main function Splitting main() in two parts was necessary because ParsingDriver.h and MacroDriver.h can't be included simultaneously (because of Bison limitations). @@ -58,6 +60,13 @@ usage() int main(int argc, char **argv) { + /* + Redirect stderr to stdout. + Made necessary because MATLAB/Octave can only capture stdout (but not + stderr), in order to put it in the logfile (see issue #306) + */ + dup2(STDOUT_FILENO, STDERR_FILENO); + if (argc < 2) { cerr << "Missing model file!" << endl; diff --git a/ModFile.cc b/ModFile.cc index 1fbe8a38..b628c9b3 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -477,11 +477,7 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, b mOutputFile << "global_initialization;" << endl << "diary off;" << endl; if (!no_log) - mOutputFile << "logname_ = '" << basename << ".log';" << endl - << "if exist(logname_, 'file')" << endl - << " delete(logname_)" << endl - << "end" << endl - << "diary(logname_)" << endl; + mOutputFile << "diary('" << basename << ".log');" << endl; if (console) mOutputFile << "options_.console_mode = 1;" << endl