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   170328 use strict;
  2         3  
  2         61  
3 2     2   10 use warnings;
  2         3  
  2         86  
4              
5 2     2   9 use Exporter qw(import);
  2         2  
  2         56  
6 2     2   6 use Carp qw(croak);
  2         7  
  2         82  
7              
8 2     2   20 use XSLoader;
  2         2  
  2         120  
9             BEGIN {
10 2     2   5 our $VERSION = '0.02_03';
11 2         926 XSLoader::load __PACKAGE__, $VERSION;
12 2         338 $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 165482 my ($n) = @_;
24 1         2 $n |= 0;
25 1 50 33     9 $n >= 0 && $n <= 256
26             or croak "Argument to random_bytes() must be an integer between 0 and 256, not $n";
27 1 50       3 return '' if $n == 0;
28 1 50       8 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         4 $buf
33             }
34              
35             1
36             __END__