|
|
1.1 root 1: #include <stdio.h>
2: #include "bc.h"
3:
4:
5: /*
6: * The int left is equal to the number of columns left on the
7: * output line.
8: */
9:
10: static int left = LINELEN;
11:
12:
13: /*
14: * Pstring is used to print a string onto the standard output,
15: * maintaining the number of characters left on the line in
16: * left. `field' is the minimum number of characters to be used.
17: * Padding is zeros on the left.
18: */
19:
20: pstring(str, field)
21: register char *str;
22: int field;
23: {
24: register int len;
25: static char newln[] = "\\\n";
26:
27: if (field == 0) {
28: while (*str != 0) {
29: if (*str == '\t') {
30: if (left & 7)
31: left &= ~7;
32: else
33: left -= 8;
34: if (left <= 0) {
35: left = LINELEN - 8;
36: printf(newln);
37: }
38: putchar(*str++);
39: } else {
40: putchar(*str++);
41: if (--left == 0) {
42: left = LINELEN;
43: printf(newln);
44: }
45: }
46: }
47: } else {
48: len = strlen(str);
49: if (field < len)
50: field = len;
51: if (left < field && field <= LINELEN) {
52: printf(newln);
53: left = LINELEN;
54: }
55: for (field -= len; field != 0; --field) {
56: putchar('0');
57: if (--left == 0) {
58: left = LINELEN;
59: printf(newln);
60: }
61: }
62: for (; left < len; len -= left) {
63: printf("%.*s\\\n", left, str);
64: str += left;
65: left = LINELEN;
66: }
67: printf("%s", str);
68: left -= len;
69: }
70: }
71:
72:
73: /*
74: * Pnewln prints out a newline on standard output, updateing
75: * left.
76: */
77:
78: pnewln()
79: {
80: putchar('\n');
81: left = LINELEN;
82: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.