]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/notes-mode/mkrawindex
Add notes-mode.
[gnu-emacs-elpa] / packages / notes-mode / mkrawindex
diff --git a/packages/notes-mode/mkrawindex b/packages/notes-mode/mkrawindex
new file mode 100755 (executable)
index 0000000..b1777fb
--- /dev/null
@@ -0,0 +1,92 @@
+#!/usr/bin/perl -w
+
+#
+# mkrawindex -- index notes files
+# $Id: mkrawindex,v 1.17 2007/02/24 01:25:08 johnh Exp $
+#
+# Copyright (C) 1994-2006 by John Heidemann.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+sub usage {
+    print STDOUT <<END;
+usage: $0 [-X] [file...]
+       Writes a raw index to stdout.
+
+       If no files are specified as arguments,
+       they are read from stdin.
+
+Option: -X means read the filesname from stdin rather than the command line.
+
+END
+    exit 1
+}
+
+# old implementation:
+# To make an index do:
+#    ./mkrawindex /h/local/users/johnh/STUFF/NOTES/9????? |
+#      sort -f -t# +1 +0 |
+#      sed 's:/h/local/users/johnh:~:' >index
+
+require 5.000;
+BEGIN { unshift(@INC, "/home/johnh/NOTES/BIN"); };
+use Notes;
+use NotesVars;
+
+my($files_from_stdin) = undef;
+if ($ARGV[0] eq '-X') {
+    $files_from_stdin = 1;
+    shift @ARGV;
+}
+
+&usage if ($#ARGV == 0 && $ARGV[0] eq '-?');
+
+my($opthost) = "";
+# could be localhost to have urls be file://localhost/foo instead of
+# file:///foo.
+
+#
+#
+#
+foreach (@ARGV) {
+    &add_file_to_index($_);
+}
+if ($files_from_stdin) {
+    while (<STDIN>) {
+       chomp;
+        &add_file_to_index($_);
+    };
+};
+
+exit 0;
+
+
+sub add_file_to_index {
+    my($fn) = @_;
+
+    # "cannonicalize" the filename
+    my($cannon_fn) = $fn;
+    if ($cannon_fn !~ m@^/@) {
+       $cannon_fn = $::notes{dir} . "/" . $cannon_fn;
+       $cannon_fn =~ s@^$::notes{home}@/~@;
+    };
+
+    my($n) = new Notes($fn);
+    my($subs_ref) = $n->subjects();
+    if (!defined($subs_ref)) {
+       warn "$0: no subjects for file $fn.\n";
+       return;
+    };
+    foreach (@$subs_ref) {
+       warn("$0: subject $_ in $fn has leading spaces.\n")
+           if (/^\s$/);
+       warn("$0: subject $_ in $fn has trailing spaces.\n")
+           if (/\s$/);
+       warn("$0: subject $_ in $fn has an embedded number sign---this will cause problems with prev/next entries.\n")
+           if (/\#/);
+        print "file://$opthost$cannon_fn#* $_\n";
+    };
+}