[svn-commits] seanbright: trunk r146359 - /trunk/main/asterisk.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Oct 4 11:20:32 CDT 2008


Author: seanbright
Date: Sat Oct  4 11:20:31 2008
New Revision: 146359

URL: http://svn.digium.com/view/asterisk?view=rev&rev=146359
Log:
Fix a bug with the last item in CLI history getting duplicated when
read from the .asterisk_history file (and subsequently being duplicated
when written).  We weren't checking the result of fgets() which meant
that we read the same line twice before feof() actually returned non-
zero.

Also, stop writing out an extra blank line between each item in the
history file, fix a minor off-by-one error, and use symbolic constants
rather than a hardcoded integer.

Modified:
    trunk/main/asterisk.c

Modified: trunk/main/asterisk.c
URL: http://svn.digium.com/view/asterisk/trunk/main/asterisk.c?view=diff&rev=146359&r1=146358&r2=146359
==============================================================================
--- trunk/main/asterisk.c (original)
+++ trunk/main/asterisk.c Sat Oct  4 11:20:31 2008
@@ -2371,15 +2371,17 @@
 	return 0;
 }
 
+#define MAX_HISTORY_COMMAND_LENGTH 256
+
 static int ast_el_add_history(char *buf)
 {
 	HistEvent ev;
 
 	if (el_hist == NULL || el == NULL)
 		ast_el_initialize();
-	if (strlen(buf) > 256)
+	if (strlen(buf) > (MAX_HISTORY_COMMAND_LENGTH - 1))
 		return 0;
-	return (history(el_hist, &ev, H_ENTER, buf));
+	return (history(el_hist, &ev, H_ENTER, ast_strip(ast_strdupa(buf))));
 }
 
 static int ast_el_write_history(char *filename)
@@ -2394,7 +2396,7 @@
 
 static int ast_el_read_history(char *filename)
 {
-	char buf[256];
+	char buf[MAX_HISTORY_COMMAND_LENGTH];
 	FILE *f;
 	int ret = -1;
 
@@ -2405,7 +2407,8 @@
 		return ret;
 
 	while (!feof(f)) {
-		fgets(buf, sizeof(buf), f);
+		if (!fgets(buf, sizeof(buf), f))
+			break;
 		if (!strcmp(buf, "_HiStOrY_V2_\n"))
 			continue;
 		if (ast_all_zeros(buf))




More information about the svn-commits mailing list