]> git.saurik.com Git - apple/system_cmds.git/blobdiff - sysctl.tproj/sysctl.c
system_cmds-880.100.5.tar.gz
[apple/system_cmds.git] / sysctl.tproj / sysctl.c
index 30b066b5245beab964b1e9f58f6cee4aa946bec6..ca869990ed5c6a8f452a9a1f8cc4ef7d46596ae2 100644 (file)
@@ -60,6 +60,8 @@ __unused static const char rcsid[] =
 #include <errno.h>
 #include <inttypes.h>
 #include <locale.h>
+#ifdef __APPLE__
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -680,6 +682,9 @@ oidfmt(int *oid, int len, char *fmt, u_int *kind)
                                        }
                                } else if (buf[sizeof(u_int)] == 'L') {
                                        *kind = (*kind & ~CTLTYPE) | CTLTYPE_LONG;
+                    if (buf[sizeof(u_int)+1] == 'U') {
+                        *kind = (*kind & ~CTLTYPE) | CTLTYPE_ULONG;
+                    }
                                }
                                break;
                        case CTLTYPE_QUAD:
@@ -745,6 +750,14 @@ show_var(int *oid, int nlen)
        bzero(name, BUFSIZ);
        qoid[0] = 0;
        memcpy(qoid + 2, oid, nlen * sizeof(int));
+       fmt = (char *)buf;
+       oidfmt(oid, nlen, fmt, &kind);
+
+#ifdef __APPLE__
+       if (!show_masked && (kind & CTLFLAG_MASKED)) {
+               return (1);
+       }
+#endif
 
 #ifdef __APPLE__
        // Support for CTL_USER
@@ -812,20 +825,11 @@ show_var(int *oid, int nlen)
                return (0);
        }
        val[len] = '\0';
-       fmt = (char *)buf;
-       oidfmt(oid, nlen, fmt, &kind);
        p = val;
        ctltype = (kind & CTLTYPE);
        sign = ctl_sign[ctltype];
        intlen = ctl_size[ctltype];
 
-#ifdef __APPLE__
-       if (!show_masked && (kind & CTLFLAG_MASKED)) {
-               free(oval);
-               return (1);
-       }
-#endif
-
        switch (ctltype) {
        case CTLTYPE_STRING:
                if (!nflag)
@@ -951,6 +955,9 @@ sysctl_all_user(int *oid, int len)
 static int
 sysctl_all(int *oid, int len)
 {
+#ifdef __APPLE__
+#endif
+
        int name1[22], name2[22];
        int i, j;
        size_t l1, l2;