2.11BSD/src/usr.bin/learn/learn.c
#if !defined(lint) && defined(DOSCCS)
static char sccsid[] = "@(#)learn.c 4.4.2 (2.11BSD) 1997/10/2";
#endif
#include "stdio.h"
#include "lrnref.h"
#include "signal.h"
#include <unistd.h>
char *direct = "/usr/share/learn"; /* CHANGE THIS ON YOUR SYSTEM */
int more;
char *level;
int speed;
char *sname;
char *todo;
FILE *incopy = NULL;
int didok;
int sequence = 1;
int comfile = -1;
int status;
int wrong;
char *pwline;
char *dir;
FILE *scrin;
int logging = 1; /* set to 0 to turn off logging */
int ask;
int again;
int skip;
int teed;
int total;
main(argc,argv)
int argc;
char *argv[];
{
extern hangup(), intrpt();
speed = 0;
more = 1;
pwline = getlogin();
#ifndef BSD4_2
setbuf(stdout, malloc(BUFSIZ));
setbuf(stderr, malloc(BUFSIZ));
#endif
selsub(argc, argv);
chgenv();
signal(SIGHUP, hangup);
signal(SIGINT, intrpt);
while (more) {
selunit();
dounit();
whatnow();
}
wrapup(0);
}
hangup()
{
wrapup(1);
}
intrpt()
{
char response[20], *p;
signal(SIGINT, hangup);
write(2, "\nInterrupt.\nWant to go on? ", 28);
p = response;
*p = 'n';
while (read(0, p, 1) == 1 && *p != '\n')
p++;
if (response[0] != 'y')
wrapup(0);
ungetc('\n', stdin);
signal(SIGINT, intrpt);
}