NetBSD/games/larn/help.c

129 lines
2.6 KiB
C
Raw Normal View History

/* $NetBSD: help.c,v 1.6 2008/02/03 19:20:41 dholland Exp $ */
/* help.c Larn is copyrighted 1986 by Noah Morgan. */
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: help.c,v 1.6 2008/02/03 19:20:41 dholland Exp $");
#endif /* not lint */
#include <unistd.h>
1993-03-21 12:45:37 +03:00
#include "header.h"
#include "extern.h"
static int openhelp(void);
1993-03-21 12:45:37 +03:00
/*
* help function to display the help info
1993-03-21 12:45:37 +03:00
*
* format of the .larn.help file
*
* 1st character of file: # of pages of help available (ascii digit)
* page (23 lines) for the introductory message (not counted in above)
* pages of help text (23 lines per page)
*/
void
1993-03-21 12:45:37 +03:00
help()
{
int i, j;
1993-03-21 12:45:37 +03:00
#ifndef VT100
char tmbuf[128]; /* intermediate translation buffer
* when not a VT100 */
#endif /* VT100 */
if ((j = openhelp()) < 0)
return; /* open the help file and get # pages */
for (i = 0; i < 23; i++)
lgetl(); /* skip over intro message */
for (; j > 0; j--) {
1993-03-21 12:45:37 +03:00
clear();
for (i = 0; i < 23; i++)
1993-03-21 12:45:37 +03:00
#ifdef VT100
lprcat(lgetl()); /* print out each line that
* we read in */
#else /* VT100 */
{
tmcapcnv(tmbuf, lgetl());
lprcat(tmbuf);
} /* intercept \33's */
#endif /* VT100 */
if (j > 1) {
lprcat(" ---- Press ");
standout("return");
lprcat(" to exit, ");
standout("space");
1993-03-21 12:45:37 +03:00
lprcat(" for more help ---- ");
i = 0;
while ((i != ' ') && (i != '\n') && (i != '\33'))
i = lgetchar();
if ((i == '\n') || (i == '\33')) {
lrclose();
setscroll();
drawscreen();
return;
1993-03-21 12:45:37 +03:00
}
}
}
lrclose();
retcont();
drawscreen();
}
1993-03-21 12:45:37 +03:00
/*
* function to display the welcome message and background
*/
void
1993-03-21 12:45:37 +03:00
welcome()
{
int i;
1993-03-21 12:45:37 +03:00
#ifndef VT100
char tmbuf[128]; /* intermediate translation buffer
* when not a VT100 */
#endif /* VT100 */
if (openhelp() < 0)
return; /* open the help file */
1993-03-21 12:45:37 +03:00
clear();
for (i = 0; i < 23; i++)
1993-03-21 12:45:37 +03:00
#ifdef VT100
lprcat(lgetl());/* print out each line that we read in */
#else /* VT100 */
{
tmcapcnv(tmbuf, lgetl());
lprcat(tmbuf);
} /* intercept \33's */
#endif /* VT100 */
lrclose();
retcont(); /* press return to continue */
}
1993-03-21 12:45:37 +03:00
/*
* function to say press return to continue and reset scroll when done
*/
void
1993-03-21 12:45:37 +03:00
retcont()
{
cursor(1, 24);
lprcat("Press ");
standout("return");
lprcat(" to continue: ");
while (lgetchar() != '\n');
1993-03-21 12:45:37 +03:00
setscroll();
}
1993-03-21 12:45:37 +03:00
/*
* routine to open the help file and return the first character - '0'
*/
static int
openhelp(void)
{
if (lopen(helpfile) < 0) {
lprintf("Can't open help file \"%s\" ", helpfile);
lflush();
sleep(4);
drawscreen();
setscroll();
return (-1);
1993-03-21 12:45:37 +03:00
}
resetscroll();
return (lgetc() - '0');
}