6
6
use FindBin qw( $Bin ) ;
7
7
8
8
use File::Path qw( mkpath ) ;
9
- use File::Slurp qw( edit_file read_file ) ;
10
- use File::Which qw( which ) ;
11
9
12
10
sub main {
13
11
my $target = shift || " $Bin /.." ;
14
12
15
13
my @translators = qw ( lowdown pandoc ) ;
16
14
my $translator ;
17
15
foreach my $p (@translators ) {
18
- if ( defined which ($p ) ) {
16
+ if ( _which ($p ) ) {
19
17
$translator = $p ;
20
18
last ;
21
19
}
@@ -32,6 +30,14 @@ sub main {
32
30
_make_man( $translator , $target , ' mmdblookup' , 1 );
33
31
}
34
32
33
+ sub _which {
34
+ my $program = shift ;
35
+ for my $path ( split /:/, $ENV {PATH } ) {
36
+ return 1 if -x " $path /$program " ;
37
+ }
38
+ return 0;
39
+ }
40
+
35
41
sub _make_man {
36
42
my $translator = shift ;
37
43
my $target = shift ;
@@ -73,7 +79,11 @@ sub _make_man {
73
79
sub _make_lib_man_links {
74
80
my $target = shift ;
75
81
76
- my $header = read_file(" $Bin /../include/maxminddb.h" );
82
+ open my $header_fh , ' <' , " $Bin /../include/maxminddb.h"
83
+ or die " Failed to open header file: $! " ;
84
+ my $header = do { local $/ ; <$header_fh > };
85
+ close $header_fh or die " Failed to close header file: $! " ;
86
+
77
87
for my $proto ( $header =~ / ^ *extern.+?(MMDB_\w +)\( /gsm ) {
78
88
open my $fh , ' >' , " $target /man/man3/$proto .3"
79
89
or die " Failed to open file: $! " ;
@@ -88,13 +98,18 @@ sub _make_lib_man_links {
88
98
sub _pandoc_postprocess {
89
99
my $file = shift ;
90
100
91
- edit_file(
92
- sub {
93
- s / ^\. IP\n\. nf/ .IP "" 4\n .nf/ gm ;
94
- s / (Automatically generated by Pandoc)(.+)$/ $1 / m ;
95
- },
96
- $file ,
97
- );
101
+ open my $fh , ' <' , $file or die " Failed to open man file for reading: $! " ;
102
+ my @lines = <$fh >;
103
+ close $fh or die " Failed to close file: $! " ;
104
+
105
+ for my $line (@lines ) {
106
+ $line =~ s / ^\. IP\n\. nf/ .IP "" 4\n .nf/ gm ;
107
+ $line =~ s / (Automatically generated by Pandoc)(.+)$/ $1 / m ;
108
+ }
109
+
110
+ open $fh , ' >' , $file or die " Failed to open file for writing: $! " ;
111
+ print $fh @lines or die " Failed to write to file: $! " ;
112
+ close $fh or die " Failed to close file: $! " ;
98
113
}
99
114
100
115
main(shift );
0 commit comments