* 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
#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);
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;
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)
{
}
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);
}
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);