The NetBSD Project

CVS log for src/lib/libedit/read.c

[BACK] Up to [cvs.NetBSD.org] / src / lib / libedit

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.108: download - view: text, markup, annotated - select for diffs
Sun Oct 30 19:11:31 2022 UTC (2 years, 1 month ago) by christos
Branches: MAIN
CVS tags: perseant-exfatfs-base-20240630, perseant-exfatfs-base, perseant-exfatfs, netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, HEAD
Diff to: previous 1.107: preferred, colored
Changes since revision 1.107: +14 -11 lines
improvements in malloc/free handling.

Revision 1.107: download - view: text, markup, annotated - select for diffs
Sun Aug 15 10:08:41 2021 UTC (3 years, 3 months ago) by christos
Branches: MAIN
Diff to: previous 1.106: preferred, colored
Changes since revision 1.106: +3 -3 lines
Disable attempts to handle EINTR and non-blocking I/O by default. It is
confusing to other programs and unexpected behavior. Reported by Ingo Schwarze.
This behavior is now controlled with EL_SAFEREAD.

Revision 1.103.6.2: download - view: text, markup, annotated - select for diffs
Mon Apr 13 08:03:12 2020 UTC (4 years, 7 months ago) by martin
Branches: phil-wifi
Diff to: previous 1.103.6.1: preferred, colored; branchpoint 1.103: preferred, colored; next MAIN 1.104: preferred, colored
Changes since revision 1.103.6.1: +3 -4 lines
Mostly merge changes from HEAD upto 20200411

Revision 1.106: download - view: text, markup, annotated - select for diffs
Tue Jul 23 10:18:52 2019 UTC (5 years, 4 months ago) by christos
Branches: MAIN
CVS tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, netbsd-9-base, netbsd-9-4-RELEASE, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, is-mlppp-base, is-mlppp, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Diff to: previous 1.105: preferred, colored
Changes since revision 1.105: +3 -4 lines
PR/54399: Sören Tempel: Uninitialized memory access in libedit history.
Initialize the buffer using calloc. While here change all malloc(a * sizeof(b))
to calloc(a, sizeof(b)). XXX: should fix realloc similarly.

Revision 1.103.6.1: download - view: text, markup, annotated - select for diffs
Mon Jun 10 22:05:23 2019 UTC (5 years, 6 months ago) by christos
Branches: phil-wifi
Diff to: previous 1.103: preferred, colored
Changes since revision 1.103: +3 -9 lines
Sync with HEAD

Revision 1.103.4.1: download - view: text, markup, annotated - select for diffs
Mon Nov 26 01:52:12 2018 UTC (6 years ago) by pgoyette
Branches: pgoyette-compat
CVS tags: pgoyette-compat-merge-20190127
Diff to: previous 1.103: preferred, colored; next MAIN 1.104: preferred, colored
Changes since revision 1.103: +3 -9 lines
Sync with HEAD, resolve a couple of conflicts

Revision 1.105: download - view: text, markup, annotated - select for diffs
Sun Nov 25 16:21:04 2018 UTC (6 years ago) by christos
Branches: MAIN
CVS tags: phil-wifi-20190609, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126
Diff to: previous 1.104: preferred, colored
Changes since revision 1.104: +7 -2 lines
From Yuichiro Naito (FreeBSD):

hrs@ says that
(cbp >= MB_LEN_MAX) condition is necessary for checking invalid
byte sequences.  If malicious input was given, libedit would read
byte sequences forever.

Revision 1.104: download - view: text, markup, annotated - select for diffs
Sun Nov 18 17:09:39 2018 UTC (6 years ago) by christos
Branches: MAIN
Diff to: previous 1.103: preferred, colored
Changes since revision 1.103: +2 -13 lines
Remove utf-8 requirement (Yuichiro NAITO)

