+++ /dev/null
-/* SPDX-License-Identifier: LGPL-2.1+ */
-
-#include "format-util.h"
-#include "group-record-show.h"
-#include "strv.h"
-#include "user-util.h"
-#include "userdb.h"
-
-void group_record_show(GroupRecord *gr, bool show_full_user_info) {
- int r;
-
- printf(" Group name: %s\n",
- group_record_group_name_and_realm(gr));
-
- printf(" Disposition: %s\n", user_disposition_to_string(group_record_disposition(gr)));
-
- if (gr->last_change_usec != USEC_INFINITY) {
- char buf[FORMAT_TIMESTAMP_MAX];
- printf(" Last Change: %s\n", format_timestamp(buf, sizeof(buf), gr->last_change_usec));
- }
-
- if (gid_is_valid(gr->gid))
- printf(" GID: " GID_FMT "\n", gr->gid);
-
- if (show_full_user_info) {
- _cleanup_(userdb_iterator_freep) UserDBIterator *iterator = NULL;
-
- r = membershipdb_by_group(gr->group_name, 0, &iterator);
- if (r < 0) {
- errno = -r;
- printf(" Members: (can't acquire: %m)");
- } else {
- const char *prefix = " Members:";
-
- for (;;) {
- _cleanup_free_ char *user = NULL;
-
- r = membershipdb_iterator_get(iterator, &user, NULL);
- if (r == -ESRCH)
- break;
- if (r < 0) {
- errno = -r;
- printf("%s (can't iterate: %m\n", prefix);
- break;
- }
-
- printf("%s %s\n", prefix, user);
- prefix = " ";
- }
- }
- } else {
- const char *prefix = " Members:";
- char **i;
-
- STRV_FOREACH(i, gr->members) {
- printf("%s %s\n", prefix, *i);
- prefix = " ";
- }
- }
-
- if (!strv_isempty(gr->administrators)) {
- const char *prefix = " Admins:";
- char **i;
-
- STRV_FOREACH(i, gr->administrators) {
- printf("%s %s\n", prefix, *i);
- prefix = " ";
- }
- }
-
- if (gr->description && !streq(gr->description, gr->group_name))
- printf(" Description: %s\n", gr->description);
-
- if (!strv_isempty(gr->hashed_password))
- printf(" Passwords: %zu\n", strv_length(gr->hashed_password));
-
- if (gr->service)
- printf(" Service: %s\n", gr->service);
-}
+++ /dev/null
-/* SPDX-License-Identifier: LGPL-2.1+ */
-#pragma once
-
-#include "group-record.h"
-
-void group_record_show(GroupRecord *gr, bool show_full_user_info);
gpt.h
group-record-nss.c
group-record-nss.h
- group-record-show.c
- group-record-show.h
group-record.c
group-record.h
id128-print.c
#include "format-util.h"
#include "fs-util.h"
-#include "group-record.h"
#include "process-util.h"
#include "rlimit-util.h"
#include "strv.h"
if (hr->service)
printf(" Service: %s\n", hr->service);
}
+
+void group_record_show(GroupRecord *gr, bool show_full_user_info) {
+ int r;
+
+ printf(" Group name: %s\n",
+ group_record_group_name_and_realm(gr));
+
+ printf(" Disposition: %s\n", user_disposition_to_string(group_record_disposition(gr)));
+
+ if (gr->last_change_usec != USEC_INFINITY) {
+ char buf[FORMAT_TIMESTAMP_MAX];
+ printf(" Last Change: %s\n", format_timestamp(buf, sizeof(buf), gr->last_change_usec));
+ }
+
+ if (gid_is_valid(gr->gid))
+ printf(" GID: " GID_FMT "\n", gr->gid);
+
+ if (show_full_user_info) {
+ _cleanup_(userdb_iterator_freep) UserDBIterator *iterator = NULL;
+
+ r = membershipdb_by_group(gr->group_name, 0, &iterator);
+ if (r < 0) {
+ errno = -r;
+ printf(" Members: (can't acquire: %m)");
+ } else {
+ const char *prefix = " Members:";
+
+ for (;;) {
+ _cleanup_free_ char *user = NULL;
+
+ r = membershipdb_iterator_get(iterator, &user, NULL);
+ if (r == -ESRCH)
+ break;
+ if (r < 0) {
+ errno = -r;
+ printf("%s (can't iterate: %m\n", prefix);
+ break;
+ }
+
+ printf("%s %s\n", prefix, user);
+ prefix = " ";
+ }
+ }
+ } else {
+ const char *prefix = " Members:";
+ char **i;
+
+ STRV_FOREACH(i, gr->members) {
+ printf("%s %s\n", prefix, *i);
+ prefix = " ";
+ }
+ }
+
+ if (!strv_isempty(gr->administrators)) {
+ const char *prefix = " Admins:";
+ char **i;
+
+ STRV_FOREACH(i, gr->administrators) {
+ printf("%s %s\n", prefix, *i);
+ prefix = " ";
+ }
+ }
+
+ if (gr->description && !streq(gr->description, gr->group_name))
+ printf(" Description: %s\n", gr->description);
+
+ if (!strv_isempty(gr->hashed_password))
+ printf(" Passwords: %zu\n", strv_length(gr->hashed_password));
+
+ if (gr->service)
+ printf(" Service: %s\n", gr->service);
+}
#pragma once
#include "user-record.h"
+#include "group-record.h"
const char *user_record_state_color(const char *state);
void user_record_show(UserRecord *hr, bool show_full_group_info);
+void group_record_show(GroupRecord *gr, bool show_full_user_info);
#include "fd-util.h"
#include "format-table.h"
#include "format-util.h"
-#include "group-record-show.h"
#include "main-func.h"
#include "pager.h"
#include "parse-util.h"