chiark / gitweb /
Automatically rescan when a filesystem is mounted or unmounted.
[disorder] / scripts / htmlman
index 21452dce500c0df6a45e6cba9ff887befc6ecd34..5290d1bf70373d0e8d5b9e2a9c618aff1191b4b1 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 #
 # This file is part of DisOrder
-# Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
+# Copyright (C) 2004, 2005, 2007, 2008, 2010 Richard Kettlewell
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 set -e
 
 stdhead=false
+extension="html"
 
 while test $# -gt 0; do
   case "$1" in
   -stdhead )
     stdhead=true
     ;;
+  -extension )
+    shift
+    extension=$1
+    ;;
+  -- )
+    shift
+    break
+    ;;
   -* )
     echo >&2 "ERROR: unknown option $1"
     exit 1
     ;;
   * )
     break
+    ;;
   esac
   shift
 done
 
-title=$(basename $1)
-
-echo "<html>"
-echo " <head>"
-if $stdhead; then
-  echo "@quiethead@#"
-fi
-echo "  <title>$title</title>"
-echo " </head>"
-echo " <body>"
-if $stdhead; then
-  echo "@stdmenu{}@#"
-fi
-printf "   <pre class=manpage>"
-# this is kind of painful using only BREs
-nroff -Tascii -man "$1" | ${GNUSED} \
-                      '1d;$d;
-                       1,/./{/^$/d};
-                       s/&/\&amp;/g;
-                       s/</\&lt;/g;
-                       s/>/\&gt;/g;
-                       s/@/\&#64;/g;
-                       s!\(.\)\b\1!<b>\1</b>!g;
-                       s!\(&[#0-9a-z][0-9a-z]*;\)\b\1!<b>\1</b>!g;
-                       s!_\b\(.\)!<i>\1</i>!g;
-                       s!_\b\(&[#0-9a-z][0-9a-z]*;\)!<i>\1</i>!g;
-                       s!</\([bi]\)><\1>!!g'
-echo "</pre>"
-if $stdhead; then
-  echo "@credits"
-fi
-echo " </body>"
-echo "</html>"
+for page; do
+  title=$(basename $page)
+  output=$(basename $page).$extension
+  echo "$page -> $output" >&2
+  exec > $output.new
+  echo "<html>"
+  echo " <head>"
+  if $stdhead; then
+    echo "@quiethead@#"
+  fi
+  echo "  <title>$title</title>"
+  echo " </head>"
+  echo " <body>"
+  if $stdhead; then
+    echo "@stdmenu{}@#"
+  fi
+  printf "   <pre class=manpage>"
+  # this is kind of painful using only BREs
+  nroff -Tascii -man "$page" | ${GNUSED} \
+                        '1d;$d;
+                         1,/./{/^$/d};
+                         s/&/\&amp;/g;
+                         s/</\&lt;/g;
+                         s/>/\&gt;/g;
+                         s/@/\&#64;/g;
+                         s!\(.\)\b\1!<b>\1</b>!g;
+                         s!\(&[#0-9a-z][0-9a-z]*;\)\b\1!<b>\1</b>!g;
+                         s!_\b\(.\)!<i>\1</i>!g;
+                         s!_\b\(&[#0-9a-z][0-9a-z]*;\)!<i>\1</i>!g;
+                         s!</\([bi]\)><\1>!!g'
+  echo "</pre>"
+  if $stdhead; then
+    echo "@credits"
+  fi
+  echo " </body>"
+  echo "</html>"
+  mv $output.new $output
+done