Revision 1.102.6.1: download - view: text, markup, annotated - select for diffs
Sun Jul 23 14:41:26 2017 UTC (7 years, 4 months ago) by snj
Branches: netbsd-8
CVS tags: netbsd-8-3-RELEASE, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, matt-nb8-mediatek-base, matt-nb8-mediatek
Diff to: previous 1.102: preferred, colored; next MAIN 1.103: preferred, colored
Changes since revision 1.102: +3 -4 lines
Pull up following revision(s) (requested by kre in ticket #102):
	lib/libedit/Makefile: 1.64-1.65
	lib/libedit/editline.3: 1.94-1.96
	lib/libedit/editrc.5: 1.33
	lib/libedit/el.c: 1.93-1.94
	lib/libedit/el.h: 1.42
	lib/libedit/literal.c: 1.1-1.3
	lib/libedit/literal.h: 1.1-1.2
	lib/libedit/prompt.c: 1.27
	lib/libedit/read.c: 1.103
	lib/libedit/refresh.c: 1.52-1.54
	lib/libedit/refresh.h: 1.11
	lib/libedit/terminal.c: 1.33
Make the default editrc file be $EDITRC (from env) if set, falling back
to $HOME/.editrc otherwise.    Better support for this in sh coming.
--
Include EDITRC in doc.
--
mention the limitation of the literal sequence delimiter.
--
- handle literal escape sequence printing.
- factor out common code in allocation and freeing of the display.
--
- add literal sequence handling.
--
remove unused variable
--
add literal escape sequence support, patterned after the tcsh ones.
--
fix comment
--
Fix an obvious, but almost invisible typo (avoid some core dumps).
--
Allow wide characters (properly encoded as byte strings according to LC_CTYPE)
to be (perhaps part of) the "invisible" characters in a prompt, or the
required prompt character which follows the literal sequence (this character
must be one with a printing column width >= 1).  The literal indicator
character (which is just a marker, and not printed anywhere) (the PSlit
parameter in sh(1)) can also be a wide char (passed to libedit as a wchar_t,
encoded as that by sh(1) or other applications that support this.)
Note: this has currently only been tested with everything ascii (C locale).
--
Remove workaround for ancient HTML generation code.

Revision 1.103: download - view: text, markup, annotated - select for diffs
Tue Jun 27 23:24:19 2017 UTC (7 years, 5 months ago) by christos
Branches: MAIN
CVS tags: phil-wifi-base, pgoyette-compat-base, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, perseant-stdc-iso10646-base, perseant-stdc-iso10646
Branch point for: phil-wifi, pgoyette-compat
Diff to: previous 1.102: preferred, colored
Changes since revision 1.102: +3 -4 lines
remove unused variable

Revision 1.101.2.1: download - view: text, markup, annotated - select for diffs
Sat Jan 7 08:56:04 2017 UTC (7 years, 11 months ago) by pgoyette
Branches: pgoyette-localcount
Diff to: previous 1.101: preferred, colored; next MAIN 1.102: preferred, colored
Changes since revision 1.101: +3 -2 lines
Sync with HEAD.  (Note that most of these changes are simply $NetBSD$
tag issues.)

Revision 1.102: download - view: text, markup, annotated - select for diffs
Sun Dec 11 15:47:06 2016 UTC (8 years ago) by christos
Branches: MAIN
CVS tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, netbsd-8-base, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Branch point for: netbsd-8
Diff to: previous 1.101: preferred, colored
Changes since revision 1.101: +3 -2 lines
PR/51706: Amir Plivatsky: Fix memory leak

Revision 1.101: download - view: text, markup, annotated - select for diffs
Wed May 25 13:01:11 2016 UTC (8 years, 6 months ago) by christos
Branches: MAIN
CVS tags: pgoyette-localcount-base, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, localcount-20160914
Branch point for: pgoyette-localcount
Diff to: previous 1.100: preferred, colored
Changes since revision 1.100: +35 -63 lines
abstract read code to a single function (Ingo Schwarze)

Revision 1.100: download - view: text, markup, annotated - select for diffs
Tue May 24 19:31:27 2016 UTC (8 years, 6 months ago) by christos
Branches: MAIN
Diff to: previous 1.99: preferred, colored
Changes since revision 1.99: +2 -4 lines
el_map.alt can't be NULL here (Ingo Schwarze)

Revision 1.99: download - view: text, markup, annotated - select for diffs
Tue May 24 17:42:54 2016 UTC (8 years, 6 months ago) by christos
Branches: MAIN
Diff to: previous 1.98: preferred, colored
Changes since revision 1.98: +4 -71 lines
remove debug read (Ingo Schwarze)

Revision 1.98: download - view: text, markup, annotated - select for diffs
Tue May 24 15:00:45 2016 UTC (8 years, 6 months ago) by christos
Branches: MAIN
Diff to: previous 1.97: preferred, colored
Changes since revision 1.97: +21 -27 lines
From Ingo Schwarze:

Reduce obfuscation of errno handling. There is only one purpose
non-local errno handling is needed for:  Inside el_wgets(), several
functions call down indirectly to el_wgetc(), many of them via the
dispatch table.  When el_wgetc() fails, it does properly report
failure, but then various cleanup is done which may clobber errno.
But when returning due to failure, el_wgets() wants to have errno
set to the reason of the original read failure, not to the reason
of some subsequent failure of some cleanup operation.  So el_wgetc()
needs to save errno, and if it's non-zero, el_wgets() needs to
restore it on failure.

This core logic is currently obscured by the fact that el_errno
is set and inspected at some additional places where it isn't needed.
Besides, since el_wgetc() and and el_wgets() are both in read.c,
el_errno does not need to be in struct editline, it can and should
be local to read.c in struct el_read_t.

Let's look at what can be simplified.

 1. keymacro_get() abuses el_errno instead of having a proper
    error return code.  Adding that error return code is easy
    because node_trav() already detects the condition and an
    adequate code is already defined.  Returning it, testing
    for it in read_getcmd(), and returning with error from there
    removes the need to inspect el_errno from el_wgets() after
    calling read_getcmd().
    Note that resetting lastchar and cursor and clearing buffer[0]
    is irrelevant.  The code returns from el_wgets() right afterwards.
    Outside el_wgets(), these variables are no longer relevant.
    When el_wgets() is called the next time, it will call ch_reset()
    anyway, resetting the two pointers.  And as long as lastchar
    points to the beginning of the buffer, the contents of the
    buffer won't be used for anything.

 2. read_getcmd() doesn't need to set el_errno again after el_wgetc()
    failure since el_wgetc() already did so.  While here, remove
    the silly "if EOF or error" comments from the el_wgetc()
    return value tests.  It's a public interface documented in a
    manual, so people working on the implementation can obviously
    be expected to know how it works.  It's a case of

      count++;  /* Increment count. */

 3. In the two code paths of el_wgets() that lead up to "goto noedit",
    there is no need to save the errno because nothing that might
    change it happens before returning.

For clarity, since el_wgets() is the function restoring the errno,
also move initializing it to the same function.

Finally, note that restoring errno when the saved value is zero is
wrong.  No library code is ever allowed to clear a previously set
value of errno.  Only application programs are allowed to do that,
and even they usually don't need to do so, except when using certain
ill-designed interfaces like strtol(3).

I tested that the behaviour remains sane in the following cases,
all during execution of el_wgets(3) and with a signal handler
for USR1 installed without SA_RESTART.

 * Enter some text and maybe move around a bit.
   Then send a USR1 signal.
   The signal gets processed, then read_char() resumes reading.
   Send another USR1 signal.
   Now el_wgets() sets errno=EINTR and returns -1.

 * Press Ctrl-V to activate ed-quoted-insert.
   Then send a USR1 signal.
   The signal gets processed, then read_char() resumes reading.
   Send another USR1 signal.
   ed_quoted_insert() returns ed_end_of_file(), i.e. CC_EOF,
   and el_wgets() returns 0.

 * Press a key starting a keyboard macro.
   Then send a USR1 signal.
   The signal gets processed, then read_char() resumes reading.
   Send another USR1 signal.
   Now el_wgets() sets errno=EINTR and returns -1.

 * Press : to enter builtin command mode.
   Start typing a command.
   Then send a USR1 signal.
   The signal gets processed, then read_char() resumes reading.
   Send another USR1 signal.
   Now c_gets() returns -1, ed_command() beeps and returns CC_REFRESH,
   and el_wgets() resumes operation as it should.

I also tested with "el_set(el, EL_EDITMODE, 0)", and it returns
the right value and sets errno correctly.

Revision 1.97: download - view: text, markup, annotated - select for diffs
Sun May 22 19:44:26 2016 UTC (8 years, 6 months ago) by christos
Branches: MAIN
Diff to: previous 1.96: preferred, colored
Changes since revision 1.96: +50 -9 lines
Stop the read module from poking the el_chared.c_macro data structure
currently belonging to the chared module.  The read module does so
from three of its functions, while no other module uses the macro
data, not even the chared module itself.  That's quite logical
because macros are a feature of input handling, all of which is
done by the read module, and none by the chared module.  So move
the data into the read modules's own opaque data structure, struct
el_read_t.

That simplifies internal interfaces in several respects: The
semi-public chared.h has one fewer struct, one fewer #define, and
one fewer member in struct el_chared_t; all three move to one single
C file, read.c, and are now module-local.  And the internal interface
function ch_reset() needs one fewer argument, making the code of many
functions in various modules more readable.

The price is one additional internal interface function, read_end(),
10 lines long including comments, called publicly from exactly one
place: el_end() in el.c.  That's hardly an increase in complexity
since most other modules already have their *_end() function, read.c
was the odd one out not having one.

From Ingo Schwarze

Revision 1.96: download - view: text, markup, annotated - select for diffs
Mon May 9 21:46:56 2016 UTC (8 years, 7 months ago) by christos
Branches: MAIN
Diff to: previous 1.95: preferred, colored
Changes since revision 1.95: +7 -7 lines
s/protected/libedit_private/g

Revision 1.95: download - view: text, markup, annotated - select for diffs
Tue Apr 19 19:50:53 2016 UTC (8 years, 7 months ago) by christos
Branches: MAIN
Diff to: previous 1.94: preferred, colored
Changes since revision 1.94: +18 -11 lines
From Ingo Schwarze:
 - Put the data type el_rfunc_t into the public header <histedit.h>.
 - Make el_read in struct editline an opaque pointer rather
   than an embedded struct.
 - Do not include "read.h" everywhere, but only in the two files
   needing access to el_read, read.c and el.c.
 - To functions that don't need more, pass the struct el_read_t *
   rather than the full EditLine *.
 - Of course, that means that read_init() can now fail from
   memory exhaustion, but it's easy to clean up after that.

Revision 1.94: download - view: text, markup, annotated - select for diffs
Mon Apr 18 17:01:19 2016 UTC (8 years, 7 months ago) by christos
Branches: MAIN
Diff to: previous 1.93: preferred, colored
Changes since revision 1.93: +3 -2 lines
From Ingo Schwarze:
 * Replace fcns.c by a shorter and simpler func.h
   and include it only in the one file needing it, map.c.
 * Combine help.h and help.c into a simplified help.h
   and include it only in the one file needing it, map.c.
 * Check the very simple, static files editline.c, historyn.c, and
   tokenizern.c into CVS rather than needlessly generating them.
 * So we no longer autogenerate any C files.  :-)
 * Shorten and simplify makelist by deleting the options -n, -e, -bc,
   and -m; the latter was unused and useless in the first place.
 * Move the declaration of el_func_t from fcns.h to the header
   actually needing it, map.h.  Since that header is already
   included by el.h for unrelated reasons, that makes el_func_t
   just as globally available as before.
 * No longer include the simplified fcns.h into el.h,
   include it directly into the *.c files needing it.

Revision 1.93: download - view: text, markup, annotated - select for diffs
Tue Apr 12 11:15:46 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.92: preferred, colored
Changes since revision 1.92: +3 -3 lines
FIONREAD takes int as an argument (Ingo Schwarze)

Revision 1.92: download - view: text, markup, annotated - select for diffs
Tue Apr 12 00:16:06 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.91: preferred, colored
Changes since revision 1.91: +10 -26 lines
From Ingo Schwarze:

 * Delete the stubs of the XK_EXE mechanism that was never implemented.
   From a security, stability, and simplicity perspective, i would
   consider implementing it a truly terrible idea, so let's better
   get rid of it.

 * Do not use the local variable "num" in el_wgets() alternately for
   two completely different purposes.  Only use it for the number
   of characters read, as stated in the comment (or -1 as long as
   that number is still unknown), not for the (more or less boolean)
   return value of read_getcmd().  Actually, there is no need at
   all to save the latter return value after testing it once.

 * The function read_getcmd() has very unusual return values:
   It returns -1 for success and 0 for EOF/error.  Switch that around
   to 0 for success and -1 for EOF/error to be less confusing, and
   get rid of the OKCMD preprocessor macro.

 * Get rid of one #ifdef section in el_wgets() by using
   el->el_chared.c_macro directly at the only place
   where it is used.

 * Delete the unused MIN() macro.

Revision 1.91: download - view: text, markup, annotated - select for diffs
Mon Apr 11 18:56:31 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.90: preferred, colored
Changes since revision 1.90: +14 -14 lines
Get rid of private/public; keep protected (Ingo Schwarze)

Revision 1.90: download - view: text, markup, annotated - select for diffs
Mon Apr 11 00:50:13 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.89: preferred, colored
Changes since revision 1.89: +11 -13 lines
Char -> wchar_t from Ingo Schwarze.

Revision 1.89: download - view: text, markup, annotated - select for diffs
Mon Apr 11 00:22:48 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.88: preferred, colored
Changes since revision 1.88: +7 -7 lines
more macro WIDECHAR undoing from Ingo Schwarze.

Revision 1.88: download - view: text, markup, annotated - select for diffs
Sat Apr 9 18:43:17 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.87: preferred, colored
Changes since revision 1.87: +8 -5 lines
More WIDECHAR elimination (Ingo Schwarze)

