From: Bryan Worth Date: Fri, 25 Nov 2005 16:12:11 +0000 (+0000) Subject: 2005-11-25 Bryan Worth X-Git-Url: https://git.cworth.org/git?p=ttt;a=commitdiff_plain;h=e2c8706061d31d48f9516297d118d230354a5949;hp=65526318e1c88d56bd1a78d072c4d38252dbd864 2005-11-25 Bryan Worth * TODO: checked off MESSAGE *src/ttt-client.c: (_ttt_client_execute_message): Implement MESSAGE *(_execute_request): changed arg_required to behave as a minimum instead of an absolute number to allow optional arguments such as multi-word messages --- diff --git a/ChangeLog b/ChangeLog index df44897..e08c526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-11-25 Bryan Worth + * TODO: checked off MESSAGE + + *src/ttt-client.c: (_ttt_client_execute_message): Implement MESSAGE + *(_execute_request): changed arg_required to behave as a minimum + instead of an absolute number to allow optional arguments such as + multi-word messages + 2005-11-25 Richard D. Worth * TODO: checked off WHO, QUIT, ERROR SYNTAX diff --git a/TODO b/TODO index 0e94c69..a795a03 100644 --- a/TODO +++ b/TODO @@ -5,7 +5,7 @@ S C ✓ 1.1 HELO 1.2. Global commands ✓ 1.2.1. WHO - 1.2.2. MESSAGE +✓ 1.2.2. MESSAGE 1.2.3. HELP ✓ 1.2.4. QUIT 1.2.5. VERSION 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); }