]> git.ipfire.org Git - thirdparty/git.git/commitdiff
wt-status: print to s->fp, not stdout
authorMartin Ågren <martin.agren@gmail.com>
Sun, 27 Sep 2020 13:15:42 +0000 (15:15 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 27 Sep 2020 21:21:47 +0000 (14:21 -0700)
We pass around a `FILE *` in the `struct wt_status` and almost always
print to it. But in a few places, we write to `stdout` instead, either
explicitly through `fprintf(stdout, ...)` or implicitly with
`printf(...)` (and a few `putchar(...)`).

Always be explicit about writing to `s->fp`. To the best of my
understanding, this never mattered in practice because these spots are
involved in various forms of `git status` which always end up at
standard output anyway. When we do write to another file, it's because
we're creating a commit message template, and these code paths aren't
involved.

But let's be consistent to help future readers and avoid future bugs.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
wt-status.c

index 528130614b2a5ccae70e80e7e4733d2ffb3b7ad3..4a7483ee7d17bda0fe4d8442eb20e969104155bc 100644 (file)
@@ -1801,29 +1801,36 @@ static void wt_longstatus_print(struct wt_status *s)
                        ; /* nothing */
                else if (s->workdir_dirty) {
                        if (s->hints)
-                               printf(_("no changes added to commit "
-                                        "(use \"git add\" and/or \"git commit -a\")\n"));
+                               fprintf(s->fp, _("no changes added to commit "
+                                                "(use \"git add\" and/or "
+                                                "\"git commit -a\")\n"));
                        else
-                               printf(_("no changes added to commit\n"));
+                               fprintf(s->fp, _("no changes added to "
+                                                "commit\n"));
                } else if (s->untracked.nr) {
                        if (s->hints)
-                               printf(_("nothing added to commit but untracked files "
-                                        "present (use \"git add\" to track)\n"));
+                               fprintf(s->fp, _("nothing added to commit but "
+                                                "untracked files present (use "
+                                                "\"git add\" to track)\n"));
                        else
-                               printf(_("nothing added to commit but untracked files present\n"));
+                               fprintf(s->fp, _("nothing added to commit but "
+                                                "untracked files present\n"));
                } else if (s->is_initial) {
                        if (s->hints)
-                               printf(_("nothing to commit (create/copy files "
-                                        "and use \"git add\" to track)\n"));
+                               fprintf(s->fp, _("nothing to commit (create/"
+                                                "copy files and use \"git "
+                                                "add\" to track)\n"));
                        else
-                               printf(_("nothing to commit\n"));
+                               fprintf(s->fp, _("nothing to commit\n"));
                } else if (!s->show_untracked_files) {
                        if (s->hints)
-                               printf(_("nothing to commit (use -u to show untracked files)\n"));
+                               fprintf(s->fp, _("nothing to commit (use -u to "
+                                                "show untracked files)\n"));
                        else
-                               printf(_("nothing to commit\n"));
+                               fprintf(s->fp, _("nothing to commit\n"));
                } else
-                       printf(_("nothing to commit, working tree clean\n"));
+                       fprintf(s->fp, _("nothing to commit, working tree "
+                                        "clean\n"));
        }
        if(s->show_stash)
                wt_longstatus_print_stash_summary(s);
@@ -1846,12 +1853,12 @@ static void wt_shortstatus_unmerged(struct string_list_item *it,
        }
        color_fprintf(s->fp, color(WT_STATUS_UNMERGED, s), "%s", how);
        if (s->null_termination) {
-               fprintf(stdout, " %s%c", it->string, 0);
+               fprintf(s->fp, " %s%c", it->string, 0);
        } else {
                struct strbuf onebuf = STRBUF_INIT;
                const char *one;
                one = quote_path(it->string, s->prefix, &onebuf);
-               printf(" %s\n", one);
+               fprintf(s->fp, " %s\n", one);
                strbuf_release(&onebuf);
        }
 }
@@ -1864,16 +1871,16 @@ static void wt_shortstatus_status(struct string_list_item *it,
        if (d->index_status)
                color_fprintf(s->fp, color(WT_STATUS_UPDATED, s), "%c", d->index_status);
        else
-               putchar(' ');
+               fputc(' ', s->fp);
        if (d->worktree_status)
                color_fprintf(s->fp, color(WT_STATUS_CHANGED, s), "%c", d->worktree_status);
        else
-               putchar(' ');
-       putchar(' ');
+               fputc(' ', s->fp);
+       fputc(' ', s->fp);
        if (s->null_termination) {
-               fprintf(stdout, "%s%c", it->string, 0);
+               fprintf(s->fp, "%s%c", it->string, 0);
                if (d->rename_source)
-                       fprintf(stdout, "%s%c", d->rename_source, 0);
+                       fprintf(s->fp, "%s%c", d->rename_source, 0);
        } else {
                struct strbuf onebuf = STRBUF_INIT;
                const char *one;
@@ -1881,20 +1888,20 @@ static void wt_shortstatus_status(struct string_list_item *it,
                if (d->rename_source) {
                        one = quote_path(d->rename_source, s->prefix, &onebuf);
                        if (*one != '"' && strchr(one, ' ') != NULL) {
-                               putchar('"');
+                               fputc('"', s->fp);
                                strbuf_addch(&onebuf, '"');
                                one = onebuf.buf;
                        }
-                       printf("%s -> ", one);
+                       fprintf(s->fp, "%s -> ", one);
                        strbuf_release(&onebuf);
                }
                one = quote_path(it->string, s->prefix, &onebuf);
                if (*one != '"' && strchr(one, ' ') != NULL) {
-                       putchar('"');
+                       fputc('"', s->fp);
                        strbuf_addch(&onebuf, '"');
                        one = onebuf.buf;
                }
-               printf("%s\n", one);
+               fprintf(s->fp, "%s\n", one);
                strbuf_release(&onebuf);
        }
 }
@@ -1903,13 +1910,13 @@ static void wt_shortstatus_other(struct string_list_item *it,
                                 struct wt_status *s, const char *sign)
 {
        if (s->null_termination) {
-               fprintf(stdout, "%s %s%c", sign, it->string, 0);
+               fprintf(s->fp, "%s %s%c", sign, it->string, 0);
        } else {
                struct strbuf onebuf = STRBUF_INIT;
                const char *one;
                one = quote_path(it->string, s->prefix, &onebuf);
                color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "%s", sign);
-               printf(" %s\n", one);
+               fprintf(s->fp, " %s\n", one);
                strbuf_release(&onebuf);
        }
 }