4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
34 * getpwnam - get entries from password database
37 dogetpw(const char **list
)
45 if (list
== NULL
|| *list
== NULL
) {
46 while ((pwp
= getpwent()) != NULL
)
47 (void) putpwent(pwp
, stdout
);
49 for (; *list
!= NULL
; list
++) {
53 * Here we assume that the argument passed is
54 * a uid, if it can be completely transformed
55 * to a long integer. So we check for uid in
56 * the database and if we fail then we check
58 * If the argument passed is not numeric, then
59 * we take it as the user name and proceed.
61 uid
= strtoul(*list
, &ptr
, 10);
62 if (!(*ptr
== '\0' && errno
== 0) ||
63 ((pwp
= getpwuid(uid
)) == NULL
)) {
64 pwp
= getpwnam(*list
);
68 rc
= EXC_NAME_NOT_FOUND
;
70 (void) putpwent(pwp
, stdout
);