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