183 |
return(ret); |
return(ret); |
184 |
} |
} |
185 |
|
|
186 |
char *safe_vsnprintf(char *format, va_list ap) |
char *safe_vsnprintf(int size, char *format, va_list ap) |
187 |
{ |
{ |
188 |
int size = BUFFSMALL; |
char *buffer = mallocwrapper(size+1); |
|
char *buffer = mallocwrapper(size); |
|
189 |
int result; |
int result; |
190 |
|
|
191 |
result = vsnprintf(buffer, size, format, ap); |
result = vsnprintf(buffer, size+1, format, ap); |
|
if (result >= size) |
|
|
{ |
|
|
reallocwrapper(result+1, (void *)&buffer); |
|
|
result = vsnprintf(buffer, result+1, format, ap); |
|
|
} |
|
|
|
|
192 |
return(buffer); |
return(buffer); |
193 |
} |
} |
194 |
|
|
195 |
char *safe_snprintf(char *format, ...) |
char *safe_snprintf(char *format, ...) |
196 |
{ |
{ |
197 |
va_list printfargs; |
va_list printfargs; |
198 |
char *buf; |
int size = BUFFSMALL; |
199 |
|
char *buf = mallocwrapper(size); |
200 |
|
int result; |
201 |
|
|
202 |
va_start(printfargs, format); |
va_start(printfargs, format); |
203 |
buf = safe_vsnprintf(format, printfargs); |
result = vsnprintf(buf, size, format, printfargs); |
204 |
va_end(printfargs); |
va_end(printfargs); |
205 |
|
|
206 |
|
if (result >= size) |
207 |
|
{ |
208 |
|
reallocwrapper(result+1, (void *)&buf); |
209 |
|
va_start(printfargs, format); |
210 |
|
result = vsnprintf(buf, result+1, format, printfargs); |
211 |
|
va_end(printfargs); |
212 |
|
} |
213 |
return(buf); |
return(buf); |
214 |
} |
} |
215 |
|
|