#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);
}