Annotation of 43BSDTahoe/usr.bin/learn/start.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)start.c    4.5     (Berkeley)      5/15/86";
        !             3: #endif not lint
        !             4: 
        !             5: #include "stdio.h"
        !             6: #include "lrnref.h"
        !             7: #include <sys/types.h>
        !             8: #ifndef DIR
        !             9: #include <sys/dir.h>
        !            10: #endif
        !            11: 
        !            12: start(lesson)
        !            13: char *lesson;
        !            14: {
        !            15:        struct direct dbuf;
        !            16:        register struct direct *ep = &dbuf;     /* directory entry pointer */
        !            17:        int c, n;
        !            18:        char where [100];
        !            19: 
        !            20: #ifdef BSD4_2
        !            21:        DIR *dp;
        !            22: #define OPENDIR(s)     ((dp = opendir(s)) != NULL)
        !            23: #define DIRLOOP(s)     for (s = readdir(dp); s != NULL; s = readdir(dp))
        !            24: #define EPSTRLEN       ep->d_namlen
        !            25: #define CLOSEDIR       closedir(dp)
        !            26: #else
        !            27:        int f;
        !            28: #define OPENDIR(s)     ((f = open(s, 0)) >= 0)
        !            29: #define DIRLOOP(s)     while (read(f, s, sizeof *s) == sizeof *s)
        !            30: #define EPSTRLEN       strlen(ep->d_name)
        !            31: #define CLOSEDIR       close(f)
        !            32: #endif
        !            33: 
        !            34:        if (!OPENDIR(".")) {            /* clean up play directory */
        !            35:                perror("Start:  play directory");
        !            36:                wrapup(1);
        !            37:        }
        !            38:        DIRLOOP(ep) {
        !            39:                if (ep->d_ino == 0)
        !            40:                        continue;
        !            41:                n = EPSTRLEN;
        !            42:                if (ep->d_name[n-2] == '.' && ep->d_name[n-1] == 'c')
        !            43:                        continue;
        !            44:                c = ep->d_name[0];
        !            45:                if (c>='a' && c<= 'z')
        !            46:                        unlink(ep->d_name);
        !            47:        }
        !            48:        CLOSEDIR;
        !            49:        if (ask)
        !            50:                return;
        !            51:        sprintf(where, "%s/%s/L%s", direct, sname, lesson);
        !            52:        if (access(where, 04)==0)       /* there is a file */
        !            53:                return;
        !            54:        perror(where);
        !            55:        fprintf(stderr, "Start:  no lesson %s\n",lesson);
        !            56:        wrapup(1);
        !            57: }
        !            58: 
        !            59: fcopy(new,old)
        !            60: char *new, *old;
        !            61: {
        !            62:        char b[BUFSIZ];
        !            63:        int n, fn, fo;
        !            64:        fn = creat(new, 0666);
        !            65:        fo = open(old,0);
        !            66:        if (fo<0) return;
        !            67:        if (fn<0) return;
        !            68:        while ( (n=read(fo, b, BUFSIZ)) > 0)
        !            69:                write(fn, b, n);
        !            70:        close(fn);
        !            71:        close(fo);
        !            72: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.