2004-05-16 00:15:10 +00:00
#!/bin/awk -f
2004-05-16 05:06:59 +00:00
function translate ( str ) {
while ( sub ( /&/ , "#amp;" , str ) == 1 ) ;
while ( sub ( /#amp;/ , "\\&" , str ) == 1 ) ; # fun isn't it ?
while ( sub ( /</ , "\\<" , str ) == 1 ) ;
while ( sub ( />/ , "\\>" , str ) == 1 ) ;
sub ( /[0-9][0-9][0-9][0-9][0-9]+/ , "<bug number='&'/>" , str )
return ( str )
}
2004-05-16 00:15:10 +00:00
BEGIN {
nb_entry = 0
in_entry = 0
in_item = 0
2004-05-16 00:34:22 +00:00
print "<?xml version='1.0' encoding='ISO-8859-1'?>"
2004-05-16 00:15:10 +00:00
print "<log>"
}
END {
2004-05-16 05:06:59 +00:00
if ( in_item == 1 ) printf ( "%s</item>\n" , translate ( item ) )
2004-05-16 00:15:10 +00:00
if ( in_entry == 1 ) print " </entry>"
print "</log>"
}
/^[ \t]*$/ { next }
2004-05-16 01:08:06 +00:00
/^[A-Za-z0-9]/ {
2004-05-16 00:15:10 +00:00
match ( $ 0 , "\(.*\) \([A-Z]+\) \([0-9][0-9][0-9][0-9]\) \(.*\) <\(.*\)>" , loge )
2004-05-16 05:06:59 +00:00
if ( in_item == 1 ) printf ( "%s</item>\n" , translate ( item ) )
2004-05-16 00:15:10 +00:00
if ( in_entry == 1 ) print " </entry>"
nb_entry = nb_entry + 1
if ( nb_entry > 50 ) {
in_entry = 0
in_item = 0
exit
}
in_entry = 1
in_item = 0
printf ( " <entry date='%s' timezone='%s' year='%s'\n who='%s' email='%s'>\n" , loge [ 1 ] , loge [ 2 ] , loge [ 3 ] , loge [ 4 ] , loge [ 5 ] )
}
/^[ \t]*\*/ {
2004-05-16 05:06:59 +00:00
if ( in_item == 1 ) printf ( "%s</item>\n" , translate ( item ) )
2004-05-16 00:15:10 +00:00
in_item = 1
printf ( " <item>" )
match ( $ 0 , "[ \t]*. *\(.*\)" , loge )
item = loge [ 1 ]
}
/^[ \t]*[a-zA-Z0-9\#]/ {
if ( in_item == 1 ) {
match ( $ 0 , "[ \t]*\(.*\)[ \t]*" , loge )
item = sprintf ( "%s %s" , item , loge [ 1 ] )
}
}