Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in eclass: user.eclass
Date: Tue, 29 Nov 2011 19:31:45
Message-Id: 20111129193120.E9FE62004B@flycatcher.gentoo.org
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*)