From e5e985d3678e8419aab392cea1475e5ca1b26240 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Sat, 17 Jun 2017 11:30:13 +0430 Subject: rewriters now return the result as a string to lua --- bruiser/bruiser.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'bruiser/bruiser.cpp') diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 360df06..83c4594 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -25,7 +25,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* #include "CompletionHints.h" #include "../mutator_aux.h" /*standard headers*/ -#include "fstream" +#include #include #include #include @@ -739,11 +739,16 @@ public: virtual ~BruiserFrontendAction() { delete BDCProto; + delete tee; } - void EndSourceFileAction() override + void EndSourceFileAction() override { + std::error_code EC; + std::string OutputFilename = "./libtooling-tee"; TheRewriter.getEditBuffer(TheRewriter.getSourceMgr().getMainFileID()).write(llvm::outs()); + tee = new raw_fd_ostream(StringRef(OutputFilename), EC, sys::fs::F_None); + TheRewriter.getEditBuffer(TheRewriter.getSourceMgr().getMainFileID()).write(*tee); } std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override @@ -757,6 +762,7 @@ public: private: Rewriter TheRewriter; BlankDiagConsumer* BDCProto = new BlankDiagConsumer; + raw_ostream *tee = &llvm::outs(); }; /**********************************************************************************************************************/ class LiveActionListVars : public ASTFrontendAction @@ -949,10 +955,20 @@ class LuaWrapper int BruiserLuaHijackMain(lua_State* __ls) { int RunResult = this->GetClangTool().run(newFrontendActionFactory().get()); - //std::cout << CYAN <<"hijacking main returned " << RunResult << "\n" << NORMAL; printf(CYAN"hijacking main returned %d", RunResult); printf(NORMAL"\n"); + std::ifstream libtooling_tee("../test/bruisertest/libtooling-tee"); + std::string luaoutstr; + std::string dummy; + + while(std::getline(libtooling_tee, dummy)) + { + luaoutstr = luaoutstr + dummy + "\n"; + } + + lua_pushstring(__ls, luaoutstr.c_str()); + return 1; } -- cgit v1.2.3