config.c: rewrite ENODEV into EISDIR when mmap fails
If we try to mmap a directory, we'll get ENODEV. This translates to "no such device" for the user, which is not very helpful. Since we've just fstat()'d the file, we can easily check whether the problem was a directory to give a better message. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
1570856b51
commit
0e8771f198
2
config.c
2
config.c
@ -2051,6 +2051,8 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
|||||||
contents = xmmap_gently(NULL, contents_sz, PROT_READ,
|
contents = xmmap_gently(NULL, contents_sz, PROT_READ,
|
||||||
MAP_PRIVATE, in_fd, 0);
|
MAP_PRIVATE, in_fd, 0);
|
||||||
if (contents == MAP_FAILED) {
|
if (contents == MAP_FAILED) {
|
||||||
|
if (errno == ENODEV && S_ISDIR(st.st_mode))
|
||||||
|
errno = EISDIR;
|
||||||
error("unable to mmap '%s': %s",
|
error("unable to mmap '%s': %s",
|
||||||
config_filename, strerror(errno));
|
config_filename, strerror(errno));
|
||||||
ret = CONFIG_INVALID_FILE;
|
ret = CONFIG_INVALID_FILE;
|
||||||
|
Reference in New Issue
Block a user