View | Details | Raw Unified | Return to bug 169773 | Differences between
and this patch

Collapse All | Expand All

(-)b/lib/libedit/editline.3 (+19 lines)
Lines 388-393 check this Link Here
388
(using
388
(using
389
.Fn el_get )
389
.Fn el_get )
390
to determine if editing should be enabled or not.
390
to determine if editing should be enabled or not.
391
.It Dv EL_READRESTART , Fa "int flag"
392
If
393
.Fa flag
394
is zero (the default),
395
then
396
.Fn el_getc
397
and
398
.Fn el_gets
399
will not treat
400
.Dv EINTR
401
errors any special and automatically restart reading characters.
402
Note this may be restricted to the builtin character read function
403
.Dv EL_BUILTIN_GETCFN
404
(see
405
.Dv EL_GETCFN
406
below).
391
.It Dv EL_UNBUFFERED , Fa "int flag"
407
.It Dv EL_UNBUFFERED , Fa "int flag"
392
If
408
If
393
.Fa flag
409
.Fa flag
Lines 498-503 Retrieve Link Here
498
previously registered with the corresponding
514
previously registered with the corresponding
499
.Fn el_set
515
.Fn el_set
500
call.
516
call.
517
.It Dv EL_READRESTART , Fa "int"
518
Return non-zero if reading of characters is restarted after signal
519
interruption.
501
.It Dv EL_UNBUFFERED , Fa "int"
520
.It Dv EL_UNBUFFERED , Fa "int"
502
Return non-zero if unbuffered mode is enabled.
521
Return non-zero if unbuffered mode is enabled.
503
.It Dv EL_PREP_TERM , Fa "int"
522
.It Dv EL_PREP_TERM , Fa "int"
(-)b/lib/libedit/el.c (+12 lines)
Lines 274-279 el_set(EditLine *el, int op, ...) Link Here
274
		el->el_data = va_arg(ap, void *);
274
		el->el_data = va_arg(ap, void *);
275
		break;
275
		break;
276
276
277
	case EL_READRESTART:
278
		if (va_arg(ap, int))
279
			el->el_flags |= READRESTART;
280
		else
281
			el->el_flags &= ~READRESTART;
282
		break;
283
277
	case EL_UNBUFFERED:
284
	case EL_UNBUFFERED:
278
		rv = va_arg(ap, int);
285
		rv = va_arg(ap, int);
279
		if (rv && !(el->el_flags & UNBUFFERED)) {
286
		if (rv && !(el->el_flags & UNBUFFERED)) {
Lines 435-440 el_get(EditLine *el, int op, ...) Link Here
435
		rv = 0;
442
		rv = 0;
436
		break;
443
		break;
437
444
445
	case EL_READRESTART:
446
		*va_arg(ap, int *) = (el->el_flags & READRESTART) != 0;
447
		rv = 0;
448
		break;
449
438
	case EL_UNBUFFERED:
450
	case EL_UNBUFFERED:
439
		*va_arg(ap, int *) = (!(el->el_flags & UNBUFFERED));
451
		*va_arg(ap, int *) = (!(el->el_flags & UNBUFFERED));
440
		rv = 0;
452
		rv = 0;
(-)b/lib/libedit/el.h (-1 / +2 lines)
Lines 54-60 Link Here
54
#define	HANDLE_SIGNALS	0x01
54
#define	HANDLE_SIGNALS	0x01
55
#define	NO_TTY		0x02
55
#define	NO_TTY		0x02
56
#define	EDIT_DISABLED	0x04
56
#define	EDIT_DISABLED	0x04
57
#define	UNBUFFERED	0x08
57
#define	READRESTART	0x08
58
#define	UNBUFFERED	0x10
58
59
59
typedef int bool_t;			/* True or not			*/
60
typedef int bool_t;			/* True or not			*/
60
61
(-)b/lib/libedit/histedit.h (-9 / +10 lines)
Lines 130-144 unsigned char _el_fn_sh_complete(EditLine *, int); Link Here
130
#define	EL_RPROMPT	12	/* , el_pfunc_t);		*/
130
#define	EL_RPROMPT	12	/* , el_pfunc_t);		*/
131
#define	EL_GETCFN	13	/* , el_rfunc_t);		*/
131
#define	EL_GETCFN	13	/* , el_rfunc_t);		*/
132
#define	EL_CLIENTDATA	14	/* , void *);			*/
132
#define	EL_CLIENTDATA	14	/* , void *);			*/
133
#define	EL_UNBUFFERED	15	/* , int);			*/
133
#define	EL_READRESTART	15	/* , int);			*/
134
#define	EL_PREP_TERM    16	/* , int);                      */
134
#define	EL_UNBUFFERED	16	/* , int);			*/
135
#define	EL_GETTC	17	/* , const char *, ..., NULL);	*/
135
#define	EL_PREP_TERM    17	/* , int);                      */
136
#define	EL_GETFP	18	/* , int, FILE **);		*/
136
#define	EL_GETTC	18	/* , const char *, ..., NULL);	*/
137
#define	EL_SETFP	19	/* , int, FILE *);		*/
137
#define	EL_GETFP	19	/* , int, FILE **);		*/
138
#define	EL_REFRESH	20	/* , void);			      set     */
138
#define	EL_SETFP	20	/* , int, FILE *);		*/
139
#define	EL_PROMPT_ESC	21	/* , prompt_func, Char);	      set/get */
139
#define	EL_REFRESH	21	/* , void);			      set     */
140
#define	EL_RPROMPT_ESC	22	/* , prompt_func, Char);	      set/get */
140
#define	EL_PROMPT_ESC	22	/* , prompt_func, Char);	      set/get */
141
#define	EL_RESIZE	23	/* , el_zfunc_t, void *);	      set     */
141
#define	EL_RPROMPT_ESC	23	/* , prompt_func, Char);	      set/get */
142
#define	EL_RESIZE	24	/* , el_zfunc_t, void *);	      set     */
142
143
143
#define	EL_BUILTIN_GETCFN	(NULL)
144
#define	EL_BUILTIN_GETCFN	(NULL)
144
145
(-)b/lib/libedit/read.c (+2 lines)
Lines 300-305 read_char(EditLine *el, char *cp) Link Here
300
			el_set(el, EL_REFRESH);
300
			el_set(el, EL_REFRESH);
301
			goto again;
301
			goto again;
302
		}
302
		}
303
		if (e == EINTR && (el->el_flags & READRESTART))
304
			goto again;
303
		if (!tried && read__fixio(el->el_infd, e) == 0)
305
		if (!tried && read__fixio(el->el_infd, e) == 0)
304
			tried = 1;
306
			tried = 1;
305
		else {
307
		else {

Return to bug 169773