Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 107514
Collapse All | Expand All

(-)/usr/portage/eclass/eutils.eclass (-15 / +24 lines)
Lines 465-487 Link Here
465
	local opts=
465
	local opts=
466
466
467
	# handle uid
467
	# handle uid
468
	local euid=$1; shift
468
	local emin_uid=
469
	if [[ ! -z ${euid} ]] && [[ ${euid} != "-1" ]] ; then
469
	local emax_uid=
470
		if [[ ${euid} -gt 0 ]] ; then
470
	if [[ $1 = -1 ]] || [[ -z $1 ]] ; then
471
			if [[ ! -z $(egetent passwd ${euid}) ]] ; then
471
		emin_uid=100
472
				euid="next"
472
		emax_uid=999
473
			fi
473
	elif [[ $1 -gt 19999 ]] ; then # Arbitrary upper limit. Could be raised
474
		else
474
		emin_uid=$1                # within constraints of portability
475
			eerror "Userid given but is not greater than 0 !"
475
		emax_uid=${emin_uid}       # and search time (NIS, LDAP, NetInfo etc).
476
			die "${euid} is not a valid UID"
476
	elif [[ $1 -gt 999 ]] ; then
477
		fi
477
		emin_uid=$1
478
		emax_uid=19999
479
	elif [[ $1 -gt 0 ]] ; then
480
		emin_uid=$1
481
		emax_uid=999
478
	else
482
	else
479
		euid="next"
483
		eerror "Userid given but is not greater than 0 !"
484
		die "$1 is not a valid UID"
480
	fi
485
	fi
481
	if [[ ${euid} == "next" ]] ; then
486
	shift
482
		for euid in $(seq 101 999) ; do
487
	local euid=
483
			[[ -z $(egetent passwd ${euid}) ]] && break
488
	for euid in $(seq ${emin_uid} ${emax_uid}) "x" ; do
484
		done
489
		[[ ${euid} = "x" ]] || [[ -z $(egetent passwd ${euid}) ]] && break
490
	done
491
	if [[ ${euid} = "x" ]] ; then
492
		eerror "A search failed to find a free UID !"
493
		die "No free UID between ${emin_uid} and ${emax_uid}"
485
	fi
494
	fi
486
	opts="${opts} -u ${euid}"
495
	opts="${opts} -u ${euid}"
487
	einfo " - Userid: ${euid}"
496
	einfo " - Userid: ${euid}"

Return to bug 107514