File Coverage

blib/lib/Sys/GetRandom.pm
Criterion Covered Total %
statement 25 25 100.0
branch 4 8 50.0
condition 1 3 33.3
subroutine 7 7 100.0
pod 1 1 100.0
total 38 44 86.3


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