home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / learn / selsub.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  2.2 KB  |  95 lines

  1. #include "stdio.h"
  2. #include "lrnref"
  3.  
  4. selsub(argc,argv)
  5. char *argv[];
  6. {
  7.     char ans1[100], *cp;
  8.     static char ans2[30];
  9.     static char dirname[20];
  10.     static char subname[20];
  11.  
  12.     if (argc > 1 && argv[1][0] == '-') {
  13.         direct = argv[1]+1;
  14.         argc--;
  15.         argv++;
  16.     }
  17.     chknam(direct);
  18.     if (chdir(direct) != 0) {
  19.         fprintf(stderr, "can't cd to %s\,", direct);
  20.         exit(1);
  21.     }
  22.     sname = argc > 1 ? argv[1] : 0;
  23.     if (argc > 2)
  24.         strcpy (level=ans2, argv[2]);
  25.     else
  26.         level = 0;
  27.     if (argc > 3 )
  28.         speed = atoi(argv[3]);
  29.     if (!sname) {
  30.         printf("These are the available courses -\n");
  31.         list("Linfo");
  32.         printf("If you want more information about the courses,\n");
  33.         printf("or if you have never used 'learn' before,\n");
  34.         printf("type 'return'; otherwise type the name of\n");
  35.         printf("the course you want, followed by 'return'.\n");
  36.         fflush(stdout);
  37.         gets(sname=subname);
  38.         if (sname[0] == '\0') {
  39.             list("Xinfo");
  40.             do {
  41.                 printf("\nWhich subject?  ");
  42.                 fflush(stdout);
  43.                 gets(sname=subname);
  44.             } while (sname[0] == '\0');
  45.         }
  46.     }
  47.     chknam(sname);
  48.     if (!level) {
  49.         printf("If you were in the middle of this subject\n");
  50.         printf("and want to start where you left off, type\n");
  51.         printf("the last lesson number the computer printed.\n");
  52.         printf("To start at the beginning, just hit return.\n");
  53.         fflush(stdout);
  54.         gets(ans2);
  55.         if (ans2[0]==0)
  56.             strcpy(ans2,"0");
  57.         for (cp=ans2; *cp; cp++)
  58.             if (*cp == '(' || *cp == ' ')
  59.                 *cp= 0;
  60.         level=ans2;
  61.     }
  62.  
  63.     /* make new directory for user to play in */
  64.     if (chdir("play") != 0) {
  65.         fprintf(stderr, "can't cd to playpen\n");
  66.         exit(1);
  67.     }
  68.     sprintf(dir=dirname, "pl%da", getpid());
  69.     sprintf(ans1, "mkdir %s", dir);
  70.     system(ans1);
  71.     if (chdir(dir) < 0) {
  72.         fprintf(stderr, "Couldn't create working directory.\nBye.\n");
  73.         exit(1);
  74.     }
  75.     /* after this point, we have a working directory. */
  76.     /* have to call wrapup to clean up */
  77.     if (access(sprintf(ans1, "%s/%s/Init", direct, sname), 04)==0)
  78.         if (system(sprintf(ans1, "%s/%s/Init %s", direct,sname, level)) != 0) {
  79.             printf("Leaving learn.\n");
  80.             wrapup(1);
  81.         }
  82.     if (level[0] == '-')    /* no lesson names start with - */
  83.         ask = 1;
  84.     start(level);
  85. }
  86.  
  87. chknam(name)
  88. char *name;
  89. {
  90.     if (access(name, 05) < 0) {
  91.         printf("Sorry, there is no subject or lesson named %s.\nBye.\n", name);
  92.         exit(1);
  93.     }
  94. }
  95.