Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 654876 | Differences between
and this patch

Collapse All | Expand All

(-)a/user.eclass (-8 / +19 lines)
Lines 130-150 Link Here
130
	if [[ -n ${euid} && ${euid} != -1 ]] ; then
130
	if [[ -n ${euid} && ${euid} != -1 ]] ; then
131
		if [[ ${euid} -gt 0 ]] ; then
131
		if [[ ${euid} -gt 0 ]] ; then
132
			if [[ -n $(egetent passwd ${euid}) ]] ; then
132
			if [[ -n $(egetent passwd ${euid}) ]] ; then
133
				euid="next"
133
				euid="next available; requested uid taken"
134
			fi
134
			fi
135
		else
135
		else
136
			eerror "Userid given but is not greater than 0 !"
136
			eerror "Userid given but is not greater than 0 !"
137
			die "${euid} is not a valid UID"
137
			die "${euid} is not a valid UID"
138
		fi
138
		fi
139
	else
139
	else
140
		euid="next"
140
		euid="next available"
141
	fi
141
	fi
142
	if [[ ${euid} == "next" ]] ; then
143
		for ((euid = 101; euid <= 999; euid++)); do
144
			[[ -z $(egetent passwd ${euid}) ]] && break
145
		done
146
	fi
147
	opts+=( -u ${euid} )
148
	einfo " - Userid: ${euid}"
142
	einfo " - Userid: ${euid}"
149
143
150
	# handle shell
144
	# handle shell
Lines 217-225 Link Here
217
		einfo " - GECOS: ${comment}"
211
		einfo " - GECOS: ${comment}"
218
	fi
212
	fi
219
213
214
	# Some targets need to find the next available UID manually
215
	_enewuser_next_uid() {
216
		if [[ ${euid} == *[!0-9]* ]] ; then
217
			# Non numeric
218
			for ((euid = 101; euid <= 999; euid++)) ; do
219
				[[ -z $(egetent passwd ${euid}) ]] && break
220
			done
221
		fi
222
	}
223
220
	# add the user
224
	# add the user
221
	case ${CHOST} in
225
	case ${CHOST} in
222
	*-darwin*)
226
	*-darwin*)
227
		_enewuser_next_uid
223
		### Make the user
228
		### Make the user
224
		dscl . create "/users/${euser}" uid ${euid}
229
		dscl . create "/users/${euser}" uid ${euid}
225
		dscl . create "/users/${euser}" shell "${eshell}"
230
		dscl . create "/users/${euser}" shell "${eshell}"
Lines 240-251 Link Here
240
		;;
245
		;;
241
246
242
	*-openbsd*)
247
	*-openbsd*)
248
		_enewuser_next_uid
243
		# all ops the same, except the -g vs -g/-G ...
249
		# all ops the same, except the -g vs -g/-G ...
244
		useradd -u ${euid} -s "${eshell}" \
250
		useradd -u ${euid} -s "${eshell}" \
245
			-d "${ehome}" -g "${egroups}" "${euser}" || die
251
			-d "${ehome}" -g "${egroups}" "${euser}" || die
246
		;;
252
		;;
247
253
248
	*)
254
	*)
255
		if [[ ${euid} == *[!0-9]* ]] ; then
256
			: # Non numeric; let useradd figure out a UID for us
257
		else
258
			opts+=( -u "${euid}" )
259
		fi
249
		useradd -r "${opts[@]}" "${euser}" || die
260
		useradd -r "${opts[@]}" "${euser}" || die
250
		;;
261
		;;
251
	esac
262
	esac

Return to bug 654876