Re: Compress::Zlib, pack "C" and utf-8 [PATCH]
[p5sagit/p5-mst-13.2.git] / ext / B / defsubs_h.PL
index 1a87772..8f943c6 100644 (file)
@@ -4,6 +4,7 @@
 #!perl
 my ($out) = __FILE__ =~ /(^.*)\.PL/i;
 $out =~ s/_h$/.h/;
+unlink $out if -l $out;
 open(OUT,">$out") || die "Cannot open $file:$!";
 print "Extracting $out...\n";
 print OUT <<"END";
@@ -45,17 +46,36 @@ foreach my $const (qw(
                      SVs_SMG
                      SVt_PVGV
                      SVt_PVHV
+                     PAD_FAKELEX_ANON
+                     PAD_FAKELEX_MULTI
                      ))
  {
   doconst($const);
  }
-foreach my $file (qw(op.h cop.h))
+
+if ($] < 5.009) {
+    # This is only present in 5.10, but it's useful to B::Deparse to be able
+    # to import a dummy value from B
+    doconst(OPpPAD_STATE);
+}
+
+if ($] >= 5.009) {
+    # Constant not present in 5.8.x
+    doconst(CVf_ISXSUB);
+} else {
+    # Constant not present after 5.8.x
+    doconst(AVf_REAL);
+}  
+
+foreach my $tuple (['op.h'],['cop.h'],['regexp.h','RXf_'])
  {
+  my $file = $tuple->[0];
+  my $pfx = $tuple->[1] || '';
   my $path = $^O eq 'MacOS' ? ":::$file" : "../../$file";
   open(OPH,"$path") || die "Cannot open $path:$!";
   while (<OPH>)
    {  
-    doconst($1) if (/#define\s+(\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/);
+    doconst($1) if (/#define\s+($pfx\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/);
    }  
   close(OPH);
  }