App-PerlXLock
view release on metacpan or search on metacpan
lib/App/PerlXLock.pm view on Meta::CPAN
sub check_password {
my $pw = shift;
defined( PLOCK_PASSWORD ) && return(PLOCK_PASSWORD eq $pw);
check_unix_password($pw) == 0;
}
sub main_loop {
my $d = open_connection();
lock_all($d);
grab_keyboard( $d, 0 );
my $locked = 1;
while ($locked) {
check_event($d);
if ( $buffer[-1] && $buffer[-1] eq "\n" ) {
pop(@buffer);
if ( password_accessible() ) {
for my $n ( 0 .. $#buffer ) {
if ( check_password( join( "", @buffer[ $n .. $#buffer ] ) ) ) {
$locked = 0;
}
}
}
else {
$locked = 0;
}
@buffer = ();
}
}
unlock_all($d);
ungrab_keyboard($d);
close_connection($d);
}
sub unlock_all {
( run in 0.601 second using v1.01-cache-2.11-cpan-49f99fa48dc )