| line | true | false | branch | 
 
| 251 | 0 | 4 | unless seek $fh, 0, 0 | 
 
| 252 | 0 | 4 | unless open my $bak, '>', "$path.bak" | 
 
| 254 | 0 | 4 | unless close $bak | 
 
| 300 | 38 | 57 | if ($args{'_lock'}) | 
 
| 313 | 37 | 58 | if ($args{'_read_shadow'} or $args{'_write_shadow'}) | 
 
| 314 | 18 | 19 | $args{'_write_shadow'} ? : | 
 
|  | 2 | 35 | unless (open $fhs, ($args{'_write_shadow'} ? '+' : '') . '<', "$etc/shadow") | 
 
| 316 | 2 | 0 | if ($args{'_read_shadow'} == 2 and not $args{'_write_shadow'}) { } | 
 
| 324 | 0 | 178 | unless /\S/ | 
 
| 328 | 168 | 10 | if ($wfn) | 
 
| 341 | 47 | 48 | if ($args{'_read_passwd'} or $args{'_write_passwd'}) | 
 
| 342 | 18 | 29 | $args{'_write_passwd'} ? : | 
 
|  | 1 | 46 | unless open $fhp, ($args{'_write_passwd'} ? '+' : '') . '<', "$etc/passwd" | 
 
| 346 | 0 | 255 | unless /\S/ | 
 
| 349 | 158 | 97 | if ($wfn) | 
 
| 352 | 157 | 1 | if $shadow{$r[0]} | 
 
| 356 | 56 | 199 | if ($args{'_after_read_passwd_entry'}) | 
 
| 358 | 0 | 56 | if $res->[0] != 200 | 
 
| 359 | 9 | 47 | if $stash{'exit'} | 
 
| 369 | 56 | 29 | if ($args{'_read_gshadow'} or $args{'_write_gshadow'}) | 
 
| 370 | 30 | 26 | $args{'_write_gshadow'} ? : | 
 
|  | 2 | 54 | unless (open $fhgs, ($args{'_write_gshadow'} ? '+' : '') . '<', "$etc/gshadow") | 
 
| 372 | 2 | 0 | if ($args{'_read_gshadow'} == 2 and not $args{'_write_gshadow'}) { } | 
 
| 380 | 0 | 330 | unless /\S/ | 
 
| 384 | 318 | 12 | if ($wfn) | 
 
| 397 | 70 | 15 | if ($args{'_read_group'} or $args{'_write_group'}) | 
 
| 398 | 33 | 37 | $args{'_write_group'} ? : | 
 
|  | 1 | 69 | unless open $fhg, ($args{'_write_group'} ? '+' : '') . '<', "$etc/group" | 
 
| 403 | 0 | 465 | unless /\S/ | 
 
| 406 | 320 | 145 | if ($wfn) | 
 
| 409 | 301 | 19 | if $gshadow{$r[0]} | 
 
| 413 | 106 | 359 | if ($args{'_after_read_group_entry'}) | 
 
| 415 | 0 | 106 | if $res->[0] != 200 | 
 
| 416 | 16 | 90 | if $stash{'exit'} | 
 
| 421 | 68 | 0 | if ($args{'_after_read'}) | 
 
| 423 | 21 | 47 | if $res->[0] != 200 | 
 
| 424 | 19 | 28 | if $stash{'exit'} | 
 
| 429 | 12 | 1 | if ($args{'_write_shadow'} and $stash{'write_shadow'} // 1) | 
 
| 430 | 1 | 11 | if ($args{'backup'}) | 
 
| 432 | 0 | 1 | if $res->[0] != 200 | 
 
| 434 | 0 | 12 | unless seek $fhs, 0, 0 | 
 
| 439 | 0 | 12 | unless close $fhs | 
 
| 443 | 12 | 1 | if ($args{'_write_passwd'} and $stash{'write_passwd'} // 1) | 
 
| 444 | 1 | 11 | if ($args{'backup'}) | 
 
| 446 | 0 | 1 | if $res->[0] != 200 | 
 
| 448 | 0 | 12 | unless seek $fhp, 0, 0 | 
 
| 453 | 0 | 12 | unless close $fhp | 
 
| 457 | 21 | 1 | if ($args{'_write_gshadow'} and $stash{'write_gshadow'} // 1) | 
 
| 458 | 1 | 20 | if ($args{'backup'}) | 
 
| 460 | 0 | 1 | if $res->[0] != 200 | 
 
| 462 | 0 | 21 | unless seek $fhgs, 0, 0 | 
 
| 467 | 0 | 21 | unless close $fhgs | 
 
| 471 | 23 | 2 | if ($args{'_write_group'} and $stash{'write_group'} // 1) | 
 
| 472 | 1 | 22 | if ($args{'backup'}) | 
 
| 474 | 0 | 1 | if $res->[0] != 200 | 
 
| 476 | 0 | 23 | unless seek $fhg, 0, 0 | 
 
| 481 | 0 | 23 | unless close $fhg | 
 
| 487 | 0 | 95 | if $@ | 
 
| 492 | 23 | 72 | if $e and $e->[0] != 200 | 
 
| 493 | 23 | 72 | if $e and $e->[0] != 200 | 
 
| 525 | 1 | 2 | $detail ? : | 
 
| 540 | 10 | 10 | if (not $detail) { } | 
 
|  | 5 | 5 | elsif ($wfn) { } | 
 
| 550 | 2 | 2 | if $detail | 
 
| 555 | 2 | 2 | $detail ? : | 
 
| 597 | 1 | 15 | unless defined $user xor defined $uid | 
 
| 613 | 9 | 47 | if (defined $user and $passwd->[-1][0] eq $user or defined $uid and $passwd->[-1][2] == $uid) | 
 
| 615 | 9 | 0 | $wfn ? : | 
 
| 650 | 1 | 1 | if ($res->[0] == 404) { } | 
 
|  | 1 | 0 | elsif ($res->[0] == 200) { } | 
 
| 681 | 1 | 3 | $detail ? : | 
 
| 696 | 18 | 12 | if (not $detail) { } | 
 
|  | 6 | 6 | elsif ($wfn) { } | 
 
| 706 | 2 | 3 | if $detail | 
 
| 710 | 2 | 3 | $detail ? : | 
 
| 752 | 1 | 22 | unless defined $gn xor defined $gid | 
 
| 768 | 16 | 90 | if (defined $gn and $group->[-1][0] eq $gn or defined $gid and $group->[-1][2] == $gid) | 
 
| 770 | 16 | 0 | $wfn ? : | 
 
| 807 | 1 | 2 | $detail ? : | 
 
| 823 | 10 | 10 | if (not $detail) { } | 
 
|  | 5 | 5 | elsif ($wfn) { } | 
 
| 836 | 12 | 12 | if (not $detail) { } | 
 
|  | 6 | 6 | elsif ($wfn) { } | 
 
| 850 | 2 | 2 | $detail ? : | 
 
|  | 2 | 2 | $detail ? : | 
 
| 876 | 1 | 1 | if ($res->[0] == 404) { } | 
 
|  | 1 | 0 | elsif ($res->[0] == 200) { } | 
 
| 914 | 0 | 5 | unless my $user = $args{'user'} | 
 
| 916 | 0 | 5 | $detail ? : | 
 
| 929 | 1 | 4 | unless &first(sub {
	$_->[0] eq $user;
}
, @$passwd) | 
 
| 937 | 14 | 10 | unless $user ~~ \@mm or $group->[$i][0] eq $user | 
 
| 938 | 10 | 0 | if (not $detail) { } | 
 
|  | 0 | 0 | elsif ($wfn) { } | 
 
| 952 | 0 | 5 | $detail ? : | 
 
| 978 | 1 | 5 | unless my $user = $args{'user'} | 
 
| 979 | 1 | 4 | unless my $group = $args{'group'} | 
 
| 981 | 1 | 3 | unless $res->[0] == 200 | 
 
| 983 | 2 | 1 | $user ~~ \@mm ? : | 
 
| 1051 | 18 | 9 | if ($which eq 'user') | 
 
| 1052 | 1 | 17 | unless $user = $args{'user'} | 
 
| 1053 | 1 | 16 | unless $user =~ /$re_user/o | 
 
| 1056 | 2 | 14 | if $gn ne $user | 
 
| 1059 | 1 | 24 | unless $gn | 
 
| 1060 | 1 | 23 | unless $gn =~ /$re_group/o | 
 
| 1064 | 0 | 23 | if $min_gid < 0 | 
 
| 1065 | 0 | 23 | if $max_gid > 65535 | 
 
| 1067 | 7 | 16 | if ($which eq 'group') { } | 
 
| 1069 | 0 | 7 | if ($members and ref $members eq 'ARRAY') | 
 
| 1073 | 1 | 6 | unless $members =~ /$re_field/o | 
 
| 1083 | 16 | 6 | if ($which eq 'user') | 
 
| 1085 | 0 | 16 | if $min_uid < 0 | 
 
| 1086 | 0 | 16 | if $min_uid > 65535 | 
 
| 1089 | 0 | 16 | unless ($pass =~ /$re_field/o) | 
 
| 1092 | 1 | 15 | unless ($gecos =~ /$re_field/o) | 
 
| 1095 | 1 | 14 | unless ($home =~ /$re_field/o) | 
 
| 1098 | 1 | 13 | unless ($shell =~ /$re_field/o) | 
 
| 1100 | 11 | 1 | $pass eq '' ? : | 
 
| 1101 | 1 | 12 | unless ($encpass =~ /$re_field/o) | 
 
| 1108 | 1 | 11 | unless ($pass_inactive_period =~ /$re_field/o) | 
 
| 1111 | 1 | 10 | unless ($expire_date =~ /$re_field/o) | 
 
| 1130 | 1 | 15 | if ($which eq 'group' and $cur_g) { } | 
 
|  | 2 | 13 | elsif ($cur_g) { } | 
 
|  | 1 | 12 | elsif (not $create_group) { } | 
 
| 1131 | 1 | 0 | if $cur_g | 
 
| 1138 | 10 | 2 | unless (defined $gid) | 
 
| 1140 | 9 | 19 | unless ($_ ~~ \@gids) | 
 
| 1142 | 1 | 9 | unless defined $gid | 
 
| 1151 | 9 | 4 | if ($which eq 'user') | 
 
| 1155 | 1 | 8 | if &first(sub {
	$_->[0] eq $user;
}
, @$passwd) | 
 
| 1157 | 6 | 2 | unless (defined $uid) | 
 
| 1159 | 5 | 10 | unless ($_ ~~ \@uids) | 
 
| 1161 | 1 | 5 | unless defined $uid | 
 
| 1172 | 39 | 7 | unless $l->[0] eq $gn | 
 
| 1174 | 1 | 6 | unless ($user ~~ \@mm) | 
 
| 1182 | 0 | 11 | unless $write_g | 
 
| 1323 | 19 | 16 | if ($which eq 'user') { } | 
 
| 1324 | 1 | 18 | unless $user = $args{'user'} | 
 
| 1326 | 3 | 13 | unless $gn = $args{'group'} | 
 
| 1329 | 18 | 13 | if ($which eq 'user') | 
 
| 1330 | 1 | 17 | if (defined $args{'uid'} and not $args{'uid'} =~ /$re_posint/o) | 
 
| 1332 | 1 | 16 | if (defined $args{'gid'} and not $args{'gid'} =~ /$re_posint/o) | 
 
| 1334 | 1 | 15 | if (defined $args{'gecos'} and not $args{'gecos'} =~ /$re_field/o) | 
 
| 1336 | 1 | 14 | if (defined $args{'home'} and not $args{'home'} =~ /$re_field/o) | 
 
| 1338 | 1 | 13 | if (defined $args{'shell'} and not $args{'shell'} =~ /$re_field/o) | 
 
| 1340 | 2 | 11 | if (defined $args{'pass'}) | 
 
| 1341 | 0 | 2 | $args{'pass'} eq '' ? : | 
 
| 1344 | 2 | 11 | if (defined $args{'encpass'} and not $args{'encpass'} =~ /$re_field/o) | 
 
| 1346 | 1 | 10 | if (defined $args{'last_pwchange'} and not $args{'last_pwchange'} =~ /$re_posint/o) | 
 
| 1348 | 1 | 9 | if (defined $args{'min_pass_age'} and not $args{'min_pass_age'} =~ /$re_posint/o) | 
 
| 1350 | 1 | 8 | if (defined $args{'max_pass_age'} and not $args{'max_pass_age'} =~ /$re_posint/o) | 
 
| 1352 | 1 | 7 | if (defined $args{'pass_warn_period'} and not $args{'pass_warn_period'} =~ /$re_posint/o) | 
 
| 1354 | 1 | 6 | if (defined $args{'pass_inactive_period'} and not $args{'pass_inactive_period'} =~ /$re_posint/o) | 
 
| 1357 | 1 | 5 | if (defined $args{'expire_date'} and not $args{'expire_date'} =~ /$re_posint/o) | 
 
| 1362 | 13 | 5 | if ($which eq 'group') | 
 
| 1363 | 1 | 12 | if (defined $args{'gid'} and not $args{'gid'} =~ /$re_posint/o) | 
 
| 1365 | 0 | 12 | if (defined $args{'pass'}) | 
 
| 1366 | 0 | 0 | $args{'pass'} eq '' ? : | 
 
| 1369 | 1 | 11 | if (defined $args{'encpass'} and not $args{'encpass'} =~ /$re_field/o) | 
 
| 1371 | 2 | 9 | if (defined $args{'members'}) | 
 
| 1372 | 0 | 2 | if (ref $args{'members'} eq 'ARRAY') | 
 
| 1373 | 1 | 1 | unless $args{'members'} =~ /$re_field/o | 
 
| 1375 | 2 | 8 | if (defined $args{'admins'}) | 
 
| 1376 | 0 | 2 | if (ref $args{'admins'} eq 'ARRAY') | 
 
| 1377 | 1 | 1 | unless $args{'admins'} =~ /$re_field/o | 
 
| 1392 | 5 | 9 | if ($which eq 'user') { } | 
 
| 1395 | 19 | 3 | unless $l->[0] eq $user | 
 
| 1398 | 6 | 12 | if (defined $args{$f}) | 
 
| 1406 | 2 | 3 | unless $found | 
 
| 1407 | 1 | 2 | unless $changed | 
 
| 1412 | 9 | 3 | unless $l->[0] eq $user | 
 
| 1415 | 8 | 13 | if (defined $args{$f}) | 
 
| 1423 | 1 | 2 | unless $changed | 
 
| 1427 | 46 | 6 | unless $l->[0] eq $gn | 
 
| 1430 | 12 | 6 | if ($args{'_before_set_group_field'}) | 
 
| 1433 | 6 | 12 | if (defined $args{$f}) | 
 
| 1441 | 3 | 6 | unless $found | 
 
| 1442 | 1 | 5 | unless $changed | 
 
| 1447 | 28 | 6 | unless $l->[0] eq $gn | 
 
| 1449 | 7 | 11 | if (defined $args{$f}) | 
 
| 1457 | 1 | 5 | unless $changed | 
 
| 1541 | 2 | 4 | unless my $user = $args{'user'} | 
 
| 1542 | 0 | 4 | unless $user =~ /$re_user/o | 
 
| 1551 | 0 | 6 | unless $l->[0] eq $gn | 
 
| 1553 | 0 | 6 | if $user ~~ \@mm | 
 
| 1580 | 2 | 4 | unless my $user = $args{'user'} | 
 
| 1581 | 0 | 4 | unless $user =~ /$re_user/o | 
 
| 1590 | 0 | 6 | unless $l->[0] eq $gn | 
 
| 1592 | 0 | 6 | unless $user ~~ \@mm | 
 
| 1638 | 0 | 2 | unless my $user = $args{'user'} | 
 
| 1639 | 0 | 2 | unless $user =~ /$re_user/o | 
 
| 1657 | 2 | 10 | if ($l->[0] ~~ $add and not $user ~~ \@mm) | 
 
| 1661 | 1 | 11 | if ($l->[0] ~~ $del and $user ~~ \@mm) | 
 
| 1665 | 5 | 7 | if ($changed) | 
 
| 1669 | 1 | 1 | unless $changed | 
 
| 1702 | 0 | 1 | unless my $user = $args{'user'} | 
 
| 1703 | 0 | 1 | unless $user =~ /$re_user/o | 
 
| 1704 | 0 | 1 | unless my $gg = $args{'groups'} | 
 
| 1720 | 2 | 4 | if ($l->[0] ~~ $gg and not $user ~~ \@mm) | 
 
| 1724 | 1 | 5 | if (not $l->[0] ~~ $gg and $user ~~ \@mm) | 
 
| 1728 | 5 | 1 | if ($changed) | 
 
| 1732 | 0 | 1 | unless $changed | 
 
| 1760 | 0 | 3 | unless $args{'user'} | 
 
| 1761 | 1 | 2 | unless defined $args{'pass'} | 
 
| 1770 | 3 | 2 | if ($which eq 'user') | 
 
| 1771 | 0 | 3 | unless $user = $args{'user'} | 
 
| 1775 | 0 | 5 | unless $gn | 
 
| 1791 | 20 | 14 | if ($which eq 'user') | 
 
| 1794 | 4 | 16 | if ($user ~~ \@mm) | 
 
| 1799 | 5 | 29 | if ($group->[$i][0] eq $gn) | 
 
| 1805 | 0 | 5 | unless $changed | 
 
| 1810 | 19 | 14 | if ($which eq 'user') | 
 
| 1813 | 2 | 17 | if ($user ~~ \@mm) | 
 
| 1818 | 5 | 28 | if ($gshadow->[$i][0] eq $gn) | 
 
| 1825 | 0 | 5 | unless $changed | 
 
| 1827 | 3 | 2 | if ($which eq 'user') | 
 
| 1831 | 3 | 13 | if ($passwd->[$i][0] eq $user) | 
 
| 1838 | 0 | 3 | unless $changed | 
 
| 1843 | 3 | 13 | if ($shadow->[$i][0] eq $user) | 
 
| 1850 | 0 | 3 | unless $changed |