#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <string.h>
int mib[CTL_MAXNAME];
size_t len;
char *p;
static int name2oid(const char *name, int *oidp);
int main() {
printf("SYSCTL\n");
int i;
u_int32_t *tI;
int *sI;
mib[0] = 2;//1;
mib[1] = 134516811;//18;
sysctl(mib, 2, NULL, &len, NULL, 0);
p = malloc(len);
sysctl(mib, 2, p, &len, NULL, 0);
printf("[len: %i]\n", len);
if (len == 4) {
sI = p;
printf("[%i]\n", sI[0]);
}
else
printf("[%s]\n", p);
size_t j;
j = name2oid("kern.ngroups", mib);
//j = name2oid("hw.pagesizes", mib);
printf("j:[%i]\n", j);
for (int i = 0; i < j; i++)
printf("[%i]", mib[i]);
printf("\n");
}
static int name2oid(const char *name, int *oidp)
{
int oid[2];
int i;
size_t j;
oid[0] = 0;
oid[1] = 3;
j = CTL_MAXNAME * sizeof(int);
i = sysctl(oid, 2, oidp, &j, name, strlen(name));
if (i < 0)
return (i);
j /= sizeof(int);
return (j);
}