perl 5.003_06: utils/h2xs.PL
Perl 5 Porters [Fri, 20 Sep 1996 14:08:33 +0000 (15:08 +0100)]
Date: Sat, 21 Sep 1996 16:38:24 -0500
From: Dean Roehrich <roehrich@cray.com>
Subject: h2xs bug fix

The h2xs that is in perl5.003_05 has a regexp bug which prevents it from
finding #define statements and filling the constant() function.  This patch
fixes that.  The h2xs_test program found this--maybe people who are
modifying h2xs should get a copy of the test program.

This also adds a -d to enable debugging messages (there's just one for now).
I've also placed some of the doc-related things in alphabetical order.

h2xs_test can be found in my directory on CPAN.  Those of you modifying
xsubpp should know there's a test suite for that, too, called XSTEST which
can also be found in my directory on CPAN.

Date: Fri, 20 Sep 1996 15:08:33 +0100 (BST)
From: "Joseph S. Myers" <jsm28@hermes.cam.ac.uk>
Subject: Pod typos, pod2man bugs, and miscellaneous installation comments

Here is a patch for various typos and other defects in the Perl
5.003_05 pods, including the pods embedded in library modules.

utils/h2xs.PL

index 78f9647..96f6421 100644 (file)
@@ -40,7 +40,7 @@ h2xs - convert .h C header files to Perl extensions
 
 =head1 SYNOPSIS
 
-B<h2xs> [B<-AOPXcf>] [B<-v> version] [B<-n> module_name] [B<-p> prefix] [B<-s> sub] [headerfile [extra_libraries]]
+B<h2xs> [B<-AOPXcdf>] [B<-v> version] [B<-n> module_name] [B<-p> prefix] [B<-s> sub] [headerfile [extra_libraries]]
 
 B<h2xs> B<-h>
 
@@ -72,6 +72,11 @@ in the extra-libraries argument.
 Omit all autoload facilities.  This is the same as B<-c> but also removes the
 S<C<require AutoLoader>> statement from the .pm file.
 
+=item B<-F>
+
+Additional flags to specify to C preprocessor when scanning header for
+function declarations. Should not be used without B<-x>.
+
 =item B<-O>
 
 Allows a pre-existing extension directory to be overwritten.
@@ -80,11 +85,20 @@ Allows a pre-existing extension directory to be overwritten.
 
 Omit the autogenerated stub POD section. 
 
+=item B<-X>
+
+Omit the XS portion.  Used to generate templates for a module which is not
+XS-based.
+
 =item B<-c>
 
 Omit C<constant()> from the .xs file and corresponding specialised
 C<AUTOLOAD> from the .pm file.
 
+=item B<-d>
+
+Turn on debugging messages.
+
 =item B<-f>
 
 Allows an extension to be created for a header even if that header is
@@ -114,29 +128,19 @@ These macros are assumed to have a return type of B<char *>, e.g., S<-s sec_rgy_
 Specify a version number for this extension.  This version number is added
 to the templates.  The default is 0.01.
 
-=item B<-X>
-
-Omit the XS portion.  Used to generate templates for a module which is not
-XS-based.
-
 =item B<-x>
 
 Automatically generate XSUBs basing on function declarations in the
 header file.  The package C<C::Scan> should be installed. If this
 option is specified, the name of the header file may look like
 C<NAME1,NAME2>. In this case NAME1 is used instead of the specified string,
-but XSUBS are emited only for the declarations included from file NAME2.
+but XSUBs are emitted only for the declarations included from file NAME2.
 
 Note that some types of arguments/return-values for functions may
 result in XSUB-declarations/typemap-entries which need
 hand-editing. Such may be objects which cannot be converted from/to a
 pointer (like C<long long>), pointers to functions, or arrays.
 
-=item B<-F>
-
-Additional flags to specify to C preprocessor when scanning header for
-function declarations. Should not be used without B<-x>.
-
 =back
 
 =head1 EXAMPLES
@@ -206,28 +210,29 @@ The usual warnings if it cannot read or write the files involved.
 
 =cut
 
-my( $H2XS_VERSION ) = ' $Revision: 1.16 $ ' =~ /\$Revision:\s+([^\s]+)/;
+my( $H2XS_VERSION ) = ' $Revision: 1.18 $ ' =~ /\$Revision:\s+([^\s]+)/;
 my $TEMPLATE_VERSION = '0.01';
 
 use Getopt::Std;
 
 sub usage{
        warn "@_\n" if @_;
-    die "h2xs [-AOPXcfh] [-v version] [-n module_name] [-p prefix] [-s subs] [headerfile [extra_libraries]]
+    die "h2xs [-AOPXcdfh] [-v version] [-n module_name] [-p prefix] [-s subs] [headerfile [extra_libraries]]
 version: $H2XS_VERSION
-    -f   Force creation of the extension even if the C header does not exist.
-    -n   Specify a name to use for the extension (recommended).
-    -c   Omit the constant() function and specialised AUTOLOAD from the XS file.
-    -p   Specify a prefix which should be removed from the Perl function names.
-    -s   Create subroutines for specified macros.
     -A   Omit all autoloading facilities (implies -c).
+    -F   Additional flags for C preprocessor (used with -x).
     -O   Allow overwriting of a pre-existing extension directory.
     -P   Omit the stub POD section.
     -X   Omit the XS portion.
+    -c   Omit the constant() function and specialised AUTOLOAD from the XS file.
+    -d   Turn on debugging messages.
+    -f   Force creation of the extension even if the C header does not exist.
+    -h   Display this help message
+    -n   Specify a name to use for the extension (recommended).
+    -p   Specify a prefix which should be removed from the Perl function names.
+    -s   Create subroutines for specified macros.
     -v   Specify a version number for this extension.
     -x   Autogenerate XSUBs using C::Scan.
-    -F   Additional flags for C preprocessor (used with -x).
-    -h   Display this help message
 extra_libraries
          are any libraries that might be needed for loading the
          extension, e.g. -lm would try to link in the math library.
@@ -235,7 +240,7 @@ extra_libraries
 }
 
 
-getopts("AOPXcfhxv:n:p:s:F:") || usage;
+getopts("AF:OPXcdfhn:p:s:v:x") || usage;
 
 usage if $opt_h;
 
@@ -287,8 +292,8 @@ if( $path_h ){
       # Function prototypes are not (currently) processed.
       open(CH, "<$path_h") || die "Can't open $path_h: $!\n";
       while (<CH>) {
-       if (/^                  #[ \t]*define\s+([\$\w]+)\b\s*[^("]/) {
-           print "Matched $_ ($1)\n";
+       if (/^#[ \t]*define\s+([\$\w]+)\b\s*[^("]/) {
+           print "Matched $_ ($1)\n" if $opt_d;
            $_ = $1;
            next if /^_.*_h_*$/i; # special case, but for what?
            if (defined $opt_p) {
@@ -518,8 +523,7 @@ my $const_doc = '';
 my $fdecl_doc = '';
 if (@const_names and not $opt_P) {
   $const_doc = <<EOD;
-
-=head1 Exported constants
+\n=head1 Exported constants
 
   @{[join "\n  ", @const_names]}
 
@@ -527,8 +531,7 @@ EOD
 }
 if (defined $fdecls and @$fdecls and not $opt_P) {
   $fdecl_doc = <<EOD;
-
-=head1 Exported functions
+\n=head1 Exported functions
 
   @{[join "\n  ", @$fdecls]}