* [PATCH] format-patch: notice failure to open cover letter for writing
@ 2019-02-21 23:50 Junio C Hamano
2019-02-22 6:26 ` Jeff King
0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2019-02-21 23:50 UTC (permalink / raw)
To: git
The make_cover_letter() function is supposed to open a new file for
writing, and let the caller write into it via FILE *rev->diffopt.file
but because the function does not return anything, the caller does not
bother checking the return value.
Make sure it dies, instead of keep going with a NULL output
filestream and relying on it to cause a crash.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
builtin/log.c | 2 +-
t/t4014-format-patch.sh | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/builtin/log.c b/builtin/log.c
index 3e145fe502..43fc9a07df 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1047,7 +1047,7 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout,
if (!use_stdout &&
open_next_file(NULL, rev->numbered_files ? NULL : "cover-letter", rev, quiet))
- return;
+ die(_("Failed to create cover-letter file"));
log_write_email_headers(rev, head, &pp.after_subject, &need_8bit_cte, 0);
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 909c743c13..b6e2fdbc44 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -589,6 +589,12 @@ test_expect_success 'excessive subject' '
ls patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
'
+test_expect_success 'failure to write cover-letter aborts gracefully' '
+ test_when_finished "rmdir 0000-cover-letter.patch" &&
+ mkdir 0000-cover-letter.patch &&
+ test_must_fail git format-patch --no-renames --cover-letter -1
+'
+
test_expect_success 'cover-letter inherits diff options' '
git mv file foo &&
git commit -m foo &&
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] format-patch: notice failure to open cover letter for writing
2019-02-21 23:50 [PATCH] format-patch: notice failure to open cover letter for writing Junio C Hamano
@ 2019-02-22 6:26 ` Jeff King
2019-02-22 7:50 ` Duy Nguyen
2019-02-22 17:54 ` Junio C Hamano
0 siblings, 2 replies; 4+ messages in thread
From: Jeff King @ 2019-02-22 6:26 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Thu, Feb 21, 2019 at 03:50:11PM -0800, Junio C Hamano wrote:
> The make_cover_letter() function is supposed to open a new file for
> writing, and let the caller write into it via FILE *rev->diffopt.file
> but because the function does not return anything, the caller does not
> bother checking the return value.
>
> Make sure it dies, instead of keep going with a NULL output
> filestream and relying on it to cause a crash.
Definitely makes sense.
> diff --git a/builtin/log.c b/builtin/log.c
> index 3e145fe502..43fc9a07df 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -1047,7 +1047,7 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout,
>
> if (!use_stdout &&
> open_next_file(NULL, rev->numbered_files ? NULL : "cover-letter", rev, quiet))
> - return;
> + die(_("Failed to create cover-letter file"));
I wondered if we should be showing errno here, but it looks like
open_next_file() will give us a more specific error (including errno if
applicable).
I'd suggest s/F/f/ in the message to match our usual style, though I see
this code has a lot of capitalized errors already. :)
> +test_expect_success 'failure to write cover-letter aborts gracefully' '
> + test_when_finished "rmdir 0000-cover-letter.patch" &&
> + mkdir 0000-cover-letter.patch &&
> + test_must_fail git format-patch --no-renames --cover-letter -1
> +'
Cute test. :)
-Peff
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] format-patch: notice failure to open cover letter for writing
2019-02-22 6:26 ` Jeff King
@ 2019-02-22 7:50 ` Duy Nguyen
2019-02-22 17:54 ` Junio C Hamano
1 sibling, 0 replies; 4+ messages in thread
From: Duy Nguyen @ 2019-02-22 7:50 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, Git Mailing List
On Fri, Feb 22, 2019 at 1:28 PM Jeff King <peff@peff.net> wrote:
> > diff --git a/builtin/log.c b/builtin/log.c
> > index 3e145fe502..43fc9a07df 100644
> > --- a/builtin/log.c
> > +++ b/builtin/log.c
> > @@ -1047,7 +1047,7 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout,
> >
> > if (!use_stdout &&
> > open_next_file(NULL, rev->numbered_files ? NULL : "cover-letter", rev, quiet))
> > - return;
> > + die(_("Failed to create cover-letter file"));
>
> I'd suggest s/F/f/ in the message to match our usual style, though I see
> this code has a lot of capitalized errors already. :)
Thanks! The lowercase wins over uppercase [1] 1517 to 327.
Unfortunately it's a tie in this file. But I think it's still good
that new messages stick to lowercase.
[1] counting error/warn/die only with
git grep 'die[_a-z]*(_("[A-Z]\|error[_a-z]*(_("[A-Z]\|warning[_a-z]*(_("[A-Z]'
-- \*.c
--
Duy
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] format-patch: notice failure to open cover letter for writing
2019-02-22 6:26 ` Jeff King
2019-02-22 7:50 ` Duy Nguyen
@ 2019-02-22 17:54 ` Junio C Hamano
1 sibling, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2019-02-22 17:54 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, git
Jeff King <peff@peff.net> writes:
> I'd suggest s/F/f/ in the message to match our usual style, though I see
> this code has a lot of capitalized errors already. :)
Yup, I'd prepare a prelim clean-up before this step.
>> +test_expect_success 'failure to write cover-letter aborts gracefully' '
>> + test_when_finished "rmdir 0000-cover-letter.patch" &&
>> + mkdir 0000-cover-letter.patch &&
>> + test_must_fail git format-patch --no-renames --cover-letter -1
>> +'
>
> Cute test. :)
Those who can find this "cute" would probably know, but for others,
this is a trick to test codepath for "cannot create a file" error
without requiring SANITY prerequisite.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-02-22 17:54 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-21 23:50 [PATCH] format-patch: notice failure to open cover letter for writing Junio C Hamano
2019-02-22 6:26 ` Jeff King
2019-02-22 7:50 ` Duy Nguyen
2019-02-22 17:54 ` Junio C Hamano
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).