config, gitignore: failure to access with ENOTDIR is ok
The access_or_warn() function is used to check for optional configuration files like .gitconfig and .gitignore and warn when they are not accessible due to a configuration issue (e.g., bad permissions). It is not supposed to complain when a file is simply missing. Noticed on a system where ~/.config/git was a file --- when the new XDG_CONFIG_HOME support looks for ~/.config/git/config it should ignore ~/.config/git instead of printing irritating warnings: $ git status -s warning: unable to access '/home/jrn/.config/git/config': Not a directory warning: unable to access '/home/jrn/.config/git/config': Not a directory warning: unable to access '/home/jrn/.config/git/config': Not a directory warning: unable to access '/home/jrn/.config/git/config': Not a directory Compare v1.7.12.1~2^2 (attr:failure to open a .gitattributes file is OK with ENOTDIR, 2012-09-13). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8e950dab86
commit
e5c52c9898
@ -604,7 +604,10 @@ int rmdir_or_warn(const char *path);
|
|||||||
*/
|
*/
|
||||||
int remove_or_warn(unsigned int mode, const char *path);
|
int remove_or_warn(unsigned int mode, const char *path);
|
||||||
|
|
||||||
/* Call access(2), but warn for any error besides ENOENT. */
|
/*
|
||||||
|
* Call access(2), but warn for any error except "missing file"
|
||||||
|
* (ENOENT or ENOTDIR).
|
||||||
|
*/
|
||||||
int access_or_warn(const char *path, int mode);
|
int access_or_warn(const char *path, int mode);
|
||||||
|
|
||||||
/* Warn on an inaccessible file that ought to be accessible */
|
/* Warn on an inaccessible file that ought to be accessible */
|
||||||
|
@ -411,7 +411,7 @@ void warn_on_inaccessible(const char *path)
|
|||||||
int access_or_warn(const char *path, int mode)
|
int access_or_warn(const char *path, int mode)
|
||||||
{
|
{
|
||||||
int ret = access(path, mode);
|
int ret = access(path, mode);
|
||||||
if (ret && errno != ENOENT)
|
if (ret && errno != ENOENT && errno != ENOTDIR)
|
||||||
warn_on_inaccessible(path);
|
warn_on_inaccessible(path);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user