summaryrefslogtreecommitdiffstats
path: root/src/netcfg-menu
blob: 0970a01ba90b82ccaebf725851d7d468ab3ef64d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#! /bin/bash

. /etc/rc.conf
. /etc/rc.d/functions
. /usr/lib/network/network.subr

# Scan all profiles
i=0
for prof in `find -L $PROFILE_DIR -maxdepth 1 -type f -printf "%f\n"`; do    
    # if there is a profile called "main", Use as default
    [ "$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

# if no default yet, use the first entry
[ "$DEFAULT" = "" ] && DEFAULT=${profiles[0]}
ANSWER=$(mktemp) || exit 1

# Set timeout
if [ "$1" = "" ]; then
    TIMEOUT="0"
else
    TIMEOUT="$1"
fi

# Display Dialog
dialog --timeout $TIMEOUT --default-item $DEFAULT \
    --menu "Select the network profile you wish to use" \
    13 50 6 "${profiles[@]}" 2>$ANSWER

ret=$?
        
case $ret in
    1) ;; # Cancel - do nothing
    255) # timeout - use default 
        netcfg2 $DEFAULT
        ;; 
    0)  # User selection
        netcfg2 $(cat $ANSWER)
        ;; 
    *)  # Shouldnt happen
        echo "Abnormal ret code from dialog: $ret" 
        ;; 
esac
rm $ANSWER

# vim: set ts=4 et sw=4: