summaryrefslogtreecommitdiff
path: root/lib/libedit
AgeCommit message (Collapse)Author
2016-05-31Fix a crash in stifle_history() that occurred when the historyIngo Schwarze
contained more than twice as many entries as the new limit: The argument of remove_history() only counts existing elements, not those previously deleted. Crash found by bentley@ when exiting sqlite3(1).
2016-05-25el_map.alt can never be NULL, delete dead codeIngo Schwarze
OK czarkoff@
2016-05-25Saving errno in el_errno is only needed for one purpose:Ingo Schwarze
Restoring the original errno found in el_wgetc() after el_wgets() did some cleanup that may have changed errno. Improve clarity and robustness of the code by not setting and inspecting el_errno where it isn't needed; in particular, let keymacro_get() properly report read failure to read_getcmd(). Move el_errno to el_read_t because it's only used in read.c. Never set errno back to zero. Checked with a test program installing a USR1 signal handler without SA_RESTART, for the cases read_getcmd(), ed_quoted_insert(), keymacro_get(), ed_command(), and EL_EDITMODE=0. OK czarkoff@
2016-05-24Remove debugging ifdefs.Ingo Schwarze
I'm debugging the read module for weeks now, but these ifdefs aren't helpful. OK cpp(1).
2016-05-22Improve modularization at the chared/read boundary, no functional change.Ingo Schwarze
Stop the read.c module from poking the el_chared.c_macro data structure that used to belong to the chared.c module. Given that no other module, not even chared itself, is using that data, move it into the read modules's own opaque data structure, struct el_read_t. That gets rid of one struct, one #define, one struct member, and one function argument in the chared.h interface. OK czarkoff@
2016-05-22Document el_wpush(3) and fix the description of el_push(3).Ingo Schwarze
Improve precision in the description of the "bind" builtin command. Tweak terminology to better match editline(7).
2016-05-21Simple sync with NetBSD, mostly to avoid confusion of arguments andIngo Schwarze
return values.
2016-05-21Fix the prototype used by EL_GETCFN, mention the associated typedef name,Ingo Schwarze
document the return values, expand the list of affected functions, warn against using EL_GETCFN, and clarify some wording and notation.
2016-05-20Move the declaration of the function pointer type el_rfunc_tIngo Schwarze
from the private header "read.h" to the public header <histedit.h>. That's not an interface change, it was already used and documented publicly, merely not properly declared. Improve encapsulation: Make el_read a pointer to an opaque struct in struct editline, such that "read.h" no longer needs to be included from "el.h" but only from the two files using it, read.c and el.c. Only pass the required el_read_t to el_read_{s,g}etfn(), do not pass the full struct editline. OK czarkoff@, also proofread by Christian Heckendorf <mbie at ulmus dot me>.
2016-05-10Enable separate compilation while keeping internal interfaces hidden.Ingo Schwarze
Simplifies the build system and prevents modules from stomping on each other's static symbols. Based on a hint from guenther@, using feedback from kettenis@ and deraadt@.
2016-05-10Fix next_history() and previous_history():Ingo Schwarze
* The meaning of "next" and "previous" is exchanged in readline(3) with respect to editline(3); this part of the patch from Bastian Maerkisch. * next_history() can move beyond the newest entry; issue pointed out by Bastian Maerkisch, fix by me. While here, make the documentation of ed-next-history, ed-prev-history, H_NEXT, and H_PREV more precise. OK czarkoff@.
2016-05-10Fix history_get():Ingo Schwarze
* Respect history_base. * Bail out early for arguments that are too small. * Select entry by readline offset, not by editline event number. * Restore history cursor in case of failure. This fixes the test_remove() regression test. Based on a patch from Bastian Maerkisch <bmaerkisch at web dot de>. Dmitrij Czarkoff pointed out a flaw in it that i fixed. OK czarkoff@.
2016-05-09Fix stifle_history(): Remove excessive entries, if any.Ingo Schwarze
Based on a patch from Bastian Maerkisch <bmaerkisch at web dot de>, with an additional fix for a memory leak by me. OK czarkoff@
2016-05-08Change where_history() to agree with the GNU implementation:Ingo Schwarze
Return 0 for the oldest entry and increment by 1 for each newer, non-deleted entry. This fixes the test_where() regression test. Patch from Bastian Maerkisch <bmaerkisch at web dot de>. OK czarkoff@.
2016-05-08Make the history_set_pos() return values agree with the GNU implementation.Ingo Schwarze
Patch from Bastian Maerkisch <bmaerkisch at web dot de> with a minor tweak from Christos Zoulas. Fixes the test_set_pos_return_values() regression test. OK czarkoff@, also proofread by zhuk@ and by Christian Heckendorf <mbie at ulmus dot me>.
2016-05-06typos in comments; from Pedro Giffuni (FreeBSD) via Christos Zoulas (NetBSD)Ingo Schwarze
2016-05-06Replace the generated file "fcns.c" by a simpler header "func.h"Ingo Schwarze
included only in the one file needing it, "map.c". That allows to define el_action_t directly in "map.h", which in turn allows to stop including "fcns.h" from "el.h" and include it only in the modules needing it. Now we no longer autogenerate any C files. Feedback and OK martijn@. First version also proofread by Christian Heckendorf <mbie at ulmus dot me>.
2016-05-03Combine help.h and help.c into a simplified help.hIngo Schwarze
and include it only in the one file needing it, map.c. Also delete makelist -bc. OK martijn@, also proofread by Christian Heckendorf <mbie at ulmus dot me>
2016-05-03The files editline.c, historyn.c, and tokenizern.c are completelyIngo Schwarze
constant and very short and simple. Check them into CVS rather than generating them at build time in a complicated way. OK martijn@, also proofread by Christian Heckendorf <mbie at ulmus dot me>
2016-04-28Initialize the search buffer.Ingo Schwarze
Otherwise, if you called ed-search-prev-history before doing any history search but after entering at least one line into the history, the buffer could get accessed uninitialized, potentially resulting in a read buffer overrun. Segfault reported in sftp(1) via djm@ by Alf Schlichting <A dot Schlichting at lemarit dot com>, who also confirmed that the patch fixes the issue for him. OK martijn@ czarkoff@
2016-04-20delete unused -m option;Ingo Schwarze
ok martijn@ also checked by Christian Heckendorf <mbie at ulmus dot me>
2016-04-20New editline(7) manual, explaining to end-users how line editing worksIngo Schwarze
in programs like ftp(1), sftp(1), bc(1), and cdio(1) that use libedit. The existing editrc(5) manual only explains customization, and the existing editline(3) manual only explains the C language interface. Already listing all editor functions and all default key bindings, but in other respects, not 100% complete yet, and due to the sheer size, some bugs may have slipped, but all that can be fixed in the tree. OK and tweaks jmc@. Also seems reasonable to Christian Heckendorf <mbie at ulmus dot me>.
2016-04-18Delete redundant, empty callbacks;Ingo Schwarze
no functional change, minus hundred lines of code. OK martijn@; also proof-read by Christian Heckendorf <mbie at ulmus dot me>.
2016-04-13Re-introduce the following commit:Ingo Schwarze
OpenBSD read.c rev. 1.4 1997/06/10 20:10:13 millert FIONREAD takes int *, not long * It got lost in the following merge from NetBSD: OpenBSD read.c rev. 1.10 2003/10/31 08:42:24 otto OK millert@ martijn@
2016-04-12Cleanup, no functional change:Ingo Schwarze
* Make the return value from read_getcmd() less confusing. * No need to store that return value; testing it once is enough. * Get rid of one #ifdef section in el_wgets(). OK czarkoff@ martijn@
2016-04-12* Delete the unimplemented feature XK_EXE.Ingo Schwarze
* Delete the unused macro MIN(). No functional change. OK czarkoff@ martijn@
2016-04-11delete the "private" and "public" preprocessor macros, just use standard C;Ingo Schwarze
OK martijn@
2016-04-11Clean up chartype.h:Ingo Schwarze
* not used in tokenizer.c * only use it for !NARROWCHAR * no need for underscores before ct_{de,en}code_string() * make the conversion buffer resize function private OK martijn@
2016-04-11get rid of the non-standard data type "Char" in almost all files;Ingo Schwarze
ok martijn@
2016-04-11Move wrapper macros to the two files actually needing them:Ingo Schwarze
FUNW, Strlen, Strdup, Strcmp, Strncmp, Strncpy, Strncat -> history.c Strchr, tok_strdup -> tokenizer.c FUN, TYPE, STR -> both of these files OK martijn@ Also proofread by Christian Heckendorf <mbie at ulmus dot me> who reported some whitespace issues in parse.c.
2016-04-09For pointers, use NULL rather than 0; no functional change;Ingo Schwarze
from Pedro Giffuni via Christos Zoulas.
2016-04-09Delete 26 wrapper macros and two wrapper functions that are noIngo Schwarze
longer needed now that we always compile with wide character support, reducing code obfuscation. OK czarkoff@ martijn@. Diff also proofread by Christian Heckendorf <mbie at ulmus dot me>.
2016-04-09Always compile with WIDECHAR on and delete that preprocessor switch.Ingo Schwarze
OK martijn@. Diff also proofread by Christian Heckendorf <mbie at ulmus dot me>.
2016-04-09Reset the terminal to its initial state before exiting a programIngo Schwarze
using libedit, using code from NetBSD tty.c rev. 1.42, 1.48, 1.49, 1.58, and 1.59. Code mostly by Christos Zoulas, one bug report by John Hein, one additional bugfix by me (rev. 1.59). While here, switch t_mode to unsigned char, which is sufficient, also from NetBSD. OK martijn@. Also checked by Christian Heckendorf <mbie at ulmus dot me>.
2016-04-05Move more fcntl(,F_GETFL,0) -> fcntl(,F_GETFL).Kenneth R Westerback
No functional change. ok guenther@
2016-03-30for some time now mandoc has not required MLINKS to functionJason McIntyre
correctly - logically complete that now by removing MLINKS from base; authors need only to ensure there is an entry in NAME for any function/ util being added. MLINKS will still work, and remain for perl to ease upgrades; ok nicm (curses) bcook (ssl) ok schwarze, who provided a lot of feedback and assistance ok tb natano jung
2016-03-22format string fixes in debug code;Ingo Schwarze
committing right away because this code is not even compiled by default
2016-03-22Add NULL checkmartijn
OK schwarze@
2016-03-22Fix an obvious typo in a NUL check;Ingo Schwarze
bug reported by David Binderman http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=50880 fix suggested by me, NetBSD rev. 1.23 and rev. 1.24.
2016-03-21Christos Zoulas just rescinded clauses 3 & 4 of his licenses, seeIngo Schwarze
NetBSD chartype.c rev. 1.23, chartype.h rev. 1.25, eln.c rev. 1.28. No code change.
2016-03-21Markup fixes: use .Ev and .Er where appropriate.Ingo Schwarze
While here, also use \-1 rather than -1; not sure that's really better, but Thomas is right it should at least be consistent within a page. From Thomas Klausner <wiz @ NetBSD>.
2016-03-21fix el_{w,}getc documentation;Ingo Schwarze
OK czarkoff@
2016-03-21Make the read_char() function always take a wchar_t * argument.Ingo Schwarze
On first sight, it might look as if this required a bump because it seems to change the public type el_rfunc_t. But we only compile with WIDECHAR, and in that case, there is no change in the interface. This also simplifies some logic by getting rid of the NARROW_READ flag which was broken anyway. OK czarkoff@
2016-03-21Reduce the FUN() macro madness by no longer applying it to el_[w]getc(3).Ingo Schwarze
Always use el_wgetc(3) internally. In the !WIDECHAR case, casting the result to (Char) is safe because the function returns a byte rather than a character in that case. No functional change except for fixing a printf(3) format string issue when compiled with DEBUG_READ and WIDECHAR. OK czarkoff@
2016-03-21Merge a few simple fixes from NetBSD:Ingo Schwarze
NetBSD rev. 1.68 2012/09/10 christos (bugfixes from Steffen Nurpmeso) * el_wgetc(): set el_errno after read_char() failure * el_wgets(): flag error condition after read_getcmd() failure NetBSD rev. 1.69 2012/09/11 christos (bugfix from Christos Zoulas) * read_getcmd(): return failure after el_wgetc() failure NetBSD rev. 1.75 2016/02/12 christos (cleanup from Christos Zoulas) * read_getcmd(): use a constant rather than a magical number
2016-03-20Cleanup of standard header inclusion:Ingo Schwarze
1. Add the missing <errno.h> to sig.c. 2. Do not include standard headers from private headers "chared.h" and "el.h", include them directly where needed. 3. Delete a few needless inclusions of <ctype.h>. 4. Sort the standard headers. 5. Delete _GNU_SOURCE weirdness from histedit.h, that file doesn't even need the access to wcsdup(3) mentioned in the comment. 6. Delete some trailing blanks and blanks before tabs. OK czarkoff@
2016-03-20delete useless "typedef int bool_t", use int directly;Ingo Schwarze
OK czarkoff@
2016-03-20Cleanup of private header inclusion:Ingo Schwarze
1. Do not include private headers from "chared.h", "hist.h", "prompt.h", "refresh.h", "search.h", "sig.h", "terminal.h", "tty.h". The only private header having to include other private headers is "el.h". 2. Do not include "common.h", "parse.h", "help.h" from "el.h", and do not include "emacs.h" and "vi.h" from "chared.h", include them directly where needed. 3. Do include "fcns.h" from "el.h" because el_func_t is needed for "map.h". 4. Do not include private headers again that are already included by "el.h". 5. Include private headers after standard headers. OK czarkoff@
2016-03-20support WIDECHAR;Ingo Schwarze
OK czarkoff@
2016-03-20Use getline(3) rather than fgetln(3) because it is standardizedIngo Schwarze
and simpler and safer to use. Implemented by Christos Zoulas following my suggestion, with a bug fix by me.