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 <war...@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