summaryrefslogtreecommitdiff
path: root/usr/src/cmd/getent
diff options
context:
space:
mode:
authorGary Mills <gary_mills@fastmail.fm>2014-03-17 19:49:14 -0500
committerDan McDonald <danmcd@omniti.com>2014-03-18 22:41:43 -0400
commit00277c9e43668ff248a12ee635ce125957750373 (patch)
tree2c2c83aacde83199f6b9ade0abb9aa389d9c155c /usr/src/cmd/getent
parent04dfc08aa8f2f35510c97c3e9e543a45d0c5b7af (diff)
downloadillumos-joyent-00277c9e43668ff248a12ee635ce125957750373.tar.gz
3243 Add shadow support to getent(1)
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com> Reviewed by: Albert Lee <trisk@nexenta.com> Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/cmd/getent')
-rw-r--r--usr/src/cmd/getent/Makefile2
-rw-r--r--usr/src/cmd/getent/dogetsp.c63
-rw-r--r--usr/src/cmd/getent/getent.c6
-rw-r--r--usr/src/cmd/getent/getent.h4
4 files changed, 70 insertions, 5 deletions
diff --git a/usr/src/cmd/getent/Makefile b/usr/src/cmd/getent/Makefile
index 4b6e79c992..b11e0a6e2c 100644
--- a/usr/src/cmd/getent/Makefile
+++ b/usr/src/cmd/getent/Makefile
@@ -20,6 +20,7 @@
#
#
+# Copyright (c) 2014 Gary Mills
# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
@@ -41,6 +42,7 @@ OBJECTS= \
dogetproject.o \
dogetproto.o \
dogetpw.o \
+ dogetsp.o \
dogetserv.o \
getent.o
diff --git a/usr/src/cmd/getent/dogetsp.c b/usr/src/cmd/getent/dogetsp.c
new file mode 100644
index 0000000000..11c09e2419
--- /dev/null
+++ b/usr/src/cmd/getent/dogetsp.c
@@ -0,0 +1,63 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2014 Gary Mills
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include <stdio.h>
+#include <shadow.h>
+#include <stdlib.h>
+#include <errno.h>
+#include "getent.h"
+
+/*
+ * getspnam - get entries from shadow database
+ */
+int
+dogetsp(const char **list)
+{
+ struct spwd *sp;
+ int rc = EXC_SUCCESS;
+ char *ptr;
+ uid_t uid;
+
+
+ if (list == NULL || *list == NULL) {
+ setspent();
+ while ((sp = getspent()) != NULL)
+ (void) putspent(sp, stdout);
+ endspent();
+ } else {
+ for (; *list != NULL; list++) {
+ sp = getspnam(*list);
+ if (sp == NULL)
+ rc = EXC_NAME_NOT_FOUND;
+ else
+ (void) putspent(sp, stdout);
+ }
+ }
+
+ return (rc);
+}
diff --git a/usr/src/cmd/getent/getent.c b/usr/src/cmd/getent/getent.c
index 394afd80a1..799568764e 100644
--- a/usr/src/cmd/getent/getent.c
+++ b/usr/src/cmd/getent/getent.c
@@ -20,12 +20,11 @@
* CDDL HEADER END
*/
/*
+ * Copyright (c) 2014 Gary Mills
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -42,6 +41,7 @@ struct table {
static struct table t[] = {
{ "passwd", dogetpw },
+ { "shadow", dogetsp },
{ "group", dogetgr },
{ "hosts", dogethost },
{ "ipnodes", dogetipnodes },
@@ -82,7 +82,7 @@ main(int argc, const char **argv)
switch (rc) {
case EXC_SYNTAX:
(void) fprintf(stderr,
- gettext("Syntax error\n"));
+ gettext("Syntax error\n"));
break;
case EXC_ENUM_NOT_SUPPORTED:
(void) fprintf(stderr,
diff --git a/usr/src/cmd/getent/getent.h b/usr/src/cmd/getent/getent.h
index d76aceced4..049a2536c3 100644
--- a/usr/src/cmd/getent/getent.h
+++ b/usr/src/cmd/getent/getent.h
@@ -20,6 +20,7 @@
* CDDL HEADER END
*/
/*
+ * Copyright (c) 2014 Gary Mills
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -27,8 +28,6 @@
#ifndef _GETENT_H
#define _GETENT_H
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -42,6 +41,7 @@ extern "C" {
#define EXC_ENUM_NOT_SUPPORTED 3
extern int dogetpw(const char **);
+extern int dogetsp(const char **);
extern int dogetgr(const char **);
extern int dogethost(const char **);
extern int dogetipnodes(const char **);