/* wf.c
L. Stewart April 12, 1982 5:22 PM
*/
wf(fmt)
char *fmt;
{
while (*fmt != 0) putchar(*fmt++);
};
wfcr()
{
wf("\r");
};
wf1(fmt, a1)
char *fmt;
int a1;
{
pfary(fmt, &a1);
};
wf2(fmt, a1, a2)
char *fmt;
int a1, a2;
{
int ary[2];
ary[0] = a1;
ary[1] = a2;
pfary(fmt, ary);
};
wf3(fmt, a1, a2, a3)
char *fmt;
int a1, a2, a3;
{
int ary[3];
ary[0] = a1;
ary[1] = a2;
ary[2] = a3;
pfary(fmt, ary);
};
wf4(fmt, a1, a2, a3, a4)
char *fmt;
int a1, a2, a3, a4;
{
int ary[4];
ary[0] = a1;
ary[1] = a2;
ary[2] = a3;
ary[4] = a4;
pfary(fmt, ary);
};
pfary(fmt, ary)
char *fmt;
int *ary;
{
char c;
while ((c = *fmt++) != 0) {
if (c == '%') fmt = doone(fmt, *ary++);
else putchar(c);
};
};
char *doone(fmt, a1)
char *fmt;
int a1;
{
char c, fillchar, *last;
char buf[20];
int width, radix, i;
fillchar = ' ';
buf[0] = 0;
width = 0;
if (*fmt == '0') fillchar = '0';
while ((c = *fmt++) != 0) {
if (isdigit(c)) width = (width * 10) + (c - '0');
else break;
};
if (c == 's') { wf(a1); return(fmt); };
if (c == 'd') radix = -10;
if (c == 'x') radix = 16;
if (c == 'o') radix = 8;
if (radix==0) return(fmt);
last = putfnum(buf, a1, radix);
if (width>0) {
width -= (last-buf);
while (width > 0) {
putchar(fillchar);
width -= 1;
};
};
wf(buf);
return(fmt);
};
char *putfnum(buf, a1, radix)
char *buf;
int a1, radix;
{
int digit;
if (radix<0) {
radix = -radix;
if (a1<0) {
a1 = -a1;
*buf++ = '-';
};
};
if (!ugt(radix, a1)) buf = putfnum(buf, udiv(a1, radix), radix);
digit = urem(a1, radix);
if (digit>9) *buf++ = digit + 'A'-10;
else *buf++ = digit + '0';
*buf = 0;
return(buf);
};