/* show.c - show the contents of a sysctl variable * Copyright (C) 2006 David Landgren, all rights reserved. */ #include #include #include #include /* clockinfo struct */ #include /* vmtotal struct */ #include /* loadavg struct */ void show(const char *arg) { int mib[CTL_MAXNAME]; size_t miblen = (sizeof(mib)/sizeof(mib[0])); char buf[BUFSIZ]; int buflen = BUFSIZ; int qoid[CTL_MAXNAME+2]; unsigned char mibfmt[BUFSIZ]; int mibfmtlen = sizeof(mibfmt); char *f = mibfmt; int j; if (sysctlnametomib(arg, mib, &miblen) == -1) { return; } if (sysctl(mib, miblen, buf, &buflen, NULL, 0) == -1) { return; } qoid[0] = 0; qoid[1] = 4; memcpy(qoid+2, mib, miblen * sizeof(int)); if (sysctl(qoid, miblen+2, mibfmt, &mibfmtlen, NULL, 0) == -1) { return; } f += sizeof(unsigned int); printf( "%s %s\n", arg, f ); } int main(int argc, char **argv) { while(--argc) { const char *arg; arg = *++argv; show(arg); } exit(0); }