File Coverage

blib/lib/Sys/GetRandom.pm
Criterion Covered Total %
statement 24 24 100.0
branch 4 8 50.0
condition 1 3 33.3
subroutine 7 7 100.0
pod 1 1 100.0
total 37 43 86.0


line stmt bran cond sub pod time code
1             package Sys::GetRandom;
2 2     2   245469 use strict;
  2         5  
  2         110  
3 2     2   19 use warnings;
  2         5  
  2         148  
4              
5 2     2   10 use Exporter qw(import);
  2         5  
  2         70  
6 2     2   9 use Carp qw(croak);
  2         13  
  2         130  
7              
8 2     2   11 use XSLoader;
  2         7  
  2         145  
9             BEGIN {
10 2     2   7 our $VERSION = '0.02';
11 2         1706 XSLoader::load __PACKAGE__, $VERSION;
12             }
13              
14             our @EXPORT_OK = qw(
15             GRND_RANDOM
16             GRND_NONBLOCK
17             getrandom
18             random_bytes
19             );
20              
21             sub random_bytes {
22 1     1 1 288013 my ($n) = @_;
23 1         3 $n |= 0;
24 1 50 33     14 $n >= 0 && $n <= 256
25             or croak "Argument to random_bytes() must be an integer between 0 and 256, not $n";
26 1 50       4 return '' if $n == 0;
27 1 50       13 defined(my $r = getrandom(my $buf, $n))
28             or die "Internal error: getrandom(\$buf, $n) failed: $!";
29 1 50       4 $r == $n
30             or die "Internal error: getrandom(\$buf, $n) returned $r";
31 1         6 $buf
32             }
33              
34             1
35             __END__