made all protocol except PC29 reject %xx characters
[spider.git] / perl / console.pl
index 0cb15bd0fbc0171446f40fde6151ee100621f8d7..50196907829e16608af9cfc0a4f95f0132efdbcb 100755 (executable)
@@ -159,10 +159,26 @@ sub rec_stdin
        #  $prbuf =~ s/\n/\\n/;
        #  print "sys: $r ($prbuf)\n";
        if (defined $r) {
+               
                if ($r eq KEY_ENTER || $r eq "\n" || $r eq "\r") {
                        
                        # save the lines
                        if ($inbuf) {
+                               # check for a pling and do a search back for a command
+                               if ($inbuf =~ /^!/o) {
+                                       my $i;
+                                       $inbuf =~ s/^!//o;
+                                       for ($i = $#khistory; $i >= 0; $i--) {
+                                               if ($khistory[$i] =~ /^$inbuf/) {
+                                                       $inbuf = $khistory[$i];
+                                                       last;
+                                               }
+                                       }
+                                       if ($i < 0) {
+                                               beep();
+                                               return;
+                                       }
+                               }
                                push @khistory, $inbuf if $inbuf;
                                shift @khistory if @khistory > $maxkhist;
                                $khistpos = @khistory;
@@ -251,6 +267,13 @@ sub rec_stdin
                                beep();
                        }
                } elsif ($r ge ' ' && $r le '~') {
+                       # move the top screen back to the bottom if you type something
+                       if ($spos < @shistory - 1) {
+                               $spos = @shistory;
+                               show_screen();
+                       }
+               
+                       # insert the character into the keyboard buffer
                        if ($pos < $lth) {
                                my $a = substr($inbuf, 0, $pos);
                                my $b = substr($inbuf, $pos);