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:     }

Defined functions

main defined in line 37; never used
putplot defined in line 119; used 2 times

Defined variables

BytesPerLine defined in line 35; used 2 times
Sid defined in line 20; never used
banner defined in line 24; used 2 times
device defined in line 34; used 5 times
in defined in line 29; used 8 times
inbuf defined in line 26; used 5 times
name defined in line 23; used 2 times
plotmd defined in line 21; used 1 times
prtmd defined in line 22; used 6 times
vpbuf defined in line 27; used 1 times

Defined macros

BLOCK defined in line 15; used 4 times
BUFSIZE defined in line 14; used 2 times
MAGIC_WORD defined in line 12; used 1 times
  • in line 95
VARIAN defined in line 31; used 3 times
VERSATEC defined in line 32; used 3 times
Last modified: 1982-08-07
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1005
Valid CSS Valid XHTML 1.0 Strict