Commit | Line | Data |
---|---|---|
a2119650 | 1 | #!/usr/bin/perl -w |
3634fc25 | 2 | |
a2119650 NM |
3 | use strict; |
4 | ||
f6bde1c8 | 5 | # Script to hack around xsl:import paths; ideally, the system catalogs are used. |
a2119650 NM |
6 | # Let every OS define its own manipulations. |
7 | # Uses the Perl $^O values to identify the current OS. | |
8 | # | |
9 | # Define filter_$^O to do substitutions, will be called for every line of | |
10 | # every .xsl file. | |
11 | ||
12 | sub filter_freebsd | |
13 | { | |
f6bde1c8 | 14 | s{"http://docbook.sourceforge.net/release/xsl/current/} |
a2119650 NM |
15 | {"/usr/local/share/xsl/docbook/}; |
16 | s{"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"} | |
17 | {"/usr/local/share/xml/docbook/4.2/docbookx.dtd"}; | |
18 | } | |
19 | ||
4a04fa7a NM |
20 | sub filter_linux |
21 | { | |
22 | # SUSE 10 with extra pkgs | |
dce7179d TL |
23 | -d "/usr/share/xml/docbook/stylesheet/nwalsh/1.71.1/" && |
24 | s{"http://docbook.sourceforge.net/release/xsl/current/} | |
25 | {"/usr/share/xml/docbook/stylesheet/nwalsh/1.71.1/}; | |
26 | # Ubuntu/Debian with standard docbook-xsl pkgs | |
27 | -d "/usr/share/xml/docbook/stylesheet/docbook-xsl/" && | |
28 | s{"http://docbook.sourceforge.net/release/xsl/current/} | |
29 | {"/usr/share/xml/docbook/stylesheet/docbook-xsl/}; | |
4a04fa7a NM |
30 | s{"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"} |
31 | {"/usr/share/xml/docbook/schema/dtd/4.2/docbookx.dtd"}; | |
32 | } | |
33 | ||
8127b38f NM |
34 | sub filter_darwin |
35 | { | |
36 | # NB - this uses the Mac Ports installations | |
f6bde1c8 | 37 | s{"http://docbook.sourceforge.net/release/xsl/current/} |
8127b38f NM |
38 | {"/opt/local/share/xsl/docbook-xsl/}; |
39 | s{"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"} | |
40 | {"/opt/local/share/xml/docbook/4.2/docbookx.dtd"}; | |
41 | } | |
42 | ||
43 | ||
a2119650 NM |
44 | # Define OS filters above. |
45 | ||
46 | my $os_filter; | |
47 | $os_filter = $main::{"filter_$^O"} if exists $main::{"filter_$^O"}; | |
48 | ||
49 | unless (defined $os_filter) | |
50 | { | |
51 | print "No changes defined for your OS ($^O).\n"; | |
52 | exit 0; | |
53 | } | |
54 | ||
55 | for my $fn (<*.xsl>, <*.xml>) | |
56 | { | |
57 | my $orig = "$fn.orig"; | |
58 | rename($fn, $orig) or die "Failed to rename($fn, $orig): $!\n"; | |
59 | # Most portable is two-argument form, and none of our filenames are | |
60 | # untrusted or contain whitespace. | |
61 | open(OLD, "< $orig") or die "Failed to read-open($orig): $!\n"; | |
62 | open(NEW, "> $fn") or die "Failed to write-open($fn): $!\n"; | |
63 | while (<OLD>) | |
64 | { | |
65 | $os_filter->(); | |
66 | print NEW $_ or die "Write to \"$fn\" failed: $!\n"; | |
67 | } | |
68 | close(NEW) or die "Failed to close($fn) after writing: $!\n"; | |
69 | close(OLD); | |
70 | } |