]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/shadow/passwd/: getpw_uid_or_nam(): Add function
authorAlejandro Colomar <alx@kernel.org>
Wed, 11 Mar 2026 19:29:22 +0000 (20:29 +0100)
committerSerge Hallyn <serge@hallyn.com>
Mon, 30 Mar 2026 02:49:28 +0000 (21:49 -0500)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/Makefile.am
lib/shadow/passwd/getpw.c [new file with mode: 0644]
lib/shadow/passwd/getpw.h [new file with mode: 0644]

index 0257c76055850ad1cf1fc2af91789cf6c5a6415a..7c488f8266bf612acda4db26abe43ccc4b1c7136 100644 (file)
@@ -175,6 +175,8 @@ libshadow_la_SOURCES = \
        shadow/gshadow/sgetsgent.h \
        shadow/gshadow/sgrp.c \
        shadow/gshadow/sgrp.h \
+       shadow/passwd/getpw.c \
+       shadow/passwd/getpw.h \
        shadow/passwd/sgetpwent.c \
        shadow/passwd/sgetpwent.h \
        shadow/shadow/sgetspent.c \
diff --git a/lib/shadow/passwd/getpw.c b/lib/shadow/passwd/getpw.c
new file mode 100644 (file)
index 0000000..31f6627
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-FileCopyrightText: 2026, Alejandro Colomar <alx@kernel.org>
+// SPDX-License-Identifier: BSD-3-Clause
+
+
+#include "config.h"
+
+#include "shadow/passwd/getpw.h"
+
+#include <pwd.h>
+
+
+extern inline const struct passwd *getpw_uid_or_nam(const char *u);
diff --git a/lib/shadow/passwd/getpw.h b/lib/shadow/passwd/getpw.h
new file mode 100644 (file)
index 0000000..a2d855b
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-FileCopyrightText: 2026, Alejandro Colomar <alx@kernel.org>
+// SPDX-License-Identifier: BSD-3-Clause
+
+
+#ifndef SHADOW_INCLUDE_LIB_SHADOW_PASSWD_GETPW_H_
+#define SHADOW_INCLUDE_LIB_SHADOW_PASSWD_GETPW_H_
+
+
+#include "config.h"
+
+#include <pwd.h>
+#include <sys/types.h>
+
+#include "atoi/getnum.h"
+
+
+inline const struct passwd *getpw_uid_or_nam(const char *u);
+
+
+// getpw_uid_or_nam - getpwuid(3) or getpwnam(3)
+inline const struct passwd *
+getpw_uid_or_nam(const char *u)
+{
+       uid_t  uid;
+
+       return get_uid(u, &uid) == 0 ? getpwuid(uid) : getpwnam(u);
+}
+
+
+#endif  // include guard