diff options
author | Wladimir J. van der Laan <laanwj@protonmail.com> | 2020-03-19 15:23:12 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@protonmail.com> | 2020-03-19 15:23:51 +0100 |
commit | 3d3d834324f313328ca1465f28e47e5569721c82 (patch) | |
tree | 9a8de73672628137317f14ef3057084e231a8f55 /src | |
parent | 67de1ee8bc18afff0f2f9f203803467a2274bfc1 (diff) | |
parent | e90e3e684ffa7b25f0dfb5b45e70bb0c358261fb (diff) |
Merge #18359: build: fix sysctl() detection on macOS
e90e3e684ffa7b25f0dfb5b45e70bb0c358261fb build: fix sysctl() detection on macOS (fanquake)
Pull request description:
[`sysctl()` on *BSD](https://www.unix.com/man-page/FreeBSD/3/sysctl/) takes a "const int *name", whereas [`sysctl()` on macOS](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/sysctl.3.html)
it takes an "int *name". So our configure check and `sysctl()` detection on
macOS currently fails:
```bash
/usr/include/sys/sysctl.h:759:9: note: candidate function not viable:
no known conversion from 'const int [2]' to 'int *' for 1st argument
int sysctl(int *, u_int, void *, size_t *, void *, size_t);
```
The simplest change seems to be to change the param to a "int *name", which
will work during configure on macOS and *BSD systems.
For consistency I've changed both calls, but note that macOS doesn't
have `KERN_ARND`, so that check will always fail regardless. We can revert/add
documentation if preferred.
ACKs for top commit:
laanwj:
Re-ACK e90e3e684ffa7b25f0dfb5b45e70bb0c358261fb
Tree-SHA512: 29e9348136fc72882f63079bf10d2490e845d7656aae2c003e282bea49dd2778204a7776a67086bd88c2852af9a07dd04ba358eede7e37029e1c10f73c85d6a5
Diffstat (limited to 'src')
-rw-r--r-- | src/random.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/random.cpp b/src/random.cpp index f7f3dd9de3..2a27e6ba0d 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -321,10 +321,10 @@ void GetOSRand(unsigned char *ent32) RandFailure(); } #elif defined(HAVE_SYSCTL_ARND) - /* FreeBSD and similar. It is possible for the call to return less + /* FreeBSD, NetBSD and similar. It is possible for the call to return less * bytes than requested, so need to read in a loop. */ - static const int name[2] = {CTL_KERN, KERN_ARND}; + static int name[2] = {CTL_KERN, KERN_ARND}; int have = 0; do { size_t len = NUM_OS_RANDOM_BYTES - have; |