#include <ctype.h>
#include <stdio.h>
#ifdef SYSV
#include <unistd.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "emlen.h"
#ifndef WINDOWS
#include <sys/errno.h>
#include <netinet/in.h>
#include <netdb.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/types.h>
#endif
#include "mush.h"
DESCRIPTOR_DATA *connectiond[5];
int outgoing[5];
char connection_names[5][5];
void
read_channel_data (void)
{
FILE *fp;
CHANNEL *c;
CHANNEL *c_next;
char buf[500];
for (c = chan_first; c != NULL; c = c_next)
{
c_next = c->next;
free_m (c);
}
chan_first = NULL;
if ((fp = fopen ("channel.dat", "r")) == NULL)
{
fprintf (stderr, "Could not read channel.dat!\n");
return;
}
c = NULL;
for (;;)
{
strcpy (buf, fread_word (fp));
if (!str_cmp ("END", buf))
{
break;
}
if (!str_cmp ("#", buf))
{
fread_to_eol (fp);
continue;
}
if (!str_cmp ("NEW_CHANNEL", buf))
{
c = mem_alloc (sizeof (*c));
c->clan = FALSE;
c->clan2 = FALSE;
c->channel_name = &str_empty[0];
c->moves = 0;
c->commands[0] = NULL;
c->commands[1] = NULL;
c->commands[2] = NULL;
c->level = 0;
c->to_level = 0;
c->color = &str_empty[0];
c->to_align = TO_SAME;
c->next = chan_first;
chan_first = c;
continue;
}
if (!str_cmp ("NAME", buf))
{
c->channel_name = str_dup (fread_word (fp));
continue;
}
if (!str_cmp ("LEVEL", buf))
{
c->level = fread_number (fp);
continue;
}
if (!str_cmp ("MOVES", buf))
{
c->moves = fread_number (fp);
continue;
}
if (!str_cmp ("CLAN", buf))
{
char t[20];
strcpy (t, fread_word (fp));
if (!str_cmp (t, "yes"))
c->clan = TRUE;
continue;
}
if (!str_cmp ("CLAN2", buf))
{
char t[20];
strcpy (t, fread_word (fp));
if (!str_cmp (t, "yes"))
c->clan2 = TRUE;
continue;
}
if (!str_cmp ("COMMAND", buf))
{
char cmd[40];
int i = 0;
strcpy (cmd, fread_word (fp));
while (c->commands[i])
i++;
c->commands[i] = str_dup (cmd);
continue;
}
if (!str_cmp ("COLOR", buf))
{
c->color = str_dup (fread_word (fp));
continue;
}
if (!str_cmp ("ALIGNMENT", buf))
{
char t[20];
strcpy (t, fread_word (fp));
if (!str_cmp ("both", t))
c->to_align = TO_ALL;
else if (!str_cmp ("same", t))
c->to_align = TO_SAME;
else c->to_align = TO_SAME;
continue;
}
if (!str_cmp ("TO_LEVEL", buf))
{
c->to_level = fread_number (fp);
continue;
}
fprintf (stderr, "Unknown read in channel.dat: %s\n", buf);
fread_to_eol (fp);
}
fclose (fp);
return;
}
void
show_social (SOCIAL * s, CHAR_DATA * ch)
{
char buf[500];
int pp;
pp = ch->position;
ch->position = POSITION_STANDING;
sprintf (buf, "Social \x1B[1;37mname\x1B[37;0m: %s\n\r", s->name);
send_to_char (buf, ch);
sprintf (buf, "\x1B[1;37mTo_char\x1B[37;0m w/no arg: %s\n\r", (s->char_no_arg ? s->char_no_arg : "none"));
send_to_char (buf, ch);
sprintf (buf, "\x1B[1;37mTo_others\x1B[37;0m w/no arg: %s\n\r", (s->others_no_arg ? s->others_no_arg : "none"));
send_to_char (buf, ch);
sprintf (buf, "To char when \x1B[1;37mChar_found\x1B[37;0m: %s\n\r", (s->char_found ? s->char_found : "none"));
send_to_char (buf, ch);
sprintf (buf, "To \x1B[1;37mothers\x1B[37;0m when char found: %s\n\r", (s->others_found ? s->others_found : "none"));
send_to_char (buf, ch);
sprintf (buf, "\x1B[1;37mTo_vict\x1B[37;0m when char found: %s\n\r", (s->vict_found ? s->vict_found : "none"));
send_to_char (buf, ch);
sprintf (buf, "\x1B[1;37mChar_not\x1B[37;0m found: %s\n\r", (s->char_not_found ? s->char_not_found : "none"));
send_to_char (buf, ch);
sprintf (buf, "\x1B[1;37mChar_self\x1B[37;0m specified (to char): %s\n\r", (s->char_auto ? s->char_auto : "none"));
send_to_char (buf, ch);
sprintf (buf, "\x1B[1;37mOthers_self\x1B[37;0m specified: %s\n\r", (s->others_auto ? s->others_auto : "none"));
send_to_char (buf, ch);
ch->position = POSITION_STANDING;
return;
}