home *** CD-ROM | disk | FTP | other *** search
- #include "stdio.h"
- #include "lrnref"
-
- selsub(argc,argv)
- char *argv[];
- {
- char ans1[100], *cp;
- static char ans2[30];
- static char dirname[20];
- static char subname[20];
-
- if (argc > 1 && argv[1][0] == '-') {
- direct = argv[1]+1;
- argc--;
- argv++;
- }
- chknam(direct);
- if (chdir(direct) != 0) {
- fprintf(stderr, "can't cd to %s\,", direct);
- exit(1);
- }
- sname = argc > 1 ? argv[1] : 0;
- if (argc > 2)
- strcpy (level=ans2, argv[2]);
- else
- level = 0;
- if (argc > 3 )
- speed = atoi(argv[3]);
- if (!sname) {
- printf("These are the available courses -\n");
- list("Linfo");
- printf("If you want more information about the courses,\n");
- printf("or if you have never used 'learn' before,\n");
- printf("type 'return'; otherwise type the name of\n");
- printf("the course you want, followed by 'return'.\n");
- fflush(stdout);
- gets(sname=subname);
- if (sname[0] == '\0') {
- list("Xinfo");
- do {
- printf("\nWhich subject? ");
- fflush(stdout);
- gets(sname=subname);
- } while (sname[0] == '\0');
- }
- }
- chknam(sname);
- if (!level) {
- printf("If you were in the middle of this subject\n");
- printf("and want to start where you left off, type\n");
- printf("the last lesson number the computer printed.\n");
- printf("To start at the beginning, just hit return.\n");
- fflush(stdout);
- gets(ans2);
- if (ans2[0]==0)
- strcpy(ans2,"0");
- for (cp=ans2; *cp; cp++)
- if (*cp == '(' || *cp == ' ')
- *cp= 0;
- level=ans2;
- }
-
- /* make new directory for user to play in */
- if (chdir("play") != 0) {
- fprintf(stderr, "can't cd to playpen\n");
- exit(1);
- }
- sprintf(dir=dirname, "pl%da", getpid());
- sprintf(ans1, "mkdir %s", dir);
- system(ans1);
- if (chdir(dir) < 0) {
- fprintf(stderr, "Couldn't create working directory.\nBye.\n");
- exit(1);
- }
- /* after this point, we have a working directory. */
- /* have to call wrapup to clean up */
- if (access(sprintf(ans1, "%s/%s/Init", direct, sname), 04)==0)
- if (system(sprintf(ans1, "%s/%s/Init %s", direct,sname, level)) != 0) {
- printf("Leaving learn.\n");
- wrapup(1);
- }
- if (level[0] == '-') /* no lesson names start with - */
- ask = 1;
- start(level);
- }
-
- chknam(name)
- char *name;
- {
- if (access(name, 05) < 0) {
- printf("Sorry, there is no subject or lesson named %s.\nBye.\n", name);
- exit(1);
- }
- }
-