diff --git a/.gitattributes b/.gitattributes
index 38369dbb392b55fcde745b06f789da3fc89a9cbb..11ef302f357ed2b3d46bd2c67c992e7b582f2eb9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -25,6 +25,7 @@ testfont binary
 /bin/mkpeep.pike foreign_ident
 /bin/mkwmml.pike foreign_ident
 /bin/pikedoc.pike foreign_ident
+/bin/pikedoc2.pike foreign_ident
 /bin/test_pike.pike foreign_ident
 /lib/master.pike.in foreign_ident
 /lib/modules/ADT.pmod/Table.pmod foreign_ident
diff --git a/bin/pikedoc2.pike b/bin/pikedoc2.pike
new file mode 100755
index 0000000000000000000000000000000000000000..03a2559ed7732fda1bcadf4a72888ced1a2ff8e4
--- /dev/null
+++ b/bin/pikedoc2.pike
@@ -0,0 +1,53 @@
+#!/usr/local/bin/pike
+/*
+ * $Id: pikedoc2.pike,v 1.1 1999/07/08 21:57:23 grubba Exp $
+ *
+ * Pike-doc extractor mk II
+ *
+ * Henrik Grubbström 1999-07-08
+ */
+
+/* Load spider. */
+#if constant(spider)
+#endif /* constant(spider) */
+
+string _extract_pikedoc(string tag, mapping attrs, string contents,
+			mapping res)
+{
+  /* NOTE: Drop the first line. */
+  array(string) s = (contents/"\n")[1..];
+  int i;
+
+  for(i=0; i < sizeof(s); i++) {
+    int j = search(s[i], "*:");
+
+    if (j >= 0) {
+      s[i] = s[i][j+2..];
+      if (sizeof(s[i]) && (s[i][0] == ' ')) {
+	s[i] = s[i][1..];
+      }
+    }
+  }
+
+  res->res += s*"\n" + "\n";
+
+  return("");
+}
+
+string extract_pikedoc(string input)
+{
+  mapping res = (["res":""]);
+
+  parse_html(input, ([]), (["pikedoc":_extract_pikedoc]), res);
+
+  return(res->res);
+}
+
+int main(int argc, array(string) argv)
+{
+  string raw = Stdio.stdin->read();
+
+  write(extract_pikedoc(raw));
+
+  return(0);
+}