created command handler in client
This commit is contained in:
parent
f325b928eb
commit
e9b439884f
@ -46,6 +46,41 @@ void exit_client(WHY2_UNUSED int i) //guess what
|
|||||||
why2_send_socket(WHY2_CHAT_CODE_EXIT, NULL, listen_socket);
|
why2_send_socket(WHY2_CHAT_CODE_EXIT, NULL, listen_socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
why2_bool command(char *input, char *command, char **arg)
|
||||||
|
{
|
||||||
|
why2_bool returning = 0;
|
||||||
|
|
||||||
|
//GET THE COMMANDS
|
||||||
|
char *full_cmd = why2_malloc(strlen(WHY2_CHAT_COMMAND_PREFIX) + strlen(WHY2_CHAT_COMMAND_EXIT) + 2);
|
||||||
|
sprintf(full_cmd, WHY2_CHAT_COMMAND_PREFIX "%s", command);
|
||||||
|
|
||||||
|
if (strncmp(input, full_cmd, strlen(full_cmd)) == 0) //COMMAND WAS EXECUTED
|
||||||
|
{
|
||||||
|
if (strlen(full_cmd) == strlen(input) - 1) //COMMAND DOESN'T HAVE ARGS
|
||||||
|
{
|
||||||
|
returning = 1;
|
||||||
|
} else if (strlen(input) - 2 > strlen(full_cmd) && input[strlen(full_cmd)] == ' ') //COMMAND CONTAINS ARGS
|
||||||
|
{
|
||||||
|
returning = 1;
|
||||||
|
why2_deallocate(*arg); //DEALLOCATION (why2_deallocate fn checks for NULL, don't you worry)
|
||||||
|
|
||||||
|
//GET THE ARGS
|
||||||
|
*arg = why2_malloc(strlen(input) - strlen(full_cmd) - 1); //ALLOCATE
|
||||||
|
for (unsigned long i = strlen(full_cmd) + 1; i < strlen(input) - 1; i++)
|
||||||
|
{
|
||||||
|
(*arg)[i - (strlen(full_cmd) + 1)] = input[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
(*arg)[strlen(input) - strlen(full_cmd) - 2] = '\0'; //NULL TERM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//DEALLOCATE BUFFERS
|
||||||
|
why2_deallocate(full_cmd);
|
||||||
|
|
||||||
|
return returning;
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
signal(SIGINT, exit_client); //HANDLE ^C
|
signal(SIGINT, exit_client); //HANDLE ^C
|
||||||
|
Loading…
x
Reference in New Issue
Block a user