X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fserver%2Ftelnet_server.c;h=94a266246cf533a2a7742e43506f87eda3461d42;hp=004f4ac38ce467f15c9cd839c3810b1995472335;hb=5ecae346cc675cf269d5e3371a7d05181d570cdb;hpb=526fe3d83e118d87af34353a7140c02f3f1a3c19 diff --git a/src/server/telnet_server.c b/src/server/telnet_server.c index 004f4ac38c..94a266246c 100644 --- a/src/server/telnet_server.c +++ b/src/server/telnet_server.c @@ -2,9 +2,12 @@ * Copyright (C) 2005 by Dominic Rath * * Dominic.Rath@gmx.de * * * - * Copyright (C) 2007,2008 Øyvind Harboe * + * Copyright (C) 2007,2008 Øyvind Harboe * * oyvind.harboe@zylin.com * * * + * Copyright (C) 2008 by Spencer Oliver * + * spen@spen-soft.co.uk * + * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * @@ -24,22 +27,9 @@ #include "config.h" #endif -#include "replacements.h" - #include "telnet_server.h" - -#include "server.h" -#include "log.h" -#include "command.h" -#include "target.h" #include "target_request.h" -#include -#include -#include -#include -#include - static unsigned short telnet_port = 0; int handle_exit_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); @@ -144,20 +134,6 @@ void telnet_log_callback(void *priv, const char *file, int line, telnet_write(connection, "\b", 1); } -int telnet_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv) -{ - switch (event) - { - case TARGET_EVENT_HALTED: - target_arch_state(target); - break; - default: - break; - } - - return ERROR_OK; -} - int telnet_new_connection(connection_t *connection) { telnet_connection_t *telnet_connection = malloc(sizeof(telnet_connection_t)); @@ -197,12 +173,8 @@ int telnet_new_connection(connection_t *connection) telnet_connection->next_history = 0; telnet_connection->current_history = 0; - target_register_event_callback(telnet_target_callback_event_handler, connection->cmd_ctx); - log_add_callback(telnet_log_callback, connection); - - return ERROR_OK; } @@ -354,7 +326,9 @@ int telnet_input(connection_t *connection) t_con->line_size = 0; t_con->line_cursor = -1; /* to supress prompt in log callback during command execution */ + retval = command_run_line(command_context, t_con->line); + t_con->line_cursor = 0; if (retval == ERROR_COMMAND_CLOSE_CONNECTION) @@ -601,8 +575,6 @@ int telnet_connection_closed(connection_t *connection) LOG_ERROR("BUG: connection->priv == NULL"); } - target_unregister_event_callback(telnet_target_callback_event_handler, connection->cmd_ctx); - return ERROR_OK; } @@ -624,13 +596,13 @@ int telnet_init(char *banner) if (telnet_port == 0) { - LOG_WARNING("no telnet port specified, using default port 4444"); + LOG_DEBUG("no telnet port specified, using default port 4444"); telnet_port = 4444; } telnet_service->banner = banner; - add_service("telnet", CONNECTION_TELNET, telnet_port, 1, telnet_new_connection, telnet_input, telnet_connection_closed, telnet_service); + add_service("telnet", CONNECTION_TCP, telnet_port, 1, telnet_new_connection, telnet_input, telnet_connection_closed, telnet_service); return ERROR_OK; } @@ -641,7 +613,7 @@ int telnet_register_commands(command_context_t *command_context) COMMAND_EXEC, "exit telnet session"); register_command(command_context, NULL, "telnet_port", handle_telnet_port_command, - COMMAND_CONFIG, ""); + COMMAND_ANY, "port on which to listen for incoming telnet connections"); return ERROR_OK; } @@ -650,7 +622,10 @@ int telnet_register_commands(command_context_t *command_context) int handle_telnet_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { if (argc == 0) + { + command_print(cmd_ctx, "%d", telnet_port); return ERROR_OK; + } telnet_port = strtoul(args[0], NULL, 0);