summaryrefslogtreecommitdiff
path: root/configpm
diff options
context:
space:
mode:
Diffstat (limited to 'configpm')
-rwxr-xr-xconfigpm96
1 files changed, 74 insertions, 22 deletions
diff --git a/configpm b/configpm
index 8ee45c05cc..166080b445 100755
--- a/configpm
+++ b/configpm
@@ -576,6 +576,8 @@ $_ = <<'!END!';
EOT
#proper lexicographical order of the keys
my %seen_var;
+my @v_define = ( "taint_support=''\n",
+ "taint_disabled=''\n" );
$heavy_txt .= join('',
map { $_->[-1] }
sort {$a->[0] cmp $b->[0] }
@@ -583,7 +585,7 @@ $heavy_txt .= join('',
map {
/^([^=]+)/ ? [ $1, $_ ]
: [ $_, $_ ] # shouldnt happen
- } @v_others, @v_forced
+ } (@v_others, @v_forced, @v_define)
) . "!END!\n";
# Only need the dynamic byteorder code in Config.pm if 'byteorder' is one of
@@ -594,6 +596,32 @@ if ($Common{byteorder}) {
$heavy_txt .= $byteorder_code;
}
+$heavy_txt .= <<'EOT';
+s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
+
+EOT
+
+$heavy_txt .= <<'EOF_TAINT_INIT';
+{
+ # We have to set this up late as Win32 does not build miniperl
+ # with the same defines and CC flags as it builds perl itself.
+ my $defines = join " ", (Internals::V)[0,1];
+ if (
+ $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ ||
+ $defines =~ /\b(NO_TAINT_SUPPORT)\b/
+ ){
+ my $which = $1;
+ my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT")
+ ? "silent" : "define";
+ s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m;
+ }
+ else {
+ my $taint_support = 'define';
+ s/^(taint_support=['"])(["'])/$1$taint_support$2/m;
+ }
+}
+EOF_TAINT_INIT
+
if (@need_relocation) {
$heavy_txt .= 'foreach my $what (qw(' . join (' ', @need_relocation) .
")) {\n" . <<'EOT';
@@ -612,8 +640,6 @@ EOT
}
$heavy_txt .= <<'EOT';
-s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
-
my $config_sh_len = length $_;
our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
@@ -1014,29 +1040,21 @@ ENDOFTAIL
if ($Opts{glossary}) {
open(GLOS, '<', $Glossary) or die "Can't open $Glossary: $!";
}
-my %seen = ();
my $text = 0;
$/ = '';
my $errors= 0;
-sub process {
- if (s/\A(\w*)\s+\(([\w.]+)\):\s*\n(\t?)/=item C<$1>\n\nFrom F<$2>:\n\n/m) {
- my $c = substr $1, 0, 1;
- unless ($seen{$c}++) {
- print CONFIG_POD <<EOF if $text;
-=back
+my %glossary;
-EOF
- print CONFIG_POD <<EOF;
-=head2 $c
-
-=over 4
+my $fc;
+my $item;
-EOF
- $text = 1;
- }
+sub process {
+ if (s/\A(\w*)\s+\(([\w.]+)\):\s*\n(\t?)/=item C<$1>\n\nFrom F<$2>:\n\n/m) {
+ $item = $1;
+ $fc = substr $item, 0, 1;
}
- elsif (!$text || !/\A\t/) {
+ elsif (!$item || !/\A\t/) {
warn "Expected a Configure variable header",
($text ? " or another paragraph of description" : () ),
", instead we got:\n$_";
@@ -1068,6 +1086,7 @@ EOF
s/(?<![.<\'\"])\b([A-Z_]{2,})\b(?![\'\"])/C<$1>/g; # UNISTD
s/(?<![.<\'\"])\b(?!the\b)(\w+)\s+macro\b/C<$1> macro/g; # FILE_cnt macro
s/n[\0]t/n't/g; # undo can't, won't damage
+ $glossary{$fc}{$item} .= $_;
}
if ($Opts{glossary}) {
@@ -1075,7 +1094,6 @@ if ($Opts{glossary}) {
<GLOS>; # Skip the preamble
while (<GLOS>) {
process;
- print CONFIG_POD;
}
if ($errors) {
die "Errors encountered while processing $Glossary. ",
@@ -1086,9 +1104,43 @@ if ($Opts{glossary}) {
}
}
-print CONFIG_POD <<'ENDOFTAIL';
+$glossary{t}{taint_support} //= <<EOF_TEXT;
+=item C<taint_support>
-=back
+From define: C<SILENT_NO_TAINT_SUPPORT> or C<NO_TAINT_SUPPORT>
+
+If this perl is compiled with support for taint mode this variable will
+be set to 'define', if it is not it will be set to the empty string.
+Either of the above defines will result in it being empty. This property
+was added in version 5.37.11. See also L</taint_disabled>.
+
+EOF_TEXT
+
+$glossary{t}{taint_disabled} //= <<EOF_TEXT;
+=item C<taint_disabled>
+
+From define: C<SILENT_NO_TAINT_SUPPORT> or C<NO_TAINT_SUPPORT>
+
+If this perl is compiled with support for taint mode this variable will
+be set to the empty string, if it was compiled with
+C<SILENT_NO_TAINT_SUPPORT> defined then it will be set to be "silent",
+and if it was compiled with C<NO_TAINT_SUPPORT> defined it will be
+'define'. Either of the above defines will results in it being a true
+value. This property was added in 5.37.11. See also L</taint_support>.
+
+EOF_TEXT
+
+if ($Opts{glossary}) {
+ foreach my $fc (sort keys %glossary) {
+ print CONFIG_POD "=head2 $fc\n\n=over 4\n\n";
+ foreach my $item (sort keys %{$glossary{$fc}}) {
+ print CONFIG_POD $glossary{$fc}{$item};
+ }
+ print CONFIG_POD "=back\n\n";
+ }
+}
+
+print CONFIG_POD <<'ENDOFTAIL';
=head1 GIT DATA