Fix BSD portion of egetent() so that lookup by uid/gid works as expected.
authorAaron Walker <ka0ttic@gentoo.org>
Tue, 27 Sep 2005 12:38:56 +0000 (12:38 +0000)
committerAaron Walker <ka0ttic@gentoo.org>
Tue, 27 Sep 2005 12:38:56 +0000 (12:38 +0000)
eclass/eutils.eclass

index a272525d06560c3d8d3519dbafc1d562abd483e1..d9b8f93454a103f4ea233e1d7ef013ac1cac8545 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2005 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.202 2005/09/26 21:54:56 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.203 2005/09/27 12:38:56 ka0ttic Exp $
 #
 # Author: Martin Schlemmer <azarah@gentoo.org>
 #
@@ -420,14 +420,15 @@ egetent() {
                        ;;
                esac
        elif [[ "${USERLAND}" == "BSD" ]] ; then
-               local action
-               if [ "$1" == "passwd" ]
-               then
-                       action="user"
-               else
-                       action="group"
+               local opts action="user"
+               [[ $1 == "passwd" ]] || action="group"
+
+               # lookup by uid/gid
+               if [[ $2 == [[:digit:]]* ]] ; then
+                       [[ ${action} == "user" ]] && opts="-u" || opts="-g"
                fi
-               pw show "${action}" "$2" -q
+
+               pw show ${action} ${opts} "$2" -q
        else
                which nscd >& /dev/null && nscd -i "$1"
                getent "$1" "$2"