xref: /original-bsd/usr.bin/learn/learn/start.c (revision 92d3de31)
1 #ifndef lint
2 static char sccsid[] = "@(#)start.c	4.2	(Berkeley)	04/25/83";
3 #endif not lint
4 
5 #include "stdio.h"
6 #include "lrnref.h"
7 #include <sys/types.h>
8 #include <sys/dir.h>
9 #define	ND	64
10 
11 start(lesson)
12 char *lesson;
13 {
14 	struct direct dv[ND], *dm, *dp;
15 	int f, c, n;
16 	char where [100];
17 
18 	f = open(".", 0);		/* clean up play directory */
19 	n = read(f, dv, ND*sizeof(*dp));
20 	n /= sizeof(*dp);
21 	if (n==ND)
22 		fprintf(stderr, "Start:  play directory too long\n");
23 	dm = dv+n;
24 	for(dp=dv; dp<dm; dp++)
25 		if (dp->d_ino) {
26 			n = strlen(dp->d_name);
27 			if (dp->d_name[n-2] == '.' && dp->d_name[n-1] == 'c')
28 				continue;
29 			c = dp->d_name[0];
30 			if (c>='a' && c<= 'z')
31 				unlink(dp->d_name);
32 		}
33 	close(f);
34 	if (ask)
35 		return;
36 	sprintf(where, "%s/%s/L%s", direct, sname, lesson);
37 	if (access(where, 04)==0)	/* there is a file */
38 		return;
39 	perror(where);
40 	fprintf(stderr, "Start:  no lesson %s\n",lesson);
41 	wrapup(1);
42 }
43 
44 fcopy(new,old)
45 char *new, *old;
46 {
47 	char b[BUFSIZ];
48 	int n, fn, fo;
49 	fn = creat(new, 0666);
50 	fo = open(old,0);
51 	if (fo<0) return;
52 	if (fn<0) return;
53 	while ( (n=read(fo, b, BUFSIZ)) > 0)
54 		write(fn, b, n);
55 	close(fn);
56 	close(fo);
57 }
58