va_list args_tmp;
if( Level >= NUM_LOG_LEVELS ) return;
-
+
va_copy(args_tmp, Args);
- len = vsnprintf(NULL, 256, Format, args_tmp);
-
- //Log("len = %i", len);
+ len = vsnprintf(NULL, 0, Format, args_tmp);
#if USE_RING_BUFFER || !CACHE_MESSAGES
{
{
#define LOG_HDR_LEN (14+1+2+8+2)
char newData[ LOG_HDR_LEN + len + 2 + 1 ];
- char _ident[9];
- strncpy(_ident, Ident, 9);
- sprintf( newData, "%014lli%s [%-8s] ",
+ sprintf( newData, "%014lli%s [%-8.8s] ",
ent->Time, csaLevelCodes[Level], Ident);
strcpy( newData + LOG_HDR_LEN, ent->Data );
strcpy( newData + LOG_HDR_LEN + len, "\r\n" );
Mutex_Acquire( &glLog );
ent->Next = gLog.Tail;
- if(gLog.Head)
- gLog.Tail = ent;
- else
- gLog.Tail = gLog.Head = ent;
+ tLogEntry **pnp = (gLog.Tail ? &gLog.Tail->Next : &gLog.Head);
+ *pnp = ent;
+ gLog.Tail = ent;
ent->LevelNext = gLog_Levels[Level].Tail;
- if(gLog_Levels[Level].Head)
- gLog_Levels[Level].Tail = ent;
- else
- gLog_Levels[Level].Tail = gLog_Levels[Level].Head = ent;
+ pnp = (gLog_Levels[Level].Tail ? &gLog_Levels[Level].Tail->LevelNext : &gLog_Levels[Level].Head);
+ *pnp = ent;
+ gLog_Levels[Level].Tail = ent;
Mutex_Release( &glLog );
# endif
csaLevelColours[Entry->Level],
Entry->Time
);
- LogF("%s [%-8s] %i - %s",
+ LogF("%s [%-8s] %i - %.*s",
csaLevelCodes[Entry->Level],
Entry->Ident,
Threads_GetTID(),
+ Entry->Length,
Entry->Data
);
LogF("\x1B[0m\r\n"); // Separate in case Entry->Data is too long