diff options
Diffstat (limited to 'daemon/dest_file.c')
-rw-r--r-- | daemon/dest_file.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/daemon/dest_file.c b/daemon/dest_file.c index ef28062..f08cedb 100644 --- a/daemon/dest_file.c +++ b/daemon/dest_file.c @@ -67,8 +67,10 @@ static gboolean compare_current_and_first_messages( struct file_writer* writer ) { TRACE_ENTER( "%p\n", writer ); - if( strcmp( writer->current_msg->hostname, writer->first_msg->hostname ) - || strcmp( writer->current_msg->message, writer->first_msg->message ) ) + if( string_compare( writer->current_msg->hostname, + writer->first_msg->hostname ) + || string_compare( writer->current_msg->message, + writer->first_msg->message ) ) { release_message( writer->first_msg ); writer->first_msg = NULL; @@ -173,13 +175,15 @@ check_hold_time: static void write_message_to_logfile( struct file_writer* writer, struct message** msg ) { gchar *buffer; + gsize len; DWORD written; if( INVALID_HANDLE_VALUE == writer->fd ) return; - TRACE_2( "%p: %s\n", writer, (*msg)->message ); - buffer = g_strconcat( (*msg)->timestamp, " ", (*msg)->hostname, " ", (*msg)->message, "\n", NULL ); - WriteFile( writer->fd, buffer, strlen( buffer ), &written, NULL ); + TRACE_2( "%p: %s\n", writer, (*msg)->message->gstr->str ); + len = string_concat( &buffer, (*msg)->timestamp, space, (*msg)->hostname, + space, (*msg)->message, line_feed, NULL ); + WriteFile( writer->fd, buffer, len, &written, NULL ); g_free( buffer ); release_message( *msg ); *msg = NULL; @@ -209,7 +213,7 @@ static void flush_coalescer( struct file_writer* writer ) size = snprintf( buffer, sizeof(buffer), "%s %2d %02d:%02d:%02d %s syslog: last message repeated %d times\n", str_month[ stm.wMonth - 1 ], stm.wDay, stm.wHour, stm.wMinute, stm.wSecond, - local_hostname, + local_hostname->gstr->str, writer->coalesce_count - 1 ); WriteFile( writer->fd, buffer, size, &written, NULL ); TRACE_2( "%p made informational message\n", writer ); @@ -463,9 +467,9 @@ static void make_file_name( char* pattern, struct message* message, char* buffer case 'f': dest += sprintf( dest, "%d", message->facility ); break; case 'L': dest += sprintf( dest, "%s", get_priority_name( message->priority ) ); break; case 'l': dest += sprintf( dest, "%d", message->priority ); break; - case 'H': dest += sprintf( dest, "%s", message->hostname ); break; - case 'h': dest += sprintf( dest, "%s", message->sender ); break; - case 'P': dest += sprintf( dest, "%s", message->program ); break; + case 'H': dest += sprintf( dest, "%s", message->hostname->gstr->str ); break; + case 'h': dest += sprintf( dest, "%s", message->sender->gstr->str ); break; + case 'P': dest += sprintf( dest, "%s", message->program->gstr->str ); break; default: *dest++ = c; break; } } @@ -485,7 +489,9 @@ static void put_message_to_file_dest( struct destination* destination, struct me TRACE_ENTER( "msg=%p, destination=%s\n", msg, destination->name ); make_file_name( destination->u.file.name_pattern, msg, file_name ); EnterCriticalSection( &extra->cs_file_writers ); - /* find existing writer */ + /* find existing writer + FIXME: could we do this better? + */ for( writer = NULL, item = extra->file_writers; item; item = item->next ) { struct file_writer *w = item->data; |