Review all string_format users and use string_format instead of snprintf
[tig] / tig.c
diff --git a/tig.c b/tig.c
index e78c26c..11eb06d 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -1684,7 +1684,7 @@ search_view(struct view *view, enum request request, const char *search)
                char buf[SIZEOF_STR] = "unknown error";
 
                regerror(regex_err, &view->regex, buf, sizeof(buf));
-               report("Search failed: %s", buf);;
+               report("Search failed: %s", buf);
                return;
        }
 
@@ -1731,8 +1731,7 @@ begin_update(struct view *view)
                if (strcmp(view->vid, view->id))
                        opt_path[0] = 0;
 
-               if (snprintf(view->cmd, sizeof(view->cmd), format, id, opt_path)
-                   >= sizeof(view->cmd))
+               if (!string_format(view->cmd, format, id, opt_path))
                        return FALSE;
 
        } else {
@@ -2452,6 +2451,7 @@ tree_read(struct view *view, char *text)
        char buf[SIZEOF_STR];
        unsigned long pos;
        enum line_type type;
+       bool first_read = view->lines == 0;
 
        if (textlen <= SIZEOF_TREE_ATTR)
                return FALSE;
@@ -2459,10 +2459,9 @@ tree_read(struct view *view, char *text)
        type = text[STRING_SIZE("100644 ")] == 't'
             ? LINE_TREE_DIR : LINE_TREE_FILE;
 
-       /* The first time around ... */
-       if (!view->lines) {
+       if (first_read) {
                /* Add path info line */
-               if (snprintf(buf, sizeof(buf), "Directory path /%s", opt_path) < sizeof(buf) &&
+               if (string_format(buf, "Directory path /%s", opt_path) &&
                    realloc_lines(view, view->line_size + 1) &&
                    pager_read(view, buf))
                        view->line[view->lines - 1].type = LINE_DEFAULT;
@@ -2471,7 +2470,7 @@ tree_read(struct view *view, char *text)
 
                /* Insert "link" to parent directory. */
                if (*opt_path &&
-                   snprintf(buf, sizeof(buf), TREE_UP_FORMAT, view->ref) < sizeof(buf) &&
+                   string_format(buf, TREE_UP_FORMAT, view->ref) &&
                    realloc_lines(view, view->line_size + 1) &&
                    pager_read(view, buf))
                        view->line[view->lines - 1].type = LINE_TREE_DIR;
@@ -2518,6 +2517,10 @@ tree_read(struct view *view, char *text)
        if (!pager_read(view, text))
                return FALSE;
 
+       /* Move the current line to the first tree entry. */
+       if (first_read)
+               view->lineno++;
+
        view->line[view->lines - 1].type = type;
        return TRUE;
 }
@@ -2544,9 +2547,13 @@ tree_enter(struct view *view, struct line *line)
 
                } else {
                        size_t pathlen = strlen(opt_path);
+                       size_t origlen = pathlen;
                        char *basename = data + SIZEOF_TREE_ATTR;
 
-                       string_format_from(opt_path, &pathlen, "%s/", basename);
+                       if (string_format_from(opt_path, &pathlen, "%s/", basename)) {
+                               opt_path[origlen] = 0;
+                               return TRUE;
+                       }
                }
 
                /* Trees and subtrees share the same ID, so they are not not
@@ -3416,7 +3423,7 @@ main(int argc, char *argv[])
 
        if (*opt_codeset && strcmp(opt_codeset, opt_encoding)) {
                opt_iconv = iconv_open(opt_codeset, opt_encoding);
-               if (opt_iconv == (iconv_t) -1)
+               if (opt_iconv == ICONV_NONE)
                        die("Failed to initialize character set conversion");
        }