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}" |