blob: c2171fe0d82343f277369790f4548239fa001741 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/*
* Copyright 2023 Gentoo Authors
* Distributed under the terms of the GNU General Public License v2
*/
#include "headers.h"
#include "sbutil.h"
/* Wrapper for faccessat to work around buggy behavior on musl */
int sb_exists(int dirfd, const char *pathname, int flags)
{
struct stat64 buf;
if (sbio_faccessat(dirfd, pathname, F_OK, flags|AT_EACCESS) == 0)
return 0;
/* musl's faccessat gives EINVAL when the kernel does not support
* faccessat2 and AT_SYMLINK_NOFOLLOW is set.
* https://www.openwall.com/lists/musl/2023/06/19/1 */
if (errno != EINVAL)
return -1;
return fstatat64(dirfd, pathname, &buf, flags);
}
|