mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-04-07 14:09:22 +08:00
[win-linux] updatesvc: add command line parameter handling
This commit is contained in:
@ -58,6 +58,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc > 1) {
|
||||
if (strcmp(argv[1], "--run-as-app") == 0) {
|
||||
NS_Utils::parseCmdArgs(argc, argv);
|
||||
std::locale::global(std::locale(""));
|
||||
Translator lang(NS_Utils::GetAppLanguage(), "/langs/langs.iss");
|
||||
CSocket socket(0, INSTANCE_SVC_PORT);
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <string.h>
|
||||
//#include <openssl/md5.h>
|
||||
#include <vector>
|
||||
#include <fcntl.h>
|
||||
#include "../../src/defines.h"
|
||||
#include "../../src/prop/defines_p.h"
|
||||
@ -122,6 +123,32 @@ static bool moving_folder_content(const string &from, const string &to, bool use
|
||||
|
||||
namespace NS_Utils
|
||||
{
|
||||
std::vector<string> cmd_args;
|
||||
|
||||
void parseCmdArgs(int argc, char *argv[])
|
||||
{
|
||||
for (int i = 0; i < argc; i++)
|
||||
cmd_args.push_back(argv[i]);
|
||||
}
|
||||
|
||||
bool cmdArgContains(const string ¶m)
|
||||
{
|
||||
auto len = param.length();
|
||||
return std::any_of(cmd_args.cbegin(), cmd_args.cend(), [¶m, len](const string &arg) {
|
||||
return arg.find(param) == 0 && (len == arg.length() || arg[len] == '=' || arg[len] == ':' || arg[len] == '|');
|
||||
});
|
||||
}
|
||||
|
||||
string cmdArgValue(const string ¶m)
|
||||
{
|
||||
auto len = param.length();
|
||||
for (const auto &arg : cmd_args) {
|
||||
if (arg.find(param) == 0 && len < arg.length() && (arg[len] == '=' || arg[len] == ':' || arg[len] == '|'))
|
||||
return arg.substr(len + 1);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
string GetLastErrorAsString()
|
||||
{
|
||||
char buff[LINE_MAX] = {0};
|
||||
|
||||
@ -50,6 +50,9 @@ using std::list;
|
||||
|
||||
namespace NS_Utils
|
||||
{
|
||||
void parseCmdArgs(int argc, char *argv[]);
|
||||
bool cmdArgContains(const string ¶m);
|
||||
string cmdArgValue(const string ¶m);
|
||||
string GetLastErrorAsString();
|
||||
int ShowMessage(string str, bool showError = false);
|
||||
//string GetSysLanguage();
|
||||
|
||||
@ -98,6 +98,7 @@ int __cdecl _tmain (int argc, TCHAR *argv[])
|
||||
} else
|
||||
if (lstrcmpi(argv[1], _T("--run-as-app")) == 0) {
|
||||
NS_Utils::setRunAsApp();
|
||||
NS_Utils::parseCmdArgs(argc, argv);
|
||||
std::locale::global(std::locale(""));
|
||||
Translator lang(NS_Utils::GetAppLanguage().c_str(), IDT_TRANSLATIONS);
|
||||
CSocket socket(0, INSTANCE_SVC_PORT);
|
||||
@ -158,6 +159,7 @@ int __cdecl _tmain (int argc, TCHAR *argv[])
|
||||
|
||||
VOID WINAPI SvcMain(DWORD argc, LPTSTR *argv)
|
||||
{
|
||||
NS_Utils::parseCmdArgs(argc, argv);
|
||||
if (argc > 1) {
|
||||
if (lstrcmpi(argv[1], _T("--log")) == 0) {
|
||||
NS_Logger::AllowWriteLog();
|
||||
|
||||
@ -82,6 +82,32 @@ namespace NS_Utils
|
||||
return run_as_app;
|
||||
}
|
||||
|
||||
std::vector<wstring> cmd_args;
|
||||
|
||||
void parseCmdArgs(int argc, wchar_t *argv[])
|
||||
{
|
||||
for (int i = 0; i < argc; i++)
|
||||
cmd_args.push_back(argv[i]);
|
||||
}
|
||||
|
||||
bool cmdArgContains(const wstring ¶m)
|
||||
{
|
||||
auto len = param.length();
|
||||
return std::any_of(cmd_args.cbegin(), cmd_args.cend(), [¶m, len](const wstring &arg) {
|
||||
return arg.find(param) == 0 && (len == arg.length() || arg[len] == L'=' || arg[len] == L':' || arg[len] == L'|');
|
||||
});
|
||||
}
|
||||
|
||||
wstring cmdArgValue(const wstring ¶m)
|
||||
{
|
||||
auto len = param.length();
|
||||
for (const auto &arg : cmd_args) {
|
||||
if (arg.find(param) == 0 && len < arg.length() && (arg[len] == L'=' || arg[len] == L':' || arg[len] == L'|'))
|
||||
return arg.substr(len + 1);
|
||||
}
|
||||
return L"";
|
||||
}
|
||||
|
||||
wstring GetLastErrorAsString()
|
||||
{
|
||||
DWORD errID = ::GetLastError();
|
||||
|
||||
@ -52,6 +52,9 @@ namespace NS_Utils
|
||||
{
|
||||
void setRunAsApp();
|
||||
bool isRunAsApp();
|
||||
void parseCmdArgs(int argc, wchar_t *argv[]);
|
||||
bool cmdArgContains(const wstring ¶m);
|
||||
wstring cmdArgValue(const wstring ¶m);
|
||||
wstring GetLastErrorAsString();
|
||||
int ShowMessage(wstring str, bool showError = false);
|
||||
wstring GetAppLanguage();
|
||||
|
||||
Reference in New Issue
Block a user