couple of getpwnam() questions
vorlon at netexpress.net
Sat Nov 25 16:43:14 GMT 2000
On Sun, 26 Nov 2000 okuyamak at dd.iij4u.or.jp wrote:
> I don't really know what is the "right" cases about
> 'Administorator's. But if I were....
> >>>>> "GC" == Gerald Carter <gcarter at valinux.com> writes:
> GC> No one responded to this. Should I threaten making
> GC> the change to issue #1 unless I hear differently?
> GC> Does anyone depend on this behavior currently?
> I don't even see the reason why current code uses this way.
> Instead, I recommend using getpwent() function, take out each entry,
> and do case insensitive match, or what ever match required.
> # or, simply open the /etc/passwd file directly and look for
> # entry.
> At least, getpwnam() will open(), close() and scan entire
> /etc/passwd every time being called. This is large overhead, too
> large. With 'getpwent() + case insensitive match', we only need
> to scan once, though we might need more complex matching engine.
This is true when getpwnam() uses a flatfile (/etc/passwd) for its backend,
but this is not always the case, and therefore getpwent() is not always going
to be much more efficient. With some database backends (NIS+, LDAP, Berkeley
DB, for example), you may find that calling getpwnam("user") is a *LOT* more
efficient than iterating through getpwent().
I think Gerald's question is still relevant: even if there is a more efficient
way to do what the code currently does, *why* is it being done at all?
More information about the samba-technical