#define TCL_SERVER_VERSION "TCL Server 0.1"
#define TCL_MAX_LINE (4096)
-typedef struct tcl_connection_s {
+struct tcl_connection {
int tc_linedrop;
int tc_lineoffset;
char tc_line[TCL_MAX_LINE];
int tc_outerror; /* flag an output error */
-} tcl_connection_t;
+};
static unsigned short tcl_port = 6666;
-/* commands */
-static int handle_tcl_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-
/* handlers */
-static int tcl_new_connection(connection_t *connection);
-static int tcl_input(connection_t *connection);
-static int tcl_output(connection_t *connection, const void *buf, ssize_t len);
-static int tcl_closed(connection_t *connection);
+static int tcl_new_connection(struct connection *connection);
+static int tcl_input(struct connection *connection);
+static int tcl_output(struct connection *connection, const void *buf, ssize_t len);
+static int tcl_closed(struct connection *connection);
/* write data out to a socket.
*
* this is a blocking write, so the return value must equal the length, if
* that is not the case then flag the connection with an output error.
*/
-int tcl_output(connection_t *connection, const void *data, ssize_t len)
+int tcl_output(struct connection *connection, const void *data, ssize_t len)
{
ssize_t wlen;
- tcl_connection_t *tclc;
+ struct tcl_connection *tclc;
tclc = connection->priv;
if (tclc->tc_outerror)
}
/* connections */
-static int tcl_new_connection(connection_t *connection)
+static int tcl_new_connection(struct connection *connection)
{
- tcl_connection_t *tclc;
+ struct tcl_connection *tclc;
- tclc = malloc(sizeof(tcl_connection_t));
+ tclc = malloc(sizeof(struct tcl_connection));
if (tclc == NULL)
return ERROR_CONNECTION_REJECTED;
- memset(tclc, 0, sizeof(tcl_connection_t));
+ memset(tclc, 0, sizeof(struct tcl_connection));
connection->priv = tclc;
return ERROR_OK;
}
-static int tcl_input(connection_t *connection)
+static int tcl_input(struct connection *connection)
{
int retval;
int i;
ssize_t rlen;
const char *result;
int reslen;
- tcl_connection_t *tclc;
+ struct tcl_connection *tclc;
char in[256];
rlen = read_socket(connection->fd, &in, sizeof(in));
return ERROR_OK;
}
-static int tcl_closed(connection_t *connection)
+static int tcl_closed(struct connection *connection)
{
/* cleanup connection context */
if (connection->priv) {
return retval;
}
-int tcl_register_commands(command_context_t *cmd_ctx)
+COMMAND_HANDLER(handle_tcl_port_command)
{
- register_command(cmd_ctx, NULL, "tcl_port", handle_tcl_port_command, COMMAND_CONFIG, "port on which to listen for incoming TCL syntax");
- return ERROR_OK;
+ return CALL_COMMAND_HANDLER(server_port_command, &tcl_port);
}
-static int handle_tcl_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+int tcl_register_commands(command_context_t *cmd_ctx)
{
- if (argc == 1) {
- tcl_port = strtoul(args[0], NULL, 0);
- }
+ register_command(cmd_ctx, NULL, "tcl_port",
+ handle_tcl_port_command, COMMAND_CONFIG,
+ "port on which to listen for incoming TCL syntax");
return ERROR_OK;
}