mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-25 15:26:17 +02:00
Use close_range when available
This fixes the FreeBSD build of nix-util
This commit is contained in:
parent
59acf3b75c
commit
5c87c40a5e
3 changed files with 6 additions and 2 deletions
|
@ -86,7 +86,7 @@ static char buf[1024];]],
|
||||||
AC_LANG_POP(C++)
|
AC_LANG_POP(C++)
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS([statvfs pipe2])
|
AC_CHECK_FUNCS([statvfs pipe2 close_range])
|
||||||
|
|
||||||
|
|
||||||
# Check for lutimes, optionally used for changing the mtime of
|
# Check for lutimes, optionally used for changing the mtime of
|
||||||
|
|
|
@ -28,6 +28,7 @@ subdir('build-utils-meson/subprojects')
|
||||||
# HAVE_LUTIMES 1`. The `#define` is unconditional, 0 for not found and 1
|
# HAVE_LUTIMES 1`. The `#define` is unconditional, 0 for not found and 1
|
||||||
# for found. One therefore uses it with `#if` not `#ifdef`.
|
# for found. One therefore uses it with `#if` not `#ifdef`.
|
||||||
check_funcs = [
|
check_funcs = [
|
||||||
|
'close_range',
|
||||||
# Optionally used for changing the mtime of symlinks.
|
# Optionally used for changing the mtime of symlinks.
|
||||||
'lutimes',
|
'lutimes',
|
||||||
# Optionally used for creating pipes on Unix
|
# Optionally used for creating pipes on Unix
|
||||||
|
|
|
@ -121,10 +121,13 @@ void Pipe::create()
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#if __linux__ || __FreeBSD__
|
#if __linux__ || __FreeBSD__
|
||||||
// In future we can use a syscall wrapper, but at the moment musl and older glibc version don't support it.
|
|
||||||
static int unix_close_range(unsigned int first, unsigned int last, int flags)
|
static int unix_close_range(unsigned int first, unsigned int last, int flags)
|
||||||
{
|
{
|
||||||
|
#if !HAVE_CLOSE_RANGE
|
||||||
return syscall(SYS_close_range, first, last, (unsigned int)flags);
|
return syscall(SYS_close_range, first, last, (unsigned int)flags);
|
||||||
|
#else
|
||||||
|
return close_range(first, last, flags);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue