]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cli_simple: Rework this support slightly
authorTom Rini <trini@konsulko.com>
Thu, 26 Oct 2023 18:31:19 +0000 (14:31 -0400)
committerTom Rini <trini@konsulko.com>
Tue, 7 Nov 2023 19:48:51 +0000 (14:48 -0500)
The interactive portion of our non-HUSH 'simple' parser is guarded by
CONFIG_CMDLINE already.  Much of the code behind this simple parser is
also used as "input" parser, such as from menu interfaces and so forth
and not strictly command line input.  To support this, always build the
assorted cli object files, but guard the interactive portions of
cli_simple.c with a CMDLINE check.

Signed-off-by: Tom Rini <trini@konsulko.com>
common/Makefile
common/cli_simple.c

index b711dc29b65e18e85452f91f35be12fdfac23201..1495436d5d45567d7d51529a485e12621242d22b 100644 (file)
@@ -8,6 +8,7 @@ ifndef CONFIG_SPL_BUILD
 obj-y += init/
 obj-y += main.o
 obj-y += exports.o
+obj-y += cli_getch.o cli_simple.o cli_readline.o
 obj-$(CONFIG_HUSH_PARSER) += cli_hush.o
 obj-$(CONFIG_AUTOBOOT) += autoboot.o
 obj-y += version.o
@@ -38,7 +39,6 @@ obj-$(CONFIG_SPLASH_SOURCE) += splash_source.o
 obj-$(CONFIG_MENU) += menu.o
 obj-$(CONFIG_UPDATE_COMMON) += update.o
 obj-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
-obj-$(CONFIG_CMDLINE) += cli_getch.o cli_readline.o cli_simple.o
 
 endif # !CONFIG_SPL_BUILD
 
index e80ba488a5eb0f4234a920a404465471e353c558..f89ba92d1b05c50bfa01a52498de5b7a5558e1c9 100644 (file)
 #define debug_parser(fmt, args...)             \
        debug_cond(DEBUG_PARSER, fmt, ##args)
 
-
-int cli_simple_parse_line(char *line, char *argv[])
-{
-       int nargs = 0;
-
-       debug_parser("%s: \"%s\"\n", __func__, line);
-       while (nargs < CONFIG_SYS_MAXARGS) {
-               /* skip any white space */
-               while (isblank(*line))
-                       ++line;
-
-               if (*line == '\0') {    /* end of line, no more args    */
-                       argv[nargs] = NULL;
-                       debug_parser("%s: nargs=%d\n", __func__, nargs);
-                       return nargs;
-               }
-
-               argv[nargs++] = line;   /* begin of argument string     */
-
-               /* find end of string */
-               while (*line && !isblank(*line))
-                       ++line;
-
-               if (*line == '\0') {    /* end of line, no more args    */
-                       argv[nargs] = NULL;
-                       debug_parser("parse_line: nargs=%d\n", nargs);
-                       return nargs;
-               }
-
-               *line++ = '\0';         /* terminate current arg         */
-       }
-
-       printf("** Too many args (max. %d) **\n", CONFIG_SYS_MAXARGS);
-
-       debug_parser("%s: nargs=%d\n", __func__, nargs);
-       return nargs;
-}
-
 int cli_simple_process_macros(const char *input, char *output, int max_size)
 {
        char c, prev;
@@ -172,6 +134,44 @@ int cli_simple_process_macros(const char *input, char *output, int max_size)
        return ret;
 }
 
+#ifdef CONFIG_CMDLINE
+int cli_simple_parse_line(char *line, char *argv[])
+{
+       int nargs = 0;
+
+       debug_parser("%s: \"%s\"\n", __func__, line);
+       while (nargs < CONFIG_SYS_MAXARGS) {
+               /* skip any white space */
+               while (isblank(*line))
+                       ++line;
+
+               if (*line == '\0') {    /* end of line, no more args    */
+                       argv[nargs] = NULL;
+                       debug_parser("%s: nargs=%d\n", __func__, nargs);
+                       return nargs;
+               }
+
+               argv[nargs++] = line;   /* begin of argument string     */
+
+               /* find end of string */
+               while (*line && !isblank(*line))
+                       ++line;
+
+               if (*line == '\0') {    /* end of line, no more args    */
+                       argv[nargs] = NULL;
+                       debug_parser("parse_line: nargs=%d\n", nargs);
+                       return nargs;
+               }
+
+               *line++ = '\0';         /* terminate current arg         */
+       }
+
+       printf("** Too many args (max. %d) **\n", CONFIG_SYS_MAXARGS);
+
+       debug_parser("%s: nargs=%d\n", __func__, nargs);
+       return nargs;
+}
+
  /*
  * WARNING:
  *
@@ -346,3 +346,4 @@ int cli_simple_run_command_list(char *cmd, int flag)
 
        return rcode;
 }
+#endif