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