Typesetter-Independent Troff on a Sun-4
Charles Hedrick
hedrick at geneva.rutgers.edu
Mon Jul 31 23:34:41 AEST 1989
Here are my changes to ditroff to make it work on the Sun 4. (Also
changes default to Postscript.)
*** ni.c.ORIG Tue May 2 22:43:58 1989
--- ni.c Sat Jun 24 21:16:41 1989
***************
*** 12,18 ****
char termtab[NS] = "/usr/lib/font"; /* rest added in ptinit() */
char fontfile[NS] = "/usr/lib/font"; /* rest added in casefp() */
! char devname[20] = "202"; /* default typesetter */
#endif
--- 12,18 ----
char termtab[NS] = "/usr/lib/font"; /* rest added in ptinit() */
char fontfile[NS] = "/usr/lib/font"; /* rest added in casefp() */
! char devname[20] = "psc"; /* default typesetter */
#endif
*** n1.c.ORIG Tue May 2 22:43:54 1989
--- n1.c Sat Jun 24 23:09:48 1989
***************
*** 11,16 ****
--- 11,17 ----
#include <sys/stat.h>
#include <setjmp.h>
#include <sgtty.h>
+ #include <varargs.h>
#include "tdef.h"
#include "ext.h"
***************
*** 352,369 ****
int stderr = 2; /* NOT stdio value */
/* VARARGS2 */
! fdprintf(fd, fmt, x1)
int fd;
register char *fmt;
! unsigned x1;
! {
register c;
- register unsigned int *adx;
char *s;
register i;
pfbp = pfbuf;
! adx = &x1;
loop:
while ((c = *fmt++) != '%') {
if (c == '\0') {
--- 353,374 ----
int stderr = 2; /* NOT stdio value */
/* VARARGS2 */
! fdprintf(va_alist)
! va_dcl
! {
! va_list x1;
int fd;
register char *fmt;
!
register c;
char *s;
register i;
pfbp = pfbuf;
! va_start(x1);
! fd = va_arg(x1, int);
! fmt = va_arg(x1, char *);
!
loop:
while ((c = *fmt++) != '%') {
if (c == '\0') {
***************
*** 378,383 ****
--- 383,389 ----
flusho();
}
}
+ va_end(x1);
return;
}
putchar(c);
***************
*** 384,390 ****
}
c = *fmt++;
if (c == 'd') {
! i = *adx;
if (i < 0) {
putchar('-');
i = -i;
--- 390,396 ----
}
c = *fmt++;
if (c == 'd') {
! i = va_arg(x1, int);
if (i < 0) {
putchar('-');
i = -i;
***************
*** 391,414 ****
}
printn((long)i, 10);
} else if (c == 'u' || c == 'o' || c == 'x')
! printn((long)*adx, c == 'o' ? 8 : (c == 'x' ? 16 : 10));
else if (c == 'c') {
! c = *adx & 0377;
if (c > 0177 || c < 040)
putchar('\\');
! putchar(*adx & 0177);
} else if (c == 's') {
! s = (char *) * adx;
while (c = *s++)
putchar(c);
} else if (c == 'D') {
! printn(*(long *)adx, 10);
! adx += (sizeof(long) / sizeof(int)) - 1;
} else if (c == 'O') {
! printn(*(long *)adx, 8);
! adx += (sizeof(long) / sizeof(int)) - 1;
}
- adx++;
goto loop;
}
--- 397,417 ----
}
printn((long)i, 10);
} else if (c == 'u' || c == 'o' || c == 'x')
! printn(va_arg(x1, long), c == 'o' ? 8 : (c == 'x' ? 16 : 10));
else if (c == 'c') {
! c = va_arg(x1, int) & 0377;
if (c > 0177 || c < 040)
putchar('\\');
! putchar(c & 0177);
} else if (c == 's') {
! s = va_arg(x1, char *);
while (c = *s++)
putchar(c);
} else if (c == 'D') {
! printn(va_arg(x1, long), 10);
} else if (c == 'O') {
! printn(va_arg(x1, long), 8);
}
goto loop;
}
***************
*** 435,445 ****
/* returns pointer to \0 that ends the string */
/* VARARGS2 */
! char *sprintf(str, fmt, x1)
char *str;
char *fmt;
! unsigned x1;
! {
register c;
char *sprintn();
register unsigned int *adx;
--- 438,450 ----
/* returns pointer to \0 that ends the string */
/* VARARGS2 */
! char *sprintf(va_alist)
! va_dcl
! {
! va_list x1;
char *str;
char *fmt;
!
register c;
char *sprintn();
register unsigned int *adx;
***************
*** 446,456 ****
char *s;
register i;
! adx = &x1;
loop:
while ((c = *fmt++) != '%') {
if (c == '\0') {
*str = 0;
return str;
}
*str++ = c;
--- 451,464 ----
char *s;
register i;
! va_start(x1);
! str = va_arg(x1, char *);
! fmt = va_arg(x1, char *);
loop:
while ((c = *fmt++) != '%') {
if (c == '\0') {
*str = 0;
+ va_end(x1);
return str;
}
*str++ = c;
***************
*** 457,463 ****
}
c = *fmt++;
if (c == 'd') {
! i = *adx;
if (i < 0) {
*str++ = '-';
i = -i;
--- 465,471 ----
}
c = *fmt++;
if (c == 'd') {
! i = va_arg(x1, int);
if (i < 0) {
*str++ = '-';
i = -i;
***************
*** 464,487 ****
}
str = sprintn(str, (long)i, 10);
} else if (c == 'u' || c == 'o' || c == 'x')
! str = sprintn(str, (long)*adx, c == 'o' ? 8 : (c == 'x' ? 16 : 10));
else if (c == 'c') {
! c = *adx & 0377;
if (c > 0177 || c < 040)
*str++ = '\\';
! *str++ = *adx & 0177;
} else if (c == 's') {
! s = (char *) * adx;
while (c = *s++)
*str++ = c;
} else if (c == 'D') {
! str = sprintn(str, *(long *)adx, 10);
! adx += (sizeof(long) / sizeof(int)) - 1;
} else if (c == 'O') {
! str = sprintn(str, *(long *)adx, 8);
! adx += (sizeof(long) / sizeof(int)) - 1;
}
- adx++;
goto loop;
}
--- 472,492 ----
}
str = sprintn(str, (long)i, 10);
} else if (c == 'u' || c == 'o' || c == 'x')
! str = sprintn(str, va_arg(x1, long), c == 'o' ? 8 : (c == 'x' ? 16 : 10));
else if (c == 'c') {
! c = va_arg(x1, int) & 0377;
if (c > 0177 || c < 040)
*str++ = '\\';
! *str++ = c & 0177;
} else if (c == 's') {
! s = va_arg(x1, char *);
while (c = *s++)
*str++ = c;
} else if (c == 'D') {
! str = sprintn(str, va_arg(x1, long), 10);
} else if (c == 'O') {
! str = sprintn(str, va_arg(x1, long), 8);
}
goto loop;
}
More information about the Comp.sys.sun
mailing list