Use sysctl() != -1 instead of !sysctl() to check if
authorLasse Collin <lasse.collin@tukaani.org>
Fri, 4 Sep 2009 22:20:29 +0000 (01:20 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Fri, 4 Sep 2009 22:20:29 +0000 (01:20 +0300)
the function call succeeded.

NetBSD 4.0 returns positive values on success, but
NetBSD Current and FreeBSD return zero. OpenBSD's
man page doesn't tell what sysctl() returns on
success. All these BSDs return -1 on error.

Thanks to Robert Elz and Thomas Klausner.

src/common/cpucores.h
src/common/physmem.h

index 330cd9c..370c3ce 100644 (file)
@@ -40,7 +40,7 @@ cpucores(void)
        int name[2] = { CTL_HW, HW_NCPU };
        int cpus;
        size_t cpus_size = sizeof(cpus);
-       if (!sysctl(name, 2, &cpus, &cpus_size, NULL, 0)
+       if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1
                        && cpus_size == sizeof(cpus) && cpus > 0)
                ret = (uint32_t)(cpus);
 #endif
index 0dc77e9..74ea39e 100644 (file)
@@ -104,7 +104,7 @@ physmem(void)
                uint64_t u64;
        } mem;
        size_t mem_ptr_size = sizeof(mem.u64);
-       if (!sysctl(name, 2, &mem.u64, &mem_ptr_size, NULL, 0)) {
+       if (sysctl(name, 2, &mem.u64, &mem_ptr_size, NULL, 0) != -1) {
                // IIRC, 64-bit "return value" is possible on some 64-bit
                // BSD systems even with HW_PHYSMEM (instead of HW_PHYSMEM64),
                // so support both.