Home | History | Annotate | Line # | Download | only in larn
help.c revision 1.4
      1 /*	$NetBSD: help.c,v 1.4 1997/10/18 20:03:24 christos Exp $	*/
      2 
      3 /* help.c		Larn is copyrighted 1986 by Noah Morgan. */
      4 #include <sys/cdefs.h>
      5 #ifndef lint
      6 __RCSID("$NetBSD: help.c,v 1.4 1997/10/18 20:03:24 christos Exp $");
      7 #endif /* not lint */
      8 
      9 #include <unistd.h>
     10 
     11 #include "header.h"
     12 #include "extern.h"
     13 /*
     14  *	help function to display the help info
     15  *
     16  *	format of the .larn.help file
     17  *
     18  *	1st character of file:	# of pages of help available (ascii digit)
     19  *	page (23 lines) for the introductory message (not counted in above)
     20  *	pages of help text (23 lines per page)
     21  */
     22 void
     23 help()
     24 {
     25 	int    i, j;
     26 #ifndef VT100
     27 	char            tmbuf[128];	/* intermediate translation buffer
     28 					 * when not a VT100 */
     29 #endif	/* VT100 */
     30 	if ((j = openhelp()) < 0)
     31 		return;		/* open the help file and get # pages */
     32 	for (i = 0; i < 23; i++)
     33 		lgetl();	/* skip over intro message */
     34 	for (; j > 0; j--) {
     35 		clear();
     36 		for (i = 0; i < 23; i++)
     37 #ifdef VT100
     38 			lprcat(lgetl());	/* print out each line that
     39 						 * we read in */
     40 #else	/* VT100 */
     41 		{
     42 			tmcapcnv(tmbuf, lgetl());
     43 			lprcat(tmbuf);
     44 		}		/* intercept \33's */
     45 #endif	/* VT100 */
     46 		if (j > 1) {
     47 			lprcat("    ---- Press ");
     48 			standout("return");
     49 			lprcat(" to exit, ");
     50 			standout("space");
     51 			lprcat(" for more help ---- ");
     52 			i = 0;
     53 			while ((i != ' ') && (i != '\n') && (i != '\33'))
     54 				i = getchar();
     55 			if ((i == '\n') || (i == '\33')) {
     56 				lrclose();
     57 				setscroll();
     58 				drawscreen();
     59 				return;
     60 			}
     61 		}
     62 	}
     63 	lrclose();
     64 	retcont();
     65 	drawscreen();
     66 }
     67 
     68 /*
     69  *	function to display the welcome message and background
     70  */
     71 void
     72 welcome()
     73 {
     74 	int    i;
     75 #ifndef VT100
     76 	char            tmbuf[128];	/* intermediate translation buffer
     77 					 * when not a VT100 */
     78 #endif	/* VT100 */
     79 	if (openhelp() < 0)
     80 		return;		/* open the help file */
     81 	clear();
     82 	for (i = 0; i < 23; i++)
     83 #ifdef VT100
     84 		lprcat(lgetl());/* print out each line that we read in */
     85 #else	/* VT100 */
     86 	{
     87 		tmcapcnv(tmbuf, lgetl());
     88 		lprcat(tmbuf);
     89 	}			/* intercept \33's */
     90 #endif	/* VT100 */
     91 	lrclose();
     92 	retcont();		/* press return to continue */
     93 }
     94 
     95 /*
     96  *	function to say press return to continue and reset scroll when done
     97  */
     98 void
     99 retcont()
    100 {
    101 	cursor(1, 24);
    102 	lprcat("Press ");
    103 	standout("return");
    104 	lprcat(" to continue: ");
    105 	while (getchar() != '\n');
    106 	setscroll();
    107 }
    108 
    109 /*
    110  *	routine to open the help file and return the first character - '0'
    111  */
    112 int
    113 openhelp()
    114 {
    115 	if (lopen(helpfile) < 0) {
    116 		lprintf("Can't open help file \"%s\" ", helpfile);
    117 		lflush();
    118 		sleep(4);
    119 		drawscreen();
    120 		setscroll();
    121 		return (-1);
    122 	}
    123 	resetscroll();
    124 	return (lgetc() - '0');
    125 }
    126