static char sccsid
[] = "@(#)rvsort.c 4.2 (Berkeley) %G%";
* Sort troff output for versatec to reduce amount of reverse leading
struct achar
*piles
[500], *afreel
;
int skipfirst
= 1; /* skip the first leading so start at top of page */
int cpsize
= 02; /* Funny sizes */
int pagelength
= 144 * 11; /* in Leading units */
int pagemod
; /* horizontal page number (for versatec) */
#define MODOFF 3672 /* 432 * 8.5 */
int esc
, lead
, back
, verd
, mcase
, railmag
;
int oback
, omcase
, orailmag
, ocol
, orow
, overd
;
while (argc
> 1 && argv
[1][0] == '-') {
float f
= 144 * atof(argv
[1] + 2);
if((in
=fopen(argv
[0], "r")) == NULL
)
while((c
= getch()) != -1) {
if(c
& 0200) { /* escape (left/right) */
if((c
& 0377) < 0100) /* Purely for efficiency */
verd
= 0; back
= 0; mcase
= 0;
if(loadfont(railmag
, cpsize
) < 0)
case 0101: /* lower rail */
case 0102: /* upper rail */
case 0103: /* upper mag */
case 0104: /* lower mag */
case 0105: /* lower case */
case 0106: /* upper case */
case 0107: /* escape forward */
case 0110: /* escape backwards */
case 0112: /* lead forward */
case 0113: /* undefined */
case 0114: /* lead backward */
case 0115: /* undefined */
if((c
& 0340) == 0140) {/* leading */
if((c
& 0360)== 0120) { /* size change */
col
+= stupidadj(c
& 017, cpsize
);
loadfont(railmag
, c
& 017);
fprintf(stderr
, "vsort: %s\n", s
);
register struct achar
*ap
, **bp
;
if (col
< 0 || col
>= 500*8)
ap
= (struct achar
*)malloc(sizeof (*ap
));
register struct achar
**ap
, *bp
, *cp
;
for (ap
= &piles
[0]; ap
< &piles
[500]; ap
++) {
for (bp
= *ap
; bp
; bp
= cp
) {
register struct achar
*cp
;
if(cp
->railmag
!= orailmag
)
if((rlmg
& 01) != (orailmag
& 01))
putc((rlmg
& 01) ? 0102:0101, out
); /* rail */
if((rlmg
& 02) != (orailmag
& 02))
putc((rlmg
& 02) ? 0103:0104, out
); /* mag */
putc(oback
? 0107:0110, out
);
putc(0120 | (size
& 017), out
);
ptesc(-stupidadj(size
, opsize
));
register struct point_sizes
*psp
;
register struct point_sizes
*lpsp
;
while(psp
->real_code
!= 0) {
if((psp
->stupid_code
& 017) == code
)
while(lpsp
->real_code
!= 0) {
if((lpsp
->stupid_code
& 017) == lcode
)
if(!(lpsp
->stupid_code
& 0200) && (psp
->stupid_code
& 0200))
if((lpsp
->stupid_code
& 0200) && !(psp
->stupid_code
& 0200))
putc(omcase
? 0105:0106, out
);
if((escc
< 0 && !oback
) || (escc
>= 0 && oback
))
putc(0200 | ((~escc
) & 0177), out
);
putc(0114, out
), overd
= 1;
putc(0112, out
), overd
= 0;
putc(0140 | ((~leadd
) & 037), out
);
register struct achar
*cp
;
"code %o psize %d col %d row %d railmag %d verd %d back %d mcase %d\n",
cp
->code
, cp
->psize
, cp
->col
, cp
->row
, cp
->railmag
, cp
->verd
,