Add preprocessor messages (stdout, stderr) to the logfile

Closes #306
issue#70
Sébastien Villemot 2013-03-18 13:44:04 +01:00
parent 00c95ea352
commit 4f2f9e7ed6
2 changed files with 10 additions and 5 deletions

View File

@ -30,6 +30,8 @@ using namespace std;
#endif
#include "macro/MacroDriver.hh"
#include <unistd.h>
/* 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;

View File

@ -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