Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/gen/sysctlbyname.c
Show All 27 Lines | |||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/sysctl.h> | #include <sys/sysctl.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include "libc_private.h" | |||||
#define SYSCTLBYNAME_OSREL 1300045 | |||||
extern int __sysctlbyname(const char *name, size_t namelen, void *oldp, | extern int __sysctlbyname(const char *name, size_t namelen, void *oldp, | ||||
size_t *oldlenp, const void *newp, size_t newlen); | size_t *oldlenp, const void *newp, size_t newlen); | ||||
int | int | ||||
sysctlbyname(const char *name, void *oldp, size_t *oldlenp, | sysctlbyname(const char *name, void *oldp, size_t *oldlenp, | ||||
const void *newp, size_t newlen) | const void *newp, size_t newlen) | ||||
{ | { | ||||
int oid[CTL_MAXNAME]; | |||||
size_t len; | size_t len; | ||||
if (__getosreldate() >= SYSCTLBYNAME_OSREL) { | |||||
len = strlen(name); | len = strlen(name); | ||||
return (__sysctlbyname(name, len, oldp, oldlenp, newp, | return (__sysctlbyname(name, len, oldp, oldlenp, newp, | ||||
newlen)); | newlen)); | ||||
} | |||||
len = nitems(oid); | |||||
if (sysctlnametomib(name, oid, &len) == -1) | |||||
return (-1); | |||||
return (sysctl(oid, len, oldp, oldlenp, newp, newlen)); | |||||
} | } |