Annotation of 43BSDReno/old/sdb/main.c, revision 1.1

1.1     ! root        1: static char sccsid[] = "@(#)main.c 4.2 8/17/82";
        !             2: #
        !             3: /*
        !             4:  *
        !             5:  *     UNIX debugger
        !             6:  *
        !             7:  */
        !             8: 
        !             9: #include       "head.h"
        !            10: #include       <signal.h>
        !            11: #include       <stdio.h>
        !            12: #include       <sys/stat.h>
        !            13: 
        !            14: INT            mkfault;
        !            15: INT            executing;
        !            16: CHAR           *lp;
        !            17: L_INT          maxoff;
        !            18: L_INT          maxpos;
        !            19: ADDR           sigint;
        !            20: ADDR           sigqit;
        !            21: INT            wtflag;
        !            22: L_INT          maxfile;
        !            23: L_INT          maxstor;
        !            24: L_INT          txtsiz;
        !            25: L_INT          datsiz;
        !            26: L_INT          datbas;
        !            27: L_INT          stksiz;
        !            28: STRING         errflg;
        !            29: INT            magic;
        !            30: L_INT          entrypt;
        !            31: 
        !            32: CHAR           lastc;
        !            33: 
        !            34: STRING         symfil;
        !            35: STRING         corfil;
        !            36: INT            argcount;
        !            37: ADDR           userpc;
        !            38: int    fpe();
        !            39: 
        !            40: main(argc, argv)
        !            41: REG STRING     *argv;
        !            42: REG INT                argc;
        !            43: {
        !            44:        register char *p;
        !            45:        struct stat stbuf;
        !            46: 
        !            47:        userpc = 1;
        !            48:        symfil = "a.out";
        !            49:        corfil = "core";
        !            50:        maxfile=1L<<24; maxstor=1L<<31;
        !            51: #ifndef STD
        !            52: #ifndef VAX135
        !            53:        maxstor -= ctob(UPAGES);
        !            54: #endif
        !            55: #endif
        !            56: 
        !            57:        setbuf(stdout, NULL);
        !            58:        setbuf(stderr, NULL);
        !            59: 
        !            60:        WHILE argc>1
        !            61:        DO      IF eqstr("-w",argv[1])
        !            62:                THEN    wtflag=2; argc--; argv++;
        !            63:                ELSE    break;
        !            64:                FI
        !            65:        OD
        !            66: 
        !            67:        IF argc>1 THEN symfil = argv[1]; FI
        !            68:        IF argc>2 THEN corfil = argv[2]; FI
        !            69:        fp = filework;
        !            70:        if (argc > 3) {
        !            71:                for (p = argv[3]; *p; *fp++ = *p++) ;
        !            72:                *fp++ = '/';
        !            73:        }
        !            74:        argcount=argc;
        !            75: 
        !            76:        if (stat(symfil, &stbuf) == -1) {
        !            77:                printf("`%s' does not exist\n", symfil);
        !            78:                exit(4);
        !            79:        }
        !            80:        symtime = stbuf.st_mtime;
        !            81:        if (stat(corfil, &stbuf) != -1) {
        !            82:                if (symtime > stbuf.st_mtime)
        !            83:                        printf("Warning: `%s' newer than `%s'\n",
        !            84:                                symfil, corfil);
        !            85:        }
        !            86: 
        !            87:        setsym(); setcor();
        !            88:        initfp();
        !            89:        mkioptab();
        !            90: 
        !            91:        /* set up variables for user */
        !            92:        maxoff=MAXOFF; maxpos=MAXPOS;
        !            93:        gtty(2, &sdbttym);
        !            94:        IF (sigint= (ADDR) signal(SIGINT,01))!=01
        !            95:        THEN    sigint= (ADDR) fault; signal(SIGINT,fault);
        !            96:        FI
        !            97:        sigqit= (ADDR) signal(SIGQUIT,1);
        !            98:        signal(SIGILL, fpe);
        !            99: 
        !           100:        setjmp(env);
        !           101:        if (debug) printf("Sdb restarted\n");
        !           102:        gtty(2, &userttym);
        !           103:        if (sdbttym.sg_flags != userttym.sg_flags)
        !           104:                stty(2, &sdbttym);
        !           105:        IF executing THEN delbp(); FI
        !           106:        executing=FALSE;
        !           107: 
        !           108:        for (;;) {
        !           109:                mkfault = 0;
        !           110:                printf("*");
        !           111:                if (decode(readline(stdin)) == 1) {
        !           112:                        printf("Error; try again\n");
        !           113:                        continue;
        !           114:                }
        !           115: 
        !           116:        if (debug) {
        !           117:                printf("cmd %c:\n", cmd);
        !           118:                printf("%s:%s\n", proc, var);
        !           119:                printf("args-%s;re-%s;integ-%d\n", args, re, integ);
        !           120:                printf("scallf-%d;reflg-%d\n", scallf, reflag);
        !           121:                printf("colonflag-%d;ncolonflag-%d\n\n",
        !           122:                        colonflag, ncolonflag);
        !           123:        }
        !           124:                docommand();
        !           125:        }
        !           126: }
        !           127: 
        !           128: 
        !           129: fault(a)
        !           130: {
        !           131:        signal(a,fault);
        !           132:        mkfault++;
        !           133:        printf("\n");
        !           134:        longjmp(env, 0);
        !           135: }
        !           136: 
        !           137: fpe() {
        !           138:        signal(SIGILL, fpe);
        !           139:        error("Illegal floating constant");
        !           140:        longjmp(env, 0);
        !           141: }

unix.superglobalmegacorp.com

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