*/
char *vi_Version =
- "$Id: vi.c,v 1.6 2001/05/07 17:37:43 andersen Exp $";
+ "$Id: vi.c,v 1.8 2001/05/13 00:48:09 andersen Exp $";
/*
* To compile for standalone use:
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
c = orig_buf[1]; // what is the delimiter
F = orig_buf + 2; // start of "find"
R = (Byte *) strchr((char *) F, c); // middle delimiter
+ if (!R) goto colon_s_fail;
*R++ = '\0'; // terminate "find"
buf1 = (Byte *) strchr((char *) R, c);
+ if (!buf1) goto colon_s_fail;
*buf1++ = '\0'; // terminate "replace"
if (*buf1 == 'g') { // :s/foo/bar/g
buf1++;
vc1:
dot = bound_dot(dot); // make sure "dot" is valid
return;
+#ifdef BB_FEATURE_VI_SEARCH
+colon_s_fail:
+ psb(":s expression missing delimiters");
+ return;
+#endif
+
}
static void Hit_Return(void)
}
}
- 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)