const char *function, const char *string)
{
connection_t *connection = priv;
+
+ telnet_write(connection, "\b\b \b\b", strlen("\b\b \b\b"));
+
telnet_outputline(connection, string);
+
+ telnet_prompt(connection);
}
int telnet_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv)
{
- struct command_context_s *cmd_ctx = priv;
- connection_t *connection = cmd_ctx->output_handler_priv;
- telnet_connection_t *t_con = connection->priv;
-
switch (event)
{
case TARGET_EVENT_HALTED:
target_arch_state(target);
- if (!t_con->suppress_prompt)
- telnet_prompt(connection);
- break;
- case TARGET_EVENT_RESUMED:
- if (!t_con->suppress_prompt)
- telnet_prompt(connection);
break;
default:
break;
telnet_connection->line_cursor = 0;
telnet_connection->option_size = 0;
telnet_connection->prompt = strdup("> ");
- telnet_connection->suppress_prompt = 0;
telnet_connection->state = TELNET_STATE_DATA;
/* output goes through telnet connection */
target_register_event_callback(telnet_target_callback_event_handler, connection->cmd_ctx);
+ log_add_callback(telnet_log_callback, connection);
+
+
+
return ERROR_OK;
}
continue;
}
- log_add_callback(telnet_log_callback, connection);
- t_con->suppress_prompt = 1;
-
retval = command_run_line(command_context, t_con->line);
- log_remove_callback(telnet_log_callback, connection);
- t_con->suppress_prompt = 0;
-
if (retval == ERROR_COMMAND_CLOSE_CONNECTION)
{
return ERROR_SERVER_REMOTE_CLOSED;
telnet_connection_t *t_con = connection->priv;
int i;
+ log_remove_callback(telnet_log_callback, connection);
+
if (t_con->prompt)
{
free(t_con->prompt);