1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662
|
0.46 rlwrapfilter.py would not find collections.Callable on
newer (>= 3.10) python
rlwrapfilter.py would choke on rlwrap version strings
(like 0.45.2) that cannot be converted by float()
rlwrap could segfault or garble prompts if they contain
a carriage return
configure.ac would complain about obsolete macros with
newest autoconf
Bind TAB to self-insert if no completions are specified on
the rlwrap command line
0.45.2 rlwrap enables bracketed-paste when instructed to do so by
.inputrc, but would then never disable it at exit.
rlwrap -z (i.e. rlwrap when using a filter) would still open
/tmp/rlwrap.debug after forking the filter command, preventing
other users from running it afterwards
0.45.1 rlwrap would always open /tmp/rlwrap.debug after forking child
command, preventing other users from running it.
Fix args to setitimer() call to prevent EINVAL error on return
advise about --always-readline if in direct mode at first user
ENTER keystroke
check for I_SWROPT even if isastream() is present (compile would
fail on Oracle linux)
0.45 rlwrap correctly handles bracketed paste
--only-cook '!<regexp>' enables "confident mode" where every
possible prompt that matches a regexp is cooked immediately
(so that even prompts that get printed when handling a large
paste are cooked)
--ansi-colour-aware (-A) didn't do anything at all. Now it
recognises colour codes as well as common control codes like
window titles. --ansi-colour-aware="!" will "bleach" the
prompt, i.e. remove all colour codes
--no-children (-N) now enables direct mode whenever the client
switches to the alternate screen. This makes editors and pagers
usable even when using --always-readline on non-linux systems
when run inside an emacs shell buffer, rlwrap will execute the
client instead of wrapping it (just as when stdin is not a
terminal)
--always-echo echoes user input even when the client has
switched off ECHO.
filter "makefilter" to easily employ shell commands (like sed,
or grep) as rlwrap filters (extending/superseding "outfilter")
filters can change (some) bindable and internal readline
variables with a new RlwrapFilter method tweak_readline_oob()
On AIX, rlwrap would quit if client wrote 0 bytes
a round of testing on Polarhome to weed out some
incompatibilities with older Unix systems
0.44 rlwrap doesn't (yet) work with bracketed-paste. As this is
enabled by default from readline-8.1 onwards, rlwrap disables
it, even if specified in .inputrc. A multi-line paste will
therefore (still) behave as multiple 1-line pastes
rlwrap is aware of multi-byte characters and correctly
handles prompts (or things that look like prompts, e.g.
progress indicators) that contain them, according to your
locale.
rlwrap filters can also filter signals (see
RlwrapFilter(3pm)), changing them, or providing extra input to
the rlwrapped command.
Key *sequences* can be bound to rlwrap-direct-keypress
(using a new readline command rlwrap-direct-prefix) (contributed
by Yuri d'Elia)
configure will correctly identify whether --mirror-arguments
will work, even on 1-processor systems
the handle_hotkey filter has a handler definition that enables
fuzzy history search using fzf
binding accept-line to a key would make that key mess up the
display
The debug log is more readable (e.g. by marking debug lines
with "parent", "child" or "filter")
0.43 Added Hisanobu Okuda's rlwrapfilter.py python3 module
and example filters. Filters can now be written in python
as well as perl.
If a filter was used, rlwrap would pass all input, output,
history items, prompts, ... through the filter, even if it
wouldn't change them. Now, at startup, filters (even filter
pipelines) tell rlwrap which messages they handle, after which
rlwrap won't bother them with anything else.
Added bindable readline command rlwrap-direct-keypress
that bypasses readline editing and sends its keypress directly
to the rlwrapped command (like CTRL-G for the Erlang shell)
Added bindable readline command rlwrap-hotkey that passes
the current input buffer and history to the filter (or
filter pipeline) specified with the '-z' option. This can
be used e.g. to insert the current selection at the cursor
position, or to edit (re-write) the history.
This uncovered quite a few bugs and inconsistencies:
- My ncurses' termcap emulation misses some codes (like
term_cursor_hpos) that its terminfo has. rlwrap now
always searches terminfo before termcap.
- rlwrap was confused about the role of history_offset,
resulting in muddled and unclear (although correct) code.
- rlwrap --history-size -0 would clobber the history file
(as per the manual - that has been updated as well)
- rlwrap's ad hoc way of sending lists of strings to filters
by interspersing them with TABS or spaces is becoming
unwieldy, it has been replaced by a standard encoding
<length1><string1><length2><string2>.... (where the
<lengths> are fixed length hexadecimal numbers (this is a
contribution by Hisanobu Okuda)
Playing back a readline macro consisting of more than one line
would crash with SIGSEGV
rlwrap with negative --histsize would fail when there is no
history file yet.
An empty prompt would make $filter->{cumulative_output} miss
its last line
Pre-given (-P) input would only be put in input line after
cooking timeout (usually 40 msec)
One-shot (-o) rlwrap could accept more than one line when input
in quick succession.
rlwrap didn't delete the tempfiles used in a multi-line
edit
configure.ac now works even when cross-compiling (skipping some
tests, but providing sensible defaults)
--enable-pedantic-ansi is a new configure option separate from
--enable-debug (it used to be implied by --enable-debug)
--complete-filenames (-c) will now work on OS X and FreeBSD as well
0.42 Added --mirror-arguments (-U) option
On SunOS tcgetattr(slave pty) failed with "Invalid argument"
If the completion list contained two words, one of which a
prefix of the other (e.g. "sea" and "seagull") the shorter one would
be skipped when displaying a list of completions
reading completion files (with the -f option, or from
$RLWRAP_HOME/<command>_completions) could fail with an incorrect
ENOENT ("No such file or directory")
rlwrap -z listing wouldn't list filters
When both master and slave pty are unfit for sensing slave
commands terminal settings, rlwrap now bails out with an error
"cannot determine terminal mode of slave command"
0.41 Slightly late SIGCHLD could cause an I/O error on master pty
Added -W (-polling) option to poll slave pty for changes in its
interrupt character and ISIG flag.
if $TERM is not found in termcap/terminfo database, use vt100
0.40 configure will now find tgetent() in libtinfo
compiling with gcc -O2 made rlwrap hang after CTRL-D on empty line
HP-UX 11 has weird tgetent() return values, confusing rlwrap
On Solaris, rlwrap would sometimes fail with "TIOCSWINSZ failed on
slave pty"
Single quote ' is now word-breaking by default
multi-line edit would mangle upper ASCII and UTF-8 (and still does
that to UTF16 :( )
added --extra-char-after-completion and -multi-line-ext options
rlwrap now recognises the 'rmcup' and 'rmkx' character sequences used by
programs that use an alternate screen (like editors and pagers) to return
from it.
configure will now correctly determine pty type on SCO OpenServer
rlwrap --no-children would leak file descriptors to /proc/<command_pid>/wchan
non-ASCII characters in multi-line input are no longer replaced
by spaces after calling an external editor
running rlwrap within emacs would crash (division by zero).
rlwrap now bails out whenever terminal width == 0
added --enable-proc-mountpoint config option to use alternate linux-like
proc filesystems (like in FreeBSD) for finding <command>s working dir (-c option)
and kernel function in which <command> is sleeping (-N option)
added prototype for copy_without_ignore_markers, fixing a segfault on NetBSD/amd64
commands final output before dying was lost on FreeBSD
Filters now get complete echo lines even if the echo comes back in chunks
0.37 Commands that emit "status lines" using backspaces and carriage
returns could confuse rlwrap
removed test program kaboom.c that triggered an internal
gcc error on armel platforms.
rlwrap uses C strings internally, and thus cannot cope with
command output that contains zero bytes (padding). It used to
replace these with spaces, now the zero bytes are removed.
if the RLWRAP_HOME is set, but $RLWRAP_HOME doesn't exist, rlwrap
will create it
typo: SIGERR instead of SIG_ERR in signals.c
0.36 Entering a line from vi command mode would echo the input twice
Output from very busy commands would not always be printed on time
When rlwrap kills itself after a command crash it will not dump
core, in order to avoid clobbering command's much more interesting
core dump.
Premature filter death is now reported properly (it used to only
say: "EOF reading from filter" or "Broken pipe writing to filter")
0.35 config.{guess,sub} have been updated to version 2009-12-13
Corrected array bounds error in my_putstr("") (which could make
rlwrap write an extra newline when exiting, but might even crash
on some systems)
Many small improvements and fixes for multi-line input:
Multi-line inputs are now written to the inferior command one
line at a time, so that command's response (e.g. a continuation
prompt) can be interleaved with the echo'ed (multi-line) input.
Calling an external editor will no longer obliterate the prompt,
and line/column positions are now correct.
After a multi-line edit in vi-mode, the cursor will no longer
end up one line too high.
CTRL-D on an empty line was handed directly to command, but also
(erroneously) put in readline's input buffer
Many small fixes and improvements in signal handling:
SIGSEGV, and other "error" signals like SIGFPE, are now unblocked
all of the time, so that rlwrap can always clean up after a crash.
Since version 0.25 rlrwap's transparency extends to signals: if
the inferior command segfaults, rlwrap will kill itself with a
SIGSEGV. In order to get the bug reports where they belong,
rlwrap now reports explicitly that it has not crashed itself.
rlwrap's call to sigaction forgot to set the signal mask (!)
Continuing after CTRL-Z on QNX now wakes up command
Added --one-shot (-o) and --only-cook (-O) options
debug log is now in a format that works well with emacs' grep-mode
rlwrap's bindable readline function names (like rlwrap-call-editor) are
now in hyphen-style instead of underscore_style (use of the
old_style_names will now be flagged as an error)
Filters can now prevent a prompt from being cooked by "rejecting" it.
Rlwrapfilter.pm would set $_ incorrectly in echo and output handlers.
RlwrapFilter.pm manpage is now created by newer (and less buggy)
version of pod2man
Added EXAMPLES section and -t option to rlwrap manpage
0.34 Binding wide (e.g. utf-8) chars in .inputrc now works
prefix arguments are now correctly reset (M-5 a b now
yields aaaaab instead of aaaaabbbbb)
0.33 rlwrap incorrectly fed terminfo-style capnames ("dl1") instead of
termcap codes ("dl") into tgetstr(). On newer Debian systems this
exposed a bug where random garbage would be printed by rlwrap
Hyphens in rlwrap manpage are now all properly escaped
RlwrapFilter.pm now only re-sets $filter->cumulative_output when an
INPUT message is received
0.32 Major new feature: filtering. Filters sit between rlwrap and the
wrapped command, re-writing command output, input, prompts,
history, and completion word lists.
System-wide filters live in DATADIR/rlwrap/filters (where DATADIR =
/usr/local/share by default, installation-dependent) Because of this,
completions now live in DATADIR/rlwrap/completions (until now:
DATADIR/rlwrap)
To make filter writing easy, a perl module RlwrapFilter.pm has
been added. It doesn't become part of your perl installation, but lives
in DATADIR/rlwrap/filters
rlwrap didn't properly check errno after reading from inferior pty.
This could lead to a spurious "read error on master pty"
Instead of using crusty old signal(), signal handlers are now set
by sigaction() without SA_RESTART (BSD semantics) Different
syscall-restarting behaviour among systems caused hard-to-trace
bugs
Now copies inferior pty's c_oflags to stdout before
output. (some editors like joe would mess up the screen)
prompt handling logic has been streamlined. Coloured prompt handling is
reliable now, even for long prompts.
At program exit, rlwrap now outputs a newline only when the client
didn't.
Added -g, -I, -N, -S, -w and -z options
Removed -F option (and added a filter to replace it)
-p option now takes colour names (-pYellow)
rlwrap (and readline) uses C strings internally, which could cause problems
with commands that output '\0' bytes. In direct mode, such
characters are left untouched, but in readline mode they are
replaced by spaces.
the tools directory has been updated, so that configure will
feel at home even on newer systems
tested on SunOS, AIX, FreeBSD, HP/UX, QNX (thanks to polarhome.com), as
well as cygwin and linux
0.30 rlwrap can now use putenv() on machines that don't have
setenv() (like some Solaris systems)
EOF on stdin (e.g. by pressing CTRL-D) would end prompt colouring.
added -q option
0.29 added -A option to handle (ANSI-)coloured prompts
added -p option to colourise uncoloured prompts
added -t option to set terminal type for client command
rlwrap now copies its terminal settings from the client
even when this has put its terminal in single-keypress
(uncooked) mode. A rlwrapped emacs will now respond to CTRL-C
and CTRL-G as it should.
fixed a long-standing bug where long output lines with the -r option
would put mutilated words into the completion list. Drawback:
prompts are not put into the completion list anymore (bug or feature?).
rlwrap now handles output to the client before input from the
client, and only handles keyboard input when all client I/O has
been handled. This will make rlwrap a little better behaved when
handling large chunks of (pasted) input, especially with colourised
prompts
error messages and warnings now include the rlwrap version number
rlwrap now prints a warning when started in vi mode when the
terminal is too dumb to support upwards cursor movement
added a very simple custom malloc/free debugger for use with the
--debug option. Rather fragile and not well tested, use with care.
Whenever TERM is not set, rlwrap assumes vt100. Set TERM=dumb if
you really have a dumb terminal.
rlwrap now leaves the handling of multi-line prompts and edit
buffers to readline (except when in horizontal-scroll mode or when
configured with --enable-homegrown-redisplay).
whenever --always-readline is set, SIGWINCH not passed to
client command immediately, but only *after* accepting a line.
multi-byte prompts and input no longer confuse rlwrap (provided
your readline lib supports multi-byte characters)
--spy-on-readline now enabled by default
the configure script will now find term.h on cygwin
dropped the assumption that tgetent() and friends are only ever
declared in term.h; rlwrap now has proper terminal handling also
under SunOS.
the rlwrap source should again be fit for consumption by older
(C91 compliant) compilers
0.28 fixed rlwrap bug that caused termcap problems on Fedora Core 6
(thanks Tung Nguyen)
0.27 when stdin is not a terminal, rlwrap will now exec() the
specified command instead of complaining
when stdout or stderr is not a terminal, rlwrap will re-open
it to /dev/tty (the users terminal) after forking off the
specified command (so "rlwrap cat > file" will work as a
quick and dirty line editor)
rlwrap now remembers inputs of length 1
-D option to tell rlwrap how agressively it should weed out
duplicate history entries
-H option added (history format string)
Added temporary fix for termcap weirdness on Fedora Core 6
new -t option for a quick check of terminal capabilities
(requires configuration with --enable-debug)
rlwrap -s 0 <command> will now zap <commands> history
fixed broken reporting of unrecognised options
0.26 configure on FreeBSD 6.0 still didn't find libutil
some files were unnecessarily kept open (thanks Stephan Springl)
on each platform, rlwrap -h now accurately reflects whether
rlwrap can use long options or optional arguments
0.25 rlwrap would print input twice when in vi-mode
rlwrap under FreeBSD 6.0 now uses openpty() from libutil (config
script fixed)
-P option added (one-shot rlwrap with pre-given prompt)
Until now, whem the underlying command was killed by a signal,
rlwrap would just exit with exit code 0. Now rlwrap will
cleanup, reset its signal handlers and then send the same signal
to itself - so that rlwraps parent (usually a shell) doesn't see
the difference with an un-rlwrapped command
0.24 rlwrap -r would mess up commands output (strtok() strikes again!)
-i option added to make completion case-insensitive
-m option added in order to handle multi-line input
rlwrap now writes to underlying command using non-blocking writes
and select(). This prevents deadlocks which could occur with very
large inputs.
corrected some manpage clumsiness
0.23 Completion word lists are now kept in red-black trees
(cf. http://libredblack.sourceforge.net/), dramatically speeding up
startup with large completion lists.
rlwrap copies terminal settings from client, so that wrapping
programs that manipulate their terminal (like emacs and vim)
should be transparent.
rlwrap -C1 <command_without_arguments> is now accepted
0.22 Added key binding to enter a line while keeping it out of the
history list (Control+O by default)
0.21 Added --history-filename option.
Negative history size now means: don't write or truncate history
Updated helper scripts (like config.sub) in ./tools
multiple -f options again work correctly
--enable-homegrown-redisplay configuration option added
(kludge to circumvent display problems like sometimes
reported on Solaris)
All unsafe string handling functions (strcpy, sprintf,..) replaced
by their safe equivalents - using strlcat and consorts when available.
--enable-spy-on-readline configuration option to keep display tidy
when resizing terminal
0.19 Fixed pty type finding code in configure.ac (newer FreeBSD's
were recognised as cygwin)
Helper scripts moved to separate ./tools directory
0.18 rlwrap could hang when trying to run a non-existent command.
0.17 EOF on stdin would send rlwrap into infinite loop.
Small bugfixes in testclient, which now works with perl 5.8 and
cygwin.
0.16 ptys can be found and correctly opend on many more systems
(thanks to code taken from rxvt).
Makefiles now generated by automake.
Much beter debugging, -d option now takes optional bitmask
to report only certain events.
System-wide completion files now in $datadir/rlwrap
(normally /usr/local/share/rlwrap).
-C and -n options added, -a option can take an argument (to
prevent password logging when using this option).
assert() macro used for run-time consistency checks.
CTRL-D on empty line now sends EOF to client even on SunOS.
manpage displays correctly even when using troff instead of groff.
Long options now in --dash-style instead of --underscore_style.
0.15 Fixed a bug where rlwrap would segfault with -f option.
0.14 Fixed a few portability problems.
0.13 Duplicate history entries are avoided at all times, even across
invocations.
Tries to chdir into the slave command's working directory before
attempting filename completion (only on OS'es where this is found
under /proc/<pid>/cwd, like linux and SunOS).
Now honours 'set horizontal-scroll-mode off' in .inputrc.
Slave pty is never closed in parent (even after slave's death),
preventing long timeouts in OSes with streams-based pty IO.
Lots of small fixes to adapt to gcc 3.x's more finicky behaviour
(e.g. avoiding multi-line strings, not automaticaly including system
includes in Makefile.in).
configure rewrites manpage to reflect rlwraps capabilities on each
platform.
history searching with CTRL-R (backwards-search-history) now works,
!-completion is cleaned up (could even segfault in previous versions).
SIGSEGV is now caught in order to reset terminal.
0.12 When slave pty's ECHO flag is unset (e.g. when entering a password)
rlwrap now displays asterisks for every input character like this:
Password: ******
Better handling of very long prompts, or very narrow terminal windows.
If the prompt is wider than the current terminal, rlwrap assumes
that it has wrapped around and uses the last (wrapped) line of
it as the new prompt.
Slave pty is opened (and remains open) in parent, allowing slave side
to be monitored instead of master.
testclient (a perl script) has been added, uncovering quite a few
embarassing bugs.
system-wide completion word lists (in $sysconfdir/rlwrap) can be used.
0.11 If the tcgetattr() call to determine the pty's echo mode fails at
startup, rlwrap now sleeps for 1 second before trying again
once. (on FreeBSD, the first call will normally fail, but (most of
the time) not the second, due to a race condition that
ought to be fixed by some form of synchronisation between parent
and child)
--libdir and --includedir for configure now work, as well as
LDFLAGS=xxxx ./configure.
Filename completion now works again (when -c option is set).
User input is now echoed correctly when the pty's echo mode cannot be
determined (in that case a warning is printed at startup that
passwords will be saved in the history file).
0.10: logging (-l option) implemented.
history_filename and completion_filename now live on the heap
instead of in fixed-length buffers.
0.07: Readline mode is entered (by registering callback) with the
first keypress of a new line, not before. All command output before that
will just be written to stdout unchanged (long lines could become garbled
in 0.06 and earlier).
Signal handling (esp. SIGTSTP and SIGWINCH) is much improved.
The -a option forces rlwrap to use readline, which is useful if you
want to rlwrap a command that already uses readline.
<TAB> is now bound to menu-complete by default: it will cylce through all
possible completions, instead of listing them all, as in 0.06.
0.06: Transparent mode (immediately handing down keypresses) is now
automatic whenever the pty has its ICANON flag unset.
readline version 4.2 is now mandatory.
Cleanup of code, eliminating many bugs, possibly introducing
others (ugh!)
Application name (used by readline) is now set to command name.
Duplicate history entries are not remembered.
Manpage updated: environment variable RLWRAP_HOME is now documented.
0.04: When started in transparent mode, now properly returns to it after
each readline edit.
Senses the pty's ECHO flag. When this is unset, rlwrap doesn't echo
user input. Neither is it put in the history list (which would contain
passwords etc. otherwise).
0.03: Now uses .<command>_history and .<command>_completions
files (by default in $HOME).
0.02: A couple of #ifdefs for portability (tested on BSDI and Digital Unix).
0.01: Initial version.
|