diff --git a/tools/ChangeLog b/tools/ChangeLog index 110a434d7..e764d7b6a 100644 --- a/tools/ChangeLog +++ b/tools/ChangeLog @@ -1,3 +1,8 @@ +2004-02-03 Werner Koch + + * addgnupghome: Try to use getent, so that it also works for NIS + setups. + 2004-01-31 Marcus Brinkmann * gpgconf-comp.c: Some bug fixes, parse only defaults from the diff --git a/tools/addgnupghome b/tools/addgnupghome index d237a0b42..37a427bf2 100755 --- a/tools/addgnupghome +++ b/tools/addgnupghome @@ -14,6 +14,7 @@ PGM=addgnupghome any_error=0 + error () { echo "$PGM: $*" >&2 any_error=1 @@ -26,9 +27,9 @@ info () { # Do it for one user one_user () { user="$1" - home=$(awk -F: -v n="$user" '$1 == n {print $6}' /etc/passwd ) + home=$(${cat_passwd} | awk -F: -v n="$user" '$1 == n {print $6}') if [ -z "$home" ]; then - if awk -F: -v n="$user" '$1 == n {exit 1}' /etc/passwd; then + if ${cat_passwd} | awk -F: -v n="$user" '$1 == n {exit 1}'; then error "no such user \`$user'" else error "no home directory for user \`$user'" @@ -93,6 +94,14 @@ if [ -z "$1" ]; then exit 1 fi +# Check whether we can use getent +if getent --help /dev/null 2>&1 ; then + cat_passwd='getent passwd' +else + cat_passwd='cat /etc/passwd' + info "please note that only users from /etc/passwd are checked" +fi + if [ ! -d /etc/skel/.gnupg ]; then error "skeleton directory \`/etc/skel/.gnupg' does not exist" exit 1 @@ -101,7 +110,6 @@ cd "/etc/skel/.gnupg" || (error "error cd-ing to \`/etc/skel/.gnupg'"; exit 1) filelist=$(find . \( -type f -or -type d \) -not -name '*~' -not -name . -print) - if ! umask 0077 ; then error "error setting umask" exit 1