aboutsummaryrefslogtreecommitdiffstats
path: root/daemon/dest_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/dest_file.c')
-rw-r--r--daemon/dest_file.c26
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;