summaryrefslogtreecommitdiff
path: root/ios
diff options
context:
space:
mode:
authorjan Iversen <jani@libreoffice.org>2017-03-02 16:38:41 +0100
committerjan iversen <jani@libreoffice.org>2017-03-19 21:27:39 +0000
commit941ef397e9267f7ca7fac8b2133272f3655ec460 (patch)
tree05967c801b65cef3e77642c4969a7da9ddddac6b /ios
parent47d4f6252df2ec3cc9f7363ce37e043dcec20f2e (diff)
ios LibreOfficeLight, tokenize
Add general tokenizer for parameters. and WebWiew to host JS from online Change-Id: I5bb419c18d239d6d88fa17078c079420aac58931 Reviewed-on: https://gerrit.libreoffice.org/35438 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: jan iversen <jani@libreoffice.org>
Diffstat (limited to 'ios')
-rw-r--r--ios/experimental/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj4
-rwxr-xr-xios/experimental/LibreOfficeLight/LibreOfficeLight/LO.swift10
-rw-r--r--ios/experimental/LibreOfficeLight/LibreOfficeLight/WebView.swift14
-rwxr-xr-xios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard17
-rw-r--r--ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit-Bridging-Header.h4
-rwxr-xr-xios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c205
6 files changed, 173 insertions, 81 deletions
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj b/ios/experimental/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
index ab3e6af22da1..44d84f4028e9 100644
--- a/ios/experimental/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
+++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
@@ -21,6 +21,7 @@
3992D85E1E5B764A00BEA987 /* ViewFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3992D85C1E5B764A00BEA987 /* ViewFileManager.swift */; };
399648471E5B87DC00E73E83 /* ViewProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399648461E5B87DC00E73E83 /* ViewProperties.swift */; };
399648491E5C4E5500E73E83 /* LO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399648481E5C4E5500E73E83 /* LO.swift */; };
+ 399BA3721E6881FC003D74A6 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399BA3711E6881FC003D74A6 /* WebView.swift */; };
39A83A8F1E5F471D00D0C683 /* lokit.c in Sources */ = {isa = PBXBuildFile; fileRef = 39A83A8E1E5F471D00D0C683 /* lokit.c */; };
39B084E31E5F0A9600682A59 /* lo.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 39B084E21E5F0A9600682A59 /* lo.xcconfig */; };
39B08B9D1E5F0BB600682A59 /* fundamentalrc in Resources */ = {isa = PBXBuildFile; fileRef = 39B084E51E5F0BB400682A59 /* fundamentalrc */; };
@@ -72,6 +73,7 @@
3992D85C1E5B764A00BEA987 /* ViewFileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewFileManager.swift; path = LibreOfficeLight/ViewFileManager.swift; sourceTree = SOURCE_ROOT; };
399648461E5B87DC00E73E83 /* ViewProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewProperties.swift; path = LibreOfficeLight/ViewProperties.swift; sourceTree = SOURCE_ROOT; };
399648481E5C4E5500E73E83 /* LO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LO.swift; path = LibreOfficeLight/LO.swift; sourceTree = SOURCE_ROOT; };
+ 399BA3711E6881FC003D74A6 /* WebView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebView.swift; sourceTree = "<group>"; };
39A83A8D1E5F471C00D0C683 /* lokit-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; name = "lokit-Bridging-Header.h"; path = "LibreOfficeLight/lokit-Bridging-Header.h"; sourceTree = SOURCE_ROOT; };
39A83A8E1E5F471D00D0C683 /* lokit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lokit.c; path = LibreOfficeLight/lokit.c; sourceTree = SOURCE_ROOT; };
39B084E21E5F0A9600682A59 /* lo.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = lo.xcconfig; path = "../../../../ios-work/workdir/ios/generated/lo.xcconfig"; sourceTree = SOURCE_ROOT; };
@@ -162,6 +164,7 @@
397E09011E597BD8001374E0 /* Main.storyboard */,
397868D81E59A3EA007F9248 /* LaunchScreen.xib */,
39A83A8D1E5F471C00D0C683 /* lokit-Bridging-Header.h */,
+ 399BA3711E6881FC003D74A6 /* WebView.swift */,
);
path = LibreOfficeLight;
sourceTree = SOURCE_ROOT;
@@ -354,6 +357,7 @@
39A83A8F1E5F471D00D0C683 /* lokit.c in Sources */,
399648491E5C4E5500E73E83 /* LO.swift in Sources */,
3992D8581E5B761700BEA987 /* ViewController.swift in Sources */,
+ 399BA3721E6881FC003D74A6 /* WebView.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/LO.swift b/ios/experimental/LibreOfficeLight/LibreOfficeLight/LO.swift
index 91f344169afa..c07071081f33 100755
--- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/LO.swift
+++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/LO.swift
@@ -23,8 +23,14 @@ class LOkit
func Initialize()
{
- LOkit_ClientCommand()
- }
+ let myInput = "ping command jan var her"
+
+ LOkit_ClientCommand(myInput)
+
+ let my2Input = "mouse command jan var her"
+
+ LOkit_ClientCommand(my2Input)
+}
func DeleteCurrentDocument()
{
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/WebView.swift b/ios/experimental/LibreOfficeLight/LibreOfficeLight/WebView.swift
new file mode 100644
index 000000000000..f257174be978
--- /dev/null
+++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/WebView.swift
@@ -0,0 +1,14 @@
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+//
+import WebKit
+
+
+
+class WebView: UIWebView {
+}
+
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard b/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard
index ca8bcc1855e9..5c1ae778091c 100755
--- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard
+++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard
@@ -22,15 +22,18 @@
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="My Document" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UR6-NA-Ecz">
- <rect key="frame" x="177" y="495" width="128" height="21"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" pointSize="17"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
+ <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Ej-ex-Oyr" customClass="WebView" customModule="LibreOfficeLight">
+ <rect key="frame" x="16" y="64" width="343" height="559"/>
+ <color key="backgroundColor" red="0.36078431370000003" green="0.38823529410000002" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+ </webView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+ <constraints>
+ <constraint firstItem="uE0-fS-86O" firstAttribute="top" secondItem="1Ej-ex-Oyr" secondAttribute="bottom" id="22v-Sf-uWf"/>
+ <constraint firstAttribute="trailingMargin" secondItem="1Ej-ex-Oyr" secondAttribute="trailing" id="2Wt-Tn-erC"/>
+ <constraint firstItem="1Ej-ex-Oyr" firstAttribute="top" secondItem="lZa-u5-V0W" secondAttribute="bottom" id="jzQ-1h-4Ni"/>
+ <constraint firstItem="1Ej-ex-Oyr" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leadingMargin" id="vT5-Un-8bf"/>
+ </constraints>
</view>
<toolbarItems/>
<navigationItem key="navigationItem" title="Document" id="5c6-32-T4J">
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit-Bridging-Header.h b/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit-Bridging-Header.h
index c0f2e204bf83..78ebbe7ee288 100644
--- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit-Bridging-Header.h
+++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit-Bridging-Header.h
@@ -8,6 +8,6 @@
// Bridge functions to LibreOfficeKit
-int LOkit_Init();
-int LOkit_ClientCommand();
+int LOkit_Init();
+int LOkit_ClientCommand(const char *input);
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c b/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c
index 6be800567f26..94143d1cfdd7 100755
--- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c
+++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/lokit.c
@@ -117,7 +117,7 @@ extern "C" void lo_initialize(NSString *documentPath)
// CLIENT COMMAND INTERFACE
-static bool client_canceltiles(char *input, char *args[])
+static bool client_canceltiles(const char *args[])
{
// command: canceltiles
// arguments: NONE
@@ -130,17 +130,19 @@ static bool client_canceltiles(char *input, char *args[])
return true;
}
-static bool client_clientvisiblearea(char *input, char *args[])
+static bool client_clientvisiblearea(const char *args[])
{
// command: clientvisiblearea
// arguments: x=<x>
// y=<y>
// width=<width>
// height=<height>
+
+ // JIX MISSING CODE
return true;
}
-static bool client_closedocument(char *input, char *args[])
+static bool client_closedocument(const char *args[])
{
// command: closedocument
// arguments: None
@@ -149,17 +151,21 @@ static bool client_closedocument(char *input, char *args[])
// currently having that document opened. This functionality is enabled
// only in case WOPI. host mentions 'EnableOwnerTermination' flag in
// its CheckFileInfo response
+
+ // JIX MISSING CODE
return true;
}
-static bool client_commandvalues(char *input, char *args[])
+static bool client_commandvalues(const char *args[])
{
// command: commandvalues
// arguments: None
+
+ // JIX MISSING CODE
return true;
}
-static bool client_downloadas(char *input, char *args[])
+static bool client_downloadas(const char *args[])
{
// command: downloadas
// arguments: name=<fileName>
@@ -173,10 +179,12 @@ static bool client_downloadas(char *input, char *args[])
// * 'print': When request for download is basically for print purposes
// * 'slideshow': When request for download is for showing slideshow
// * 'export': Just a simple download
+
+ // JIX MISSING CODE
return true;
}
-static bool client_getchildid(char *input, char *args[])
+static bool client_getchildid(const char *args[])
{
// command: getchildid
// arguments: None
@@ -186,16 +194,18 @@ static bool client_getchildid(char *input, char *args[])
return true;
}
-static bool client_gettextselection(char *input, char *args[])
+static bool client_gettextselection(const char *args[])
{
// command: gettextselection
// arguments: None
// description:
// Request selection's content
+
+ // JIX MISSING CODE
return true;
}
-static bool client_insertfile(char *input, char *args[])
+static bool client_insertfile(const char *args[])
{
// command: insertfile
// arguments: name=<name>
@@ -203,10 +213,12 @@ static bool client_insertfile(char *input, char *args[])
// description:
// Inserts the file with the name <name> into the document,
// we currently support type = 'graphic'
+
+ // JIX MISSING CODE
return true;
}
-static bool client_key(char *input, char *args[])
+static bool client_key(const char *args[])
{
// command: key
// arguments: type=<type>
@@ -214,10 +226,12 @@ static bool client_key(char *input, char *args[])
// key=<keycode>
// description:
// <type> is 'input' or 'up', <charcode> and <keycode> are numbers.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_load(char *input, char *args[])
+static bool client_load(const char *args[])
{
// command: load
// arguments: [part=<partNumber>]
@@ -230,10 +244,12 @@ static bool client_load(char *input, char *args[])
// microseconds since the Unix epoch - midnight, January 1, 1970.
// options are the whole rest of the line, not URL-encoded,
// and must be valid JSON.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_loolclient(char *input, char *args[])
+static bool client_loolclient(const char *args[])
{
// command: loolclient
// arguments: <major.minor[-patch]>
@@ -245,10 +261,12 @@ static bool client_loolclient(char *input, char *args[])
// Minor: an integer is more flexible and is at the discretion of either party.
// Security fixes that do not alter the API would bump the minor version number.
// Patch: an optional string that is informational.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_mouse(char *input, char *args[])
+static bool client_mouse(const char *args[])
{
// command: mouse
// arguments: type=<type>
@@ -257,29 +275,35 @@ static bool client_mouse(char *input, char *args[])
// count=<count>
// description:
// <type> is 'buttondown', 'buttonup' or 'move', others are numbers.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_paste(char *input, char *args[])
+static bool client_paste(const char *args[])
{
// command: paste
// arguments: mimetype=<mimeType>
// <binaryPasteData>
// description:
// Paste content at the current cursor position
+
+ // JIX MISSING CODE
return true;
}
-static bool client_ping(char *input, char *args[])
+static bool client_ping(const char *args[])
{
// command: ping
// argument: None
// description:
// requests a 'pong' server message.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_renderfont(char *input, char *args[])
+static bool client_renderfont(const char *args[])
{
// command: renderfont
// arguments: font=<font>
@@ -288,27 +312,33 @@ static bool client_renderfont(char *input, char *args[])
// requests the rendering of the given font.
// The font parameter is URL encoded
// The char parameter is URL encoded
+
+ // JIX MISSING CODE
return true;
}
-static bool client_requestloksession(char *input, char *args[])
+static bool client_requestloksession(const char *args[])
{
// command: requestloksession
// arguments: None
// description:
// requests the initialization of a LOK process in an attempt
// to predict the user's interaction with the document
+
+ // JIX MISSING CODE
return true;
}
-static bool client_resetselection(char *input, char *args[])
+static bool client_resetselection(const char *args[])
{
// command: resetselection
// arguments: None
+
+ // JIX MISSING CODE
return true;
}
-static bool client_saveas(char *input, char *args[])
+static bool client_saveas(const char *args[])
{
// command: saveas
// arguments: url=<url>
@@ -318,10 +348,12 @@ static bool client_saveas(char *input, char *args[])
// <url> is a URL, encoded. <format> is also URL-encoded,
// i.e. spaces as %20 and it can be empty
// options are the whole rest of the line, not URL-encoded, and can be empty
+
+ // JIX MISSING CODE
return true;
}
-static bool client_selectgraphic(char *input, char *args[])
+static bool client_selectgraphic(const char *args[])
{
// command: selectgraphic
// arguments: type=<type>
@@ -329,10 +361,12 @@ static bool client_selectgraphic(char *input, char *args[])
// y=<y>
// description:
// <type> is 'start' or 'end'. <x> and <y> are numbers.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_selecttext(char *input, char *args[])
+static bool client_selecttext(const char *args[])
{
// command: selecttext
// arguments: type=<type>
@@ -340,33 +374,41 @@ static bool client_selecttext(char *input, char *args[])
// y=<y>
// description:
// <type> is 'start', 'end' or 'reset', <x> and <y> are numbers.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_setclientpart(char *input, char *args[])
+static bool client_setclientpart(const char *args[])
{
// command: setclientpart
// arguments: part=<partNumber>
// description:
// Informs the server that the client changed to part <partNumber>.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_status(char *input, char *args[])
+static bool client_status(const char *args[])
{
// command: status
// arguments: None
+
+ // JIX MISSING CODE
return true;
}
-static bool client_styles(char *input, char *args[])
+static bool client_styles(const char *args[])
{
// command: styles
// arguments: None
+
+ // JIX MISSING CODE
return true;
}
-static bool client_tile(char *input, char *args[])
+static bool client_tile(const char *args[])
{
// command: tile
// arguments: part=<partNumber>
@@ -389,10 +431,14 @@ static bool client_tile(char *input, char *args[])
// previews of presentation documents, and not for anything else. It
// is only useful to loleaflet and will break it if not returned in
// the response.
+
+ // JIX MISSING CODE
+
+ // renderTile
return true;
}
-static bool client_tilecombine(char *input, char *args[])
+static bool client_tilecombine(const char *args[])
{
// command: tilecombine
// arguments: <parameters>
@@ -401,19 +447,25 @@ static bool client_tilecombine(char *input, char *args[])
// parameters 'tileposx', 'tileposy' and 'oldhash' are
// comma-separated lists, and the number of elements in each
// must be same.
+
+ // JIX MISSING CODE
+
+ // renderCombinedTiles
return true;
}
-static bool client_uno(char *input, char *args[])
+static bool client_uno(const char *args[])
{
// command: uno
// arguments: <command>
// description:
// <command> is a line of text.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_useractive(char *input, char *args[])
+static bool client_useractive(const char *args[])
{
// command: useractive
// arguments: None
@@ -422,10 +474,12 @@ static bool client_useractive(char *input, char *args[])
// area to disable the inactive state.
// Will send invalidation and update notifications to force refreshing the screen.
// See 'userinactive'.
+
+ // JIX MISSING CODE
return true;
}
-static bool client_userinactive(char *input, char *args[])
+static bool client_userinactive(const char *args[])
{
// command: userinactive
// arguments: None
@@ -433,67 +487,78 @@ static bool client_userinactive(char *input, char *args[])
// Sent when the user has switched tabs or away from the Browser
// altogether. It should throttle updates until the user is active again.
// See 'useractive'.
+
+ // JIX MISSING CODE
return true;
}
-typedef struct {const char *command; bool (*funcCmd)(char *, char *[]);} CLIENTCOMMAND;
-static CLIENTCOMMAND clientcommands[] = {{"canceltiles", client_canceltiles},
- {"clientvisiblearea", client_clientvisiblearea},
- {"closedocument", client_closedocument},
- {"commandvalues", client_commandvalues},
- {"downloadas", client_downloadas},
- {"getchildid", client_getchildid},
- {"gettextselection", client_gettextselection},
- {"insertfile", client_insertfile},
- {"key", client_key},
- {"load", client_load},
- {"loolclient", client_loolclient},
- {"mouse", client_mouse},
- {"paste", client_paste},
- {"ping", client_ping},
- {"renderfont", client_renderfont},
- {"requestloksession", client_requestloksession},
- {"resetselection", client_resetselection},
- {"saveas", client_saveas},
- {"selectgraphic", client_selectgraphic},
- {"selecttext", client_selecttext},
- {"setclientpart", client_setclientpart},
- {"status", client_status},
- {"styles", client_styles},
- {"tile", client_tile},
- {"tilecombine", client_tilecombine},
- {"uno", client_uno},
- {"useractive", client_useractive},
- {"userinactive", client_userinactive},
- {NULL, NULL}
+typedef struct {const char *command; bool useArgs; bool (*funcCmd)(const char *[]);} CLIENTCOMMAND;
+static CLIENTCOMMAND clientcommands[] = {{"canceltiles", false, client_canceltiles},
+ {"clientvisiblearea", true, client_clientvisiblearea},
+ {"closedocument", false, client_closedocument},
+ {"commandvalues", false, client_commandvalues},
+ {"downloadas", true, client_downloadas},
+ {"getchildid", false, client_getchildid},
+ {"gettextselection", false, client_gettextselection},
+ {"insertfile", true, client_insertfile},
+ {"key", true, client_key},
+ {"load", true, client_load},
+ {"loolclient", true, client_loolclient},
+ {"mouse", true, client_mouse},
+ {"paste", true, client_paste},
+ {"ping", false, client_ping},
+ {"renderfont", true, client_renderfont},
+ {"requestloksession", false, client_requestloksession},
+ {"resetselection", false, client_resetselection},
+ {"saveas", true, client_saveas},
+ {"selectgraphic", true, client_selectgraphic},
+ {"selecttext", true, client_selecttext},
+ {"setclientpart", true, client_setclientpart},
+ {"status", false, client_status},
+ {"styles", false, client_styles},
+ {"tile", true, client_tile},
+ {"tilecombine", true, client_tilecombine},
+ {"uno", false, client_uno},
+ {"useractive", false, client_useractive},
+ {"userinactive", false, client_userinactive},
+ {NULL, false, NULL}
};
-int LOkit_ClientCommand()
+int LOkit_ClientCommand(const char *input)
{
- char *args[10];
- char *sep = " ";
- char *cmd, *token;
- char *input = "unknown command jan var her";
+ static char argStore[2048];
+ const char *args[10];
+ char *cmd, *arg;
+ const char *sep = " ";
int j = 0;
// Split input into cmd + args
- token = cmd = strtok(input, sep);
- while (token && j < 10 && token - input < 2048)
- args[j++] = token = strtok(token, sep);
+ strcpy(argStore, input);
+ arg = cmd = strtok(argStore, sep);
// Locate correct command
CLIENTCOMMAND *client_cmd = clientcommands;
- for (; client_cmd->command; ++cmd)
- if (!strcmp(client_cmd->command,"mycommand"))
- return client_cmd->funcCmd(input, NULL);
+ for (; client_cmd->command; ++client_cmd)
+ if (!strcmp(client_cmd->command,cmd)) {
+ args[j++] = input;
+ args[j] = NULL;
+ if (client_cmd->useArgs)
+ while (arg && j < 10)
+ {
+ arg = strtok(NULL, sep);
+ args[j++] = arg;
+ }
+ return (int)client_cmd->funcCmd(args);
+ }
+
// Call/Return from command
- return 0;
+ return -999;
}