Author: mdf
Date: Mon Nov 29 18:18:00 2010
New Revision: 216059
URL: http://svn.freebsd.org/changeset/base/216059

Log:
  Slightly modify the logic in sysctl_find_oid to reduce the indentation.
  There should be no functional change.
  
  MFC after:    3 days

Modified:
  head/sys/kern/kern_sysctl.c

Modified: head/sys/kern/kern_sysctl.c
==============================================================================
--- head/sys/kern/kern_sysctl.c Mon Nov 29 18:17:53 2010        (r216058)
+++ head/sys/kern/kern_sysctl.c Mon Nov 29 18:18:00 2010        (r216059)
@@ -1303,36 +1303,39 @@ int
 sysctl_find_oid(int *name, u_int namelen, struct sysctl_oid **noid,
     int *nindx, struct sysctl_req *req)
 {
+       struct sysctl_oid_list *lsp;
        struct sysctl_oid *oid;
        int indx;
 
        SYSCTL_ASSERT_LOCKED();
-       oid = SLIST_FIRST(&sysctl__children);
+       lsp = &sysctl__children;
        indx = 0;
-       while (oid && indx < CTL_MAXNAME) {
-               if (oid->oid_number == name[indx]) {
-                       indx++;
-                       if (oid->oid_kind & CTLFLAG_NOLOCK)
-                               req->lock = REQ_UNLOCKED;
-                       if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
-                               if (oid->oid_handler != NULL ||
-                                   indx == namelen) {
-                                       *noid = oid;
-                                       if (nindx != NULL)
-                                               *nindx = indx;
-                                       return (0);
-                               }
-                               oid = SLIST_FIRST(SYSCTL_CHILDREN(oid));
-                       } else if (indx == namelen) {
+       while (indx < CTL_MAXNAME) {
+               SLIST_FOREACH(oid, lsp, oid_link) {
+                       if (oid->oid_number == name[indx])
+                               break;
+               }
+               if (oid == NULL)
+                       return (ENOENT);
+
+               indx++;
+               if (oid->oid_kind & CTLFLAG_NOLOCK)
+                       req->lock = REQ_UNLOCKED;
+               if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
+                       if (oid->oid_handler != NULL || indx == namelen) {
                                *noid = oid;
                                if (nindx != NULL)
                                        *nindx = indx;
                                return (0);
-                       } else {
-                               return (ENOTDIR);
                        }
+                       lsp = SYSCTL_CHILDREN(oid);
+               } else if (indx == namelen) {
+                       *noid = oid;
+                       if (nindx != NULL)
+                               *nindx = indx;
+                       return (0);
                } else {
-                       oid = SLIST_NEXT(oid, oid_link);
+                       return (ENOTDIR);
                }
        }
        return (ENOENT);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to