Module Name: src
Committed By: christos
Date: Tue Jan 22 20:23:21 UTC 2013
Modified Files:
src/lib/libedit: editline.3 el.c histedit.h shlib_version
Log Message:
provide an el_init_fd function.
To generate a diff of this commit:
cvs rdiff -u -r1.78 -r1.79 src/lib/libedit/editline.3
cvs rdiff -u -r1.71 -r1.72 src/lib/libedit/el.c
cvs rdiff -u -r1.49 -r1.50 src/lib/libedit/histedit.h
cvs rdiff -u -r1.18 -r1.19 src/lib/libedit/shlib_version
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libedit/editline.3
diff -u src/lib/libedit/editline.3:1.78 src/lib/libedit/editline.3:1.79
--- src/lib/libedit/editline.3:1.78 Thu Jan 10 11:03:06 2013
+++ src/lib/libedit/editline.3 Tue Jan 22 15:23:21 2013
@@ -1,4 +1,4 @@
-.\" $NetBSD: editline.3,v 1.78 2013/01/10 16:03:06 wiz Exp $
+.\" $NetBSD: editline.3,v 1.79 2013/01/22 20:23:21 christos Exp $
.\"
.\" Copyright (c) 1997-2013 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -26,12 +26,13 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd January 10, 2013
+.Dd January 22, 2013
.Dt EDITLINE 3
.Os
.Sh NAME
.Nm editline ,
.Nm el_init ,
+.Nm el_init_fd ,
.Nm el_end ,
.Nm el_reset ,
.Nm el_gets ,
@@ -77,6 +78,8 @@
.In histedit.h
.Ft EditLine *
.Fn el_init "const char *prog" "FILE *fin" "FILE *fout" "FILE *ferr"
+.Ft EditLine *
+.Fn el_init_fd "const char *prog" "FILE *fin" "FILE *fout" "FILE *ferr" "int fdin" "int fdout" "int fderr"
.Ft void
.Fn el_end "EditLine *e"
.Ft void
@@ -170,6 +173,8 @@ The line editing functions use a common
.Fa EditLine ,
which is created by
.Fn el_init
+or
+.Fn el_init_fd
and freed by
.Fn el_end .
.Pp
@@ -193,11 +198,20 @@ are the input, output, and error streams
In this documentation, references to
.Dq the tty
are actually to this input/output stream combination.
+.It Fn el_init_fd
+Like
+.Fn el_init
+but allows specifying file descriptors for the
+.Xr stdio 3
+corresponding streams, in case those were created with
+.Xr funopen 3 .
.It Fn el_end
Clean up and finish with
.Fa e ,
assumed to have been created with
-.Fn el_init .
+.Fn el_init
+or
+.Fn el_init_fd .
.It Fn el_reset
Reset the tty and the parser.
This should be called after an error which may have upset the tty's
Index: src/lib/libedit/el.c
diff -u src/lib/libedit/el.c:1.71 src/lib/libedit/el.c:1.72
--- src/lib/libedit/el.c:1.71 Tue Sep 11 07:58:53 2012
+++ src/lib/libedit/el.c Tue Jan 22 15:23:21 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: el.c,v 1.71 2012/09/11 11:58:53 christos Exp $ */
+/* $NetBSD: el.c,v 1.72 2013/01/22 20:23:21 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)el.c 8.2 (Berkeley) 1/3/94";
#else
-__RCSID("$NetBSD: el.c,v 1.71 2012/09/11 11:58:53 christos Exp $");
+__RCSID("$NetBSD: el.c,v 1.72 2013/01/22 20:23:21 christos Exp $");
#endif
#endif /* not lint && not SCCSID */
@@ -60,6 +60,14 @@ __RCSID("$NetBSD: el.c,v 1.71 2012/09/11
public EditLine *
el_init(const char *prog, FILE *fin, FILE *fout, FILE *ferr)
{
+ return el_init_fd(prog, fin, fout, ferr, fileno(fin), fileno(fout),
+ fileno(ferr));
+}
+
+public EditLine *
+el_init_fd(const char *prog, FILE *fin, FILE *fout, FILE *ferr,
+ int fdin, int fdout, int fderr)
+{
EditLine *el = el_malloc(sizeof(*el));
if (el == NULL)
@@ -71,9 +79,9 @@ el_init(const char *prog, FILE *fin, FIL
el->el_outfile = fout;
el->el_errfile = ferr;
- el->el_infd = fileno(fin);
- el->el_outfd = fileno(fout);
- el->el_errfd = fileno(ferr);
+ el->el_infd = fdin;
+ el->el_outfd = fdout;
+ el->el_errfd = fderr;
el->el_prog = Strdup(ct_decode_string(prog, &el->el_scratch));
if (el->el_prog == NULL) {
Index: src/lib/libedit/histedit.h
diff -u src/lib/libedit/histedit.h:1.49 src/lib/libedit/histedit.h:1.50
--- src/lib/libedit/histedit.h:1.49 Thu May 31 09:16:39 2012
+++ src/lib/libedit/histedit.h Tue Jan 22 15:23:21 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: histedit.h,v 1.49 2012/05/31 13:16:39 christos Exp $ */
+/* $NetBSD: histedit.h,v 1.50 2013/01/22 20:23:21 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -84,6 +84,8 @@ typedef struct lineinfo {
* Initialization, cleanup, and resetting
*/
EditLine *el_init(const char *, FILE *, FILE *, FILE *);
+EditLine *el_init_fd(const char *, FILE *, FILE *, FILE *,
+ int, int, int);
void el_end(EditLine *);
void el_reset(EditLine *);
Index: src/lib/libedit/shlib_version
diff -u src/lib/libedit/shlib_version:1.18 src/lib/libedit/shlib_version:1.19
--- src/lib/libedit/shlib_version:1.18 Sat Jan 10 22:07:48 2009
+++ src/lib/libedit/shlib_version Tue Jan 22 15:23:21 2013
@@ -1,5 +1,5 @@
-# $NetBSD: shlib_version,v 1.18 2009/01/11 03:07:48 christos Exp $
+# $NetBSD: shlib_version,v 1.19 2013/01/22 20:23:21 christos Exp $
# Remember to update distrib/sets/lists/base/shl.* when changing
#
major=3
-minor=0
+minor=1