- added "version" command (patch from John Hartman, thanks)

- fixed bug in telnet history handling (patch from John Hartman, thanks)
- OpenOCD version has been changed from SVN revision number to date/time


git-svn-id: svn://svn.berlios.de/openocd/trunk@74 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
drath 2006-06-25 11:14:44 +00:00
parent ef139a3a5e
commit db0264db2a
3 changed files with 40 additions and 24 deletions

View File

@ -25,7 +25,7 @@
#include "command.h" #include "command.h"
#if 1 #if 0
#define _DEBUG_JTAG_IO_ #define _DEBUG_JTAG_IO_
#endif #endif

View File

@ -18,6 +18,8 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * 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 #ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
#endif #endif
@ -49,11 +51,22 @@
#include <unistd.h> #include <unistd.h>
#include <errno.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[]) int main(int argc, char *argv[])
{ {
/* initialize commandline interface */ /* initialize commandline interface */
command_context_t *cmd_ctx, *cfg_cmd_ctx; command_context_t *cmd_ctx, *cfg_cmd_ctx;
cmd_ctx = command_init(); cmd_ctx = command_init();
register_command(cmd_ctx, NULL, "version", handle_version_command,
COMMAND_EXEC, "show OpenOCD version");
/* register subsystem commands */ /* register subsystem commands */
server_register_commands(cmd_ctx); server_register_commands(cmd_ctx);
@ -70,7 +83,7 @@ int main(int argc, char *argv[])
return EXIT_FAILURE; return EXIT_FAILURE;
DEBUG("log init complete"); 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 = copy_command_context(cmd_ctx);
cfg_cmd_ctx->mode = COMMAND_CONFIG; cfg_cmd_ctx->mode = COMMAND_CONFIG;

View File

@ -254,29 +254,32 @@ int telnet_input(connection_t *connection)
return ERROR_SERVER_REMOTE_CLOSED; return ERROR_SERVER_REMOTE_CLOSED;
} }
} }
/* if the history slot is already taken, free it */ /* Save only non-blank lines in the history */
if (t_con->history[t_con->next_history]) if (t_con->line_size > 0)
{ {
free(t_con->history[t_con->next_history]); /* 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;
if (t_con->history[t_con->current_history])
{
free(t_con->history[t_con->current_history]);
}
t_con->history[t_con->current_history] = strdup("");
} }
/* add line to history */
t_con->history[t_con->next_history++] = strdup(t_con->line);
/* 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]);
}
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) if (!t_con->suppress_prompt)
{ {
telnet_prompt(connection); telnet_prompt(connection);
@ -394,7 +397,7 @@ int telnet_input(connection_t *connection)
} }
else if (*buf_p == 'A') /* cursor up */ 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]) if (t_con->history[last_history])
{ {
telnet_clear_line(connection, t_con); telnet_clear_line(connection, t_con);
@ -408,7 +411,7 @@ int telnet_input(connection_t *connection)
} }
else if (*buf_p == 'B') /* cursor down */ 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]) if (t_con->history[next_history])
{ {
telnet_clear_line(connection, t_con); telnet_clear_line(connection, t_con);