diff options
Diffstat (limited to 'src/netcfg-menu')
-rw-r--r-- | src/netcfg-menu | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/src/netcfg-menu b/src/netcfg-menu index 70acf5a..8c58edc 100644 --- a/src/netcfg-menu +++ b/src/netcfg-menu @@ -4,58 +4,57 @@ . /etc/rc.d/functions . /usr/lib/network/network -# JP: we'll use $STATE_DIR/menu to record what profile is being connected in this way -rm -f "$STATE_DIR/menu" # Scan all profiles i=0 -while read prof; do +for prof in `find -L $PROFILE_DIR -maxdepth 1 -type f -printf "%f\n"|sort`; do # if there is a profile called "main", Use as default - [[ "$prof" = main ]] && DEFAULT=main - unset DESCRIPTION # JP: we cant sandbox the sourced profiles, because we need to expose the profiles array - . "$PROFILE_DIR/$prof" - profiles[$i]="$prof" - let i++ - profiles[$i]="$DESCRIPTION" - let i++ -done < <(list_profiles | sort) # JP: re-use list_profiles instead of duplicating it; avoid subshell we'd get by piping it to the while read... - -if [[ ${#profiles} -eq 0 ]]; then - exit_err "No profiles were found in $PROFILE_DIR" + [ "$prof" = "main" ] && DEFAULT=$prof + unset DESCRIPTION + . $PROFILE_DIR/$prof + profiles[$i]=$prof + i=$((i+1)) + profiles[$i]=$DESCRIPTION + i=$((i+1)) +done + +if [ ${#profiles} -eq 0 ]; then + echo "No profiles were found in $PROFILE_DIR" + return 1 fi -[[ -n "$NETWORKS_MENU_DEFAULT" ]] && DEFAULT="$NETWORKS_MENU_DEFAULT" # if no default yet, use the first entry -[[ -z "$DEFAULT" ]] && DEFAULT="${profiles[0]}" -ANSWER=$(mktemp /tmp/menu.XXXXXXXX) || exit 1 +[ "$NETWORKS_MENU_DEFAULT" ] && DEFAULT="$NETWORKS_MENU_DEFAULT" + +[ "$DEFAULT" = "" ] && DEFAULT=${profiles[0]} +ANSWER=$(mktemp) || exit 1 # Set timeout -TIMEOUT="${1:-0}" # JP: equivalent to the block that was here before +if [ "$1" = "" ]; then + TIMEOUT="0" +else + TIMEOUT="$1" +fi # Display Dialog -dialog --timeout "$TIMEOUT" --default-item "$DEFAULT" \ +dialog --timeout $TIMEOUT --default-item $DEFAULT \ --menu "Select the network profile you wish to use" \ - 13 50 6 "${profiles[@]}" 2> $ANSWER + 13 50 6 "${profiles[@]}" 2>$ANSWER ret=$? case $ret in 1) ;; # Cancel - do nothing 255) # timeout - use default - profile_up "$DEFAULT" # JP: use profile_up and catch $? - ret=$? - if [[ $ret -eq 0 ]]; then echo "$DEFAULT" > "$STATE_DIR/menu"; fi + netcfg2 $DEFAULT ;; 0) # User selection - profile_up "$(cat $ANSWER)" - ret=$? - if [[ $ret -eq 0 ]]; then mv $ANSWER "$STATE_DIR/menu"; fi + netcfg2 $(cat $ANSWER) ;; - *) # Shouldn't happen - echo "Abnormal ret code from dialog: $ret" >&2 + *) # Shouldnt happen + echo "Abnormal ret code from dialog: $ret" ;; esac -rm -f $ANSWER # JP: add -f -exit $ret # JP: exit with caught $? +rm $ANSWER # vim: set ts=4 et sw=4: |