1: #ifndef lint
   2: static char sccsid[] = "@(#)getlesson.c	4.2	(Berkeley)	4/26/83";
   3: #endif not lint
   4: 
   5: #include "stdio.h"
   6: #include "lrnref.h"
   7: 
   8: char *
   9: getlesson()
  10: {
  11:     register char *p;
  12:     char ans[80], line[200];
  13:     int isnum, found, fd[2];
  14:     FILE *fp;
  15: 
  16:     sprintf(ans, "%s/%s/L%s", direct, sname, level);
  17:     if (access(ans, 04) == 0)       /* there is a file */
  18:         return(level);
  19:     isnum = 1;
  20:     for (p=level; *p; p++)      /* accept:  (digit|dot)*anychar  */
  21:         if (*p != '.' && (*p < '0' || *p > '9') && *(p+1) != '\0')
  22:             isnum = 0;
  23:     if (isnum) {
  24:         strcpy(line, level);
  25:         p = level;
  26:         while (*p != '.' && *p >= '0' && *p <= '9')
  27:             p++;
  28:         *p = '\0';
  29:         strcat(level, ".1a");
  30:         sprintf(ans, "%s/%s/L%s", direct, sname, level);
  31:         if (access(ans, 04) == 0) { /* there is a file */
  32:             printf("There is no lesson %s; trying lesson %s instead.\n\n", line, level);
  33:             return(level);
  34:         }
  35:         printf("There is no lesson %s.\n", line);
  36:         return(0);
  37:     }
  38:     /* fgrep through lessons for one containing the string in 'level' */
  39:     pipe(fd);
  40:     if (fork() == 0) {
  41:         close(fd[0]);
  42:         dup2(fd[1], 1);
  43:         sprintf(ans,"cd %s/%s ; fgrep '%s' L?.* L??.* L???.*", direct, sname, level);
  44:         execl("/bin/csh", "csh", "-cf", ans, 0);
  45:         perror("/bin/csh");
  46:         fprintf(stderr, "Getlesson:  can't do %s\n", ans);
  47:     }
  48:     close(fd[1]);
  49:     fp = fdopen(fd[0], "r");
  50:     found = 0;
  51:     while (fgets(line, 200, fp) != NULL) {
  52:         for (p=line; *p != ':'; p++) ;
  53:         p++;
  54:         if (*p == '#')
  55:             continue;
  56:         else {
  57:             found = 1;
  58:             break;
  59:         }
  60:     }
  61:     /*fclose(fp);*/
  62:     if (found) {
  63:         *--p = '\0';
  64:         strcpy(level, &line[1]);
  65:         sprintf(ans, "%s/%s/L%s", direct, sname, level);
  66:         if (access(ans, 04) == 0) { /* there is a file */
  67:             printf("Trying lesson %s.\n\n", level);
  68:             return(level);
  69:         }
  70:     }
  71:     printf("There is no lesson containing \"%s\".\n", level);
  72:     return(0);
  73: }

Defined functions

getlesson defined in line 8; used 4 times

Defined variables

sccsid defined in line 2; never used
Last modified: 1985-03-28
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2800
Valid CSS Valid XHTML 1.0 Strict