File Coverage

blib/lib/Linux/Shadow.pm
Criterion Covered Total %
statement 47 48 97.9
branch 4 8 50.0
condition 4 12 33.3
subroutine 14 14 100.0
pod 3 4 75.0
total 72 86 83.7


line stmt bran cond sub pod time code
1             package Linux::Shadow;
2              
3 1     1   25630 use 5.010001;
  1         4  
4 1     1   6 use strict;
  1         2  
  1         33  
5 1     1   5 use warnings;
  1         7  
  1         47  
6 1     1   5 use feature 'state';
  1         2  
  1         145  
7 1     1   8 use Carp;
  1         1  
  1         110  
8              
9             require Exporter;
10 1     1   862 use AutoLoader;
  1         1716  
  1         6  
11              
12 1     1   56 use base qw(Exporter);
  1         2  
  1         393  
13              
14             our %EXPORT_TAGS = (
15             'all' => [
16             qw(
17             SHADOW
18             getspnam
19             getspent
20             setspent
21             endspent
22             )
23             ],
24             'getpw' => [
25             qw(
26             getpwnam
27             getpwuid
28             getpwent
29             )
30             ]
31             );
32              
33             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} }, @{ $EXPORT_TAGS{'getpw'} } );
34              
35             our @EXPORT = qw(
36             getspnam
37             getspent
38             setspent
39             endspent
40             );
41              
42             our $VERSION = '0.05';
43              
44             sub AUTOLOAD {
45 1     1   117 my $constname;
46 1         2 our $AUTOLOAD;
47 1         6 ( $constname = $AUTOLOAD ) =~ s/.*:://;
48 1 50       4 croak '&Linux::Shadow::constant not defined' if $constname eq 'constant';
49 1         6 my ( $error, $val ) = constant($constname);
50 1 50       2 if ($error) { croak $error; }
  0         0  
51             {
52 1     1   7 no strict 'refs';
  1         3  
  1         453  
  1         1  
53 1     4   7 *$AUTOLOAD = sub { $val };
  4         2776  
54             }
55 1         3 goto &$AUTOLOAD;
56             }
57              
58             require XSLoader;
59             XSLoader::load( 'Linux::Shadow', $VERSION );
60              
61             sub getpwnam {
62              
63 1     1 1 2 my ($name) = @_;
64 1         136 my @pwent = CORE::getpwnam($name);
65 1         5 return set_pwent_expire(@pwent);
66              
67             }
68              
69             sub getpwuid {
70              
71 1     1 1 311 my ($uid) = @_;
72 1         72 my @pwent = CORE::getpwuid($uid);
73 1         5 return set_pwent_expire(@pwent);
74              
75             }
76              
77             sub getpwent {
78              
79 1     1 1 377 my @pwent = CORE::getpwent();
80 1         20 return set_pwent_expire(@pwent);
81              
82             }
83              
84             sub set_pwent_expire {
85              
86 3     3 0 9 my @pwent = @_;
87              
88 3 50 33     26 if ( @pwent && $pwent[0] && !defined $pwent[9] ) {
      33        
89              
90 3         85 my @shadow = getspnam( $pwent[0] );
91 3 50 33     22 if ( @shadow && ( $shadow[0] eq $pwent[0] ) && defined $shadow[7] ) {
      33        
92 3         5 $pwent[9] = $shadow[7];
93             }
94              
95             }
96              
97 3         20 return @pwent;
98              
99             }
100              
101             1;
102             __END__