Skip to content

Commit edbb05a

Browse files
committed
Add captureConsoleOutput function
1 parent 5ccb610 commit edbb05a

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

source/shared/utils/consolecapture.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
*/
1818

1919
#include "consolecapture.h"
20+
#include "odsconsolecapture.h"
21+
#include "debugger.h"
22+
23+
#include <iostream>
2024

2125
IConsoleCapture::IConsoleCapture(const QString &filename) :
2226
_filename(filename) {}
@@ -64,3 +68,28 @@ void CStreamCapture::close()
6468
{
6569
closeFile();
6670
}
71+
72+
ConsoleOutputFiles captureConsoleOutput(const QString& path, const QString& prefix)
73+
{
74+
if(u::isDebuggerPresent())
75+
return {};
76+
77+
auto filename = [&](const char* basename)
78+
{
79+
if(!prefix.isEmpty())
80+
return QStringLiteral("%1/%2_%3.txt").arg(path, prefix, basename);
81+
82+
return QStringLiteral("%1/%2.txt").arg(path, basename);
83+
};
84+
85+
return
86+
{
87+
std::make_shared<IoStreamCapture>(filename("cout"), std::cout),
88+
std::make_shared<IoStreamCapture>(filename("cerr"), std::cerr),
89+
std::make_shared<CStreamCapture>(filename("stdout"), stdout),
90+
std::make_shared<CStreamCapture>(filename("ctderr"), stderr),
91+
#ifdef Q_OS_WIN
92+
std::make_shared<ODSCapture>(filename("outputdebugstring")),
93+
#endif
94+
};
95+
}

source/shared/utils/consolecapture.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,7 @@ class CStreamCapture : public IConsoleCapture
6161
void close() override;
6262
};
6363

64+
using ConsoleOutputFiles = std::vector<std::shared_ptr<IConsoleCapture>>;
65+
ConsoleOutputFiles captureConsoleOutput(const QString& path, const QString& prefix = {});
66+
6467
#endif // CONSOLECAPTURE_H

0 commit comments

Comments
 (0)