diff options
Diffstat (limited to '')
-rw-r--r-- | daemon/conf.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/daemon/conf.c b/daemon/conf.c index 78f95c2..9be1c18 100644 --- a/daemon/conf.c +++ b/daemon/conf.c @@ -679,11 +679,9 @@ parsed: * create_conversion_descriptors * * helper function for resolve_logpaths; - * creates charset conversion descriptors for message and program name */ static void create_conversion_descriptors( struct logpath* logpath ) { - /* create message charset conversion descriptor */ if( logpath->source->encoding || logpath->destination->encoding ) { char *source_encoding = logpath->source->encoding? @@ -693,8 +691,8 @@ static void create_conversion_descriptors( struct logpath* logpath ) if( strcasecmp( source_encoding, destination_encoding ) != 0 ) { - logpath->message_cd = g_iconv_open( destination_encoding, source_encoding ); - if( logpath->message_cd == (GIConv) -1 ) + logpath->src2dest_cd = g_iconv_open( destination_encoding, source_encoding ); + if( logpath->src2dest_cd == (GIConv) -1 ) { ERR( "Cannot convert messages from %s to %s\n", source_encoding, destination_encoding ); @@ -706,9 +704,23 @@ static void create_conversion_descriptors( struct logpath* logpath ) source_encoding, destination_encoding ); } } + + if( strcasecmp( "ASCII", destination_encoding ) != 0 ) + { + logpath->ascii2dest_cd = g_iconv_open( destination_encoding, source_encoding ); + if( logpath->ascii2dest_cd == (GIConv) -1 ) + { + ERR( "Cannot convert messages from ASCII to %s\n", destination_encoding ); + } + else + { + TRACE( "Log path %s-%s: converting messages from ASCII to %s\n", + logpath->source->name, logpath->destination->name, + destination_encoding ); + } + } } - /* create charset conversion descriptor for program name */ if( logpath->source->encoding ) { const gchar *destination_encoding; @@ -717,15 +729,15 @@ static void create_conversion_descriptors( struct logpath* logpath ) if( strcasecmp( logpath->source->encoding, destination_encoding ) != 0 ) { - logpath->program_cd = g_iconv_open( destination_encoding, logpath->source->encoding ); - if( logpath->program_cd == (GIConv) -1 ) + logpath->src2locale_cd = g_iconv_open( destination_encoding, logpath->source->encoding ); + if( logpath->src2locale_cd == (GIConv) -1 ) { - ERR( "Cannot convert program names from %s to %s\n", + ERR( "Cannot convert locale parts from %s to %s\n", logpath->source->encoding, destination_encoding ); } else { - TRACE( "Log path %s-%s: converting program name from %s to %s\n", + TRACE( "Log path %s-%s: converting locale parts from %s to %s\n", logpath->source->name, logpath->destination->name, logpath->source->encoding, destination_encoding ); } @@ -752,8 +764,9 @@ static void resolve_logpaths() g_free( logpath ); logpath = g_malloc( sizeof(struct logpath) ); - logpath->message_cd = (GIConv) -1; - logpath->program_cd = (GIConv) -1; + logpath->src2dest_cd = (GIConv) -1; + logpath->ascii2dest_cd = (GIConv) -1; + logpath->src2locale_cd = (GIConv) -1; /* find source */ for( item = sources; item; item = item->next ) |