#include <ctype.h> #include <stdio.h> #include "com_group.h" #include "stringops.h" #include "group.h" #include "socket.h" static char word [128], output[1024]; void command_group_add (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_group_add"); #endif l = tokenize (word, l); if (strlen (word)) { group_add (g->group_list, word); g->group_current = g->group_list->tail; if (p->verbose) { sprintf (output, "w %s = Group %s added.", p->name, word); socket_write (g->socket, output); } } else { if (p->verbose) { sprintf (output, "w %s = You have to specify a name.", p->name); socket_write (g->socket, output); } } } void command_group_delete (globals *g, player *p, char *l) { group *gr; #ifdef FUNCTIONS puts ("**command_group_delete"); #endif l = tokenize (word, l); if (!g->group_list) { if (p->verbose) { sprintf (output, "w %s = No groups currently in \ memory.", p->name); socket_write (g->socket, output); } return; } if (!strlen (word)) { char *tempname; copystring (tempname, g->group_current->name); group_delete (g->group_list, g->group_current); g->group_current = g->group_list->head; if (p->verbose) { sprintf (output, "w %s = Group %s deleted.", p->name, tempname); socket_write (g->socket, output); } free (tempname); return; } if (gr = group_find (g->group_list, word)) { group_delete (g->group_list, gr); if (p->verbose) { sprintf (output, "w %s = Group %s deleted.", p->name, word); socket_write (g->socket, output); } } else { if (p->verbose) { sprintf (output, "w %s = Group %s not found.", p->name, word); socket_write (g->socket, output); } } } void command_group_list (globals *g, player *p, char *l) { group *gr; #ifdef FUNCTIONS puts ("**command_group_list"); #endif l = tokenize (word, l); if ((g->group_list->head == NULL) && p->verbose) { sprintf (output, "w %s = No groups in memory.", p->name); socket_write (g->socket, output); } for (gr = g->group_list->head; gr != NULL; gr = gr->next) { sprintf (output, "w %s = %s", p->name, gr->name); socket_write (g->socket, output); } } void command_group_load (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_group_load"); #endif l = tokenize (word, l); group_burn (g->group_list); g->group_list = group_load (strlen (word) ? word : g->group_file); if (p->verbose) { sprintf (output, "w %s = Group file %s loaded.", p->name, strlen (word) ? word : g->group_file); socket_write (g->socket, output); } } void command_group_default (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_group_default"); #endif l = tokenize (word, l); if (strlen (word)) { free (g->group_file); copystring (g->group_file, word); } if (p->verbose) { sprintf (output, "w %s = Group default file is %s.", p->name, g->group_file); socket_write (g->socket, output); } } void command_group_save (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_group_save"); #endif l = tokenize (word, l); group_save (g->group_list, strlen (word) ? word : g->group_file); if (p->verbose) { sprintf (output, "w %s = Group file %s saved.", p->name, strlen (word) ? word : g->group_file); socket_write (g->socket, output); } } void command_group_current (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_group_current"); #endif l = tokenize (word, l); if (strlen (word)) { group *currenttemp; currenttemp = g->group_current; g->group_current = group_find (g->group_list, word); if (!g->group_current) g->group_current = currenttemp; } if (p->verbose) { sprintf (output, "w %s = Current group is %s.", p->name, g->group_current->name); socket_write (g->socket, output); } } void command_group (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_group"); #endif l = tokenize (word, l); if (strlen (word) == 0) { if (p->verbose) { sprintf (output, "w %s = group commands:add, delete, \ list, load, save, default, current", p->name); socket_write (g->socket, output); } return; } if (!strcasecmp (word, "add")) command_group_add (g, p, l); if (!strcasecmp (word, "delete")) command_group_delete (g, p, l); if (!strcasecmp (word, "list")) command_group_list (g, p, l); if (!strcasecmp (word, "load")) command_group_load (g, p, l); if (!strcasecmp (word, "save")) command_group_save (g, p, l); if (!strcasecmp (word, "default")) command_group_default (g, p, l); if (!strcasecmp (word, "current")) command_group_current (g, p, l); }