Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/lib/libedit Add a history function that takes a FILE pointer...



details:   https://anonhg.NetBSD.org/src/rev/f86428b02bcc
branches:  trunk
changeset: 329144:f86428b02bcc
user:      christos <christos%NetBSD.org@localhost>
date:      Sun May 11 01:05:17 2014 +0000

description:
Add a history function that takes a FILE pointer; needed for Capsicum.
>From Eitan Adler

diffstat:

 lib/libedit/editline.3 |  11 ++++++++---
 lib/libedit/hist.h     |   3 ++-
 lib/libedit/histedit.h |   3 ++-
 lib/libedit/history.c  |  39 ++++++++++++++++++++++++++++++---------
 4 files changed, 42 insertions(+), 14 deletions(-)

diffs (163 lines):

diff -r 23f0bdd4c5f6 -r f86428b02bcc lib/libedit/editline.3
--- a/lib/libedit/editline.3    Sat May 10 22:24:32 2014 +0000
+++ b/lib/libedit/editline.3    Sun May 11 01:05:17 2014 +0000
@@ -1,6 +1,6 @@
-.\"    $NetBSD: editline.3,v 1.80 2013/07/12 17:48:29 christos Exp $
+.\"    $NetBSD: editline.3,v 1.81 2014/05/11 01:05:17 christos Exp $
 .\"
-.\" Copyright (c) 1997-2013 The NetBSD Foundation, Inc.
+.\" Copyright (c) 1997-2014 The NetBSD Foundation, Inc.
 .\" All rights reserved.
 .\"
 .\" This file was contributed to The NetBSD Foundation by Luke Mewburn.
@@ -26,7 +26,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd July 12, 2013
+.Dd May 10, 2014
 .Dt EDITLINE 3
 .Os
 .Sh NAME
@@ -761,6 +761,11 @@
 .It Dv H_SAVE , Fa "const char *file"
 Save the history list to
 .Fa file .
+.It Dv H_SAVE_FP , Fa "FILE *fp"
+Save the history list to the opened
+.Fa fp
+.Ft FILE
+pointer .
 .It Dv H_SETUNIQUE , Fa "int unique"
 Set flag that adjacent identical event strings should not be entered
 into the history.
diff -r 23f0bdd4c5f6 -r f86428b02bcc lib/libedit/hist.h
--- a/lib/libedit/hist.h        Sat May 10 22:24:32 2014 +0000
+++ b/lib/libedit/hist.h        Sun May 11 01:05:17 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: hist.h,v 1.13 2011/07/28 20:50:55 christos Exp $       */
+/*     $NetBSD: hist.h,v 1.14 2014/05/11 01:05:17 christos Exp $       */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -73,6 +73,7 @@
 #define        HIST_SET(el, num)       HIST_FUN(el, H_SET, num)
 #define        HIST_LOAD(el, fname)    HIST_FUN(el, H_LOAD fname)
 #define        HIST_SAVE(el, fname)    HIST_FUN(el, H_SAVE fname)
+#define        HIST_SAVE_FP(el, fp)    HIST_FUN(el, H_SAVE_FP fp)
 
 protected int          hist_init(EditLine *);
 protected void         hist_end(EditLine *);
diff -r 23f0bdd4c5f6 -r f86428b02bcc lib/libedit/histedit.h
--- a/lib/libedit/histedit.h    Sat May 10 22:24:32 2014 +0000
+++ b/lib/libedit/histedit.h    Sun May 11 01:05:17 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: histedit.h,v 1.51 2013/07/12 17:48:29 christos Exp $   */
+/*     $NetBSD: histedit.h,v 1.52 2014/05/11 01:05:17 christos Exp $   */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -224,6 +224,7 @@
 #define        H_NEXT_EVDATA   23      /* , const int, histdata_t *);  */
 #define        H_DELDATA       24      /* , int, histdata_t *);*/
 #define        H_REPLACE       25      /* , const char *, histdata_t); */
+#define        H_SAVE_FP       26      /* , FILE *);           */
 
 
 
diff -r 23f0bdd4c5f6 -r f86428b02bcc lib/libedit/history.c
--- a/lib/libedit/history.c     Sat May 10 22:24:32 2014 +0000
+++ b/lib/libedit/history.c     Sun May 11 01:05:17 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: history.c,v 1.46 2011/11/18 20:39:18 christos Exp $    */
+/*     $NetBSD: history.c,v 1.47 2014/05/11 01:05:17 christos Exp $    */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)history.c  8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: history.c,v 1.46 2011/11/18 20:39:18 christos Exp $");
+__RCSID("$NetBSD: history.c,v 1.47 2014/05/11 01:05:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -105,6 +105,7 @@
 private int history_set_fun(TYPE(History) *, TYPE(History) *);
 private int history_load(TYPE(History) *, const char *);
 private int history_save(TYPE(History) *, const char *);
+private int history_save_fp(TYPE(History) *, FILE *);
 private int history_prev_event(TYPE(History) *, TYPE(HistEvent) *, int);
 private int history_next_event(TYPE(History) *, TYPE(HistEvent) *, int);
 private int history_next_string(TYPE(History) *, TYPE(HistEvent) *, const Char *);
@@ -784,13 +785,12 @@
 }
 
 
-/* history_save():
+/* history_save_fp():
  *     TYPE(History) save function
  */
 private int
-history_save(TYPE(History) *h, const char *fname)
+history_save_fp(TYPE(History) *h, FILE *fp)
 {
-       FILE *fp;
        TYPE(HistEvent) ev;
        int i = -1, retval;
        size_t len, max_size;
@@ -800,9 +800,6 @@
        static ct_buffer_t conv;
 #endif
 
-       if ((fp = fopen(fname, "w")) == NULL)
-               return -1;
-
        if (fchmod(fileno(fp), S_IRUSR|S_IWUSR) == -1)
                goto done;
        if (fputs(hist_cookie, fp) == EOF)
@@ -831,11 +828,29 @@
 oomem:
        h_free(ptr);
 done:
-       (void) fclose(fp);
        return i;
 }
 
 
+/* history_save():
+ *    History save function
+ */
+private int
+history_save(TYPE(History) *h, const char *fname)
+{
+    FILE *fp;
+    int i;
+
+    if ((fp = fopen(fname, "w")) == NULL)
+       return -1;
+
+    i = history_save_fp(h, fp);
+
+    (void) fclose(fp);
+    return i;
+}
+
+
 /* history_prev_event():
  *     Find the previous event, with number given
  */
@@ -1016,6 +1031,12 @@
                        he_seterrev(ev, _HE_HIST_WRITE);
                break;
 
+       case H_SAVE_FP:
+               retval = history_save_fp(h, va_arg(va, FILE *));
+               if (retval == -1)
+                   he_seterrev(ev, _HE_HIST_WRITE);
+               break;
+
        case H_PREV_EVENT:
                retval = history_prev_event(h, ev, va_arg(va, int));
                break;



Home | Main Index | Thread Index | Old Index