fixed escaping handling and added direct links to bugzilla report for bug

* doc/ChangeLog.awk doc/ChangeLog.xsl: fixed escaping
  handling and added direct links to bugzilla report for
  bug numbers.
Daniel
diff --git a/ChangeLog b/ChangeLog
index 85bf1da..fbb9e2f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun May 16 01:07:16 CEST 2004 Daniel Veillard <daniel@veillard.com>
+
+	* doc/ChangeLog.awk doc/ChangeLog.xsl: fixed escaping
+	  handling and added direct links to bugzilla report for
+	  bug numbers.
+
 Sun May 16 11:11:13 HKT 2004 William Brack <wbrack@mmm.com.hk>
 
 	* error.c: modified to assure proper user data is sent to
diff --git a/doc/ChangeLog.awk b/doc/ChangeLog.awk
index 9a4cfb6..eb0db03 100755
--- a/doc/ChangeLog.awk
+++ b/doc/ChangeLog.awk
@@ -1,4 +1,12 @@
 #!/bin/awk -f
+function translate(str) {
+    while (sub(/&/, "#amp;", str) == 1);
+    while (sub(/#amp;/, "\\&amp;", str) == 1); # fun isn't it ?
+    while (sub(/</, "\\&lt;", str) == 1);
+    while (sub(/>/, "\\&gt;", str) == 1);
+    sub(/[0-9][0-9][0-9][0-9][0-9]+/, "<bug number='&'/>", str)
+    return(str)
+}
 BEGIN         { 
 		nb_entry = 0
                 in_entry = 0
@@ -7,14 +15,14 @@
 		print "<log>"
 	      }
 END           {
-                if (in_item == 1)  printf("%s</item>\n", item)
+                if (in_item == 1)  printf("%s</item>\n", translate(item))
                 if (in_entry == 1) print "  </entry>"
                 print "</log>"
 	      }
 /^[ \t]*$/    { next }
 /^[A-Za-z0-9]/ { 
                 match($0, "\(.*\) \([A-Z]+\) \([0-9][0-9][0-9][0-9]\) \(.*\) <\(.*\)>", loge)
-                if (in_item == 1)  printf("%s</item>\n", item)
+                if (in_item == 1)  printf("%s</item>\n", translate(item))
                 if (in_entry == 1) print "  </entry>"
 		nb_entry = nb_entry + 1
 		if (nb_entry > 50) {
@@ -27,7 +35,7 @@
 		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]*\*/   {
-                if (in_item == 1)  printf("%s</item>\n", item)
+                if (in_item == 1)  printf("%s</item>\n", translate(item))
                 in_item = 1
 		printf("    <item>")
                 match($0, "[ \t]*. *\(.*\)", loge)
diff --git a/doc/ChangeLog.xsl b/doc/ChangeLog.xsl
index be44abe..a19c3a1 100644
--- a/doc/ChangeLog.xsl
+++ b/doc/ChangeLog.xsl
@@ -39,8 +39,13 @@
     </ul>
   </xsl:variable>
 
+  <xsl:template match="bug">
+    <a href="http://bugzilla.gnome.org/show_bug.cgi?id={@number}">
+    <xsl:value-of select="@number"/></a>
+  </xsl:template>
+  
   <xsl:template match="item">
-    <li><xsl:value-of select="."/></li>
+    <li><xsl:apply-templates/></li>
   </xsl:template>
 
   <xsl:template match="entry">