1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# usage: awk -f inc.awk *.html
function nodot(name) {
if(name ~ /^\.\//){
name=substr(name,3);
}
return name;
}
BEGIN {
for(i=1;i<ARGC;i++){
files[nodot(ARGV[i])] = 1;
}
}
/<title>/ {
match($0, /<title>.*<\/title>/);
t=substr($0,RSTART+7,RLENGTH-7-8);
match(t, / — /);
title[nodot(FILENAME)]=substr(t,1,RSTART-1);
}
/<a href=/ {
if(match($0, /<a href="[a-zA-Z0-9].*\.html">/)){
l=substr($0,RSTART+9,RLENGTH-9-2);
incoming[l,nodot(FILENAME)]=1;
if(!(l in files)) {
printf("warning: redlink '%s' in '%s'\n", l, nodot(FILENAME));
}
}
}
END {
for(kv in incoming){
split(kv,f,SUBSEP);
split(f[1],fbase,".");
fname=fbase[1] "-inc.htm";
if(lastname!=fname){
if(lastname!=""){
printf "</ul>\n" >> lastname;
}
lastname=fname;
print "<ul>" > fname;
}
printf("\t<li><a href=\"%s\">%s</a></li>\n",f[2],title[f[2]]) >> fname;
}
printf "</ul>\n" >> lastname;
}
|