aboutsummaryrefslogtreecommitdiff
path: root/util/mkpod2html.pl
diff options
context:
space:
mode:
Diffstat (limited to 'util/mkpod2html.pl')
-rwxr-xr-xutil/mkpod2html.pl61
1 files changed, 61 insertions, 0 deletions
diff --git a/util/mkpod2html.pl b/util/mkpod2html.pl
new file mode 100755
index 000000000000..cc2ab9d32a61
--- /dev/null
+++ b/util/mkpod2html.pl
@@ -0,0 +1,61 @@
+#! /usr/bin/env perl
+# Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License"). You may not use
+# this file except in compliance with the License. You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+use strict;
+use warnings;
+
+use lib ".";
+use Getopt::Std;
+use Pod::Html;
+use File::Spec::Functions qw(:DEFAULT rel2abs);
+
+# Options.
+our($opt_i); # -i INFILE
+our($opt_o); # -o OUTFILE
+our($opt_t); # -t TITLE
+our($opt_r); # -r PODROOT
+
+getopts('i:o:t:r:');
+die "-i flag missing" unless $opt_i;
+die "-o flag missing" unless $opt_o;
+die "-t flag missing" unless $opt_t;
+die "-r flag missing" unless $opt_r;
+
+# We originally used realpath() here, but the Windows implementation appears
+# to require that the directory or file exist to be able to process the input,
+# so we use rel2abs() instead, which only processes the string without
+# looking further.
+$opt_i = rel2abs($opt_i) or die "Can't convert to real path: $!";
+$opt_o = rel2abs($opt_o) or die "Can't convert to real path: $!";
+$opt_r = rel2abs($opt_r) or die "Can't convert to real path: $!";
+
+pod2html
+ "--infile=$opt_i",
+ "--outfile=$opt_o",
+ "--title=$opt_t",
+ "--podroot=$opt_r",
+ "--podpath=man1:man3:man5:man7",
+ "--htmldir=..";
+
+# Read in contents.
+open F, "<$opt_o"
+ or die "Can't read $opt_o, $!";
+my $contents = '';
+{
+ local $/ = undef;
+ $contents = <F>;
+}
+close F;
+unlink $opt_o;
+
+$contents =~
+ s|href="http://man\.he\.net/(man\d/[^"]+)(?:\.html)?"|href="../$1.html"|g;
+open F, ">$opt_o"
+ or die "Can't write $opt_o, $!";
+print F $contents;
+close F;