#!/usr/bin/perl -w use strict; # configuration my %gettext_lang = ( "German" => "../../src/po/de.po po/de.po" ); # header declaring the langages print < ) { if( $line =~ /^msgid\s+"(.*)"/ ) { $msgid = $1; } elsif( $line =~ /^msgstr\s+"(.*)"/ ) { $msgstr = $1; $gettext{"${lang}_${msgid}"} = $msgstr; } } close PO; } print <; close CONTENT; open CONTENT, "find ../../src . -name '*.c' -exec cat {} \\; | cpp -DENABLE_NLS=1 -I../../include/wolf |"; my $expanded_code = ; close CONTENT; for( ;; ) { if( !( $code =~ /wolf_log\s*\(([^\;]*)/s ) ) { last; } my $func = $1; $code = $'; AGAIN: if( !( $expanded_code =~ /wolf_log\s*\(([^\;]*)/s ) ) { exit 1; } my $expanded_func = $1; $expanded_code = $'; if( $func =~ /\s*(WOLF_LOG_[^\, ]+)\s*\,\s*(WOLF_CATEGORY_[^\, ]+)\s*\,\s*(WOLF_MSG_[^\, ]+)\s*\,\s*_\(\s*"([^"]*)/ ) { my $level = $1; my $category = $2; my $messageid = $3; my $formatstr_c = $4; # map C snprintf format to positional format my $formatstr_win = $formatstr_c; my $pos = 1; while( $formatstr_win =~ s/%[sd]/%${pos}/ ) { $pos++ }; # map the Wolf levels to windows event log severity levels my $severity; if( $level =~ /WOLF_LOG_((EMERG)|(ALERT)|(CRIT)|(ERR))/ ) { $severity = "Error"; } elsif( $level eq " WOLF_LOG_WARNING" ) { $severity = "Warning"; } else { $severity = "Informational"; } # fetch expanded message id from the CPP output my $messageid_number = 9999999; if( $expanded_func =~ /\s*(WOLF_LOG_[^\, ]+)\,\s*([\d\s\+]+)\,\s*([^\,]+)/ ) { my $expanded_messageid = $3; $messageid_number = eval $expanded_messageid; } else { goto AGAIN; } if( defined( $message_ids{$messageid} ) ) { next; } $message_ids{$messageid} = ""; print <