houskeeping
[fw/openocd] / src / server / telnet_server.c
index c5b6bf5f97b203053ed32291028cd8098c3653a9..95dfce161563ee73eb1cb42944951df6fcc12c07 100644 (file)
@@ -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     *
@@ -185,8 +188,6 @@ int telnet_new_connection(connection_t *connection)
 
        log_add_callback(telnet_log_callback, connection);
 
-
-
        return ERROR_OK;
 }
 
@@ -338,7 +339,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)
@@ -612,7 +615,7 @@ int telnet_init(char *banner)
 
        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;
 }
@@ -623,7 +626,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;
 }
@@ -632,7 +635,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);