diff options
Diffstat (limited to 'bruiser')
-rw-r--r-- | bruiser/bruiser.cpp | 86 |
1 files changed, 56 insertions, 30 deletions
diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 3eb4ee2..23071a4 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -45,7 +45,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* #include "llvm/IR/Function.h" /*other*/ #include "linenoise/linenoise.h" -#include "lua-5.3.4/src/lua.h" +#include "lua-5.3.4/src/lua.hpp" #include "lua-5.3.4/src/lualib.h" #include "lua-5.3.4/src/lauxlib.h" /**********************************************************************************************************************/ @@ -70,6 +70,47 @@ bruiser::BruiserReport BruiseRep; cl::opt<bool> Intrusive("intrusive", cl::desc("If set true. bruiser will mutate the source."), cl::init(true), cl::cat(BruiserCategory), cl::ZeroOrMore); cl::opt<std::string> M0XMLPath("xmlpath", cl::desc("tells bruiser where to find the XML file containing the Mutator-LVL0 report."), cl::init(bruiser::M0REP), cl::cat(BruiserCategory), cl::ZeroOrMore); /**********************************************************************************************************************/ +class LuaEngine +{ + public: + LuaEngine() + { + LS = luaL_newstate(); + } + + void LoadBaseLib(void) + { + luaopen_base(LS); + } + + void LoadAuxLibs(void) + { + luaopen_table(LS); + luaopen_io(LS); + luaopen_string(LS); + } + + void LoadEverylib(void) + { + this->LoadBaseLib(); + this->LoadAuxLibs(); + luaopen_math(LS); + } + + int RunScript(char* __lua_script) + { + return luaL_dofile(LS, __lua_script); + } + + void Cleanup(void) + { + lua_close(LS); + } + + private: + lua_State* LS; +}; +/**********************************************************************************************************************/ /*the implementation of the bruiser logger.*/ bruiser::BruiserReport::BruiserReport () { @@ -733,38 +774,14 @@ int main(int argc, const char **argv) { char* command; while((command = linenoise("bruiser>>")) != NULL) - //while(true) { - //wprintw(win, ">>"); - //wrefresh(win); - std::cout << ">>"; - linenoiseHistoryAdd(command); linenoiseHistorySave(SHELL_HISTORY_FILE); //std::cin.getline(command, sizeof(command)); std::string dummy_string(command); -#if 0 - for (auto &iter : command) - { - if (iter != 0) - { - /*intentionally left blank*/ - } - else - { - iter = '\0'; - } - } -#endif - shHistory.History.push_back(command); -#if defined(__DBG_1) - std::cout << InKey << "\n"; - std::cout << shHistory.History.size() << "\n"; - std::cout << shHistory.History.capacity() << "\n"; -#endif if (std::regex_search(dummy_string, smresult, listcommand)) { @@ -897,10 +914,18 @@ int main(int argc, const char **argv) if (std::strcmp(command, "version") == 0) { - PRINT_WITH_COLOR_LB("bruiser experimental version something.", GREEN); - PRINT_WITH_COLOR_LB("project mutator", GREEN); - PRINT_WITH_COLOR_LB("GPL v2.0", GREEN); - PRINT_WITH_COLOR_LB("bloodstalker 2017", GREEN); + PRINT_WITH_COLOR_LB(GRAY, "bruiser experimental version something."); + PRINT_WITH_COLOR_LB(GRAY, "project mutator"); + PRINT_WITH_COLOR_LB(GRAY, "GPL v2.0"); + PRINT_WITH_COLOR_LB(GRAY, "bloodstalker 2017"); + } + + if (std::strcmp(command, "runlua") == 0) + { + LuaEngine LE; + LE.LoadEverylib(); + LE.RunScript((char*)"/home/bloodstalker/devi/abbatoir/hole6/proto.lua"); + LE.Cleanup(); } if (command[0] == '!') @@ -929,7 +954,8 @@ int main(int argc, const char **argv) } std::cout << RED << "unknown command. run help.\n" << NORMAL; - free(command); + + linenoiseFree(command); } return 0; |