]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
NIS cleanups and fixes, the next generation.
authorBill Paul <wpaul@FreeBSD.org>
Tue, 16 Apr 1996 00:22:41 +0000 (00:22 +0000)
committerBill Paul <wpaul@FreeBSD.org>
Tue, 16 Apr 1996 00:22:41 +0000 (00:22 +0000)
commit94c53e1fb53d8ba82d26729420a318fa7e6304aa
tree0c2267e23f54e2b60fd4f9cd265010794017f7cb
parent5406291a1d340b0e66fa52dda3230c0b65f47e63
NIS cleanups and fixes, the next generation.

getnetgrent.c:

- Catch one bogon that snuck by: in _listmatch(), check for '\0'
  rather than '\n'; strings returned from yp_match() are terminated
  with a nul, not a newline.

getpwent.c:

- Rip out all of the +inclusion/-exclusion stuff from before and
  replace it with something a little less grotty. The main problem
  with the old mechanism was that it wasted many cycles processing
  NIS entries even after it already knew they were to be exlcuded
  (or not included, depending on your pointof view). The highlights
  of these changes include:

  o Uses an in-memory hash database table to keep track of all the
    -@netgroup, -user, and -@group exclusions.

  o Tries harder to duplicate the behavior normally obtained when using
    NIS inclusions/exclusions on a flat /etc/passwd file (meaning things
    come out in much the same order).

  o Uses seperate methods for handling getpwent() and getpwnam()/getpwuid()
    operations instead of trying to do everything with one general
    function, which didn't work as well as I thought it would.

  o Uses both getnetgrent() and innetgr() to try to save time where
    possible.

  o Use only one special token in the local password database
    (_PW_KEYYPBYNUM) instead of seperate tokens to mark + and -
    entries (and stop using the counter tokens too). If this new
    token doesn't exist, the code will make due with the standard
    _PW_KEYBYNUM token in order to support older databases that
    won't have the new token in them.

  All this is an attempt to make this stuff work better in environments
  with large NIS passwd databases.
include/pwd.h
lib/libc/gen/getnetgrent.c
lib/libc/gen/getpwent.c