Project

General

Profile

Feature #3243 » getent-shadow.patch

Igor Pashev, 2012-09-30 12:00 PM

View differences:

libc/illumos-gate/usr/src/cmd/getent/getent.c 2012-09-30 19:55:56.232608141 +0400
42 42

  
43 43
static struct table t[] = {
44 44
	{ "passwd",	dogetpw },
45
	{ "shadow",	dogetsp },
45 46
	{ "group",	dogetgr },
46 47
	{ "hosts",	dogethost },
47 48
	{ "ipnodes",	dogetipnodes },
libc/illumos-gate/usr/src/cmd/getent/Makefile 2012-09-30 18:39:17.478720792 +0400
41 41
	dogetproject.o	\
42 42
	dogetproto.o	\
43 43
	dogetpw.o	\
44
	dogetsp.o	\
44 45
	dogetserv.o	\
45 46
	getent.o
46 47

  
libc/illumos-gate/usr/src/cmd/getent/dogetsp.c 2012-09-30 19:55:30.445717263 +0400
1
/*
2
 * CDDL HEADER START
3
 *
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.
7
 *
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.
12
 *
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]
18
 *
19
 * CDDL HEADER END
20
 */
21

  
22
/*
23
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24
 * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
25
 * Use is subject to license terms.
26
 */
27

  
28
#include <stdio.h>
29
#include <pwd.h>
30
#include <shadow.h>
31
#include <stdlib.h>
32
#include <errno.h>
33
#include "getent.h"
34

  
35
/*
36
 * getspnam - get entries from shadow database
37
 */
38
int
39
dogetsp(const char **list)
40
{
41
	struct spwd *sp;
42
	int rc = EXC_SUCCESS;
43
	char *ptr;
44
	uid_t uid;
45

  
46

  
47
	if (list == NULL || *list == NULL) {
48
        setspent();
49
		while ((sp = getspent()) != NULL)
50
			(void) putspent(sp, stdout);
51
        endspent();
52
	} else {
53
		for (; *list != NULL; list++) {
54
            sp = getspnam(*list);
55
			if (sp == NULL)
56
				rc = EXC_NAME_NOT_FOUND;
57
			else
58
				(void) putspent(sp, stdout);
59
		}
60
	}
61

  
62
	return (rc);
63
}
libc/illumos-gate/usr/src/cmd/getent/getent.h 2012-09-30 19:47:07.518352014 +0400
42 42
#define	EXC_ENUM_NOT_SUPPORTED	3
43 43

  
44 44
extern int dogetpw(const char **);
45
extern int dogetsp(const char **);
45 46
extern int dogetgr(const char **);
46 47
extern int dogethost(const char **);
47 48
extern int dogetipnodes(const char **);
(1-1/2)