# 2.11BSD#431 - /usr/src/usr.bin/learn/getlesson.c

##### Functions

    getlesson         X

       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

- in /usr/src/usr.bin/learn/selsub.c line 103
- in /usr/src/usr.bin/learn/selunit.c line 18-23(2), 37

#### 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: 1041 |