Author: gordon
Date: Wed Jul  6 06:34:08 2011
New Revision: 223818
URL: http://svn.freebsd.org/changeset/base/223818

Log:
  Only increment the ypcnt once per data record. The old implementation
  was incrementing it twice making it impossible to iterate the table
  since the records were 1, 3, 5, 7 (or 2, 4, 6, 8 for the v3 records).
  
  MFC after:    10 days

Modified:
  head/usr.sbin/pwd_mkdb/pwd_mkdb.c

Modified: head/usr.sbin/pwd_mkdb/pwd_mkdb.c
==============================================================================
--- head/usr.sbin/pwd_mkdb/pwd_mkdb.c   Wed Jul  6 05:42:52 2011        
(r223817)
+++ head/usr.sbin/pwd_mkdb/pwd_mkdb.c   Wed Jul  6 06:34:08 2011        
(r223818)
@@ -351,14 +351,16 @@ main(int argc, char *argv[])
                if ((dp->put)(sdp, &key, &data, 0) == -1)
                        error("put");
        }
-       ypcnt = 1;
+       ypcnt = 0;
        data.data = (u_char *)buf;
        sdata.data = (u_char *)sbuf;
        key.data = (u_char *)tbuf;
        for (cnt = 1; scan(fp, &pwd); ++cnt) {
                if (!is_comment && 
-                   (pwd.pw_name[0] == '+' || pwd.pw_name[0] == '-'))
+                   (pwd.pw_name[0] == '+' || pwd.pw_name[0] == '-')) {
                        yp_enabled = 1;
+                       ypcnt++;
+               }
                if (is_comment)
                        --cnt;
 #define        COMPACT(e)      t = e; while ((*p++ = *t++));
@@ -456,7 +458,6 @@ main(int argc, char *argv[])
                                tbuf[0] = CURRENT_VERSION(_PW_KEYYPBYNUM);
                                store = htonl(ypcnt);
                                memmove(tbuf + 1, &store, sizeof(store));
-                               ypcnt++;
                                key.size = sizeof(store) + 1;
                                if ((dp->put)(dp, &key, &data, method) == -1)
                                        error("put");
@@ -547,7 +548,6 @@ main(int argc, char *argv[])
                                tbuf[0] = LEGACY_VERSION(_PW_KEYYPBYNUM);
                                store = HTOL(ypcnt);
                                memmove(tbuf + 1, &store, sizeof(store));
-                               ypcnt++;
                                key.size = sizeof(store) + 1;
                                if ((dp->put)(dp, &key, &data, method) == -1)
                                        error("put");
_______________________________________________
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