blob: 6506d8214400341a28af74760b92f6f8631fe7f1 (
plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/usr/bin/env perl
#-*- perl -*-
#
# $FML$
#
use strict;
use Carp;
use vars qw(%entity %file %used %file_in_dir);
my $entity = "include/chapters.ent";
parse($entity);
parse("book.sgml");
files();
compare();
exit 0;
sub parse
{
my ($file) = @_;
use FileHandle;
my $rh = new FileHandle $file;
if (defined $rh) {
my $buf;
while ($buf = <$rh>) {
# <!entity chapter.download SYSTEM "install/download.sgml">
if ($buf =~ /<\!entity\s+(\S+)\s+SYSTEM\s+"(\S+)">/) {
$entity{ $1 } = $2;
$file{ $2 } = $1;
}
# usual file
if ($buf =~ /\&(\S+);/) {
$used{ $1 } = 1;
my $_file = $entity{ $1 } || '';
if ($_file && -f $_file) {
parse($_file);
}
}
}
$rh->close();
}
else {
croak("cannot open \"$file\"\n");
}
}
sub files
{
for my $f (<*.sgml>, <*/*.sgml>) {
$file_in_dir{ $f } = 1;
}
}
sub compare
{
print "\n[ENTITY]\n";
for my $k (keys %entity) {
unless ($used{ $k }) {
print " NOT USED: $k\n";
}
else {
print " USED: $k\n" if 0;
}
}
print "\n[FILE]\n";
FILE:
for my $f (keys %file_in_dir) {
next FILE if $f eq 'book.sgml';
unless ($file{ $f }) {
print "NOT DEFINED: $f\n";
}
else {
print " DEFINED: $f\n" if 0;
}
}
}
|