/
teeny/db/
teeny/dbm/
teeny/docs/
teeny/includes/
teeny/misc/
teeny/news/
teeny/text/
/* help.c */

#include "copyright.h"
#include "config.h"

#include <stdio.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>

#include "teeny.h"
#include "case.h"

#ifndef MAXPATHLEN		/* SysV */
#define MAXPATHLEN 20
#endif					/* MAXPATHLEN */

/*
 * This file contains a fairly simple help and news system. 
 */

#ifdef HELPSYSTEM
voidfunc 
do_help(player, arg)
  int             player;
  char           *arg;
{
  extern char     cmdwork[];
  char            file[MAXPATHLEN + 1];
  char           *p, *q;
  FILE           *f;

  if (!arg || !*arg)
  {
    spit_file(player, HELP_FILE);
    return;
  }
  for (p = cmdwork, q = arg; *q && (p - cmdwork) < BUFFSIZ;)
  {
    if (*q != '/')
      *p++ = DOWNCASE(*q);
    q++;
  }
  *p = '\0';

  strcpy(file, HELP_PATH);
  p = file + strlen(HELP_PATH);
  for (q = cmdwork; *q && (p - file) < MAXPATHLEN; *p++ = *q++);
  *p = '\0';

  if ((f = fopen(file, "r")) == NULL)
  {
    notify_player(player, "Help on subject \"");
    notify_player(player, arg);
    notify_player(player, "\" does not exist.\r\n");
    notify_player(player, "Type \"help\" for a list of subjects available.\r\n");
    return;
  }
  (void) fclose(f);
  notify_player(player, "-----\r\nHelp on subject: ");
  notify_player(player, arg);
  notify_player(player, "\r\n-----\r\n");
  spit_file(player, file);
  notify_player(player, "-----\r\n");

}

#else				/* HELPSYSTEM */

voidfunc 
do_help(player);
int             player;

{
  spit_file(player, HELP_FILE);
}

#endif				/* HELPSYSTEM */

#ifdef NEWSSYSTEM
voidfunc 
do_news(player, arg)
  int             player;
  char           *arg;
{
  extern char     cmdwork[];
  char            file[MAXPATHLEN + 1];
  char           *p, *q;
  FILE           *f;
  struct stat     sbuf;

  extern char    *ctime();

  if (!arg || !*arg)
  {
    spit_file(player, NEWS_FILE);
    return;
  }
  for (p = cmdwork, q = arg; *q && (p - cmdwork) < BUFFSIZ;)
  {
    if (*q != '/')
      *p++ = DOWNCASE(*q);
    q++;
  }
  *p = '\0';

  strcpy(file, NEWS_PATH);
  p = file + strlen(NEWS_PATH);
  for (q = cmdwork; *q && (p - file) < MAXPATHLEN; *p++ = *q++);
  *p = '\0';

  if ((f = fopen(file, "r")) == NULL)
  {
    notify_player(player, "News article \"");
    notify_player(player, arg);
    notify_player(player, "\" does not exist.\r\n");
    notify_player(player, "Type \"news\" for a list of articles available.\r\n");
    return;
  }
  (void) stat(file, &sbuf);
  (void) fclose(f);

  notify_player(player, "-----\r\nNews article: ");
  notify_player(player, arg);
  notify_player(player, "\r\nLast updated: ");
  notify_player(player, ctime(&sbuf.st_mtime));
  notify_player(player, "-----\r\n");
  spit_file(player, file);
  notify_player(player, "-----\r\n");

}

#else				/* NEWSSYSTEM */

voidfunc 
do_news(player);
int             player;

{
  spit_file(player, NEWS_FILE);
}

#endif				/* NEWSSYSTEM */