Rewrite to avoid using temporary, $status.
2006-09-26 Jim Meyering <jim@meyering.net>
+ * src/groups.sh: When invoked with 0 or 1 argument, just exec "id".
+ Rewrite to avoid using temporary, $status.
+
* NEWS: Mention the bug fix.
* src/groups.sh: Don't hide a write failure.
Reported by Iain Calder <ic56@rogers.com>.
* ) ;;
esac
-if [ $# -eq 0 ]; then
- id -Gn
- fail=$?
-else
- for name in "$@"; do
- groups=`id -Gn -- $name`
- status=$?
- if test $status = 0; then
- echo $name : $groups || fail=1
- else
- fail=$status
- fi
- done
-fi
+# With fewer than two arguments, simply exec "id".
+case $# in
+ 0|1) exec id -Gn "$@" ;;
+esac
+
+# With more, we need a loop, and be sure to exit nonzero upon failure.
+for name in "$@"; do
+ if groups=`id -Gn -- $name`; then
+ echo $name : $groups || fail=1
+ else
+ fail=1
+ fi
+done
exit $fail