blob: 9ec77303bf4a1f390ecd1172ecd239863a3ef0eb (
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 (faccessat(dirfd, pathname, F_OK, flags) == 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);
}
|