- 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__archive__
parent
ef139a3a5e
commit
db0264db2a
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
#define _DEBUG_JTAG_IO_
|
#define _DEBUG_JTAG_IO_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -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,12 +51,23 @@
|
||||||
#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);
|
||||||
telnet_register_commands(cmd_ctx);
|
telnet_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;
|
||||||
|
|
|
@ -255,28 +255,31 @@ int telnet_input(connection_t *connection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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);
|
||||||
|
|
Loading…
Reference in New Issue