summaryrefslogtreecommitdiff
path: root/doc/bugs/Problems_with_graphviz.pm_plug-in.mdwn
blob: 1ec3e32bceb5f2cd064ff25e5d4553878b221759 (plain)

The graphviz.pm plug-in currently attempts to read PNG data in UTF-8 mode, which sometimes fail with a message similar to the following (depending on the input):

utf8 "\x89" does not map to Unicode at /usr/local/lib/perl5/site_perl/5.8.8/IkiWiki/Plugin/graphviz.pm line 53, <IN> chunk 1.
Wide character in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.8/IkiWiki/Plugin/graphviz.pm line 68.

Ok, will remove the binmode IN then. done --[[Joey]]

Thanks --[[HenrikBrixAndersen]]

It also generates image URLs relative to the page being rendered, which means the URLs wont work when previewing a graph from the CGI script.

You seem to be using an old version of ikiwiki, these preview isues have been fixed for some time, and the code doesn't look like what you patch in your second hunk. --[[Joey]]

I have just tested ikiwiki-2.5. The code in question still looks the same, and the patch is still needed for making the graphviz plug-in work in preview mode here.

No, the relevant code is just above the bit you patched. Notice that in preview mode, it returns an img tag with the graphviz drawing embedded in it, using base64 encoding. Unless you can show me why that doesn't work, I still think this bug is done. --[[Joey]]

Here is an updated patch againt ikiwiki-2.5:

--- IkiWiki/Plugin/graphviz.pm.orig	2007-07-27 11:35:05.000000000 +0200
+++ IkiWiki/Plugin/graphviz.pm	2007-07-27 11:36:02.000000000 +0200
@@ -69,7 +69,12 @@ sub render_graph (\%) { #{{{
 		}
 	}
 
-	return "<img src=\"".urlto($dest, $params{page})."\" />\n";
+	if ($params{preview}) {
+		return "<img src=\"".urlto($dest, "")."\" />\n";
+	}
+	else {
+		return "<img src=\"".urlto($dest, $params{page})."\" />\n";
+	}
 } #}}}
 
 sub graph (@) { #{{{

--[[HenrikBrixAndersen]]

The patch below fixes these two issues.

--- graphviz.pm.orig	Thu Jun  7 15:45:16 2007
+++ graphviz.pm	Fri Jun  8 12:03:38 2007
@@ -41,7 +41,6 @@ sub render_graph (\%) { #{{{
 		$pid=open2(*IN, *OUT, "$params{prog} -Tpng");
 
 		# open2 doesn't respect "use open ':utf8'"
-		binmode (IN, ':utf8');
 		binmode (OUT, ':utf8');
 
 		print OUT $src;
@@ -70,7 +69,12 @@ sub render_graph (\%) { #{{{
 		}
 	}
 
-	return "<img src=\"".urlto($dest, $params{page})."\" />\n";
+	if ($params{preview}) {
+		return "<img src=\"".urlto($dest, "")."\" />\n";
+	}
+	else {
+		return "<img src=\"".urlto($dest, $params{page})."\" />\n";
+	}
 } #}}}
 
 sub graph (@) { #{{{