mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-14 10:13:05 +02:00
14ca4dac6f
Done to prevent a possible race condition when files are removed by the database while the manifest is being built.
68 lines
1.5 KiB
Perl
68 lines
1.5 KiB
Perl
package pgBackRest::LibC;
|
|
|
|
use 5.010001;
|
|
use strict;
|
|
use warnings;
|
|
use Carp;
|
|
|
|
require Exporter;
|
|
use AutoLoader;
|
|
|
|
our @ISA = qw(Exporter);
|
|
|
|
# Library version (add .999 during development)
|
|
our $VERSION = '1.16.999';
|
|
|
|
sub libCVersion {return $VERSION};
|
|
|
|
# Items to export into caller's namespace by default. Note: do not export names by default without a very good reason. Use EXPORT_OK
|
|
# instead. Do not simply export all your public functions/methods/constants.
|
|
#
|
|
# This allows declaration use pgBackRest::LibC ':all'; If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
|
|
# will save memory.
|
|
our %EXPORT_TAGS =
|
|
(
|
|
'debug' => [qw(
|
|
UVSIZE
|
|
libCVersion
|
|
)],
|
|
|
|
'checksum' => [qw(
|
|
pageChecksum
|
|
pageChecksumTest
|
|
pageChecksumBuffer
|
|
)],
|
|
);
|
|
|
|
our @EXPORT_OK = (@{$EXPORT_TAGS{'debug'}}, @{$EXPORT_TAGS{'checksum'}});
|
|
|
|
# Nothing is exported by default
|
|
our @EXPORT = qw();
|
|
|
|
# This AUTOLOAD is used to 'autoload' constants from the constant() XS function. Nothing in this function needs to be updated to
|
|
# add new constants.
|
|
sub AUTOLOAD
|
|
{
|
|
my $constname;
|
|
our $AUTOLOAD;
|
|
|
|
($constname = $AUTOLOAD) =~ s/.*:://;
|
|
|
|
croak "&pgBackRest::LibC::constant not defined" if $constname eq 'constant';
|
|
my ($error, $val) = constant($constname);
|
|
|
|
if ($error) { croak $error; }
|
|
{
|
|
no strict 'refs';
|
|
*$AUTOLOAD = sub {$val};
|
|
}
|
|
|
|
goto &$AUTOLOAD;
|
|
}
|
|
|
|
require XSLoader;
|
|
XSLoader::load('pgBackRest::LibC', $VERSION);
|
|
|
|
1;
|
|
__END__
|