Add a newline to log messages at macro expansion
This simplifies building the log output because it means we don't have to malloc a buffer to append a newline, and we keep the atomic write property we're after. It also takes advantage of the C constant string concatenation which we already require to work to prepend the thread and pid data.
This commit is contained in:
22
src/util.c
22
src/util.c
@@ -40,32 +40,18 @@ void exit_err( const char *msg )
|
||||
}
|
||||
|
||||
|
||||
|
||||
void mylog(int line_level, const char* format, ...)
|
||||
{
|
||||
va_list argptr;
|
||||
char * format_n = NULL;
|
||||
int format_len;
|
||||
|
||||
|
||||
if (line_level < log_level) { return; }
|
||||
|
||||
/* Copy the format sideways so that we can append a "\n" to it
|
||||
* and avoid a second fprintf. This stops log lines from getting
|
||||
* interleaved.
|
||||
*/
|
||||
format_len = strlen( format );
|
||||
format_n = xmalloc( format_len + 2 );
|
||||
memcpy( format_n, format, format_len+1 );
|
||||
format_n[format_len] = '\n';
|
||||
|
||||
va_list argptr;
|
||||
|
||||
va_start(argptr, format);
|
||||
vfprintf(stderr, format_n, argptr);
|
||||
vfprintf(stderr, format, argptr);
|
||||
va_end(argptr);
|
||||
|
||||
free( format_n );
|
||||
}
|
||||
|
||||
|
||||
void* xrealloc(void* ptr, size_t size)
|
||||
{
|
||||
void* p = realloc(ptr, size);
|
||||
|
Reference in New Issue
Block a user