alloc_printf and alloc_vprintf
git-svn-id: svn://svn.berlios.de/openocd/trunk@465 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
96261e8277
commit
d9ac6b1d09
|
@ -267,7 +267,7 @@ void command_print_n(command_context_t *context, char *format, ...)
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
|
||||||
string = alloc_printf(format, ap);
|
string = alloc_vprintf(format, ap);
|
||||||
if (string != NULL)
|
if (string != NULL)
|
||||||
{
|
{
|
||||||
context->output_handler(context, string);
|
context->output_handler(context, string);
|
||||||
|
@ -284,10 +284,10 @@ void command_print(command_context_t *context, char *format, ...)
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
|
||||||
string = alloc_printf(format, ap);
|
string = alloc_vprintf(format, ap);
|
||||||
if (string != NULL)
|
if (string != NULL)
|
||||||
{
|
{
|
||||||
strcat(string, "\n"); /* alloc_printf guaranteed the buffer to be at least one char longer */
|
strcat(string, "\n"); /* alloc_vprintf guaranteed the buffer to be at least one char longer */
|
||||||
context->output_handler(context, string);
|
context->output_handler(context, string);
|
||||||
free(string);
|
free(string);
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,7 @@ void log_printf(enum log_levels level, const char *file, int line, const char *f
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
|
||||||
string = alloc_printf(format, ap);
|
string = alloc_vprintf(format, ap);
|
||||||
if (string != NULL)
|
if (string != NULL)
|
||||||
{
|
{
|
||||||
log_puts(level, file, line, function, string);
|
log_puts(level, file, line, function, string);
|
||||||
|
@ -140,10 +140,10 @@ void log_printf_lf(enum log_levels level, const char *file, int line, const char
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
|
||||||
string = alloc_printf(format, ap);
|
string = alloc_vprintf(format, ap);
|
||||||
if (string != NULL)
|
if (string != NULL)
|
||||||
{
|
{
|
||||||
strcat(string, "\n"); /* alloc_printf guaranteed the buffer to be at least one char longer */
|
strcat(string, "\n"); /* alloc_vprintf guaranteed the buffer to be at least one char longer */
|
||||||
log_puts(level, file, line, function, string);
|
log_puts(level, file, line, function, string);
|
||||||
free(string);
|
free(string);
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,7 @@ int log_remove_callback(log_callback_fn fn, void *priv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return allocated string w/printf() result */
|
/* return allocated string w/printf() result */
|
||||||
char *alloc_printf(const char *fmt, va_list ap)
|
char *alloc_vprintf(const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
/* no buffer at the beginning, force realloc to do the job */
|
/* no buffer at the beginning, force realloc to do the job */
|
||||||
char *string = NULL;
|
char *string = NULL;
|
||||||
|
@ -288,9 +288,6 @@ char *alloc_printf(const char *fmt, va_list ap)
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
ret = vsnprintf(string, size, fmt, ap_copy);
|
ret = vsnprintf(string, size, fmt, ap_copy);
|
||||||
|
|
||||||
va_end(ap_copy);
|
|
||||||
|
|
||||||
/* NB! The result of the vsnprintf() might be an *EMPTY* string! */
|
/* NB! The result of the vsnprintf() might be an *EMPTY* string! */
|
||||||
if ((ret >= 0) && ((ret + 1) < size))
|
if ((ret >= 0) && ((ret + 1) < size))
|
||||||
break;
|
break;
|
||||||
|
@ -302,3 +299,13 @@ char *alloc_printf(const char *fmt, va_list ap)
|
||||||
/* the returned buffer is by principle guaranteed to be at least one character longer */
|
/* the returned buffer is by principle guaranteed to be at least one character longer */
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *alloc_printf(const char *format, ...)
|
||||||
|
{
|
||||||
|
char *string;
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, format);
|
||||||
|
string = alloc_vprintf(format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
|
@ -67,7 +67,8 @@ typedef struct log_callback_s
|
||||||
extern int log_add_callback(log_callback_fn fn, void *priv);
|
extern int log_add_callback(log_callback_fn fn, void *priv);
|
||||||
extern int log_remove_callback(log_callback_fn fn, void *priv);
|
extern int log_remove_callback(log_callback_fn fn, void *priv);
|
||||||
|
|
||||||
char *alloc_printf(const char *fmt, va_list ap);
|
char *alloc_vprintf(const char *fmt, va_list ap);
|
||||||
|
char *alloc_printf(const char *fmt, ...);
|
||||||
|
|
||||||
extern int debug_level;
|
extern int debug_level;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue