two "-slides" bugs and one fix

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've been using the "-slides" option in tidy8jul00 the last few days and
I've come across two bugs.

The first bug is that Tidy will segfault if there is no <BODY> level
content before the first <H2> marker.  Try it yourself and see.  I use the
following tidy.conf file:

wrap: 80
wrap-attibutes: no
markup: yes
quote-ampersand: no
break-before-br: yes
uppercase-tags: yes
uppercase-attributes: yes
char-encoding: latin1
tidy-mark: no
doctype: strict
enclose-text: yes
new-inline-tags: blink

on the following test.html file:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<TITLE>tidy -slides test page</TITLE>
</HEAD>
<BODY>

<H2>Subtitle A</H2>

<P>Some text about "A".</P>

<H2>Subtitle B</H2>

<P>Some text about "B".</P>
</BODY>
</HTML>

"tidy -slides test.html" segfaults.

If you put some content between <BODY> and <H2>, Tidy will work just fine.

I am running SuSE6.4 Linux 2.2.14 - i586.


The second bug (actually a buglet) is that slides are not numbered in
zero-padded format.  This is not a problem if you have less than 9 slides
or you are not using scripts to extract information out of the resulting
slide files, but if you have 85 slides and you want to construct a table
of contents, it is annoying that "39" comes before "4" in file listings.

I ran the following two lines on pprint.c:

perl -i -p -e 's/slide1.html/slide001.html/' pprint.c
perl -i -p -e 's/slide%d.html/slide%03d.html/' pprint.c

and now I won't have any problems unless I have more than one thousand
slides (heaven forbid!).  Running diff -u1 gives the following patch:

diff -u1 tidy8jul00/pprint.c tidy/pprint.c
- --- tidy8jul00/pprint.c	Sat Jul  8 20:24:07 2000
+++ tidy/pprint.c	Mon Jul 31 13:14:35 2000
@@ -1566,3 +1566,3 @@
     {
- -        sprintf(buf, "<a href=\"slide%d.html\">previous</a> | ", slide-1);
+        sprintf(buf, "<a href=\"slide%03d.html\">previous</a> | ", slide-1);
         PPrintString(fout, indent , buf);
@@ -1571,5 +1571,5 @@
         if (slide < count)
- -            PPrintString(fout, indent , "<a href=\"slide1.html\">start</a> | ");
+            PPrintString(fout, indent , "<a href=\"slide001.html\">start</a> | ");
         else
- -            PPrintString(fout, indent , "<a href=\"slide1.html\">start</a>");
+            PPrintString(fout, indent , "<a href=\"slide001.html\">start</a>");
 
@@ -1580,3 +1580,3 @@
     {
- -        sprintf(buf, "<a href=\"slide%d.html\">next</a>", slide+1);
+        sprintf(buf, "<a href=\"slide%03d.html\">next</a>", slide+1);
         PPrintString(fout, indent , buf);
@@ -1600,3 +1600,3 @@
     /* insert div for onclick handler */
- -    sprintf(buf, "<div onclick=\"document.location='slide%d.html'\">",
+    sprintf(buf, "<div onclick=\"document.location='slide%03d.html'\">",
                     (slide < count ? slide + 1 : 1));
@@ -1730,3 +1730,3 @@
     {
- -        sprintf(buf, "slide%d.html", slide);
+        sprintf(buf, "slide%03d.html", slide);
         out.state = FSM_ASCII;
@@ -1751,3 +1751,3 @@
     {
- -        sprintf(buf, "slide%d.html", slide);
+        sprintf(buf, "slide%03d.html", slide);
 

If you are curious to see what one of these slide shows looks like, check
out http://www.multimania.com/rossen/australia/slide001.html.  Note that
the table of contents was constructed and inserted into the first slide
using a script, not Tidy.


A philosophical question for Dave:
Wouldn't it be better to have the "-slides" function in it's own little
program (like the tab2space utility)?  It doesn't have much to do with
making HTML tidy...


Cheers,

Erik Rossen                         ^
rossen@freesurf.ch                 /e\
http://www.multimania.com/rossen   ---   GPG key ID: 2935D0B9


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.0 (GNU/Linux)
Comment: Made with pgp4pine 1.75

iD8DBQE5h8rhY88aPik10LkRArDgAJ9UjyWOP34M0eAvUjvLGEDagMATPwCeIVzF
eTtbLifwS5gpQGfb0BVElqI=
=N3Mk
-----END PGP SIGNATURE-----

Received on Wednesday, 2 August 2000 03:47:32 UTC