X-Git-Url: https://git.cworth.org/git?p=ttt;a=blobdiff_plain;f=src%2Fttt-client.c;h=53cc4ff3556ce728669a8833919a85c19d197a01;hp=24738649e2f52990dd3631e48e1eee9183c28d40;hb=e2c8706061d31d48f9516297d118d230354a5949;hpb=65526318e1c88d56bd1a78d072c4d38252dbd864 diff --git a/src/ttt-client.c b/src/ttt-client.c index 2473864..53cc4ff 100644 --- a/src/ttt-client.c +++ b/src/ttt-client.c @@ -62,6 +62,13 @@ _ttt_client_execute_quit (ttt_client_t *client, char **args, int num_args); +static ttt_error_t +_ttt_client_execute_message (ttt_client_t *client, + char **args, + int num_args); + + + typedef struct _ttt_command_description { const char *command; int args_required; @@ -69,10 +76,12 @@ typedef struct _ttt_command_description { } ttt_command_description_t; ttt_command_description_t command_descriptions[] = { - {"HELO", 1, _ttt_client_execute_helo}, - {"WHO", 0, _ttt_client_execute_who }, - {"QUIT", 0, _ttt_client_execute_quit} + {"HELO", 1, _ttt_client_execute_helo}, + {"WHO", 0, _ttt_client_execute_who }, + {"QUIT", 0, _ttt_client_execute_quit}, + {"MESSAGE", 1, _ttt_client_execute_message} }; + #define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) static ttt_error_t @@ -110,7 +119,7 @@ _ttt_client_execute_who (ttt_client_t *client, char **args, int num_args) { - const char *response; + char *response; assert (num_args == 0); @@ -124,15 +133,42 @@ _ttt_client_execute_who (ttt_client_t *client, } static ttt_error_t -_ttt_client_execute_quit (ttt_client_t *client, - char **args, - int num_args) +_ttt_client_execute_quit (ttt_client_t *client, + char **args, + int num_args) { assert (num_args == 0); return TTT_ERROR_QUIT_REQUESTED; } +static ttt_error_t +_ttt_client_execute_message (ttt_client_t *client, + char **args, + int num_args) +{ + char *response; + int i; + + assert (num_args > 0); + + xasprintf(&response, "MESSAGE\n"); + ttt_client_send (client, response); + + xasprintf(&response, "NOTICE MESSAGE %s", client->name); + for (i=0; iserver,response); + + free (response); + return TTT_ERROR_NONE; + + +} + static void _free_request (ttt_client_t *client); @@ -249,7 +285,7 @@ _execute_request (ttt_client_t *client) for (i=0; i < ARRAY_SIZE(command_descriptions); i++) { desc = &command_descriptions[i]; if (strcmp(command, desc->command) == 0) { - if (num_args != desc->args_required) + if (num_args < desc->args_required) return TTT_ERROR_SYNTAX; return (desc->execute) (client, &client->request_strings[1], num_args); }