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