All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: "René Scharfe" <l.s.r@web.de>
Cc: Junio C Hamano <gitster@pobox.com>,
	Simon Ruderich <simon@ruderich.org>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Git List <git@vger.kernel.org>,
	Ralf Thielow <ralf.thielow@gmail.com>
Subject: Re: [PATCH 1/2] sequencer: factor out rewrite_file()
Date: Sat, 4 Nov 2017 05:35:38 -0400	[thread overview]
Message-ID: <20171104093537.glucmbljnjlw3htq@sigill.intra.peff.net> (raw)
In-Reply-To: <b074d6fa-8778-ea0d-d53b-7cc35bc4264a@web.de>

On Sat, Nov 04, 2017 at 10:05:43AM +0100, René Scharfe wrote:

> >> How about *not* printing the error at the place where you notice the
> >> error, and instead return an error code to the caller to be noticed
> >> which dies with an error message?
> > 
> > That ends up giving less-specific errors.
> 
> Not necessarily.  Function could return different codes for different
> errors, e.g. -1 for an open(2) error and -2 for a write(2) error, and
> the caller could use that to select the message to show.
> 
> Basically all of the messages in wrapper.c consist of some text mixed
> with the affected path path and a strerror(3) string, so they're
> compatible in that way.  A single function (get_path_error_format()?)
> could thus be used and callers would be able to combine its result with
> die(), error(), or warning().

I think we've had this discussion before, a while ago. Yes, returning an
integer error code is nice because you don't have pass in an extra
parameter. But I think there are two pitfalls:

  1. Integers may not be descriptive enough to cover all cases, which is
     how we ended up with the strbuf-passing strategy in the ref code.
     Certainly you could add an integer for every possible bespoke
     message, but then I'm not sure it's buying that much over having
     the function simply fill in a strbuf.

  2. For complex functions there may be multiple errors that need to
     stack. I think the refs code has cases like this, where a syscall
     fails, which causes a fundamental ref operation to fail, which
     causes a higher-level operation to fail. It's only the caller of
     the higher-level operation that knows how to report the error.

Certainly an integer error code would work for _this_ function, but I'd
rather see us grow towards consistent error handling.

-Peff

  reply	other threads:[~2017-11-04  9:35 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-31  9:54 [PATCH 1/2] sequencer: factor out rewrite_file() René Scharfe
2017-10-31  9:58 ` [PATCH 2/2] sequencer: use O_TRUNC to truncate files René Scharfe
2017-10-31 16:34   ` Kevin Daudt
2017-11-01 15:34   ` Johannes Schindelin
2017-10-31 16:33 ` [PATCH 1/2] sequencer: factor out rewrite_file() Kevin Daudt
2017-11-01  6:06   ` Kevin Daudt
2017-11-01 11:10 ` Simon Ruderich
2017-11-01 13:00   ` René Scharfe
2017-11-01 14:44     ` [PATCH 1/2] wrapper.c: consistently quote filenames in error messages Simon Ruderich
2017-11-02  4:40       ` Junio C Hamano
2017-11-02  5:16         ` Junio C Hamano
2017-11-02 10:20           ` Simon Ruderich
2017-11-03  1:47             ` Junio C Hamano
2017-11-01 14:45     ` [PATCH 2/2] sequencer.c: check return value of close() in rewrite_file() Simon Ruderich
2017-11-01 17:09       ` René Scharfe
2017-11-01 15:33 ` [PATCH 1/2] sequencer: factor out rewrite_file() Johannes Schindelin
2017-11-01 19:47 ` Jeff King
2017-11-01 21:46   ` Johannes Schindelin
2017-11-01 22:16     ` Jeff King
2017-11-03 10:32       ` Simon Ruderich
2017-11-03 13:44         ` Junio C Hamano
2017-11-03 19:13           ` Jeff King
2017-11-04  9:05             ` René Scharfe
2017-11-04  9:35               ` Jeff King [this message]
2017-11-04 18:36             ` Simon Ruderich
2017-11-05  2:07               ` Jeff King
2017-11-06 16:13                 ` Improved error handling (Was: [PATCH 1/2] sequencer: factor out rewrite_file()) Simon Ruderich
2017-11-16 10:36                   ` Simon Ruderich
2017-11-17 22:33                   ` Jeff King
2017-11-18  9:01                     ` Johannes Sixt
2017-12-24 14:54                       ` Jeff King
2017-12-24 15:45                         ` Randall S. Becker
2017-12-25 10:28                         ` Johannes Sixt
2017-11-03 14:46         ` [PATCH 1/2] sequencer: factor out rewrite_file() Johannes Schindelin
2017-11-03 18:57           ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171104093537.glucmbljnjlw3htq@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=l.s.r@web.de \
    --cc=ralf.thielow@gmail.com \
    --cc=simon@ruderich.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.