- cleanup and remove time() warning
git-svn-id: svn://svn.berlios.de/openocd/trunk@299 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
a32de76d61
commit
a2595950c7
|
@ -40,8 +40,8 @@ static logCallback callback;
|
||||||
|
|
||||||
void log_setCallback(logCallback c, void *p)
|
void log_setCallback(logCallback c, void *p)
|
||||||
{
|
{
|
||||||
callback=c;
|
callback = c;
|
||||||
privData=p;
|
privData = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *log_strings[4] =
|
static char *log_strings[4] =
|
||||||
|
@ -54,7 +54,7 @@ static char *log_strings[4] =
|
||||||
|
|
||||||
void log_printf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...)
|
void log_printf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...)
|
||||||
{
|
{
|
||||||
static int count=0;
|
static int count = 0;
|
||||||
count++;
|
count++;
|
||||||
va_list args;
|
va_list args;
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
|
@ -65,26 +65,22 @@ void log_printf(enum log_levels level, const char *file, int line, const char *f
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
vsnprintf(buffer, 512, format, args);
|
vsnprintf(buffer, 512, format, args);
|
||||||
|
|
||||||
char *f=strrchr(file, '/');
|
char *f = strrchr(file, '/');
|
||||||
if (f!=NULL)
|
if (f != NULL)
|
||||||
file=f+1;
|
file = f + 1;
|
||||||
|
|
||||||
fprintf(log_output, "%s %d %d %s:%d %s(): %s\n", log_strings[level], count, time(NULL), file, line, function, buffer);
|
fprintf(log_output, "%s %d %ld %s:%d %s(): %s\n", log_strings[level], count, time(NULL), file, line, function, buffer);
|
||||||
fflush(log_output);
|
fflush(log_output);
|
||||||
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
/* Never forward LOG_DEBUG, too verbose and they can be found in the log if need be */
|
/* Never forward LOG_DEBUG, too verbose and they can be found in the log if need be */
|
||||||
if (callback&&(level<=LOG_INFO))
|
if (callback && (level <= LOG_INFO))
|
||||||
|
|
||||||
{
|
{
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
|
||||||
callback(privData, file, line, function, format, args);
|
callback(privData, file, line, function, format, args);
|
||||||
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* change the current debug level on the fly
|
/* change the current debug level on the fly
|
||||||
|
@ -151,26 +147,29 @@ int log_init(struct command_context_s *cmd_ctx)
|
||||||
|
|
||||||
int set_log_output(struct command_context_s *cmd_ctx, FILE *output)
|
int set_log_output(struct command_context_s *cmd_ctx, FILE *output)
|
||||||
{
|
{
|
||||||
log_output=output;
|
log_output = output;
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return allocated string w/printf() result */
|
/* return allocated string w/printf() result */
|
||||||
char *allocPrintf(const char *fmt, va_list ap)
|
char *allocPrintf(const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
char *string=NULL;
|
char *string = NULL;
|
||||||
int size=0; // start by 0 to exercise all the code paths. Need minimum 2 bytes to fit 1 char and 0 terminator.
|
|
||||||
int first=1;
|
/* start by 0 to exercise all the code paths. Need minimum 2 bytes to
|
||||||
|
* fit 1 char and 0 terminator. */
|
||||||
|
int size = 0;
|
||||||
|
int first = 1;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if ((string==NULL)||(!first))
|
if ((string == NULL) || (!first))
|
||||||
{
|
{
|
||||||
size=size*2+2;
|
size = size * 2 + 2;
|
||||||
char *t=string;
|
char *t = string;
|
||||||
string=realloc(string, size);
|
string = realloc(string, size);
|
||||||
if (string==NULL)
|
if (string == NULL)
|
||||||
{
|
{
|
||||||
if (t!=NULL)
|
if (t != NULL)
|
||||||
free(t);
|
free(t);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -178,12 +177,12 @@ char *allocPrintf(const char *fmt, va_list ap)
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
ret = vsnprintf(string, size, fmt, ap);
|
ret = vsnprintf(string, size, fmt, ap);
|
||||||
// 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))
|
||||||
{
|
{
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
// there was just enough or not enough space, allocate more.
|
/* there was just enough or not enough space, allocate more. */
|
||||||
first=0;
|
first = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,6 @@ extern int debug_level;
|
||||||
log_printf (LOG_ERROR, __FILE__, __LINE__, __FUNCTION__, expr); \
|
log_printf (LOG_ERROR, __FILE__, __LINE__, __FUNCTION__, expr); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
|
||||||
/* general failures
|
/* general failures
|
||||||
* error codes < 100
|
* error codes < 100
|
||||||
*/
|
*/
|
||||||
|
@ -84,5 +83,4 @@ extern int debug_level;
|
||||||
|
|
||||||
char *allocPrintf(const char *fmt, va_list ap);
|
char *allocPrintf(const char *fmt, va_list ap);
|
||||||
|
|
||||||
|
|
||||||
#endif /* LOG_H */
|
#endif /* LOG_H */
|
||||||
|
|
Loading…
Reference in New Issue