|
|
1.1 ! root 1: /* ! 2: * lpr/print.c ! 3: */ ! 4: ! 5: #include <stdio.h> ! 6: ! 7: #define LINESIZ 512 ! 8: ! 9: #define lputc(c) putc((c), lp) ! 10: ! 11: static col, /* current print position */ ! 12: endcol; /* leftmost unused position */ ! 13: static char line0[LINESIZ], ! 14: line1[LINESIZ]; ! 15: ! 16: extern int printing; ! 17: extern FILE *lp; ! 18: ! 19: print( file) ! 20: char *file; ! 21: { ! 22: register FILE *f; ! 23: register c; ! 24: ! 25: f = fopen( file, "r"); ! 26: if (f == NULL) ! 27: return (1); ! 28: ! 29: while ((c=getline( f)) && printing>0) { ! 30: putline( line1); ! 31: putline( line0); ! 32: lputc( c); ! 33: } ! 34: ! 35: fclose( f); ! 36: return (0); ! 37: } ! 38: ! 39: ! 40: ! 41: getline( f) ! 42: register FILE *f; ! 43: { ! 44: register c; ! 45: ! 46: col = 0; ! 47: endcol = 0; ! 48: ! 49: while ((c=getc( f)) != EOF) ! 50: switch (c) { ! 51: case '\n': ! 52: case '\f': ! 53: line0[col] = '\0'; ! 54: line1[col] = '\0'; ! 55: return (c); ! 56: case '\b': ! 57: if (col) ! 58: --col; ! 59: break; ! 60: case '\r': ! 61: col = 0; ! 62: break; ! 63: case '\t': ! 64: do { ! 65: store( ' '); ! 66: } while (col & 7); ! 67: break; ! 68: default: ! 69: store( c); ! 70: } ! 71: ! 72: return (0); ! 73: } ! 74: ! 75: store( c) ! 76: { ! 77: ! 78: if (col < LINESIZ-1) ! 79: if (col >= endcol) { ! 80: line0[col] = c; ! 81: line1[col] = ' '; ! 82: ++endcol; ! 83: } ! 84: else ! 85: line1[col] = c; ! 86: ++col; ! 87: } ! 88: ! 89: putline( linep) ! 90: register char *linep; ! 91: { ! 92: register c, ! 93: xcol; ! 94: ! 95: col = 0; ! 96: xcol = 0; ! 97: ! 98: for (; ; ) ! 99: switch (c = *linep++) { ! 100: case '\0': ! 101: if (col) ! 102: lputc( '\r'); ! 103: return; ! 104: default: ! 105: while (col < xcol) { ! 106: ++col; ! 107: lputc( ' '); ! 108: } ! 109: lputc( c); ! 110: ++col; ! 111: case ' ': ! 112: ++xcol; ! 113: } ! 114: } ! 115: ! 116: /* end of lpr/print.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.