]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - adduser/adduser.sh
Flush my typo fix queue for this directory.
[pw-darwin.git] / adduser / adduser.sh
index 050f2b1331fabf8158888b2eaa4c9c039c1c9b84..735d178c1aefbd8ee78a895ccf369f3d5ec46fb0 100644 (file)
@@ -126,6 +126,17 @@ fullpath_from_shell() {
        _shell=$1
        [ -z "$_shell" ] && return 1
 
+       # /usr/sbin/nologin is a special case; it needs to be handled
+       # before the cat | while loop, since a 'return' from within
+       # a subshell will not terminate the function's execution, and
+       # the path to the nologin shell might be printed out twice.
+       #
+       if [ "$_shell" = "${NOLOGIN}" -o \
+           "$_shell" = "${NOLOGIN_PATH}" ]; then
+               echo ${NOLOGIN_PATH}
+               return 0;
+       fi
+
        cat ${ETCSHELLS} |
        while read _path _junk ; do
                case "$_path" in
@@ -141,13 +152,6 @@ fullpath_from_shell() {
                esac
        done
 
-       # /usr/sbin/nologin is a special case
-       if [ "$_shell" = "${NOLOGIN}" -o \
-           "$_shell" = "${NOLOGIN_PATH}" ]; then
-               echo ${NOLOGIN_PATH}
-               return 0;
-       fi
-
        return 1
 }
 
@@ -443,7 +447,10 @@ get_homedir() {
 #      allocates one if it is not specified.
 #
 get_uid() {
-       uuid=${uidstart}
+       if [ -z "$uuid" ]; then
+               uuid=${uidstart}
+       fi
+
        _input=
        _prompt=
 
@@ -584,7 +591,6 @@ input_from_file() {
        while read -r fileline ; do
                case "$fileline" in
                \#*|'')
-                       return 0
                        ;;
                esac
 
@@ -792,7 +798,7 @@ input_interactive() {
        return 0
 }
 
-#### END SUBROUTINE DEFENITION ####
+#### END SUBROUTINE DEFINITION ####
 
 THISCMD=`/usr/bin/basename $0`
 DEFAULTSHELL=/bin/sh