1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
$NetBSD: patch-ad,v 1.1 2004/01/28 14:43:01 agc Exp $
--- ml.c.orig 1997-05-16 19:43:51.000000000 +0100
+++ ml.c 2004-01-28 14:40:11.000000000 +0000
@@ -354,22 +354,19 @@
* author, Paul Placeway (paul@tut.cis.ohio-state.edu)
*/
-#include <varargs.h>
+#include <stdarg.h>
/*VARARGS0*/
-mlwrite(va_alist)
-va_dcl
+mlwrite(char *fp, ...)
{
- register char *fp;
va_list ap;
if (clexec)
return;
- va_start(ap);
- fp = va_arg(ap, char *);
+ va_start(ap, fp);
movecursor(term.t_nrow,0);
(*term.t_color)(CTEXT);
- (void) mlprintf(fp, &ap);
+ (void) mlprintf(fp, ap);
va_end(ap);
(*term.t_eeol)();
(*term.t_flush)();
@@ -389,9 +386,7 @@
static char prbuf[128];
/*VARARGS*/
-mlprintf (fp, ap)
-register char *fp;
-va_list *ap;
+mlprintf (char *fp, ...)
{
register char *f, *bp;
register long l;
@@ -399,9 +394,11 @@
register int i;
register int fmt;
register char pad = ' ';
+ va_list ap;
int flush_left = 0, f_width = 0, prec = INF, hash = 0, do_long = 0;
int sign = 0;
+ va_start(ap, fp);
f = fp;
for (; *f; f++) {
CHKTTCOL();
@@ -419,7 +416,7 @@
f++;
}
if (*f == '*') { /* field width */
- f_width = va_arg(*ap, int);
+ f_width = va_arg(ap, int);
f++;
} else if (ISDIGIT(*f)) {
f_width = atoi (f);
@@ -429,7 +426,7 @@
if (*f == '.') { /* precision */
f++;
if (*f == '*') {
- prec = va_arg(*ap, int);
+ prec = va_arg(ap, int);
f++;
} else if (ISDIGIT(*f)) {
prec = atoi (f);
@@ -454,9 +451,9 @@
switch (fmt) { /* do the format */
case 'd':
if (do_long)
- l = va_arg(*ap, long);
+ l = va_arg(ap, long);
else
- l = (long) ( va_arg(*ap, int) );
+ l = (long) ( va_arg(ap, int) );
if (l < 0) {
sign = 1;
l = -l;
@@ -485,9 +482,9 @@
case 'x':
case 'u':
if (do_long)
- u = va_arg(*ap, unsigned long);
+ u = va_arg(ap, unsigned long);
else
- u = (unsigned long) (va_arg(*ap, unsigned));
+ u = (unsigned long) (va_arg(ap, unsigned));
if (fmt == 'u') { /* unsigned decimal */
do {
*bp++ = u % 10 + '0';
@@ -525,11 +522,11 @@
}
break;
case 'c':
- i = va_arg(*ap, int);
+ i = va_arg(ap, int);
mlputchar(i);
break;
case 's':
- bp = va_arg(*ap, char *);
+ bp = va_arg(ap, char *);
f_width = f_width - strlen(bp);
if (!flush_left)
while (f_width-- > 0) {
@@ -553,6 +550,7 @@
pad = ' ';
}
}
+ va_end(ap);
return 0;
}
|