/* 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 */