Code

Status view: report failures to update a file
authorJonas Fonseca <fonseca@diku.dk>
Tue, 10 Feb 2009 11:06:35 +0000 (12:06 +0100)
committerJonas Fonseca <fonseca@diku.dk>
Tue, 10 Feb 2009 11:07:15 +0000 (12:07 +0100)
Also, wait showing update progress until 5% has been reached.

NEWS
tig.c

diff --git a/NEWS b/NEWS
index f9b2e7f912328e2aa10846fba327226636416423..7927c21bae0e1744d7d013d0ba4b8252a2ab35d1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,7 @@ Improvements:
 Bug fixes:
 
  - Status view: show error when failing to open a file.
+ - Status view: report failures to update a file.
  - Blame view: fix problem with uninitialized variable.
  - Blame view: use line number information when loading blame for
    specific commit.
diff --git a/tig.c b/tig.c
index d2a9fe8b5c8ccb0d894896e130f80f92acea48d1..8b8d593122b1d813f056ed5a5079a1c9b9078038 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -5102,13 +5102,13 @@ status_update_file(struct status *status, enum line_type type)
                return FALSE;
 
        result = status_update_write(&io, status, type);
-       done_io(&io);
-       return result;
+       return done_io(&io) && result;
 }
 
 static bool
 status_update_files(struct view *view, struct line *line)
 {
+       char buf[sizeof(view->ref)];
        struct io io = {};
        bool result = TRUE;
        struct line *pos = view->line + view->lines;
@@ -5121,7 +5121,8 @@ status_update_files(struct view *view, struct line *line)
        for (pos = line; pos < view->line + view->lines && pos->data; pos++)
                files++;
 
-       for (file = 0, done = 0; result && file < files; line++, file++) {
+       string_copy(buf, view->ref);
+       for (file = 0, done = 5; result && file < files; line++, file++) {
                int almost_done = file * 100 / files;
 
                if (almost_done > done) {
@@ -5129,12 +5130,13 @@ status_update_files(struct view *view, struct line *line)
                        string_format(view->ref, "updating file %u of %u (%d%% done)",
                                      file, files, done);
                        update_view_title(view);
+                       doupdate();
                }
                result = status_update_write(&io, line->data, line->type);
        }
+       string_copy(view->ref, buf);
 
-       done_io(&io);
-       return result;
+       return done_io(&io) && result;
 }
 
 static bool