A patch from Vladimir to use last_char_is(), and a patch from
Larry to fix a silly bug when BB_FEATURE_VI_OPTIMIZE_CURSOR
is not defined.
diff --git a/editors/vi.c b/editors/vi.c
index 54f1d26..5a68ba9 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -19,7 +19,7 @@
  */
 
 char *vi_Version =
-	"$Id: vi.c,v 1.6 2001/05/07 17:37:43 andersen Exp $";
+	"$Id: vi.c,v 1.7 2001/05/07 22:57:47 andersen Exp $";
 
 /*
  * To compile for standalone use:
@@ -1760,9 +1760,10 @@
 	while (isblnk(*buf))
 		buf++;
 	strcpy((char *) args, (char *) buf);
-	if (last_char_is((char *)cmd, '!')) {
+	buf1 = last_char_is((char *)cmd, '!');
+	if (buf1) {
 		useforce = TRUE;
-		cmd[strlen((char *) cmd) - 1] = '\0';	// get rid of !
+		*buf1 = '\0';   // get rid of !
 	}
 	if (b >= 0) {
 		// if there is only one addr, then the addr
@@ -3919,9 +3920,11 @@
 		}
 	}
 
-	place_cursor(crow, ccol, (crow == last_row) ? TRUE : FALSE);
 #ifdef BB_FEATURE_VI_OPTIMIZE_CURSOR
+	place_cursor(crow, ccol, (crow == last_row) ? TRUE : FALSE);
 	last_row = crow;
+#else
+	place_cursor(crow, ccol, FALSE);
 #endif							/* BB_FEATURE_VI_OPTIMIZE_CURSOR */
 	
 	if (offset != old_offset)