[PATCH v3 12/13] wrapper: factor out is_missing_file_error()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 26, 2017, 03:35 UTC
- Message-ID
- <20170526033510.1793-13-gitster@pobox.com>
- In-Reply-To
- <20170526033510.1793-1-gitster@pobox.com>
Our code often opens a path to an optional file, to work on its contents when we can successfully open it. We can ignore a failure to open if such an optional file does not exist, but we do want to report a failure in opening for other reasons (e.g. we got an I/O error, or the file is there, but we lack the permission to open).
There is a logic to determine if an errno left by open/fopen indicates such an ignorable error. Split it out into a helper function. We may want to make it an extern in later steps, as many hits from "git grep ENOENT" would instead want to be using the same logic.
Signed-off-by: Junio C Hamano <gitster@pobox.com> --- wrapper.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/wrapper.c b/wrapper.c index b117eb14a4..f1c87ec7ea 100644 --- a/wrapper.c +++ b/wrapper.c @@ -423,9 +423,23 @@ static void warn_on_inaccessible(const char *path) warning_errno(_("unable to access '%s'"), path); } +/* + * Our code often opens a path to an optional file, to work on its + * contents when we can successfully open it. We can ignore a failure + * to open if such an optional file does not exist, but we do want to + * report a failure in opening for other reasons (e.g. we got an I/O + * error, or the file is there, but we lack the permission to open). + * + * Call this function after seeing an error from open() or fopen() to + * see if the errno indicates a missing file that we can safely ignore. + */ +static int is_missing_file_error(int errno_) { + return (errno_ == ENOENT || errno_ == ENOTDIR); +} + int warn_on_fopen_errors(const char *path) { - if (errno != ENOENT && errno != ENOTDIR) { + if (!is_missing_file_error(errno)) { warn_on_inaccessible(path); return -1; }
-- 2.13.0-491-g71cfeddc25