Revision 1.87: download - view: text, markup, annotated - select for diffs
Wed Mar 23 22:27:48 2016 UTC (8 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.86: preferred, colored
Changes since revision 1.86: +2 -42 lines
Start removing the WIDECHAR ifdefs; building without it has stopped working
anyway. (Ingo Schwarze)

Revision 1.86: download - view: text, markup, annotated - select for diffs
Wed Mar 2 19:24:20 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.85: preferred, colored
Changes since revision 1.85: +3 -3 lines
PR/50880: David Binderman: Remove redundant code.
While here, fix all debugging formats.

Revision 1.85: download - view: text, markup, annotated - select for diffs
Wed Feb 24 17:20:01 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.84: preferred, colored
Changes since revision 1.84: +3 -6 lines
Tuck in mbstate_t to the wide char version only to avoid exposing the zeroing
hack and doing it in the narrow case.

Revision 1.84: download - view: text, markup, annotated - select for diffs
Wed Feb 24 17:13:22 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.83: preferred, colored
Changes since revision 1.83: +13 -16 lines
Make the read_char function always take a wchar_t * argument (Ingo Schwarze)

Revision 1.83: download - view: text, markup, annotated - select for diffs
Wed Feb 24 14:25:38 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.82: preferred, colored
Changes since revision 1.82: +12 -8 lines
Get split el_getc and el_wgetc completely and call el_wgetc internally.
Change some character constants to they wide versions. (Ingo Schwarze)

Revision 1.82: download - view: text, markup, annotated - select for diffs
Wed Feb 17 19:47:49 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.81: preferred, colored
Changes since revision 1.81: +4 -4 lines
whitespace and header sorting changes (Ingo Schwarze). No functional changes.

Revision 1.81: download - view: text, markup, annotated - select for diffs
Tue Feb 16 22:53:14 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.80: preferred, colored
Changes since revision 1.80: +5 -2 lines
More header cleanups from Ingo Schwarze.

Revision 1.80: download - view: text, markup, annotated - select for diffs
Tue Feb 16 15:53:48 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.79: preferred, colored
Changes since revision 1.79: +2 -5 lines
From Ingo Scharze:
Let "el.h" include everything needed for struct editline,
and don't include that stuff multiple times.  That also improves
consistency, also avoids circular inclusions, and also makes it
easier to follow what is going on, even though not quite as nice.
But it seems like the best we can do...

Revision 1.79: download - view: text, markup, annotated - select for diffs
Tue Feb 16 14:08:25 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.78: preferred, colored
Changes since revision 1.78: +3 -2 lines
cleanup chartype.h includes (Ingo Schwarze)

Revision 1.78: download - view: text, markup, annotated - select for diffs
Tue Feb 16 14:06:05 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.77: preferred, colored
Changes since revision 1.77: +4 -2 lines
cleanup inclusion of histedit.h (Ingo Schwarze)

Revision 1.77: download - view: text, markup, annotated - select for diffs
Sun Feb 14 14:47:48 2016 UTC (8 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.76: preferred, colored
Changes since revision 1.76: +7 -13 lines
From Ingo Schwartze:

Next step:  Remove #ifdef'ing in read_char(), in the same style
as we did for setlocale(3) in el.c.

A few remarks are required to explain the choices made.

 * On first sight, handling mbrtowc(3) seems a bit less trivial
   than handling setlocale(3) because its prototype uses the data
   type mbstate_t from <wchar.h>.  However, it turns out that
   "histedit.h" already includes <wchar.h> unconditionally (i don't
   like headers including other headers, but that ship has sailed,
   people are by now certainly used to the fact that including
   "histedit.h" doesn't require including <wchar.h> before), and
   "histedit.h" is of course included all over the place.  So from
   that perspective, there is no problem with using mbrtowc(3)
   unconditionally ever for !WIDECHAR.

 * However, <wchar.h> also defines the mbrtowc(3) prototype,
   so we cannot just #define mbrtowc away, or including the header
   will break.  It would also be a bad idea to porovide a local
   implementation of mbrtowc() and hope that it overrides the one
   in libc.  Besides, the required prototype is subtly different:
   While mbrtowc(3) takes "wchar_t *" as its first argument, we
   need a function that takes "Char *".  So unfortunately, we have
   to keep a ct_mbrtowc #define, at least until we can maybe get
   rid of "Char *" in the more remote future.

 * After getting rid of the #else clause in read_char(), we can
   pull "return 1;" into the default: clause.  After that, we can
   get rid of the ugly "goto again_lastbyte;" and just "break;".
   As a bonus, that also gets rid of the ugly CONSTCOND.

 * While here, delete the unused ct_mbtowc() from chartype.h.

Revision 1.76: download - view: text, markup, annotated - select for diffs
Fri Feb 12 15:36:08 2016 UTC (8 years, 10 months ago) by christos
Branches: MAIN
Diff to: previous 1.75: preferred, colored
Changes since revision 1.75: +5 -13 lines
GC IGNORE_EXTCHARS and simplify code (Ingo Schwarze)

Revision 1.75: download - view: text, markup, annotated - select for diffs
Fri Feb 12 15:11:09 2016 UTC (8 years, 10 months ago) by christos
Branches: MAIN
Diff to: previous 1.74: preferred, colored
Changes since revision 1.74: +16 -12 lines
From Ingo Schwarze:

If CHARSET_IS_UTF8 is not set, read_char() is broken in a large
number of ways:

 1. The isascii(3) check can yield false positives.  If a string in
    an arbitrary encoding contains a byte in the range 0..127,
    that does not at all imply that it forms a character all by
    itself, and even less that it represents the same character
    as in ASCII.  Consequently, read_char() may return characters
    the user never typed.
    Even if the encoding is not state dependent, the assumption that
    bytes in the range 0..127 represent ASCII characters is broken.
    Consider UTF-16, for example.

 2. The reverse problem can also occur.  In an arbitrary encoding,
    there is no guarantee that a character that can be represented
    by ASCII is represented by a seven-bit byte, and even less by
    the same byte as in ASCII.
    Even for single-byte encodings, these assumptions are broken.
    Consider the ISO 646 national variants, for example.
    Consequently, the current code is insufficient to keep ASCII
    characters working even for single-byte encodings.

 3. The condition "++cbp != 1" can never trigger (because initially,
    cbp is 0, and the code can only go back up via the final goto,
    which has another cbp = 0 right before it) and it has no effect
    (because cbp isn't used afterwards).

 4. bytes = ct_mbtowc(cp, cbuf, cbp) is broken.  If this returns -1,
    the code assumes that is can just call mbtowc(3) again for later
    input bytes.  In some implementations, that may even be broken
    for state-independent encodings, but trying again after mbtowc(3)
    failure certainly produces completely erratic and meaningless
    results in state-dependent encodings.

 5. The assignment "*cp = (Char)(unsigned char)cbuf[0]" is
    completely bogus.  Even if the byte cbuf[0] represents a
    character all by itself, which it usually will not, whether
    or not the cast produces the desired result depends on the
    internal representation of wchar_t in the C library, which
    the application program can know nothing about.  Even for ASCII
    in the C/POSIX locale, an ASCII character other than '\0' ==
    L'\0' == 0 need not have the same numeric value as a char and
    as a wchar_t.

To summarize, this code only works if all of the following
conditions hold:

 - The encoding is a single-byte encoding.
 - ASCII is a subset of the encoding.
 - The implementation of mbtowc(3) in the C library does not
   require re-initialization after encoding errors.
 - The implementation of wchar_t in the C library uses the
   same numerical values as ASCII.

Otherwise, it silently produces wrong results.

The simplest way to fix this is to just use the same code as for
UTF-8 (right above).  Of course, that causes functional changes
but that shouldn't matter since current behaviour is undefined.

The patch below provides the following improvements:

 - It works for all stateless single-byte encodings, no matter
   whether they are somehow related to ASCII, no matter how
   mb[r]towc(3) are internally implemented, and no matter how
   wchar_t is internally represented.
 - Instead of producing unpredictable and definitely wrong
   results for non-UTF-8 multibyte characters, it behaves in
   a well-defined way: It aborts input processing, sets errno,
   and returns failure.
   Note that short of providing full support for arbitrary locales,
   it is impossible to do better.  We cannot know whether a given
   unsupported locale is state-dependent, and for a state-dependent
   locale, it makes no sense to retry parsing after an encoding
   error, so the best we can do is abort processing for *any*
   unsupported multi-byte character.
 - Note that single-byte characters in arbitrary state-independent
   locales still work, even in locales that may potentially also
   contain multibyte characters, as long as those don't occur in
   input.  I'm not sure whether any such locales exist in practice...

Tested with UTF-8 and C/POSIX on OpenBSD.  Also tested that in the
C/POSIX locale, non-ASCII bytes get through unmangled.  You may
wish to test with ISO-LATIN on NetBSD if NetBSD supports that.

----
Also use a constant for meta to avoid warnings.

Revision 1.74: download - view: text, markup, annotated - select for diffs
Thu Feb 11 19:21:04 2016 UTC (8 years, 10 months ago) by christos
Branches: MAIN
Diff to: previous 1.73: preferred, colored
Changes since revision 1.73: +4 -4 lines
- Add some more Char casts
- reduce ifdefs by providing empty defs for nls functions (Ingo Schwarze)

Revision 1.73: download - view: text, markup, annotated - select for diffs
Thu Feb 11 16:08:47 2016 UTC (8 years, 10 months ago) by christos
Branches: MAIN
Diff to: previous 1.72: preferred, colored
Changes since revision 1.72: +2 -16 lines
Remove utf8_islead() mbrtowc() handles this just fine (Ingo Schwarze)

Revision 1.72: download - view: text, markup, annotated - select for diffs
Mon Feb 8 17:18:43 2016 UTC (8 years, 10 months ago) by christos
Branches: MAIN
Diff to: previous 1.71: preferred, colored
Changes since revision 1.71: +32 -7 lines
UTF-8 fixes from Ingo Schwarze:

 1. Assume that errno is non-zero when entering read_char()
    and that read(2) returns 0 (indicating end of file).
    Then, the code will clear errno before returning.
    (Obviously, the statement "errno = 0" is almost always
     a bug unless there is save_errno = errno right before it
     and the previous value is properly restored later,
     in all reachable code paths.)

 2. When encountering an invalid byte sequence, the code discards
    all following bytes until MB_LEN_MAX overflows; consider, for
    example, 0xc2 immediately followed by a few valid ASCII bytes.
    Three of those ASCII bytes will be discarded.

 3. On a POSIX system, EILSEQ will always be set after reading a
    valid (yes, valid, not invalid!) UTF-8 character.  The reason
    is that mbtowc(3) will first be called with a length limit
    (third argument) of 1, which will fail, return -1, and - on
    a POSIX system - set errno to EILSEQ.
    This third bug is mitigated a bit because i couldn't find any
    system that actually conforms to POSIX in this respect:  None
    of OpenBSD, NetBSD, FreeBSD, Solaris 11, and glibc set errno
    when an incomplete character is passed to mbtowc(3), even though
    that is required by POSIX.
    Anyway, that mbtowc(3) bug will be fixed at least in OpenBSD
    after release unlock, so it would be good to fix this bug in
    libedit before fixing the bug in mbtowc(3).

How can these three bugs be fixed?

 1. As far as i understand it, the intention of the bogus errno = 0
    is to undo the effects of failing system calls in el_wset(),
    sig_set(), and read__fixio() if the subsequent read(2) indicates
    end of file.  So, restoring errno has to be moved right after
    read__fixio().  Of course, neither 0 nor e is the right value
    to restore: 0 is wrong if errno happened to be set on entry, e
    would be wrong because if one read(2) fails but a second attempt
    succeeds after read__fixio(), errno should not be touched.  So,
    the errno to be restored in this case has to be saved before
    calling read(2) for the first time.

 2. Solving the second issue requires distinguishing invalid and
    incomplete characters, but that is impossible with the function
    mbtowc(3) because it returns -1 in both cases and sets errno
    to EILSEQ in both cases (once properly implemented).

    It is vital that each input character is processed right away.
    It is not acceptable to wait for the next input character before
    processing the previous one because this is an interactive
    library, not a batch system.  Consequently, the only situation
    where it is acceptable to wait for the next byte without first
    processing the previous one(s) is when the previous one(s) form
    an incomplete sequence that can be continued to form a valid
    character.

    Consequently, short of reimplementing a full UTF-8 state machine
    by hand, the only correct way forward is to use mbrtowc(3).
    Even then, care is needed to always have the state object
    properly initialized before using it, and to not discard a valid
    ASCII or UTF-8 lead byte if it happens to follow an invalid
    sequence.

 3. Fortunately, solution 2. also solves issue 3. as a side effect,
    by no longer using mbtowc(3) in the first place.

Revision 1.69.2.2: download - view: text, markup, annotated - select for diffs
Wed Aug 20 00:02:17 2014 UTC (10 years, 3 months ago) by tls
Branches: tls-maxphys
Diff to: previous 1.69.2.1: preferred, colored; branchpoint 1.69: preferred, colored; next MAIN 1.70: preferred, colored
Changes since revision 1.69.2.1: +1 -1 lines
Rebase to HEAD as of a few days ago.

Revision 1.70.4.1: download - view: text, markup, annotated - select for diffs
Sun Aug 10 06:51:57 2014 UTC (10 years, 4 months ago) by tls
Branches: tls-earlyentropy
Diff to: previous 1.70: preferred, colored; next MAIN 1.71: preferred, colored
Changes since revision 1.70: +3 -3 lines
Rebase.

Revision 1.71: download - view: text, markup, annotated - select for diffs
Sun Jul 6 18:15:34 2014 UTC (10 years, 5 months ago) by christos
Branches: MAIN
CVS tags: tls-maxphys-base, tls-earlyentropy-base, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7
Diff to: previous 1.70: preferred, colored
Changes since revision 1.70: +3 -3 lines
Bounds search for reallocated index, from OpenBSD via Andreas Fett

Revision 1.67.2.2: download - view: text, markup, annotated - select for diffs
Thu May 22 11:36:55 2014 UTC (10 years, 6 months ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.67.2.1: preferred, colored; branchpoint 1.67: preferred, colored; next MAIN 1.68: preferred, colored
Changes since revision 1.67.2.1: +9 -2 lines
sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")

Revision 1.69.2.1: download - view: text, markup, annotated - select for diffs
Sun Jun 23 06:21:06 2013 UTC (11 years, 5 months ago) by tls
Branches: tls-maxphys
Diff to: previous 1.69: preferred, colored
Changes since revision 1.69: +9 -2 lines
resync from head

Revision 1.70: download - view: text, markup, annotated - select for diffs
Mon May 27 23:55:55 2013 UTC (11 years, 6 months ago) by christos
Branches: MAIN
CVS tags: yamt-pagecache-base9, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2
Branch point for: tls-earlyentropy
Diff to: previous 1.69: preferred, colored
Changes since revision 1.69: +9 -2 lines
Test early for EOF to avoid infinite loop in the wide char case. From
Linas Vepstas: linasvepstas at gmail dot com

Revision 1.67.2.1: download - view: text, markup, annotated - select for diffs
Tue Oct 30 18:59:09 2012 UTC (12 years, 1 month ago) by yamt
Branches: yamt-pagecache
CVS tags: yamt-pagecache-tag8
Diff to: previous 1.67: preferred, colored
Changes since revision 1.67: +11 -5 lines
sync with head

Revision 1.69: download - view: text, markup, annotated - select for diffs
Tue Sep 11 12:31:08 2012 UTC (12 years, 3 months ago) by christos
Branches: MAIN
CVS tags: yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, agc-symver-base, agc-symver
Branch point for: tls-maxphys
Diff to: previous 1.68: preferred, colored
Changes since revision 1.68: +4 -4 lines
return !OKCMD on error.

Revision 1.68: download - view: text, markup, annotated - select for diffs
Mon Sep 10 20:53:18 2012 UTC (12 years, 3 months ago) by christos
Branches: MAIN
Diff to: previous 1.67: preferred, colored
Changes since revision 1.67: +9 -3 lines
PR/46935: Steffen Nurpmeso: editline(3) (libedit): faulty errno handling,
faulty reuse of val in wrong context

Revision 1.67: download - view: text, markup, annotated - select for diffs
Tue Aug 16 16:25:15 2011 UTC (13 years, 3 months ago) by christos
Branches: MAIN
CVS tags: yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus
Branch point for: yamt-pagecache
Diff to: previous 1.66: preferred, colored
Changes since revision 1.66: +4 -4 lines
re-enable -Wconversion

Revision 1.66: download - view: text, markup, annotated - select for diffs
Fri Jul 29 23:44:44 2011 UTC (13 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.65: preferred, colored
Changes since revision 1.65: +19 -19 lines
pass -Wconversion

Revision 1.65: download - view: text, markup, annotated - select for diffs
Fri Jul 29 15:16:33 2011 UTC (13 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.64: preferred, colored
Changes since revision 1.64: +20 -20 lines
KNF return (\1); -> return \1;

Revision 1.64: download - view: text, markup, annotated - select for diffs
Thu Jul 28 20:50:55 2011 UTC (13 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.63: preferred, colored
Changes since revision 1.63: +5 -5 lines
kill ptr_t and ioctl_t, add  * sizeof(*foo) to all allocations.

Revision 1.63: download - view: text, markup, annotated - select for diffs
Thu Jul 28 01:56:27 2011 UTC (13 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.62: preferred, colored
Changes since revision 1.62: +4 -4 lines
Rename key to keymacro to avoid conflicts with term.h. The renaming of term
to terminal was again to avoid conflicts with term.h. term.h is a moving
namespace violation.

Revision 1.62: download - view: text, markup, annotated - select for diffs
Thu Jul 28 00:44:35 2011 UTC (13 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.61: preferred, colored
Changes since revision 1.61: +12 -12 lines
term -> terminal
fix wide function confusion

Revision 1.61: download - view: text, markup, annotated - select for diffs
Sat Jul 9 23:54:39 2011 UTC (13 years, 5 months ago) by christos
Branches: MAIN
Diff to: previous 1.60: preferred, colored
Changes since revision 1.60: +3 -3 lines
make obvious what we are trying to do...

Revision 1.60: download - view: text, markup, annotated - select for diffs
Sat Jul 9 16:04:34 2011 UTC (13 years, 5 months ago) by tron
Branches: MAIN
Diff to: previous 1.59: preferred, colored
Changes since revision 1.59: +3 -3 lines
Try to fix build of port where "char" is unsigned.

Revision 1.59: download - view: text, markup, annotated - select for diffs
Fri Jul 8 15:54:56 2011 UTC (13 years, 5 months ago) by christos
Branches: MAIN
Diff to: previous 1.58: preferred, colored
Changes since revision 1.58: +7 -3 lines
Support other non-latin1 single byte character sets.
From: Alexander Barkov and Nirbhay Choubey at oracle dot com

Revision 1.57.2.1: download - view: text, markup, annotated - select for diffs
Sat Mar 5 15:09:21 2011 UTC (13 years, 9 months ago) by bouyer
Branches: bouyer-quota2
Diff to: previous 1.57: preferred, colored; next MAIN 1.58: preferred, colored
Changes since revision 1.57: +11 -12 lines
Sync with HEAD

Revision 1.58: download - view: text, markup, annotated - select for diffs
Fri Feb 18 20:53:05 2011 UTC (13 years, 9 months ago) by christos
Branches: MAIN
CVS tags: cherry-xenmp-base, cherry-xenmp, bouyer-quota2-nbase
Diff to: previous 1.57: preferred, colored
Changes since revision 1.57: +11 -12 lines
PR/44599: Steven Vernon: libedit acts as if no data read if editmode is turned
off because nread is uninitialized in the edit disabled case.

Revision 1.57: download - view: text, markup, annotated - select for diffs
Wed Jul 21 18:18:52 2010 UTC (14 years, 4 months ago) by christos
Branches: MAIN
CVS tags: matt-mips64-premerge-20101231, bouyer-quota2-base
Branch point for: bouyer-quota2
Diff to: previous 1.56: preferred, colored
Changes since revision 1.56: +4 -3 lines
refresh only on SIGCONT not SIGWINCH from Edward Sheldrake

Revision 1.56: download - view: text, markup, annotated - select for diffs
Mon Jul 19 17:18:13 2010 UTC (14 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.55: preferred, colored
Changes since revision 1.55: +7 -3 lines
retry the read after sigwinch too, from Edward Sheldrake

Revision 1.55: download - view: text, markup, annotated - select for diffs
Mon Mar 22 22:59:06 2010 UTC (14 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.54: preferred, colored
Changes since revision 1.54: +3 -3 lines
https://bugzilla.redhat.com/show_bug.cgi?id=575383
Handle EINTR properly.

Revision 1.54: download - view: text, markup, annotated - select for diffs
Thu Dec 31 15:58:26 2009 UTC (14 years, 11 months ago) by christos
Branches: MAIN
Diff to: previous 1.53: preferred, colored
Changes since revision 1.53: +6 -2 lines
- Document and enable wide character support.
- Fix read function compatibility.

Revision 1.53: download - view: text, markup, annotated - select for diffs
Wed Dec 30 22:37:40 2009 UTC (14 years, 11 months ago) by christos
Branches: MAIN
Diff to: previous 1.52: preferred, colored
Changes since revision 1.52: +68 -21 lines
Wide character support (UTF-8) from Johny Mattsson; currently disabled.

Revision 1.52: download - view: text, markup, annotated - select for diffs
Wed Jul 22 15:57:00 2009 UTC (15 years, 4 months ago) by christos
Branches: MAIN
CVS tags: matt-premerge-20091211
Diff to: previous 1.51: preferred, colored
Changes since revision 1.51: +3 -2 lines
Always initialize nread since it is an out param.
From Michael Cook mcook at bbn dot com

Revision 1.51: download - view: text, markup, annotated - select for diffs
Tue Jun 9 13:04:33 2009 UTC (15 years, 6 months ago) by christos
Branches: MAIN
Diff to: previous 1.50: preferred, colored
Changes since revision 1.50: +3 -3 lines
decrement the number of levels after the loop (Julien Torres)

Revision 1.50: download - view: text, markup, annotated - select for diffs
Mon Jun 8 15:10:53 2009 UTC (15 years, 6 months ago) by christos
Branches: MAIN
Diff to: previous 1.49: preferred, colored
Changes since revision 1.49: +5 -4 lines
from Julien Torres, flip the order we pop in the macro array.

Revision 1.43.2.1: download - view: text, markup, annotated - select for diffs
Wed May 13 19:18:29 2009 UTC (15 years, 7 months ago) by jym
Branches: jym-xensuspend
Diff to: previous 1.43: preferred, colored; next MAIN 1.44: preferred, colored
Changes since revision 1.43: +60 -27 lines
Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html

Revision 1.49: download - view: text, markup, annotated - select for diffs
Tue Mar 10 20:46:15 2009 UTC (15 years, 9 months ago) by christos
Branches: MAIN
CVS tags: jym-xensuspend-nbase, jym-xensuspend-base
Diff to: previous 1.48: preferred, colored
Changes since revision 1.48: +34 -22 lines
make el_gets set the count to -1 on error to distinguish between EOF and
error.

Revision 1.48: download - view: text, markup, annotated - select for diffs
Sat Feb 21 23:35:10 2009 UTC (15 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.47: preferred, colored
Changes since revision 1.47: +2 -4 lines
remove VEOF test. the tty is in cooked mode when we are not editing and
the tty driver does the check for us.

Revision 1.47: download - view: text, markup, annotated - select for diffs
Sat Feb 21 23:31:29 2009 UTC (15 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.46: preferred, colored
Changes since revision 1.46: +3 -3 lines
use the VEOF character from the terminal, instead of hard-coding 4.

Revision 1.46: download - view: text, markup, annotated - select for diffs
Thu Feb 19 15:20:22 2009 UTC (15 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.45: preferred, colored
Changes since revision 1.45: +11 -4 lines
reset and redraw on sigcont. From Anon Ymous.

Revision 1.45: download - view: text, markup, annotated - select for diffs
Sun Feb 15 21:55:23 2009 UTC (15 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.44: preferred, colored
Changes since revision 1.44: +9 -8 lines
pass lint on _LP64.

Revision 1.44: download - view: text, markup, annotated - select for diffs
Sun Feb 15 21:24:13 2009 UTC (15 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.43: preferred, colored
Changes since revision 1.43: +24 -9 lines
don't restart on EINTR, instead return NULL immediately. From Anon Ymous

Revision 1.43: download - view: text, markup, annotated - select for diffs
Thu Feb 5 19:15:44 2009 UTC (15 years, 10 months ago) by christos
Branches: MAIN
Branch point for: jym-xensuspend
Diff to: previous 1.42: preferred, colored
Changes since revision 1.42: +3 -3 lines
match documentation in el_push

Revision 1.42: download - view: text, markup, annotated - select for diffs
Sun Jan 18 12:17:24 2009 UTC (15 years, 10 months ago) by lukem
Branches: MAIN
Diff to: previous 1.41: preferred, colored
Changes since revision 1.41: +3 -3 lines
fix -Wsign-compare issues

Revision 1.40.12.1: download - view: text, markup, annotated - select for diffs
Wed Sep 24 16:35:09 2008 UTC (16 years, 2 months ago) by wrstuden
Branches: wrstuden-revivesa
Diff to: previous 1.40: preferred, colored; next MAIN 1.41: preferred, colored
Changes since revision 1.40: +8 -8 lines
Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.

Revision 1.41: download - view: text, markup, annotated - select for diffs
Wed Sep 10 15:45:37 2008 UTC (16 years, 3 months ago) by christos
Branches: MAIN
CVS tags: wrstuden-revivesa-base-3, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-base2
Diff to: previous 1.40: preferred, colored
Changes since revision 1.40: +8 -8 lines
Allow a single process to control multiple ttys (for pthreads using _REENTRANT)
using multiple EditLine objects. Mostly from Preston A. Elder.

Revision 1.40: download - view: text, markup, annotated - select for diffs
Thu Mar 1 21:41:45 2007 UTC (17 years, 9 months ago) by christos
Branches: MAIN
CVS tags: yamt-pf42-baseX, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, matt-mips64-base, matt-mips64, matt-armv6-prevmlocking, matt-armv6-nbase, matt-armv6-base, matt-armv6, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-nbase, hpcarm-cleanup-base, hpcarm-cleanup, cube-autoconf-base, cube-autoconf
Branch point for: wrstuden-revivesa
Diff to: previous 1.39: preferred, colored
Changes since revision 1.39: +25 -9 lines
Fix bug with multiple pending el_pushes. Reported by Julien Torres.

Revision 1.39: download - view: text, markup, annotated - select for diffs
Tue Aug 2 12:11:14 2005 UTC (19 years, 4 months ago) by christos
Branches: MAIN
CVS tags: wrstuden-fixsa-newbase, wrstuden-fixsa-base-1, wrstuden-fixsa-base, wrstuden-fixsa, netbsd-4-base, netbsd-4-0-RELEASE, netbsd-4-0-RC5, netbsd-4-0-RC4, netbsd-4-0-RC3, netbsd-4-0-RC2, netbsd-4-0-RC1, netbsd-4-0-1-RELEASE, netbsd-4-0, netbsd-4, abandoned-netbsd-4-base, abandoned-netbsd-4
Diff to: previous 1.38: preferred, colored
Changes since revision 1.38: +3 -3 lines
On a fatal error, we want to stop processing the macro buffers.

Revision 1.38: download - view: text, markup, annotated - select for diffs
Tue Aug 2 10:20:33 2005 UTC (19 years, 4 months ago) by tron
Branches: MAIN
Diff to: previous 1.37: preferred, colored
Changes since revision 1.37: +3 -3 lines
Add missing second argument to another call of ch_reset().

Revision 1.37: download - view: text, markup, annotated - select for diffs
Mon Aug 1 23:00:15 2005 UTC (19 years, 4 months ago) by christos
Branches: MAIN
Diff to: previous 1.36: preferred, colored
Changes since revision 1.36: +3 -3 lines
Don't reset the macro strings each time we enter el_gets(), otherwise
el_push() is unusable programmatically.

Revision 1.36: download - view: text, markup, annotated - select for diffs
Wed Jun 1 11:37:52 2005 UTC (19 years, 6 months ago) by lukem
Branches: MAIN
Diff to: previous 1.35: preferred, colored
Changes since revision 1.35: +3 -3 lines
Don't use non-standard uint or u_int.

Revision 1.35: download - view: text, markup, annotated - select for diffs
Wed Mar 9 23:55:02 2005 UTC (19 years, 9 months ago) by christos
Branches: MAIN
CVS tags: netbsd-3-base, netbsd-3-1-RELEASE, netbsd-3-1-RC4, netbsd-3-1-RC3, netbsd-3-1-RC2, netbsd-3-1-RC1, netbsd-3-1-1-RELEASE, netbsd-3-1, netbsd-3-0-RELEASE, netbsd-3-0-RC6, netbsd-3-0-RC5, netbsd-3-0-RC4, netbsd-3-0-RC3, netbsd-3-0-RC2, netbsd-3-0-RC1, netbsd-3-0-3-RELEASE, netbsd-3-0-2-RELEASE, netbsd-3-0-1-RELEASE, netbsd-3-0, netbsd-3
Diff to: previous 1.34: preferred, colored
Changes since revision 1.34: +5 -2 lines
Make sure we flush after we prepare when we are unbuffered otherwise the
prompt will not appear immediately.

Revision 1.33.2.1: download - view: text, markup, annotated - select for diffs
Sat Jul 10 09:28:04 2004 UTC (20 years, 5 months ago) by tron
Branches: netbsd-2-0
CVS tags: netbsd-2-base, netbsd-2-1-RELEASE, netbsd-2-1-RC6, netbsd-2-1-RC5, netbsd-2-1-RC4, netbsd-2-1-RC3, netbsd-2-1-RC2, netbsd-2-1-RC1, netbsd-2-1, netbsd-2-0-RELEASE, netbsd-2-0-RC5, netbsd-2-0-RC4, netbsd-2-0-RC3, netbsd-2-0-RC2, netbsd-2-0-RC1, netbsd-2-0-3-RELEASE, netbsd-2-0-2-RELEASE, netbsd-2-0-1-RELEASE, netbsd-2
Diff to: previous 1.33: preferred, colored; next MAIN 1.34: preferred, colored
Changes since revision 1.33: +7 -3 lines
Pull up revision 1.34 (requested by christos in ticket #620):
PR/23486: Andreas Gustafsson: gdb no longer works with emacs
- make sure that we keep previous contents of the buffer in unbuffered mode.
- when turning editing on and off keep tty consistent.

Revision 1.34: download - view: text, markup, annotated - select for diffs
Thu Jul 8 00:51:36 2004 UTC (20 years, 5 months ago) by christos
Branches: MAIN
Diff to: previous 1.33: preferred, colored
Changes since revision 1.33: +7 -3 lines
PR/23486: Andreas Gustafsson: gdb no longer works with emacs
- make sure that we keep previous contents of the buffer in unbuffered mode.
- when turning editing on and off keep tty consistent.

Revision 1.33: download - view: text, markup, annotated - select for diffs
Fri Feb 27 14:52:18 2004 UTC (20 years, 9 months ago) by christos
Branches: MAIN
CVS tags: netbsd-2-0-base
Branch point for: netbsd-2-0
Diff to: previous 1.32: preferred, colored
Changes since revision 1.32: +3 -11 lines
Better fix for rl_prep_terminal() from Gerry Swislow.

Revision 1.32: download - view: text, markup, annotated - select for diffs
Sat Feb 21 16:42:30 2004 UTC (20 years, 9 months ago) by christos
Branches: MAIN
Diff to: previous 1.31: preferred, colored
Changes since revision 1.31: +11 -3 lines
Separate tty separation from the prompt printing function. From Gerry Swislow.

Revision 1.31: download - view: text, markup, annotated - select for diffs
Sat Jan 17 17:57:40 2004 UTC (20 years, 10 months ago) by christos
Branches: MAIN
Diff to: previous 1.30: preferred, colored
Changes since revision 1.30: +4 -4 lines
portability fixes.

Revision 1.30: download - view: text, markup, annotated - select for diffs
Sat Oct 18 23:48:42 2003 UTC (21 years, 1 month ago) by christos
Branches: MAIN
Diff to: previous 1.29: preferred, colored
Changes since revision 1.29: +16 -18 lines
change allocation policy in el_push to allocate the string itself.
fix issues with strdup.

Revision 1.29: download - view: text, markup, annotated - select for diffs
Thu Oct 9 00:42:28 2003 UTC (21 years, 2 months ago) by christos
Branches: MAIN
Diff to: previous 1.28: preferred, colored
Changes since revision 1.28: +9 -3 lines
PR/23107: Nathan Williams: ^D as the first char on the command line does
not DTRT in readline compatibility mode

Revision 1.28: download - view: text, markup, annotated - select for diffs
Fri Sep 26 17:44:51 2003 UTC (21 years, 2 months ago) by christos
Branches: MAIN
Diff to: previous 1.27: preferred, colored
Changes since revision 1.27: +47 -18 lines
Implement enough of readline's 4.0 async mode to make gdb happy. This is
not complete yet, but it seems to work...
This required to introduce an unbuffered mode to el_gets(), but that was
a minor change.

Revision 1.27: download - view: text, markup, annotated - select for diffs
Sat Sep 13 04:18:00 2003 UTC (21 years, 3 months ago) by mycroft
Branches: MAIN
Diff to: previous 1.26: preferred, colored
Changes since revision 1.26: +3 -2 lines
Fix something that's been annoying me for a while...
Pull in <fcntl.h>, so that the fcntl #defines are present, and we build in the
automatic reset of non-blocking mode, rather than beeping like mad.

Revision 1.26: download - view: text, markup, annotated - select for diffs
Thu Aug 7 16:44:32 2003 UTC (21 years, 4 months ago) by agc
Branches: MAIN
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +3 -7 lines
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22280, verified by myself.

Revision 1.25: download - view: text, markup, annotated - select for diffs
Thu Jun 19 15:55:06 2003 UTC (21 years, 5 months ago) by christos
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +7 -3 lines
From michael@moria.de:
- use __attribute__((__unused__)) in arguments where appropriate.
- some int -> size_t and char * to const char * conversions.

Revision 1.24: download - view: text, markup, annotated - select for diffs
Wed Nov 20 16:50:08 2002 UTC (22 years ago) by christos
Branches: MAIN
CVS tags: fvdl_fs64_base
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +4 -2 lines
Fix problem with previous patches that broke vi history.
- c_gets() was usually returning a length, but sometimes
  one of the CC_xxx values (which are small +ve integers)!
- fixed c_gets() by putting a ' ' under the cursor.
From David Laight.

Revision 1.23: download - view: text, markup, annotated - select for diffs
Fri Nov 15 14:32:34 2002 UTC (22 years, 1 month ago) by christos
Branches: MAIN
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +23 -19 lines
PR/18995: David Laight: libedit fixes for posix conformant sh

The posix 'sh' specification defines vi-mode editing quite tightly.
The netbsd libedit code (used by sh to do this) was missing several
features, there were also minor errors in others.

Compare netbsd sh to the definition available from:
http://www.opengroup.org/onlinepubs/007904975/utilities/sh.html
In particular the following were not supported:
	U - undo all changes to line
	| - goto column
	Y - yank to end of line
	y - yank
	# - comment out current line
	@ - take input from shell alias [1]
	G - goto numbered line in history buffer
	v - edit history line with vi
	_ - append word from last input line
	. - redo last command
Other minor changes have also been made.

[1] This needs the shell to define an appropriate routine to
return the text of the alias.  There is no requirement that
such a function exist.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Sun Oct 27 21:41:50 2002 UTC (22 years, 1 month ago) by christos
Branches: MAIN
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +14 -4 lines
vi mode and memory fixes from david laight.

Revision 1.21: download - view: text, markup, annotated - select for diffs
Mon Mar 18 16:00:57 2002 UTC (22 years, 8 months ago) by christos
Branches: MAIN
CVS tags: netbsd-1-6-base, netbsd-1-6-RELEASE, netbsd-1-6-RC3, netbsd-1-6-RC2, netbsd-1-6-RC1, netbsd-1-6-PATCH002-RELEASE, netbsd-1-6-PATCH002-RC4, netbsd-1-6-PATCH002-RC3, netbsd-1-6-PATCH002-RC2, netbsd-1-6-PATCH002-RC1, netbsd-1-6-PATCH002, netbsd-1-6-PATCH001-RELEASE, netbsd-1-6-PATCH001-RC3, netbsd-1-6-PATCH001-RC2, netbsd-1-6-PATCH001-RC1, netbsd-1-6-PATCH001, netbsd-1-6
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +5 -7 lines
- constify; passes all gcc and lint strict checks.
- add config.h [Jason Evans], to create a portable version of libedit that
  can be easily compiled on other OS's.

Revision 1.20: download - view: text, markup, annotated - select for diffs
Thu Sep 27 19:29:50 2001 UTC (23 years, 2 months ago) by christos
Branches: MAIN
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +42 -6 lines
PR/14067: Anthony Mallet: Provide a programmatic way to set the read_char
function via a new el_set() operation.
Thanks, nicely done :-)

Revision 1.19: download - view: text, markup, annotated - select for diffs
Wed Jan 10 07:45:41 2001 UTC (23 years, 11 months ago) by jdolecek
Branches: MAIN
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +20 -11 lines
Enlarge editline buffers as needed to support arbitrary length lines.
This also addresses lib/9712 by Phil Nelson.

Revision 1.18: download - view: text, markup, annotated - select for diffs
Sat Nov 11 22:18:58 2000 UTC (24 years, 1 month ago) by christos
Branches: MAIN
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +3 -3 lines
- add support for home and end keys.
- improve debugging support

Revision 1.17: download - view: text, markup, annotated - select for diffs
Mon Sep 4 22:06:31 2000 UTC (24 years, 3 months ago) by lukem
Branches: MAIN
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +319 -330 lines
convert to new style guide, which includes:
- ansi prototypes & features (such as stdargs)
- 8 space indents

Revision 1.16: download - view: text, markup, annotated - select for diffs
Wed Jan 19 18:30:19 2000 UTC (24 years, 10 months ago) by christos
Branches: MAIN
CVS tags: netbsd-1-5-base, netbsd-1-5-RELEASE, netbsd-1-5-PATCH003, netbsd-1-5-PATCH002, netbsd-1-5-PATCH001, netbsd-1-5-BETA2, netbsd-1-5-BETA, netbsd-1-5-ALPHA2, netbsd-1-5, minoura-xpg4dl-base, minoura-xpg4dl
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +5 -5 lines
PR/9243: Kevin Schoedel: libedit ignores repeat count

Revision 1.14.2.1: download - view: text, markup, annotated - select for diffs
Mon Dec 27 18:29:58 1999 UTC (24 years, 11 months ago) by wrstuden
Branches: wrstuden-devbsize
Diff to: previous 1.14: preferred, colored; next MAIN 1.15: preferred, colored
Changes since revision 1.14: +3 -3 lines
Pull up to last week's -current.

Revision 1.15: download - view: text, markup, annotated - select for diffs
Mon Oct 4 23:23:21 1999 UTC (25 years, 2 months ago) by lukem
Branches: MAIN
CVS tags: wrstuden-devbsize-base, wrstuden-devbsize-19991221, comdex-fall-1999-base, comdex-fall-1999
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +3 -3 lines
remove some lint

Revision 1.14: download - view: text, markup, annotated - select for diffs
Sun Aug 8 01:25:05 1999 UTC (25 years, 4 months ago) by sommerfeld
Branches: MAIN
Branch point for: wrstuden-devbsize
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +9 -4 lines
minor tweak to previous fix: don't spuriously truncate final newline
under emacs.

Revision 1.13: download - view: text, markup, annotated - select for diffs
Mon Aug 2 01:01:55 1999 UTC (25 years, 4 months ago) by sommerfeld
Branches: MAIN
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +23 -3 lines
Fix PR7685 (gdb under emacs prints spurious ^M and messes up terminal)
plus a few bogons noted along the way:
	1) Set EDIT_DISABLED if terminal type is emacs.
	2) fix bug in NO_TTY mode which caused it to not notice CR or LF
	3) implement EDIT_DISABLED within libedit to be somewhat like NO_TTY,
		except that a prompt is printed first.

Revision 1.12: download - view: text, markup, annotated - select for diffs
Fri Jul 2 15:21:26 1999 UTC (25 years, 5 months ago) by simonb
Branches: MAIN
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +8 -8 lines
More trailing white space.

Revision 1.11: download - view: text, markup, annotated - select for diffs
Mon Jan 11 22:40:00 1999 UTC (25 years, 11 months ago) by kleink
Branches: MAIN
CVS tags: netbsd-1-4-base, netbsd-1-4-RELEASE, netbsd-1-4-PATCH003, netbsd-1-4-PATCH002, netbsd-1-4-PATCH001, netbsd-1-4
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +3 -4 lines
In userland, pull in <errno.h> instead of <sys/errno.h> for the declaration
of errno.

Revision 1.10: download - view: text, markup, annotated - select for diffs
Sat Dec 12 20:08:22 1998 UTC (26 years ago) by christos
Branches: MAIN
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +4 -2 lines
delint

Revision 1.9: download - view: text, markup, annotated - select for diffs
Mon Jun 1 14:31:26 1998 UTC (26 years, 6 months ago) by lukem
Branches: MAIN
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +9 -2 lines
* implement CC_REFRESH_BEEP; as per CC_REFRESH but beep as well. this
  is useful in completion when a partial completion is found
* remove entry in BUGS about el_parse(); that was fixed a while ago

Revision 1.8: download - view: text, markup, annotated - select for diffs
Wed Jan 21 10:12:22 1998 UTC (26 years, 10 months ago) by lukem
Branches: MAIN
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +6 -3 lines
fix compile errors if FIONREAD is defined.  noted by
David Holland <dholland@bordeaux.eecs.harvard.edu> in [bin/4012].

Revision 1.7: download - view: text, markup, annotated - select for diffs
Sat Dec 20 19:15:52 1997 UTC (26 years, 11 months ago) by christos
Branches: MAIN
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +7 -5 lines
Small optimization. Don't call isatty() on every invocation of el_gets, but
remember if the tty setup failed... Also trim the input line of trailing \r's.

Revision 1.6: download - view: text, markup, annotated - select for diffs
Sun Oct 26 20:19:48 1997 UTC (27 years, 1 month ago) by christos
Branches: MAIN
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +42 -14 lines
Make el_gets() work when the input is not a tty.

Revision 1.5: download - view: text, markup, annotated - select for diffs
Sun Jul 6 18:25:32 1997 UTC (27 years, 5 months ago) by christos
Branches: MAIN
CVS tags: netbsd-1-3-base, netbsd-1-3-RELEASE, netbsd-1-3-PATCH003-CANDIDATE2, netbsd-1-3-PATCH003-CANDIDATE1, netbsd-1-3-PATCH003-CANDIDATE0, netbsd-1-3-PATCH003, netbsd-1-3-PATCH002, netbsd-1-3-PATCH001, netbsd-1-3-BETA, netbsd-1-3
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +11 -6 lines
Fix compiler warnings.

Revision 1.4: download - view: text, markup, annotated - select for diffs
Fri Apr 11 17:52:47 1997 UTC (27 years, 8 months ago) by christos
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +8 -4 lines
Portability fixes:
__const		-> const
BADSIG		-> SIG_ERR
int flags	-> u_int flags
#if __STDC__	-> #ifdef __STDC__

Revision 1.3: download - view: text, markup, annotated - select for diffs
Tue Jan 14 04:17:25 1997 UTC (27 years, 11 months ago) by lukem
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +7 -2 lines
Implement CC_REDISPLAY, which (unlink CC_REFRESH) redraws the entire input
line (a la ^R). This is useful if the binding outputs information and
mucks up the input line. To be used in ``list-choices'' bindings (refer
to the ^D binding in csh when filec is set)

Revision 1.2: download - view: text, markup, annotated - select for diffs
Sat Jan 11 06:48:06 1997 UTC (27 years, 11 months ago) by lukem
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +7 -1 lines
RCSid police
editline first appeared in 4.4BSD not NetBSD1.0

Revision 1.1.1.1 (vendor branch): download - view: text, markup, annotated - select for diffs
Fri May 6 06:01:43 1994 UTC (30 years, 7 months ago) by cgd
Branches: CSRG
CVS tags: netbsd-1-2-base, netbsd-1-2-RELEASE, netbsd-1-2-PATCH001, netbsd-1-2-BETA, netbsd-1-2, netbsd-1-1-base, netbsd-1-1-RELEASE, netbsd-1-1-PATCH001, netbsd-1-1, netbsd-1-0-base, netbsd-1-0-RELEASE, netbsd-1-0-PATCH1, netbsd-1-0-PATCH06, netbsd-1-0-PATCH05, netbsd-1-0-PATCH04, netbsd-1-0-PATCH03, netbsd-1-0-PATCH02, netbsd-1-0-PATCH0, netbsd-1-0, lite-2, lite-1
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +0 -0 lines
libedit!

Revision 1.1: download - view: text, markup, annotated - select for diffs
Fri May 6 06:01:42 1994 UTC (30 years, 7 months ago) by cgd
Branches: MAIN
Initial revision

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>