Merge from vendor branch GROFF:
[dragonfly.git] / tools / tools / html-mv / html-mv
1 #!/bin/sh
2
3 # Copyright (c) 1997 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
4 # All rights reserved.
5 #
6 # rename sgml/html generated file names to human readable file names
7
8 # $ cd FAQ
9 # $ make FORMATS=html
10 # $ html-mv FAQ
11 # $ ls
12 # FAQ_ACKNOWLEDGMENTS.html
13 # FAQ_Any_restrictions_on_how_I_divide_the_disk_up_.html
14 # FAQ_Are_there_any_Database_systems_for_FreeBSD_.html
15 # FAQ_Are_there_any_commercial_high-performance_X_servers_.html
16 # FAQ_Books_on_FreeBSD.html
17 # FAQ_Can_FreeBSD_handle_multiport_serial_cards_sharing_irqs_.html
18 # [...]
19
20 # $FreeBSD: src/tools/tools/html-mv/html-mv,v 1.2 1999/08/28 00:54:26 peter Exp $
21 # $DragonFly: src/tools/tools/html-mv/Attic/html-mv,v 1.2 2003/06/17 04:29:11 dillon Exp $
22
23 case $# in 0)
24         echo "usage `basename $0` file"
25         exit 1
26 esac
27
28 file=$1; export file
29
30 if [ -f "$file.html" ]; then :
31 else
32         echo "$file.html does not exist"
33         exit 1
34 fi
35
36 # search for title name
37 egrep -i '^<title' $file[1-9]*.html |
38         perl -npe 's/<TITLE>[\*\s]*//; s%\s*</TITLE>.*%%;
39                    s/[^a-zA-Z0-9\_\-\.:\n]/_/g' > .list
40
41 # create sed commands
42 awk -F: '{print "s/" $1 "/'$file'_" $2 ".html/g;"}' .list > .sed
43
44 # create mv(1) shell script
45 perl -ne 'chop;($a,$b)=split(/:/); 
46               print qq[rename ("$a", "$ENV{'file'}_$b.html") || ] .
47                     qq[die "rename $a $ENV{'file'}_$b.html:\$\!";\n]' .list > .mv
48
49 # replace links
50 if [ -f "$file.ln" ]; then
51         perl -i -p .sed $file.ln
52 fi
53
54 # replace links
55 perl -i -p .sed $file*.html
56
57 # rename file names
58 perl .mv
59
60 rm -f .mv .sed .list