From a32cb413429a914292c1457a12753650c0f241fb Mon Sep 17 00:00:00 2001 From: Xinyu Hou Date: Thu, 23 Oct 2014 12:09:09 +0100 Subject: [PATCH] Parse arg refactoring #4124 Used argParser in DaemonApp. --- src/lib/synergy/DaemonApp.cpp | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/lib/synergy/DaemonApp.cpp b/src/lib/synergy/DaemonApp.cpp index e8e8007bc..43bab0cba 100644 --- a/src/lib/synergy/DaemonApp.cpp +++ b/src/lib/synergy/DaemonApp.cpp @@ -22,6 +22,9 @@ #include "synergy/DaemonApp.h" #include "synergy/App.h" +#include "synergy/ArgParser.h" +#include "synergy/ServerArgs.h" +#include "synergy/ClientArgs.h" #include "ipc/IpcClientProxy.h" #include "ipc/IpcMessage.h" #include "ipc/IpcLogOutputter.h" @@ -301,13 +304,29 @@ CDaemonApp::handleIpcMessage(const CEvent& e, void*) if (!command.empty()) { LOG((CLOG_DEBUG "new command, elevate=%d command=%s", cm->elevate(), command.c_str())); - CString debugArg("--debug"); - UInt32 debugArgPos = static_cast(command.find(debugArg)); - if (debugArgPos != CString::npos) { - UInt32 from = debugArgPos + static_cast(debugArg.size()) + 1; - UInt32 nextSpace = static_cast(command.find(" ", from)); - CString logLevel(command.substr(from, nextSpace - from)); + std::vector argsArray; + CArgParser::splitCommandString(command, argsArray); + CArgParser argParser(NULL); + const char** argv = argParser.getArgv(argsArray); + CServerArgs serverArgs; + CClientArgs clientArgs; + int argc = static_cast(argsArray.size()); + bool server = argsArray[0].find("synergys") != CString::npos ? true : false; + CArgsBase* argBase = NULL; + + if (server) { + argParser.parseServerArgs(serverArgs, argc, argv); + argBase = &serverArgs; + } + else { + argParser.parseClientArgs(clientArgs, argc, argv); + argBase = &clientArgs; + } + + delete[] argv; + CString logLevel(argBase->m_logFilter); + if (!logLevel.empty()) { try { // change log level based on that in the command string // and change to that log level now.