diff options
-rw-r--r-- | src/jtag/jtag.h | 2 | ||||
-rw-r--r-- | src/openocd.c | 15 | ||||
-rw-r--r-- | src/server/telnet_server.c | 43 |
3 files changed, 38 insertions, 22 deletions
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index a2cc01b..124150c 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -25,7 +25,7 @@ #include "command.h" -#if 1 +#if 0 #define _DEBUG_JTAG_IO_ #endif diff --git a/src/openocd.c b/src/openocd.c index b0d0a84..229fd91 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -18,6 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#define OPENOCD_VERSION "Open On-Chip Debugger (2006-06-25 13:15 CEST)" + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -49,11 +51,22 @@ #include <unistd.h> #include <errno.h> +/* Give TELNET a way to find out what version this is */ +int handle_version_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +{ + command_print(cmd_ctx, OPENOCD_VERSION); + + return ERROR_OK; +} + int main(int argc, char *argv[]) { /* initialize commandline interface */ command_context_t *cmd_ctx, *cfg_cmd_ctx; cmd_ctx = command_init(); + + register_command(cmd_ctx, NULL, "version", handle_version_command, + COMMAND_EXEC, "show OpenOCD version"); /* register subsystem commands */ server_register_commands(cmd_ctx); @@ -70,7 +83,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; DEBUG("log init complete"); - INFO("Open On-Chip Debugger (Revision 65)"); + INFO( OPENOCD_VERSION ); cfg_cmd_ctx = copy_command_context(cmd_ctx); cfg_cmd_ctx->mode = COMMAND_CONFIG; diff --git a/src/server/telnet_server.c b/src/server/telnet_server.c index 3ff3456..a2704e9 100644 --- a/src/server/telnet_server.c +++ b/src/server/telnet_server.c @@ -254,28 +254,31 @@ int telnet_input(connection_t *connection) return ERROR_SERVER_REMOTE_CLOSED; } } - - /* if the history slot is already taken, free it */ - if (t_con->history[t_con->next_history]) + + /* Save only non-blank lines in the history */ + if (t_con->line_size > 0) { - free(t_con->history[t_con->next_history]); - } - - /* add line to history */ - t_con->history[t_con->next_history++] = strdup(t_con->line); + /* if the history slot is already taken, free it */ + if (t_con->history[t_con->next_history]) + { + free(t_con->history[t_con->next_history]); + } + + /* add line to history */ + t_con->history[t_con->next_history] = strdup(t_con->line); + + /* wrap history at TELNET_LINE_HISTORY_SIZE */ + t_con->next_history = (t_con->next_history + 1) % TELNET_LINE_HISTORY_SIZE; - /* current history line starts at the new entry */ - t_con->current_history = t_con->next_history; + /* current history line starts at the new entry */ + t_con->current_history = t_con->next_history; - if (t_con->history[t_con->current_history]) - { - free(t_con->history[t_con->current_history]); + if (t_con->history[t_con->current_history]) + { + free(t_con->history[t_con->current_history]); + } + t_con->history[t_con->current_history] = strdup(""); } - t_con->history[t_con->current_history] = strdup(""); - - /* wrap history at TELNET_LINE_HISTORY_SIZE */ - if (t_con->next_history > TELNET_LINE_HISTORY_SIZE - 1) - t_con->next_history = 0; if (!t_con->suppress_prompt) { @@ -394,7 +397,7 @@ int telnet_input(connection_t *connection) } else if (*buf_p == 'A') /* cursor up */ { - int last_history = (t_con->current_history - 1 >= 0) ? t_con->current_history - 1 : 127; + int last_history = (t_con->current_history > 0) ? t_con->current_history - 1 : TELNET_LINE_HISTORY_SIZE-1; if (t_con->history[last_history]) { telnet_clear_line(connection, t_con); @@ -408,7 +411,7 @@ int telnet_input(connection_t *connection) } else if (*buf_p == 'B') /* cursor down */ { - int next_history = (t_con->current_history + 1 < 128) ? t_con->current_history + 1 : 0; + int next_history = (t_con->current_history + 1) % TELNET_LINE_HISTORY_SIZE; if (t_con->history[next_history]) { telnet_clear_line(connection, t_con); |