perlbug: quit main loop on empty answer / eof in test mode
authorNiko Tyni <ntyni@debian.org>
Sun, 1 May 2016 17:06:37 +0000 (20:06 +0300)
committerAaron Crane <arc@cpan.org>
Mon, 16 May 2016 12:29:46 +0000 (13:29 +0100)
This makes it possible to drive perlbug noninteractively
without having it go to an infinite loop on end of file.

The change has no effect in non-test mode, where the default answer is
the empty string.

This is groundworks for perlbug unit tests.

utils/perlbug.PL

index caac732..9a5048f 100644 (file)
@@ -828,7 +828,8 @@ a few options. You can:
 EOF
       retry:
         print $menu;
-           my $action =  _prompt('', "Action (Send/Display/Edit/Subject/Save to File)");;
+           my $action =  _prompt('', "Action (Send/Display/Edit/Subject/Save to File)",
+               $opt{t} ? 'q' : '');
         print "\n";
            if ($action =~ /^(f|sa)/i) { # <F>ile/<Sa>ve
             if ( SaveMessage() ) { exit }
@@ -1014,6 +1015,7 @@ sub _prompt {
     }
     print $prompt. ($default ? " [$default]" :''). ": ";
        my $result = scalar(<>);
+    return $default if !defined $result; # got eof
     chomp($result);
        $result =~ s/^\s*(.*?)\s*$/$1/s;
     if ($default && $result eq '') {