Module Name: src
Committed By: christos
Date: Sun May 11 01:05:17 UTC 2014
Modified Files:
src/lib/libedit: editline.3 hist.h histedit.h history.c
Log Message:
Add a history function that takes a FILE pointer; needed for Capsicum.
>From Eitan Adler
To generate a diff of this commit:
cvs rdiff -u -r1.80 -r1.81 src/lib/libedit/editline.3
cvs rdiff -u -r1.13 -r1.14 src/lib/libedit/hist.h
cvs rdiff -u -r1.51 -r1.52 src/lib/libedit/histedit.h
cvs rdiff -u -r1.46 -r1.47 src/lib/libedit/history.c
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.80 src/lib/libedit/editline.3:1.81
--- src/lib/libedit/editline.3:1.80 Fri Jul 12 13:48:29 2013
+++ src/lib/libedit/editline.3 Sat May 10 21:05:17 2014
@@ -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 @@ Load the history list stored in
.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.
Index: src/lib/libedit/hist.h
diff -u src/lib/libedit/hist.h:1.13 src/lib/libedit/hist.h:1.14
--- src/lib/libedit/hist.h:1.13 Thu Jul 28 16:50:55 2011
+++ src/lib/libedit/hist.h Sat May 10 21:05:17 2014
@@ -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 @@ typedef struct el_history_t {
#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 *);
Index: src/lib/libedit/histedit.h
diff -u src/lib/libedit/histedit.h:1.51 src/lib/libedit/histedit.h:1.52
--- src/lib/libedit/histedit.h:1.51 Fri Jul 12 13:48:29 2013
+++ src/lib/libedit/histedit.h Sat May 10 21:05:17 2014
@@ -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 @@ int history(History *, HistEvent *, int
#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 *); */
Index: src/lib/libedit/history.c
diff -u src/lib/libedit/history.c:1.46 src/lib/libedit/history.c:1.47
--- src/lib/libedit/history.c:1.46 Fri Nov 18 15:39:18 2011
+++ src/lib/libedit/history.c Sat May 10 21:05:17 2014
@@ -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_getunique(TYPE(Histo
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 @@ done:
}
-/* 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 @@ history_save(TYPE(History) *h, const cha
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 @@ history_save(TYPE(History) *h, const cha
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 @@ FUNW(history)(TYPE(History) *h, TYPE(His
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;