Module Name:    src
Committed By:   christos
Date:           Mon Feb 15 15:26:48 UTC 2016

Modified Files:
        src/lib/libedit: history.c

Log Message:
Use fparseln to avoid newline hacks.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 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/history.c
diff -u src/lib/libedit/history.c:1.47 src/lib/libedit/history.c:1.48
--- src/lib/libedit/history.c:1.47	Sat May 10 21:05:17 2014
+++ src/lib/libedit/history.c	Mon Feb 15 10:26:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: history.c,v 1.47 2014/05/11 01:05:17 christos Exp $	*/
+/*	$NetBSD: history.c,v 1.48 2016/02/15 15:26:48 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.47 2014/05/11 01:05:17 christos Exp $");
+__RCSID("$NetBSD: history.c,v 1.48 2016/02/15 15:26:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -743,7 +743,7 @@ history_load(TYPE(History) *h, const cha
 	if ((fp = fopen(fname, "r")) == NULL)
 		return i;
 
-	if ((line = fgetln(fp, &sz)) == NULL)
+	if ((line = fparseln(fp, &sz, NULL, NULL, 0)) == NULL)
 		goto done;
 
 	if (strncmp(line, hist_cookie, sz) != 0)
@@ -752,14 +752,8 @@ history_load(TYPE(History) *h, const cha
 	ptr = h_malloc((max_size = 1024) * sizeof(*ptr));
 	if (ptr == NULL)
 		goto done;
-	for (i = 0; (line = fgetln(fp, &sz)) != NULL; i++) {
-		char c = line[sz];
-
-		if (sz != 0 && line[sz - 1] == '\n')
-			line[--sz] = '\0';
-		else
-			line[sz] = '\0';
-
+	free(line);
+	for (i = 0; (line = fparseln(fp, &sz, NULL, NULL, 0)) != NULL; i++) {
 		if (max_size < sz) {
 			char *nptr;
 			max_size = (sz + 1024) & (size_t)~1023;
@@ -771,15 +765,16 @@ history_load(TYPE(History) *h, const cha
 			ptr = nptr;
 		}
 		(void) strunvis(ptr, line);
-		line[sz] = c;
 		if (HENTER(h, &ev, ct_decode_string(ptr, &conv)) == -1) {
 			i = -1;
 			goto oomem;
 		}
+		free(line);
 	}
 oomem:
 	h_free(ptr);
 done:
+	free(line);
 	(void) fclose(fp);
 	return i;
 }

Reply via email to