From 6b0113e2d7be46a74e736ff17fc0be1d788809eb Mon Sep 17 00:00:00 2001 From: "False.Genesis" Date: Fri, 12 Jan 2007 12:10:16 +0000 Subject: [PATCH] for to include the CLI files lool --- PseuWoW.sln | 2 ++ src/Client/Cli.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++ src/Client/Cli.h | 18 +++++++++++++++++ src/Client/main.cpp | 2 ++ src/shared.vcproj | 12 ++++++------ src/zlib.vcproj | 6 ++++++ src/zthread.vcproj | 14 ++++++++++---- 7 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 src/Client/Cli.cpp create mode 100644 src/Client/Cli.h diff --git a/PseuWoW.sln b/PseuWoW.sln index ac68c16..0ea9c3b 100644 --- a/PseuWoW.sln +++ b/PseuWoW.sln @@ -16,6 +16,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zthread", "src\zthread.vcpr EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared", "src\shared.vcproj", "{F548FC51-24A4-45FF-A381-BEBC39F18270}" ProjectSection(ProjectDependencies) = postProject + {8F1DEA42-6A5B-4B62-839D-C141A7BFACF2} = {8F1DEA42-6A5B-4B62-839D-C141A7BFACF2} + {262199E8-EEDF-4700-A1D1-E9CC901CF480} = {262199E8-EEDF-4700-A1D1-E9CC901CF480} EndProjectSection EndProject Global diff --git a/src/Client/Cli.cpp b/src/Client/Cli.cpp new file mode 100644 index 0000000..378ef53 --- /dev/null +++ b/src/Client/Cli.cpp @@ -0,0 +1,47 @@ +#include "common.h" +#include "DefScript/DefScript.h" +#include "PseuWoW.h" +#include "Cli.h" + +CliRunnable::CliRunnable(PseuInstance *p) +{ + _stop = false; + _instance = p; +} + +void CliRunnable::run(void) +{ + char buf[400],*in; + std::string cur,out; + + while(!_stop) + { + printf("<%s>:",cur.c_str()); + fflush(stdout); + in = fgets(buf,sizeof(buf),stdin); + if (in == NULL) + return; + for(int i=0;in[i];i++) + if(in[i]=='\r'||in[i]=='\n') + { + in[i]=0; + break; + } + if(in[0]==0) + continue; + if(in[0]=='!') + cur = &in[1]; + else + { + try + { + out = cur.empty() ? in : (cur+" "+in); + _instance->GetScripts()->RunSingleLine(out); + } + catch (...) + { + printf("Exception while executing CLI command!\n"); + } + } + } +} diff --git a/src/Client/Cli.h b/src/Client/Cli.h new file mode 100644 index 0000000..e7547f3 --- /dev/null +++ b/src/Client/Cli.h @@ -0,0 +1,18 @@ +#ifndef _CLI_H +#define _CLI_H + +class PseuInstance; + +class CliRunnable : public ZThread::Runnable +{ +public: + CliRunnable(PseuInstance*); + void run(void); + void stop() { _stop=true; } + +private: + bool _stop; + PseuInstance *_instance; +}; + +#endif \ No newline at end of file diff --git a/src/Client/main.cpp b/src/Client/main.cpp index 66882dc..8f2cff2 100644 --- a/src/Client/main.cpp +++ b/src/Client/main.cpp @@ -83,7 +83,9 @@ int main(int argc, char* argv[]) { t.wait(); //... _UnhookSignals(); + raise(SIGABRT); // this way to terminate is not nice but the only way to quit the CLI thread raise(SIGQUIT); + return 0; } catch (...) { diff --git a/src/shared.vcproj b/src/shared.vcproj index 9fa13f9..9dd1c9c 100644 --- a/src/shared.vcproj +++ b/src/shared.vcproj @@ -29,9 +29,9 @@ BasicRuntimeChecks="3" RuntimeLibrary="3" PrecompiledHeaderFile=".\Debug/PseuWoW_Controller.pch" - AssemblerListingLocation="$(SolutionDir)/temp/$(ProjectName)/" - ObjectFile="$(SolutionDir)/temp/$(ProjectName)/" - ProgramDataBaseFileName="$(SolutionDir)/temp/$(ProjectName)/" + AssemblerListingLocation="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" + ObjectFile="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" + ProgramDataBaseFileName="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" WarningLevel="3" SuppressStartupBanner="TRUE" DebugInformationFormat="4"/> @@ -83,9 +83,9 @@ EnableFunctionLevelLinking="FALSE" EnableEnhancedInstructionSet="0" PrecompiledHeaderFile=".\Release/PseuWoW_Controller.pch" - AssemblerListingLocation="$(SolutionDir)/temp/$(ProjectName)/" - ObjectFile="$(SolutionDir)/temp/$(ProjectName)/" - ProgramDataBaseFileName="$(SolutionDir)/temp/$(ProjectName)/" + AssemblerListingLocation="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" + ObjectFile="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" + ProgramDataBaseFileName="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" WarningLevel="3" SuppressStartupBanner="TRUE"/> @@ -71,6 +74,9 @@ RuntimeTypeInfo="TRUE" UsePrecompiledHeader="0" PrecompiledHeaderFile="$(SolutionDir)/temp/$(ProjectName)/zlib.pch" + AssemblerListingLocation="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" + ObjectFile="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" + ProgramDataBaseFileName="$(SolutionDir)temp/$(ProjectName)/$(ConfigurationName)/" WarningLevel="3" Detect64BitPortabilityProblems="TRUE" DebugInformationFormat="3"/> diff --git a/src/zthread.vcproj b/src/zthread.vcproj index ae8a98c..0a3b3a2 100644 --- a/src/zthread.vcproj +++ b/src/zthread.vcproj @@ -13,8 +13,8 @@ @@ -57,8 +60,8 @@