Annotation of researchv8dc/cmd/view2d/term/view2d.c, revision 1.1

1.1     ! root        1: #include       <stdio.h>
        !             2: #include       <signal.h>
        !             3: #include       <sgtty.h>
        !             4: #include       "/usr/jerq/include/jioctl.h"
        !             5: 
        !             6: #define                MAX             32767
        !             7: 
        !             8: struct sgttyb sttybuf, sttysave;
        !             9: char *zflag = "";
        !            10: int shade = 0;
        !            11: int grid = 1;
        !            12: typedef struct Point
        !            13: {
        !            14:        int x, y;
        !            15: } Point;
        !            16: struct Frame
        !            17: {
        !            18:        short z[4096];
        !            19:        short time;
        !            20: } frames[200];
        !            21: int zmax = -1000000000, zmin = 1000000000;
        !            22: int nsleep, ntime;
        !            23: int nframes = 0;
        !            24: int period = 5;
        !            25: int floor = -32767;
        !            26: char *progname;
        !            27: short ts, te, timewarp;
        !            28: 
        !            29: main(argc, argv)
        !            30:        char **argv;
        !            31: {
        !            32:        char buf[512];
        !            33:        int zc, scale, m, i;
        !            34:        short ragnorok, dim;
        !            35:        short *nz, *p, *q;
        !            36:        int fd;
        !            37:        int cv, tmin, tmax;
        !            38:        short nx, ny, fru, frv;
        !            39:        char *s;
        !            40:        char **av = argv;
        !            41:        int ac = argc;
        !            42:        extern char *getenv();
        !            43:        int magic[4];
        !            44: 
        !            45:        timewarp = 0;
        !            46:        progname = argv[0];
        !            47:        cv = ((s = getenv("TERM")) == 0) || strcmp(s, "5620");
        !            48:        ioctl(0, TIOCGETP, &sttysave);
        !            49:        strcpy(buf, "level");
        !            50:        for(argc--, argv++; *argv && (**argv == '-'); argv++)
        !            51:                switch(argv[0][1])
        !            52:                {
        !            53:                case 'z':
        !            54:                        zflag = "-z";
        !            55:                        break;
        !            56:                case 's':
        !            57:                        shade++;
        !            58:                        break;
        !            59:                case 'g':
        !            60:                        grid = 0;
        !            61:                        break;
        !            62:                case 'T':
        !            63:                        if(argv[0][2] == 'c') cv = 1;
        !            64:                        else if(argv[0][2] == '5') cv = 0;
        !            65:                        else if(argv[0][2] == 'p') cv = 2;
        !            66:                        else goto err;
        !            67:                        break;
        !            68:                case 't':
        !            69:                        i = sscanf(&argv[0][2], "%hd, %hd", &ts, &te);
        !            70:                        if(i==0) error("bad TS,TE");
        !            71:                        timewarp = i;
        !            72:                        break;
        !            73:                case 'p':
        !            74:                        sscanf(&argv[0][2], "%d", &period);
        !            75:                        break;
        !            76:                case 'i':
        !            77:                        sscanf(&argv[0][2], "%d", &floor);
        !            78:                        break;
        !            79:                case 'S':
        !            80:                case 'b':
        !            81:                case 'm':
        !            82:                case 'w':
        !            83:                        /* these options only apply in color, so assume -Tc */
        !            84:                        cv = 1;
        !            85:                        break;
        !            86:                case 'c':
        !            87:                case 'v':
        !            88:                        break;
        !            89:                default:
        !            90:                err:
        !            91:                        fprintf(stderr, "Usage: view2d [-Tdev] [-ptime] [-cn] [-ms]\n");
        !            92:                        exit(1);
        !            93:                }
        !            94:        if((fd = open(*argv, 0)) == -1)
        !            95:                quit("cannot open input");
        !            96:        if(cv==1)
        !            97:        {
        !            98:                if(access("/usr/bin/level", 1) == -1)
        !            99:                {
        !           100:                        fprintf(stderr, "go to kwee to use the frame buffer\n");
        !           101:                        exit(1);
        !           102:                }
        !           103:                dup2(fd,0);     /* close(0); dup(fd); close(fd); */
        !           104:                strcpy(*av, "level");
        !           105:                execvp(*av, av);
        !           106:                perror("level");
        !           107:                exit(1);
        !           108:        } else if(cv==2) {
        !           109:                if(access("/usr/bin/contour", 1) == -1)
        !           110:                {
        !           111:                        fprintf(stderr, "can't find /usr/bin/contour\n");
        !           112:                        exit(1);
        !           113:                }
        !           114:                dup2(fd,0);     /* close(0); dup(fd); close(fd); */
        !           115:                strcpy(*av, "contour");
        !           116:                execvp(*av, av);
        !           117:                perror("contour");
        !           118:                exit(1);
        !           119:        }
        !           120:        sprintf(buf, "/usr/jerq/bin/32ld %s vwd.m", zflag);
        !           121:        if(system(buf)) exit(1);
        !           122:        sttybuf = sttysave;
        !           123:        sttybuf.sg_flags |= RAW;
        !           124:        sttybuf.sg_flags &= ~ECHO;
        !           125:        ioctl(0, TIOCSETP, &sttybuf);
        !           126:        nz = frames[0].z;
        !           127:        rd2dh(fd, &nx, &ny);
        !           128:        putchar('X'); sendn(nx);
        !           129:        putchar('Y'); sendn(ny);
        !           130:        if(grid) putchar('G');
        !           131:        if(shade) putchar('S');
        !           132:        putchar('P');
        !           133:        sendn(period);
        !           134:        m = 2*nx*ny;
        !           135:        tmin = MAX;
        !           136:        tmax = -MAX;
        !           137:        while( rd2di( &frames[nframes].time, frames[nframes].z) )
        !           138:        {
        !           139:                if(frames[nframes].time < tmin) tmin = frames[nframes].time;
        !           140:                if(frames[nframes].time > tmax) tmax = frames[nframes].time;
        !           141:                for(nz = frames[nframes].z, i = nx*ny; i; i--)
        !           142:                {
        !           143:                        if(*nz < zmin) zmin = *nz;
        !           144:                        if(*nz > zmax) zmax = *nz;
        !           145:                        nz++;
        !           146:                }
        !           147:                nframes++;
        !           148:        }
        !           149:        putchar('n');
        !           150:        sendn(nframes);
        !           151:        zc = (zmax+zmin)/2;
        !           152:        scale = (zmax-zmin)/2+1;
        !           153: #define        SCALE(x,m)      ((int)((((long)x)*(m))/scale))
        !           154:        putchar('I');
        !           155:        sendn(floor,MAX);
        !           156:        for(m = 0; m < nframes; m++)
        !           157:        {
        !           158:                putchar('F');
        !           159:                sprintf(buf, "%d", frames[m].time);
        !           160:                sends(buf);
        !           161:                for(q = nx*ny + (p = frames[m].z); q != p; p++)
        !           162:                        sendn(SCALE(*p - zc, MAX-2));
        !           163:        }
        !           164: 
        !           165:        putchar('Q');
        !           166:        fflush(stdout);
        !           167:        (void)getchar();
        !           168:        quit(0);
        !           169: }
        !           170: 
        !           171: quit(s)
        !           172:        char *s;
        !           173: {
        !           174:        ioctl(0, JTERM, 0);
        !           175:        ioctl(0, TIOCSETP, &sttysave);
        !           176:        if(s)
        !           177:                printf("view2d: %s\n", s);
        !           178:        exit(0);
        !           179: }
        !           180: 
        !           181: sendn(n)
        !           182: {
        !           183:        putchar(n>>8);
        !           184:        putchar(n);
        !           185: }
        !           186: 
        !           187: sends(s)
        !           188:        char *s;
        !           189: {
        !           190:        for(;;)
        !           191:        {
        !           192:                putchar(*s);
        !           193:                if(*s++ == 0) break;
        !           194:        }
        !           195: }
        !           196: 
        !           197: abs(n)
        !           198: {
        !           199:        return(n<0? -n:n);
        !           200: }
        !           201: 
        !           202: sendframe(t, dim)
        !           203: {
        !           204:        struct Frame *f1, *f2;
        !           205:        int t1, t2, m, tt;
        !           206:        register short *a, *b, i;
        !           207: 
        !           208:        t1 = t2 = 32767;
        !           209:        for(i = 0; i < nframes; i++)
        !           210:        {
        !           211:                tt = abs(frames[i].time - t);
        !           212:                if(tt < t1)
        !           213:                {
        !           214:                        f2 = f1; t2 = t1;
        !           215:                        f1 = &frames[i]; t1 = tt;
        !           216:                }
        !           217:                else if(tt < t2)
        !           218:                {
        !           219:                        f2 = &frames[i]; t2 = tt;
        !           220:                }
        !           221:        }
        !           222:        putchar('F');
        !           223:        sendn(t);
        !           224:        for(m = dim, a = f1->z, b = f2->z; m--; a++, b++)
        !           225:                sendn(*a + t1*(*b-*a)/(t1+t2));
        !           226: }

unix.superglobalmegacorp.com

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