Only one minor suggested improvement, below.  Otherwise, these both look
okay to me.

On Tue, 2009-12-01 at 08:48 +0100, Øyvind Harboe wrote:
> In embedded hosts, the Jim interpreter can come from the
> existing context rather than be created by OpenOCD.
> 
> Signed-off-by: Øyvind Harboe <[email protected]>
> ---
>  src/helper/command.c |   18 +++++++++++-------
>  src/helper/command.h |    6 ++++--
>  src/openocd.c        |    6 +++---
>  3 files changed, 18 insertions(+), 12 deletions(-)
> 
> diff --git a/src/helper/command.c b/src/helper/command.c
> index dcad6a1..d657668 100644
> --- a/src/helper/command.c
> +++ b/src/helper/command.c
> @@ -1272,7 +1272,7 @@ static const struct command_registration 
> command_builtin_handlers[] = {
>       COMMAND_REGISTRATION_DONE
>  };
>  
> -struct command_context* command_init(const char *startup_tcl)
> +struct command_context* command_init(const char *startup_tcl, Jim_Interp 
> *interp)
>  {
>       struct command_context* context = malloc(sizeof(struct 
> command_context));
>       const char *HostOs;
> @@ -1284,14 +1284,18 @@ struct command_context* command_init(const char 
> *startup_tcl)
>       context->output_handler_priv = NULL;
>  
>  #if !BUILD_ECOSBOARD

It is now safe to kill this #if logic too.  It's like a bonus prize. ;)

> -     Jim_InitEmbedded();
> -     /* Create an interpreter */
> -     context->interp = Jim_CreateInterp();
> -     /* Add all the Jim core commands */
> -     Jim_RegisterCoreCommands(context->interp);
> +     /* Create a jim interpreter if we were not handed one */
> +     if (interp == NULL)
> +     {
> +             Jim_InitEmbedded();
> +             /* Create an interpreter */
> +             interp = Jim_CreateInterp();
> +             /* Add all the Jim core commands */
> +             Jim_RegisterCoreCommands(interp);
> +     }
>  #endif
> +     context->interp = interp;
>  
> -     Jim_Interp *interp = context->interp;
>  #if defined(_MSC_VER)
>       /* WinXX - is generic, the forward
>        * looking problem is this:
> diff --git a/src/helper/command.h b/src/helper/command.h
> index 611db87..8d68c18 100644
> --- a/src/helper/command.h
> +++ b/src/helper/command.h
> @@ -323,9 +323,11 @@ void command_set_output_handler(struct command_context* 
> context,
>  int command_context_mode(struct command_context *context, enum command_mode 
> mode);
>  
>  /**
> - * Creates a new command context using the startup TCL provided.
> + * Creates a new command context using the startup TCL provided and
> + * the existing Jim interpreter, if any. If interp == NULL, then command_init
> + * creates a command interpreter.
>   */
> -struct command_context* command_init(const char *startup_tcl);
> +struct command_context* command_init(const char *startup_tcl, Jim_Interp 
> *interp);
>  /**
>   * Creates a copy of an existing command context.  This does not create
>   * a deep copy of the command list, so modifications in one context will
> diff --git a/src/openocd.c b/src/openocd.c
> index 22d4582..44e0292 100644
> --- a/src/openocd.c
> +++ b/src/openocd.c
> @@ -188,14 +188,14 @@ static const struct command_registration 
> openocd_command_handlers[] = {
>  struct command_context *global_cmd_ctx;
>  
>  /* NB! this fn can be invoked outside this file for non PC hosted builds */
> -struct command_context *setup_command_handler(void)
> +struct command_context *setup_command_handler(Jim_Interp *interp)
>  {
>       log_init();
>       LOG_DEBUG("log_init: complete");
>  
>       struct command_context *cmd_ctx;
>  
> -     global_cmd_ctx = cmd_ctx = command_init(openocd_startup_tcl);
> +     global_cmd_ctx = cmd_ctx = command_init(openocd_startup_tcl, interp);
>  
>       register_commands(cmd_ctx, NULL, openocd_command_handlers);
>       /* register subsystem commands */
> @@ -242,7 +242,7 @@ int openocd_main(int argc, char *argv[])
>       /* initialize commandline interface */
>       struct command_context *cmd_ctx;
>  
> -     cmd_ctx = setup_command_handler();
> +     cmd_ctx = setup_command_handler(NULL);
>  
>  #if BUILD_IOUTIL
>       if (ioutil_init(cmd_ctx) != ERROR_OK)


_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to