--- /dev/null
+#! /bin/sh
+
+set -e
+
+# Check command line.
+if test ! -d "$1" || test $# -lt 2; then
+ cat <<EOF
+$0: HTML documentation generator for Open vSwitch
+usage: $0 srcdir docfile...
+
+The VERSION environment variable should be set to the Open vSwitch version.
+Must be invoked from an Open vSwitch build directory.
+Most conveniently invoked via "make dist-docs".
+EOF
+ exit 1
+fi
+
+# Parse command line.
+srcdir=$1
+shift
+
+# Check for programs we'll need.
+search_path () {
+ save_IFS=$IFS
+ IFS=:
+ for dir in $PATH; do
+ IFS=$save_IFS
+ if test -x "$dir/$1"; then
+ return 0
+ fi
+ done
+ IFS=$save_IFS
+ echo >&2 "$0: $1 not found in \$PATH, please install and try again"
+ exit 1
+}
+search_path man
+search_path markdown
+search_path ps2pdf
+
+# Create dist-docs directory.
+distdir=dist-docs
+abs_distdir=`pwd`/dist-docs
+rm -rf $distdir
+mkdir $distdir
+
+# Install manpages.
+make install-man mandir="$abs_distdir"/man
+(cd $distdir && mv `find man -type f` . && rm -rf man)
+manpages=`cd $distdir && echo *`
+
+# Start writing index.html.
+exec 3>$distdir/index.html
+cat >&3 <<EOF
+<html><head>
+ <meta charset="UTF-8"></head>
+ <link rel="stylesheet" type="text/css" href="style.css">
+ <title>Open vSwitch $VERSION Documentation</title>
+</head><body>
+<h1>Open vSwitch $VERSION Documentation</h1>
+<h2>Documents</h2>
+<table>
+EOF
+
+# Add top-level documentation to index.html, giving it .txt extensions so
+# that the webserver doesn't serve it as Markdown and make your web browser
+# try to invoke some kind of external helper you don't have installed.
+#
+# Also translate documentation to HTML.
+for file
+do
+ title=`head -1 "$srcdir/$file"`
+ dir=$distdir/`dirname $file`; test -d "$dir" || mkdir "$dir"
+ cp "$srcdir/$file" "$distdir/$file.txt"
+ (cat <<EOF
+<html><head>
+ <meta charset="UTF-8"></head>
+ <link rel="stylesheet" type="text/css" href="style.css">
+ <title>$file (Open vSwitch $VERSION)</title>
+</head><body>
+EOF
+ markdown "$distdir/$file.txt"
+ echo "</body></html>") > "$distdir/$file.html"
+ cat <<EOF
+<tr>
+ <td>$file</td>
+ <td>$title</td>
+ <td><a href="$file.html">HTML</a>, <a href="$file.txt">plain text</a></td>
+</tr>
+EOF
+done >&3
+
+# Add header for manpages to index.html.
+cat >&3 <<EOF
+</table>
+<h2>Manpages</h2>
+<table>
+EOF
+
+# Add manpages to index.html, translating them into PDF, HTML, and plain text.
+# The HTML is just slightly marked up from the plain text version; although
+# groff supports better HTML output, on my system some of the OVS manpages
+# cause the groff HTML output engine to segfault (!).
+(cd $distdir
+ for manpage in $manpages; do
+ man -l -Tps $manpage | ps2pdf - > $manpage.pdf
+ man -l -Tutf8 $manpage | sed 's/.\b//g' > $manpage.txt
+ (echo '<html><head><meta charset="UTF-8"></head><body><pre>'
+ man -l -Tutf8 $manpage | sed '
+s/&/&/g
+s/</</g
+s/>/>/g
+s,\(.\)\b\1,<b>\1</b>,g
+s,_\b\(.\),<u>\1</u>,g'
+ echo '</pre></body></html>'
+ ) > $manpage.html
+
+ name=`echo $manpage | sed 's/\.\([0-9]\)$/(\1)/'`
+ echo " <tr><td>$name</td><td><a href=\"$manpage.pdf\">PDF</a>, <a href=\"$manpage.html\">HTML</a>, <a href=\"$manpage.txt\">plain text</a></td></tr>"
+ done
+) >&3
+cat >&3 <<EOF
+</table>
+</body></html>
+EOF
+
+# Create CSS style file.
+cat >$distdir/style.css <<'EOF'
+div { vertical-align:top; }
+p {
+ vertical-align:baseline;
+}
+a {
+ text-decoration: none;
+ font-weight: 700;
+}
+a:hover {
+ color:#444;
+}
+a:visited {
+ color:#447099;
+}
+a:link {
+ color:#447099;
+}
+
+body {
+ font-family: Arial,Helvetica,sans-serif;
+ font-size: 14px;
+ line-height: 1.5em;
+ color: #444;
+ background-color:#f5f5f5;
+}
+EOF