svn commit: trunk/busybox/editors
pgf at busybox.net
pgf at busybox.net
Sun Oct 9 14:43:24 UTC 2005
Author: pgf
Date: 2005-10-09 07:43:22 -0700 (Sun, 09 Oct 2005)
New Revision: 11817
Log:
catch and report errors from file_write()
Modified:
trunk/busybox/editors/vi.c
Changeset:
Modified: trunk/busybox/editors/vi.c
===================================================================
--- trunk/busybox/editors/vi.c 2005-10-09 14:26:26 UTC (rev 11816)
+++ trunk/busybox/editors/vi.c 2005-10-09 14:43:22 UTC (rev 11817)
@@ -283,7 +283,6 @@
static void Indicate_Error(void); // use flash or beep to indicate error
#define indicate_error(c) Indicate_Error()
-
static void Hit_Return(void);
#ifdef CONFIG_FEATURE_VI_SEARCH
@@ -1113,14 +1112,19 @@
// system(syscmd);
forced = FALSE;
}
- psb("\"%s\" %dL, %dC", fn, li, l);
- if (q == text && r == end - 1 && l == ch) {
- file_modified = 0;
- last_file_modified = -1;
+ if (l < 0) {
+ if (l == -1)
+ psbs("Write error: %s", strerror(errno));
+ } else {
+ psb("\"%s\" %dL, %dC", fn, li, l);
+ if (q == text && r == end - 1 && l == ch) {
+ file_modified = 0;
+ last_file_modified = -1;
+ }
+ if ((cmd[0] == 'x' || cmd[1] == 'q') && l == ch) {
+ editing = 0;
+ }
}
- if ((cmd[0] == 'x' || cmd[1] == 'q') && l == ch) {
- editing = 0;
- }
#ifdef CONFIG_FEATURE_VI_READONLY
vc3:;
#endif /* CONFIG_FEATURE_VI_READONLY */
@@ -1147,6 +1151,7 @@
psb(":s expression missing delimiters");
#endif
}
+
#endif /* CONFIG_FEATURE_VI_COLON */
static void Hit_Return(void)
@@ -2516,7 +2521,7 @@
if (fn == 0) {
psbs("No current filename");
- return (-1);
+ return (-2);
}
charcnt = 0;
// FIXIT- use the correct umask()
@@ -3440,11 +3445,16 @@
strncasecmp((char *) p, "wq", cnt) == 0 ||
strncasecmp((char *) p, "x", cnt) == 0) {
cnt = file_write(cfn, text, end - 1);
- file_modified = 0;
- last_file_modified = -1;
- psb("\"%s\" %dL, %dC", cfn, count_lines(text, end - 1), cnt);
- if (p[0] == 'x' || p[1] == 'q') {
- editing = 0;
+ if (cnt < 0) {
+ if (cnt == -1)
+ psbs("Write error: %s", strerror(errno));
+ } else {
+ file_modified = 0;
+ last_file_modified = -1;
+ psb("\"%s\" %dL, %dC", cfn, count_lines(text, end - 1), cnt);
+ if (p[0] == 'x' || p[1] == 'q') {
+ editing = 0;
+ }
}
} else if (strncasecmp((char *) p, "file", cnt) == 0 ) {
last_status_cksum = 0; // force status update
@@ -3630,7 +3640,10 @@
#endif /* CONFIG_FEATURE_VI_READONLY */
) {
cnt = file_write(cfn, text, end - 1);
- if (cnt == (end - 1 - text + 1)) {
+ if (cnt < 0) {
+ if (cnt == -1)
+ psbs("Write error: %s", strerror(errno));
+ } else if (cnt == (end - 1 - text + 1)) {
editing = 0;
}
} else {
More information about the busybox-cvs
mailing list