forked from freebsd/pkg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfix-xrefs
executable file
·63 lines (53 loc) · 1.33 KB
/
fix-xrefs
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
#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
use feature qw(switch);
require 5.10.1;
$0 =~ s@.*/@@;
MAIN:
{
my @xrefs;
my $see_also;
@xrefs =
map { ".Xr $_->[0] $_->[1]" }
sort {
( $a->[1] <=> $b->[1] )
|| ( ( $b->[0] eq 'pkg' ) <=> ( $a->[0] eq 'pkg' ) )
|| ( $a->[0] cmp $b->[0] )
}
map {
[m/^(\S+)\.(\d)$/]
} @ARGV;
eval {
for my $man (@ARGV) {
my ($match) = ( $man =~ m/^(\S+)\./ );
open READ, "<$man";
open WRITE, ">$man.new";
$see_also = undef;
while (<READ>) {
if (/^\.Sh SEE ALSO/) {
$see_also = 1;
print WRITE $_;
print WRITE join( " ,\n", grep { !m/$match / } @xrefs ),
"\n";
next;
}
if ( $see_also && /^\.Xr/ ) {
next;
}
print WRITE $_;
}
close READ;
close WRITE;
rename "$man.new", $man;
}
};
given ($@) {
when (undef) { exit 0; }
when ('') { exit 0; }
when ('open') { die "$0: open() failed -- $@\n"; }
default { die "$0: Error -- $@\n"; }
}
exit 0;
}