get rid of getpwent? (Was: cygwin-1.7.28 getpwent header declaration changes ?)

Ken Brown kbrown@cornell.edu
Sun Feb 9 16:37:00 GMT 2014


On 2/9/2014 11:16 AM, Corinna Vinschen wrote:
> On Feb  9 17:10, Corinna Vinschen wrote:
>> On Feb  9 08:45, Warren Young wrote:
>>> On Feb 7, 2014, at 10:51 AM, Warren Young <warren@etr-usa.com> wrote:
>>>
>>>> Here's a better check that doesn't give false positives:
>>>>
>>>>     $ cat <<END > checkfile
>>>>     #!/bin/sh
>>>>     if egrep -q '_getgrent(32|64)' "$1" ; then echo $1 ; fi
>>>>     END
>>>>     $ find /bin -name \*.exe -exec ./checkfile {} \;
>>>
>>> The strings(1) call got left out of that test.  Here’s a working variant, which tests for getpwent() calls instead:
>>>
>>>      $ cat <<END > checkfile
>>>      if strings "$1" | egrep -q '^getpwent$' ; then echo $1 ; fi
>>>      END
>>>      $ find /bin -name \*.exe -exec sh checkfile {} \;
>>>
>>> Alas, Vim *does* call this API.  Results:
>>
>> It does so to evaluate a ~user in a path and I guess that's what other
>> apps do as well.  This is kind of weird since it would obviously not be
>> necessary to enumerate accounts for this functionality:
>>
>>    if (~ in path)
>>      if (~ is solo)
>>        getpwuid(getuid ())
>>      else
>>        getpwname (username after the ~);
>
> Huh, even though tcsh calls getpwent as well, this works fine:
>
>    $ cd ~foo
>
> with foo being some not yet cached user name.
>
> However, with my current code this:
>
>    $ cd ~<TAB>
>
> only returns the cached user entries.

emacs uses getpwent (on systems that provide it) for a similar reason: 
to provide tab completion on commands that expect a user name.

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list