]> granicus.if.org Git - postgresql/commitdiff
Move genbki.pl's find_defined_symbol to Catalog.pm.
authorAndres Freund <andres@anarazel.de>
Wed, 4 Oct 2017 07:11:36 +0000 (00:11 -0700)
committerAndres Freund <andres@anarazel.de>
Wed, 4 Oct 2017 07:11:36 +0000 (00:11 -0700)
Will be used in Gen_fmgrtab.pl in a followup commit.

src/backend/catalog/Catalog.pm
src/backend/catalog/genbki.pl

index 7abfda3d3a465fcc22c5d70d045e6872a3c38bd8..54f83533b62cdb9632458c34cccbd2bf15d9ef77 100644 (file)
@@ -19,7 +19,7 @@ use warnings;
 require Exporter;
 our @ISA       = qw(Exporter);
 our @EXPORT    = ();
-our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile);
+our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile FindDefinedSymbol);
 
 # Call this function with an array of names of header files to parse.
 # Returns a nested data structure describing the data in the headers.
@@ -252,6 +252,39 @@ sub RenameTempFile
        rename($temp_name, $final_name) || die "rename: $temp_name: $!";
 }
 
+
+# Find a symbol defined in a particular header file and extract the value.
+#
+# The include path has to be passed as a reference to an array.
+sub FindDefinedSymbol
+{
+       my ($catalog_header, $include_path, $symbol) = @_;
+
+       for my $path (@$include_path)
+       {
+
+               # Make sure include path ends in a slash.
+               if (substr($path, -1) ne '/')
+               {
+                       $path .= '/';
+               }
+               my $file = $path . $catalog_header;
+               next if !-f $file;
+               open(my $find_defined_symbol, '<', $file) || die "$file: $!";
+               while (<$find_defined_symbol>)
+               {
+                       if (/^#define\s+\Q$symbol\E\s+(\S+)/)
+                       {
+                               return $1;
+                       }
+               }
+               close $find_defined_symbol;
+               die "$file: no definition found for $symbol\n";
+       }
+       die "$catalog_header: not found in any include directory\n";
+}
+
+
 # verify the number of fields in the passed-in DATA line
 sub check_natts
 {
index 2eebb061b7cc8defe6a4efad35d740d71faf9a33..256a9c9c931f1c4a6f20158c3a04dfc7eeb4b919 100644 (file)
@@ -87,9 +87,11 @@ open my $shdescr, '>', $shdescrfile . $tmpext
 # NB: make sure that the files used here are known to be part of the .bki
 # file's dependencies by src/backend/catalog/Makefile.
 my $BOOTSTRAP_SUPERUSERID =
-  find_defined_symbol('pg_authid.h', 'BOOTSTRAP_SUPERUSERID');
+  Catalog::FindDefinedSymbol('pg_authid.h', \@include_path,
+                                                        'BOOTSTRAP_SUPERUSERID');
 my $PG_CATALOG_NAMESPACE =
-  find_defined_symbol('pg_namespace.h', 'PG_CATALOG_NAMESPACE');
+  Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path,
+                                                        'PG_CATALOG_NAMESPACE');
 
 # Read all the input header files into internal data structures
 my $catalogs = Catalog::Catalogs(@input_files);
@@ -500,34 +502,6 @@ sub emit_schemapg_row
        return $row;
 }
 
-# Find a symbol defined in a particular header file and extract the value.
-sub find_defined_symbol
-{
-       my ($catalog_header, $symbol) = @_;
-       for my $path (@include_path)
-       {
-
-               # Make sure include path ends in a slash.
-               if (substr($path, -1) ne '/')
-               {
-                       $path .= '/';
-               }
-               my $file = $path . $catalog_header;
-               next if !-f $file;
-               open(my $find_defined_symbol, '<', $file) || die "$file: $!";
-               while (<$find_defined_symbol>)
-               {
-                       if (/^#define\s+\Q$symbol\E\s+(\S+)/)
-                       {
-                               return $1;
-                       }
-               }
-               close $find_defined_symbol;
-               die "$file: no definition found for $symbol\n";
-       }
-       die "$catalog_header: not found in any include directory\n";
-}
-
 sub usage
 {
        die <<EOM;