41
41
#include "regex/cdefs.h"
42
42
43
43
#include <stdarg.h>
44
- #define VA_LOCAL_DECL va_list args;
45
- #define VA_START (f ) va_start(args, f)
46
- #define VA_END va_end(args)
47
44
48
45
#include <sys/ioctl.h>
49
46
#include <sys/param.h>
@@ -75,34 +72,30 @@ typedef long long long_long;
75
72
* causing nast effects.
76
73
**************************************************************/
77
74
78
- /*static char _id[] = "$Id: snprintf.c,v 1.12 1998/12/18 06:59:39 momjian Exp $";*/
75
+ /*static char _id[] = "$Id: snprintf.c,v 1.13 1998/12/18 07:03:06 momjian Exp $";*/
79
76
static char * end ;
80
77
static int SnprfOverflow ;
81
78
82
79
int snprintf (char * str , size_t count , const char * fmt ,...);
83
- int vsnprintf (char * str , size_t count , const char * fmt ,... );
84
- static void dopr (char * buffer , const char * format ,... );
80
+ int vsnprintf (char * str , size_t count , const char * fmt , va_list args );
81
+ static void dopr (char * buffer , const char * format , va_list args );
85
82
86
83
int
87
84
snprintf (char * str , size_t count , const char * fmt ,...)
88
85
{
89
86
int len ;
87
+ va_list args ;
90
88
91
- VA_LOCAL_DECL
92
-
93
- VA_START (fmt );
89
+ va_start (args , fmt );
94
90
len = vsnprintf (str , count , fmt , args );
95
- VA_END ;
91
+ va_end ( args ) ;
96
92
return len ;
97
93
}
98
94
99
95
100
96
int
101
- vsnprintf (char * str , size_t count , const char * fmt ,... )
97
+ vsnprintf (char * str , size_t count , const char * fmt , va_list args )
102
98
{
103
- VA_LOCAL_DECL
104
-
105
- VA_START (fmt );
106
99
str [0 ] = 0 ;
107
100
end = str + count - 1 ;
108
101
SnprfOverflow = 0 ;
@@ -112,7 +105,6 @@ vsnprintf(char *str, size_t count, const char *fmt,...)
112
105
if (SnprfOverflow )
113
106
elog (NOTICE , "vsnprintf overflow, len = %d, str = %s" ,
114
107
count , str );
115
- VA_END ;
116
108
return strlen (str );
117
109
}
118
110
@@ -122,7 +114,7 @@ vsnprintf(char *str, size_t count, const char *fmt,...)
122
114
123
115
static void fmtstr __P ((char * value , int ljust , int len , int zpad , int maxwidth ));
124
116
125
- #ifndef HAVE_LONG_LONG_INT_64
117
+ #ifndef HAVE_LONG_INT_64
126
118
static void fmtnum __P ((long value , int base , int dosign , int ljust , int len , int zpad ));
127
119
#else
128
120
static void fmtnum __P ((long_long value , int base , int dosign , int ljust , int len , int zpad ));
@@ -133,27 +125,23 @@ static char *output;
133
125
static void dopr_outch __P ((int c ));
134
126
135
127
static void
136
- dopr (char * buffer , const char * format ,... )
128
+ dopr (char * buffer , const char * format , va_list args )
137
129
{
138
130
int ch ;
139
131
#ifdef HAVE_LONG_LONG_INT_64
140
132
long_long value ;
133
+ int longlongflag = 0 ;
141
134
#else
142
135
long value ;
143
136
#endif
144
137
int longflag = 0 ;
145
- int longlongflag = 0 ;
146
138
int pointflag = 0 ;
147
139
int maxwidth = 0 ;
148
140
char * strvalue ;
149
141
int ljust ;
150
142
int len ;
151
143
int zpad ;
152
144
153
- VA_LOCAL_DECL
154
-
155
- VA_START (format );
156
-
157
145
output = buffer ;
158
146
while ((ch = * format ++ ))
159
147
{
@@ -162,13 +150,15 @@ dopr(char *buffer, const char *format,...)
162
150
case '%' :
163
151
ljust = len = zpad = maxwidth = 0 ;
164
152
longflag = pointflag = 0 ;
153
+ #ifdef HAVE_LONG_LONG_INT_64
154
+ longlongflag = 0 ;
155
+ #endif
165
156
nextch :
166
157
ch = * format ++ ;
167
158
switch (ch )
168
159
{
169
160
case 0 :
170
161
dostr ("**end of format**" , 0 );
171
- VA_END ;
172
162
return ;
173
163
case '-' :
174
164
ljust = 1 ;
@@ -200,16 +190,13 @@ dopr(char *buffer, const char *format,...)
200
190
pointflag = 1 ;
201
191
goto nextch ;
202
192
case 'l' :
193
+ #ifdef HAVE_LONG_LONG_INT_64
203
194
if (longflag )
204
- {
205
195
longlongflag = 1 ;
206
- goto nextch ;
207
- }
208
196
else
209
- {
197
+ #endif
210
198
longflag = 1 ;
211
- goto nextch ;
212
- }
199
+ goto nextch ;
213
200
case 'u' :
214
201
case 'U' :
215
202
/* fmtnum(value,base,dosign,ljust,len,zpad) */
@@ -255,6 +242,7 @@ dopr(char *buffer, const char *format,...)
255
242
}
256
243
else
257
244
value = va_arg (args , int );
245
+
258
246
fmtnum (value , 10 , 1 , ljust , len , zpad );
259
247
break ;
260
248
case 'x' :
@@ -311,7 +299,6 @@ dopr(char *buffer, const char *format,...)
311
299
}
312
300
}
313
301
* output = 0 ;
314
- VA_END ;
315
302
}
316
303
317
304
static void
@@ -362,7 +349,7 @@ int base,
362
349
zpad ;
363
350
{
364
351
int signvalue = 0 ;
365
- #ifdef HAVE_LONG_LONG_INT_64
352
+ #ifdef HAVE_LONG_INT_64
366
353
unsigned long_long uvalue ;
367
354
#else
368
355
unsigned long uvalue ;
0 commit comments