forked from hanslub42/rlwrap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
562 lines (367 loc) · 21.7 KB
/
NEWS
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
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.