1 |
vapier 11/11/29 19:31:20 |
2 |
|
3 |
Modified: user.eclass |
4 |
Log: |
5 |
avoid IFS abuse by using `IFS=, read -a` to have bash create an array for us as pointed out by David James |
6 |
|
7 |
Revision Changes Path |
8 |
1.16 eclass/user.eclass |
9 |
|
10 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/user.eclass?rev=1.16&view=markup |
11 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/user.eclass?rev=1.16&content-type=text/plain |
12 |
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/user.eclass?r1=1.15&r2=1.16 |
13 |
|
14 |
Index: user.eclass |
15 |
=================================================================== |
16 |
RCS file: /var/cvsroot/gentoo-x86/eclass/user.eclass,v |
17 |
retrieving revision 1.15 |
18 |
retrieving revision 1.16 |
19 |
diff -u -r1.15 -r1.16 |
20 |
--- user.eclass 29 Nov 2011 19:01:28 -0000 1.15 |
21 |
+++ user.eclass 29 Nov 2011 19:31:20 -0000 1.16 |
22 |
@@ -1,6 +1,6 @@ |
23 |
# Copyright 1999-2011 Gentoo Foundation |
24 |
# Distributed under the terms of the GNU General Public License v2 |
25 |
-# $Header: /var/cvsroot/gentoo-x86/eclass/user.eclass,v 1.15 2011/11/29 19:01:28 vapier Exp $ |
26 |
+# $Header: /var/cvsroot/gentoo-x86/eclass/user.eclass,v 1.16 2011/11/29 19:31:20 vapier Exp $ |
27 |
|
28 |
# @ECLASS: user.eclass |
29 |
# @MAINTAINER: |
30 |
@@ -183,13 +183,12 @@ |
31 |
|
32 |
# handle groups |
33 |
local egroups=$1; shift |
34 |
- if [[ ! -z ${egroups} ]] ; then |
35 |
- local oldifs=${IFS} |
36 |
- local defgroup="" exgroups="" |
37 |
- |
38 |
- export IFS="," |
39 |
- for g in ${egroups} ; do |
40 |
- export IFS=${oldifs} |
41 |
+ local g egroups_arr |
42 |
+ IFS="," read -r -a egroups_arr <<<"${egroups}" |
43 |
+ shift |
44 |
+ if [[ ${#egroups_arr[@]} -gt 0 ]] ; then |
45 |
+ local defgroup exgroups |
46 |
+ for g in "${egroups_arr[@]}" ; do |
47 |
if [[ -z $(egetent group "${g}") ]] ; then |
48 |
eerror "You must add group ${g} to the system first" |
49 |
die "${g} is not a valid GID" |
50 |
@@ -197,20 +196,15 @@ |
51 |
if [[ -z ${defgroup} ]] ; then |
52 |
defgroup=${g} |
53 |
else |
54 |
- exgroups="${exgroups},${g}" |
55 |
+ exgroups+=",${g}" |
56 |
fi |
57 |
- export IFS="," |
58 |
done |
59 |
- export IFS=${oldifs} |
60 |
- |
61 |
opts+=( -g "${defgroup}" ) |
62 |
if [[ ! -z ${exgroups} ]] ; then |
63 |
opts+=( -G "${exgroups:1}" ) |
64 |
fi |
65 |
- else |
66 |
- egroups="(none)" |
67 |
fi |
68 |
- einfo " - Groups: ${egroups}" |
69 |
+ einfo " - Groups: ${egroups:-(none)}" |
70 |
|
71 |
# handle extra args |
72 |
if [[ $# -gt 0 ]] ; then |
73 |
@@ -230,12 +224,9 @@ |
74 |
dscl . create "/users/${euser}" home "${ehome}" |
75 |
dscl . create "/users/${euser}" realname "added by portage for ${PN}" |
76 |
### Add the user to the groups specified |
77 |
- local g oldifs=${IFS} |
78 |
- export IFS="," |
79 |
- for g in ${egroups} ; do |
80 |
+ for g in "${egroups_arr[@]}" ; do |
81 |
dscl . merge "/groups/${g}" users "${euser}" |
82 |
done |
83 |
- export IFS=${oldifs} |
84 |
;; |
85 |
|
86 |
*-freebsd*|*-dragonfly*) |