From fed7216436dde22c0df7d03c2e0dec5f3aeb4e3d Mon Sep 17 00:00:00 2001 From: MacRimi Date: Wed, 27 Aug 2025 18:15:26 +0200 Subject: [PATCH] Update share-common.func --- scripts/global/share-common.func | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/scripts/global/share-common.func b/scripts/global/share-common.func index 7170ef1..55e6309 100644 --- a/scripts/global/share-common.func +++ b/scripts/global/share-common.func @@ -77,24 +77,37 @@ pmx_choose_or_create_group() { # Ensure group exists on host and return its GID pmx_ensure_host_group() { - # comments in English - # IN: group name - # OUT: echoes GID to stdout, return 0 on success + local group_name="$1" + local suggested_gid="$2" + if ! getent group "$group_name" >/dev/null 2>&1; then - if groupadd "$group_name" >/dev/null 2>&1; then + if [[ -n "$suggested_gid" ]]; then + + if getent group "$suggested_gid" >/dev/null 2>&1; then + msg_error "$(translate "GID already in use:") $suggested_gid" + return 1 + fi + groupadd -g "$suggested_gid" "$group_name" >/dev/null 2>&1 + else + groupadd "$group_name" >/dev/null 2>&1 + fi + + if [[ $? -eq 0 ]]; then msg_ok "$(translate "Group created:") $group_name" else msg_error "$(translate "Failed to create group:") $group_name" return 1 fi fi + local gid gid="$(getent group "$group_name" | cut -d: -f3)" if [[ -z "$gid" ]]; then msg_error "$(translate "Failed to resolve group GID for") $group_name" return 1 fi + echo "$gid" return 0 }