Annotation of 43BSD/old/vpr/vdmp.c, revision 1.1.1.1

1.1       root        1: /*  VDMP: version 4.4                          updated 7/12/81
                      2:  *
                      3:  *  reads raster file created by cifplot and dumps it onto the
                      4:  *  Varian or Versatec plotter.
                      5:  *  Must be called with vcontrol or by vpd/vad daemon since
                      6:  *  it assumes plotter is already opened as device 3.
                      7:  */
                      8: #include <stdio.h>
                      9: #include <signal.h>
                     10: #include <sys/vcmd.h>
                     11: 
                     12: #define MAGIC_WORD     0xA5CF4DFA
                     13: 
                     14: #define BUFSIZE                1024*128
                     15: #define BLOCK          1024
                     16: 
                     17: extern char *ctime();
                     18: extern long time();
                     19: 
                     20: char *Sid = "@(#)vdmp.c        4.4\t7/12/81";
                     21: int    plotmd[]        = { VPLOT, 0, 0};
                     22: int    prtmd[]         = { VPRINT, 0, 0};
                     23: char *name = "";
                     24: char *banner = "";
                     25: 
                     26: int inbuf[BLOCK/sizeof(int)];
                     27: char vpbuf[BUFSIZE];
                     28: 
                     29: int    in;
                     30: 
                     31: #define VARIAN 1
                     32: #define VERSATEC 2
                     33: 
                     34: int device = VARIAN;   /* Indicate which device */
                     35: int BytesPerLine = 264;        /* Number of bytes per raster line of the output device */
                     36: 
                     37: main(argc, argv)
                     38: char **argv;
                     39: {
                     40:        extern int onintr();
                     41:        int b;
                     42: 
                     43:        for(b=0; argv[1][0] == '-';b++) {
                     44:            switch(argv[1][1]) {
                     45:                case 'W':
                     46:                        device = VERSATEC;
                     47:                        BytesPerLine = 880;
                     48:                        break;
                     49:                case 'V':
                     50:                        device = VARIAN;
                     51:                        BytesPerLine = 264;
                     52:                        break;
                     53:                case 'n':
                     54:                        argc--; argv++;
                     55:                        if(argv[1] != 0)
                     56:                                name = argv[1];
                     57:                        break;
                     58:                case 'b':
                     59:                        argc--; argv++;
                     60:                        if(argv[1] != 0)
                     61:                                banner = argv[b];
                     62:                        break;
                     63:                }
                     64:            argc--; argv++;
                     65:            }
                     66:        if(argc < 2) exit(-1);
                     67:        /* page feed */
                     68:        if(device == VARIAN) {
                     69:            ioctl(3, VSETSTATE,prtmd);
                     70:            write(3,"\f",2);
                     71:            }
                     72:        if(device == VERSATEC) {
                     73:            ioctl(3, VSETSTATE,prtmd);
                     74:            write(3,"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",16);
                     75:            }
                     76:        /* open dump file */
                     77:        in = open(argv[1], 0);
                     78:        if(in == NULL) {
                     79:            char str[128];
                     80:            sprintf(str,"%s: No such file\n\n\n",argv[1]);
                     81:            ioctl(3, VSETSTATE,prtmd);
                     82:            write(3,str, strlen(str));
                     83:            exit(-1);
                     84:            }
                     85:        /* write header */
                     86:        {   char str[512];
                     87:            long clock;
                     88:            clock = time(0);
                     89:            sprintf(str,"%s:%s%s",name,ctime(&clock),banner);
                     90:            ioctl(3, VSETSTATE,prtmd);
                     91:            write(3,str,(strlen(str)+1) & 0xfffffffe); /*makes strlen even*/
                     92:            }
                     93:        /* open file for reading */
                     94:        b=read(in,inbuf,BLOCK);
                     95:        if(inbuf[0] == MAGIC_WORD && b == BLOCK) {
                     96:            /* we have a formatted dump file */
                     97:            inbuf[(BLOCK/sizeof(int))-1] = 0;  /* make sure string terminates */
                     98:            write(3,&(inbuf[4]),(strlen(&(inbuf[4]))+1) & 0xfffe);
                     99:            ioctl(3, VSETSTATE,prtmd);
                    100:            write(3," \n",2);
                    101:            putplot();
                    102:            close(in);
                    103:            }
                    104:          else {                        /* dump file not formatted */
                    105:            /* reset in's seek pointer and plot */
                    106:            close(in);
                    107:            in = open(argv[1], 0);
                    108:            putplot();
                    109:            close(in);
                    110:            }
                    111:        if(device == VERSATEC) {
                    112:            ioctl(3, VSETSTATE,prtmd);
                    113:            write(3,"\n\n\n\n\n\n\n",8);
                    114:            }
                    115:        exit(0);
                    116:        }
                    117: 
                    118: 
                    119: putplot()
                    120: {
                    121:      register int i;
                    122:      register char *buf;
                    123: 
                    124:      buf = &(vpbuf[0]);
                    125:      /* vpd has already opened the Versatec as device 3 */
                    126:      ioctl(3, VSETSTATE, plotmd);
                    127:      while( (i=read(in,buf, BUFSIZE)) > 0)
                    128:                if(write(3,buf,i)!=i) exit(1);
                    129:     }

unix.superglobalmegacorp.com

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