Change parser strings to include length.
authorasterix <asterix@38d2e660-2303-0410-9eaa-f027e97ec537>
Thu, 5 Jan 2012 17:26:01 +0000 (17:26 +0000)
committerasterix <asterix@38d2e660-2303-0410-9eaa-f027e97ec537>
Thu, 5 Jan 2012 17:26:01 +0000 (17:26 +0000)
By default, parsed arguments from the parser module are not valid
strings. This patch introduces string length to each string parameter.

git-svn-id: https://src.develer.com/svnoss/bertos/trunk@5220 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/mware/parser.c
bertos/mware/parser.h

index 71aec30dc980f58d1c4b1ada8060224c96878e7c..217cc6c113420b8610d54309e2bee286645a2cad 100644 (file)
@@ -137,7 +137,9 @@ static bool parseArgs(const char *fmt, const char *input, parms argv[])
                                break;
 
                        case 's':
-                               (*argv++).s = begin;
+                               (*argv).str.p = begin;
+                               (*argv).str.sz = end - begin;
+                               argv++;
                                break;
 
                        default:
@@ -264,7 +266,7 @@ bool parser_get_cmd_arguments(const char* input, const struct CmdTemplate* cmdp,
        if (!input)
                return false;
 
-       args[0].s = cmdp->name;
+       args[0].str.p = cmdp->name;
        if (!parseArgs(cmdp->arg_fmt, input, args + 1))
                return false;
 
index 281db3964c05e51c8a85fe110daf8a670fb3947b..9d4423d3fbb80186fb1553dd82dfa0a540228788 100644 (file)
@@ -131,8 +131,14 @@ typedef enum
        RC_SKIP   = 2   ///< Skip following commands
 } ResultCode;
 
+typedef struct
+{
+       const char *p;
+       int sz;
+} str_parm;
+
 /** union that contains parameters passed to and from commands */
-typedef union { long l; const char *s; } parms;
+typedef union { long l; str_parm str; } parms;
 /** pointer to commands */
 typedef ResultCode (*CmdFuncPtr)(parms args_results[]);