CFLAGS=-g -O3 -Wall -Wextra -std=c99 -Isrc $(OPTFLAGS) LDFLAGS=-g -O3 -Wall -Werror SRCDIR=src DATADIR=data PROG=./stmd .PHONY: all oldtests test spec benchjs testjs all: $(SRCDIR)/case_fold_switch.c $(PROG) README.html: README.md template.html pandoc --template template.html -S -s -t html5 -o $@ $< spec: test spec.html spec.md: spec.txt perl spec2md.pl < $< > $@ spec.html: spec.md template.html pandoc --no-highlight --number-sections --template template.html -s --toc -S $< > $@ # | perl -pe 's/␣/ <\/span>/g' > $@ narrative.html: narrative.md template.html pandoc --template template.html -s -S $< -o $@ spec.pdf: spec.md template.tex specfilter.hs pandoc -s $< --template template.tex \ --filter ./specfilter.hs -o $@ --latex-engine=xelatex --toc \ --number-sections -V documentclass=report -V tocdepth=2 \ -V classoption=twosides oldtests: make -C oldtests --quiet clean all test: spec.txt perl runtests.pl $(PROG) $< testjs: spec.txt node js/test.js # perl runtests.pl js/markdown $< benchjs: node js/bench.js ${BENCHINP} $(PROG): $(SRCDIR)/main.c $(SRCDIR)/inlines.o $(SRCDIR)/blocks.o $(SRCDIR)/detab.o $(SRCDIR)/bstrlib.o $(SRCDIR)/scanners.o $(SRCDIR)/print.o $(SRCDIR)/html.o $(SRCDIR)/utf8.o $(CC) $(LDFLAGS) -o $@ $^ $(SRCDIR)/scanners.c: $(SRCDIR)/scanners.re re2c --case-insensitive -bis $< > $@ $(SRCDIR)/case_fold_switch.c: $(DATADIR)/CaseFolding-3.2.0.txt perl mkcasefold.pl < $< > $@ .PHONY: leakcheck clean fuzztest dingus upload dingus: cd js && echo "Starting dingus server at http://localhost:9000" && python -m SimpleHTTPServer 9000 leakcheck: $(PROG) cat oldtests/*/*.markdown | valgrind --leak-check=full --dsymutil=yes $(PROG) fuzztest: for i in `seq 1 10`; do \ time cat /dev/urandom | head -c 100000 | iconv -f latin1 -t utf-8 | $(PROG) >/dev/null; done update-site: spec.html narrative.html cp spec.html _site/ cp narrative.html _site/index.html cp -r js/* _site/js/ (cd _site ; git commit -a -m "Updated site for latest spec, narrative, js" ; git push; cd ..) clean: -rm test $(SRCDIR)/*.o $(SRCDIR)/scanners.c -rm -r *.dSYM -rm README.html -rm spec.md fuzz.txt spec.html =layoutgala&id=6a8c921ee1bbfd4c980ffaf2c43e5b45e452f4de'>diff
path: root/doc/bugs/Problems_with_graphviz.pm_plug-in.mdwn
blob: 9a26e505af2df9f4b9a0dd47e5d57c4da31a76f8 (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.

Here is an updated patch againt ikiwiki-2.5:

[[Applied|done]], thanks. --[[Joey]]

--- 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 (@) { #{{{