1 #ifndef lint 2 static char sccsid[] = "@(#)savrstor.c 1.3 (CWI) 86/11/10"; 3 #endif lint 4 5 #include "defs.h" 6 #include "ext.h" 7 8 /* 9 * remembers various things: fill mode, vs, ps in mac 35(SF) 10 */ 11 savefill() 12 { 13 printf(".de %d\n", SF); 14 printf(".ps \\n(.s\n"); 15 printf(".vs \\n(.vu\n"); 16 printf(".in \\n(.iu\n"); 17 printf(".if \\n(.u .fi\n"); 18 printf(".if \\n(.j .ad\n"); 19 printf(".if \\n(.j=0 .na\n"); 20 printf("..\n"); 21 printf(".nf\n"); 22 23 /* #| and #~ give the offsets for hor. and vert. lines 24 (in hundredths of an n) */ 25 switch(device){ 26 case HARRIS: 27 printf(".nr #~ 24\n"); 28 printf(".nr #| 46\n"); 29 printf(".nr Tw 22.5c\n"); 30 break; 31 case CAT: 32 case DEVVER: 33 default: 34 printf(".nr #~ 0\n"); 35 printf(".nr #| 0\n"); 36 printf(".nr Tw 7.65i\n"); 37 break; 38 case DEVPSC: 39 printf(".nr #~ 0-5\n"); 40 printf(".nr #| 8\n"); 41 printf(".nr Tw 7.65i\n"); 42 break; 43 } 44 45 /* 46 * This is the offset for the T450 boxes see drawvert() 47 */ 48 printf(".if \\n(.T .if n .nr #~ 60\n"); 49 } 50 51 /* 52 * Call the macro SF (35) to restore collected data 53 */ 54 rstofill() 55 { 56 printf(".%d\n", SF); 57 } 58 59 /* 60 * Clean up at end of file? 61 */ 62 endoff() 63 { 64 register int i; 65 /* 66 * make some registers to be 0 ... 67 */ 68 for(i = 0; i < MAXHEAD; i++) 69 if(linestop[i]) 70 printf(".nr #%c 0\n", 'a' + i); 71 /* 72 * and remove used macros, strings (and diversions?) 73 */ 74 for(i = 0; i < texct; i++) 75 printf(".rm %c+\n", texstr[i]); 76 printf("%s\n", last); 77 } 78 79 /* 80 * Let's check wether we are in a diversion 81 */ 82 ifdivert() 83 { 84 /* 85 * #d hold current vertical place if in a diversion 86 */ 87 printf(".ds #d .d\n"); 88 /* 89 * if diversion doesn't exist, rememenber current vertical 90 * place (nl) in #d 91 */ 92 printf(".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n"); 93 } 94 95 /* 96 * save current input line number (of troff), since we are going to add a lot of 97 * lines 98 * 99 * Note that register b. is never set to be auto incremeted, so this 100 * garanteed to fail!!! (jna) 101 * 102 * (should be replaced with a request for new troff) 103 */ 104 saveline() 105 { 106 printf(".if \\n+(b.=1 .nr d. \\n(.c-\\n(c.-1\n"); 107 linstart = iline; 108 } 109 110 /* 111 * rstore line count of troff 112 */ 113 restline() 114 { 115 printf(".if \\n-(b.=0 .nr c. \\n(.c-\\n(d.-%d\n", iline - linstart); 116 linstart = 0; 117 /* 118 * support for .lf request of troff (jna) 119 */ 120 printf(".lf %d\n", iline); 121 } 122 123 /* 124 * Turn the field mechanism off 125 */ 126 cleanfc() 127 { 128 printf(".fc\n"); 129 } 130