redisplay
changeset 3 5c973cf5a4d6
parent 2 fb6344bb32dc
equal deleted inserted replaced
2:fb6344bb32dc 3:5c973cf5a4d6
    12 sub url_encode {
    12 sub url_encode {
    13     return shift =~ s/(?i:([^a-z]))/sprintf '%%%02x', ord $1/rge;
    13     return shift =~ s/(?i:([^a-z]))/sprintf '%%%02x', ord $1/rge;
    14 }
    14 }
    15 
    15 
    16 sub main {
    16 sub main {
       
    17     push @ARGV, "$ENV{HOME}/.google_authenticator";
    17 
    18 
    18     GetOptions(
    19     GetOptions(
    19         'h|help' => sub { pod2usage(-exit => 0, -verbose => 1) },
    20         'h|help' => sub { pod2usage(-exit => 0, -verbose => 1) },
    20         'm|man'  => sub { pod2usage(-exit => 0, -verbose => 2) },
    21         'm|man'  => sub { pod2usage(-exit => 0, -verbose => 2) },
    21     ) or pod2usage;
    22     ) or pod2usage;
    22 
    23 
    23     if (@ARGV) { splice @ARGV, 1 }
    24     splice @ARGV, 1;
    24     else       { @ARGV = ("$ENV{HOME}/.google_authenticator") }
       
    25 
    25 
    26     my $google = do { local $/ = undef; <> }
    26     my $google = do { local $/ = undef; <> }
    27       or die "$0: Can't read any input from $ARGV.\n";
    27       or die "$0: Can't read any input from $ARGV.\n";
    28 
    28 
    29     my ($secret) = $google =~ /\A(\S+)/
    29     my ($secret) = $google =~ /\A(\S+)/
    33       or die "$0: Can't read method (time/hash) from $ARGV.\n";
    33       or die "$0: Can't read method (time/hash) from $ARGV.\n";
    34 
    34 
    35     my $user = $ENV{USER} // $ENV{LOGNAME} // getpwuid $>;
    35     my $user = $ENV{USER} // $ENV{LOGNAME} // getpwuid $>;
    36     my $host = hostname;
    36     my $host = hostname;
    37 
    37 
    38     open(my $o, '>&STDOUT');
       
    39     if (-t STDIN) {
    38     if (-t STDIN) {
    40         open STDOUT, '|qrencode -t ansi256'
    39         open STDOUT, '|qrencode -t ansi256'
    41           or die "$0: Can't open helper binary `qrencode': $!\n";
    40           or die "$0: Can't open helper binary `qrencode': $!\n";
    42     }
    41     }
    43 
    42