On 10/26/2013 05:14 PM, Simon Glass wrote:
> Allow parser selection to make use of autoconf instead of #ifdefs.
> 
> Signed-off-by: Simon Glass <s...@chromium.org>
> ---
> Changes in v4:
> - Rebase on current master
> 
> Changes in v3: None
> Changes in v2: None
> 
>  common/main.c  | 87 
> +++++++++++++++++++++++++++-------------------------------
>  include/hush.h |  2 --
>  2 files changed, 41 insertions(+), 48 deletions(-)
> 
> diff --git a/common/main.c b/common/main.c
> index b744234..060da11 100644
> --- a/common/main.c
> +++ b/common/main.c
> @@ -366,12 +366,10 @@ static void process_boot_delay(void)
>  
>  void main_loop(void)
>  {
> -#ifndef CONFIG_SYS_HUSH_PARSER
>       static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, };
>       int len;
>       int rc = 1;
>       int flag;
> -#endif
>  #ifdef CONFIG_PREBOOT
>       char *p;
>  #endif
> @@ -428,12 +426,11 @@ void main_loop(void)
>       /*
>        * Main Loop for Monitor Command Processing
>        */
> -#ifdef CONFIG_SYS_HUSH_PARSER
> -     parse_file_outer();
> -     /* This point is never reached */
> -     for (;;);
> -#else
> -     for (;;) {
> +     if (autoconf_sys_hush_parser()) {
> +             parse_file_outer();
> +             /* This point is never reached */
> +             for (;;);
> +     } else {
>               if (autoconf_boot_retry_time() && rc >= 0) {
>                       /* Saw enough of a valid command to
>                        * restart the timeout.
> @@ -468,7 +465,6 @@ void main_loop(void)
>                       lastcommand[0] = 0;
>               }
>       }
> -#endif /*CONFIG_SYS_HUSH_PARSER*/
>  }
>  
>  /*
> @@ -1158,7 +1154,6 @@ int parse_line (char *line, char *argv[])
>  
>  
> /****************************************************************************/
>  
> -#ifndef CONFIG_SYS_HUSH_PARSER
>  static void process_macros (const char *input, char *output)
>  {
>       char c, prev;
> @@ -1366,7 +1361,6 @@ static int builtin_run_command(const char *cmd, int 
> flag)
>  
>       return rc ? rc : repeatable;
>  }
> -#endif
>  
>  /*
>   * Run a command using the selected parser.
> @@ -1377,22 +1371,21 @@ static int builtin_run_command(const char *cmd, int 
> flag)
>   */
>  int run_command(const char *cmd, int flag)
>  {
> -#ifndef CONFIG_SYS_HUSH_PARSER
> -     /*
> -      * builtin_run_command can return 0 or 1 for success, so clean up
> -      * its result.
> -      */
> -     if (builtin_run_command(cmd, flag) == -1)
> -             return 1;
> -
> -     return 0;
> -#else
> -     return parse_string_outer(cmd,
> +     if (autoconf_sys_hush_parser()) {
> +             return parse_string_outer(cmd,
>                       FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP);
> -#endif
> +     } else {
> +             /*
> +             * builtin_run_command can return 0 or 1 for success, so
> +             * clean up its result.
> +             */

same here.

> +             if (builtin_run_command(cmd, flag) == -1)
> +                     return 1;
> +
> +             return 0;
> +     }
>  }
>  
> -#ifndef CONFIG_SYS_HUSH_PARSER
>  /**
>   * Execute a list of command separated by ; or \n using the built-in parser.
>   *
> @@ -1433,7 +1426,6 @@ static int builtin_run_command_list(char *cmd, int flag)
>  
>       return rcode;
>  }
> -#endif
>  
>  int run_command_list(const char *cmd, int len, int flag)
>  {
> @@ -1443,13 +1435,16 @@ int run_command_list(const char *cmd, int len, int 
> flag)
>  
>       if (len == -1) {
>               len = strlen(cmd);
> -#ifdef CONFIG_SYS_HUSH_PARSER
> -             /* hush will never change our string */
> -             need_buff = 0;
> -#else
> -             /* the built-in parser will change our string if it sees \n */
> -             need_buff = strchr(cmd, '\n') != NULL;
> -#endif
> +             if (autoconf_sys_hush_parser()) {
> +                     /* hush will never change our string */
> +                     need_buff = 0;
> +             } else {
> +                     /*
> +                      * the built-in parser will change our string if it
> +                      * sees \n
> +                      */
> +                     need_buff = strchr(cmd, '\n') != NULL;
> +             }
>       }
>       if (need_buff) {
>               buff = malloc(len + 1);
> @@ -1458,20 +1453,20 @@ int run_command_list(const char *cmd, int len, int 
> flag)
>               memcpy(buff, cmd, len);
>               buff[len] = '\0';
>       }
> -#ifdef CONFIG_SYS_HUSH_PARSER
> -     rcode = parse_string_outer(buff, FLAG_PARSE_SEMICOLON);
> -#else
> -     /*
> -      * This function will overwrite any \n it sees with a \0, which
> -      * is why it can't work with a const char *. Here we are making
> -      * using of internal knowledge of this function, to avoid always
> -      * doing a malloc() which is actually required only in a case that
> -      * is pretty rare.
> -      */
> -     rcode = builtin_run_command_list(buff, flag);
> -     if (need_buff)
> -             free(buff);
> -#endif
> +     if (autoconf_sys_hush_parser()) {
> +             rcode = parse_string_outer(buff, FLAG_PARSE_SEMICOLON);
> +     } else {
> +             /*
> +             * This function will overwrite any \n it sees with a \0, which
> +             * is why it can't work with a const char *. Here we are making
> +             * using of internal knowledge of this function, to avoid always
> +             * doing a malloc() which is actually required only in a case
> +             * that is pretty rare.
> +             */

here too.

M

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to