|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)driver.c 4.4 (Berkeley) 9/21/85"; ! 3: #endif ! 4: ! 5: #include <stdio.h> ! 6: ! 7: float deltx; ! 8: float delty; ! 9: int PlotRes; ! 10: ! 11: main(argc,argv) ! 12: int argc; ! 13: char *argv[]; ! 14: { ! 15: int std = 1; ! 16: char *progname; ! 17: FILE *fin; ! 18: ! 19: progname = argv[0]; ! 20: for (argc--, argv++; argc > 0; argc--, argv++) { ! 21: if (argv[0][0] == '-') { ! 22: switch (argv[0][1]) { ! 23: case 'l': ! 24: deltx = atoi(&argv[0][2]) - 1; ! 25: break; ! 26: case 'w': ! 27: delty = atoi(&argv[0][2]) - 1; ! 28: break; ! 29: case 'r': ! 30: PlotRes = atoi(&argv[0][2]); ! 31: break; ! 32: } ! 33: continue; ! 34: } ! 35: std = 0; ! 36: fin = fopen(argv[0], "r"); ! 37: if (fin == NULL) { ! 38: fprintf(stderr, "%s: can't open %s\n", progname, ! 39: argv[0]); ! 40: exit(1); ! 41: } ! 42: fplt(fin); ! 43: fclose(fin); ! 44: } ! 45: if (std) ! 46: fplt(stdin); ! 47: exit(0); ! 48: } ! 49: ! 50: fplt(fin) ! 51: FILE *fin; ! 52: { ! 53: register int c; ! 54: char s[256]; ! 55: int xi,yi,x0,y0,x1,y1,r,dx,n,i; ! 56: int pat[256]; ! 57: ! 58: openpl(); ! 59: while((c = getc(fin)) != EOF) { ! 60: switch(c) { ! 61: case 'm': ! 62: xi = getsi(fin); ! 63: yi = getsi(fin); ! 64: move(xi,yi); ! 65: break; ! 66: case 'l': ! 67: x0 = getsi(fin); ! 68: y0 = getsi(fin); ! 69: x1 = getsi(fin); ! 70: y1 = getsi(fin); ! 71: line(x0,y0,x1,y1); ! 72: break; ! 73: case 't': ! 74: getstr(s,fin); ! 75: label(s); ! 76: break; ! 77: case 'e': ! 78: erase(); ! 79: break; ! 80: case 'p': ! 81: xi = getsi(fin); ! 82: yi = getsi(fin); ! 83: point(xi,yi); ! 84: break; ! 85: case 'n': ! 86: xi = getsi(fin); ! 87: yi = getsi(fin); ! 88: cont(xi,yi); ! 89: break; ! 90: case 's': ! 91: x0 = getsi(fin); ! 92: y0 = getsi(fin); ! 93: x1 = getsi(fin); ! 94: y1 = getsi(fin); ! 95: space(x0,y0,x1,y1); ! 96: break; ! 97: case 'a': ! 98: xi = getsi(fin); ! 99: yi = getsi(fin); ! 100: x0 = getsi(fin); ! 101: y0 = getsi(fin); ! 102: x1 = getsi(fin); ! 103: y1 = getsi(fin); ! 104: arc(xi,yi,x0,y0,x1,y1); ! 105: break; ! 106: case 'c': ! 107: xi = getsi(fin); ! 108: yi = getsi(fin); ! 109: r = getsi(fin); ! 110: circle(xi,yi,r); ! 111: break; ! 112: case 'f': ! 113: getstr(s,fin); ! 114: linemod(s); ! 115: break; ! 116: case 'd': ! 117: xi = getsi(fin); ! 118: yi = getsi(fin); ! 119: dx = getsi(fin); ! 120: n = getsi(fin); ! 121: for(i=0; i<n; i++) ! 122: pat[i] = getsi(fin); ! 123: dot(xi,yi,dx,n,pat); ! 124: break; ! 125: } ! 126: } ! 127: closepl(); ! 128: } ! 129: ! 130: /* get an integer stored in 2 ascii bytes. */ ! 131: getsi(fin) ! 132: register FILE *fin; ! 133: { ! 134: short a, b; ! 135: ! 136: if((b = getc(fin)) == EOF) ! 137: return(EOF); ! 138: if((a = getc(fin)) == EOF) ! 139: return(EOF); ! 140: a = a<<8; ! 141: return(a|b); ! 142: } ! 143: ! 144: getstr(s, fin) ! 145: register char *s; ! 146: register FILE *fin; ! 147: { ! 148: ! 149: for( ; *s = getc(fin); s++) ! 150: if(*s == '\n') ! 151: break; ! 152: *s = '\0'; ! 153: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.