summaryrefslogtreecommitdiffstats
path: root/rescue/Flash/scripts/rescue_common
blob: d09a3de1c03d544de8ef2a924f6ed38fd4b1601f (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/bin/bash

function detect_version() {

    _tmpdir="/tmp/$$"

    mkdir -p $_tmpdir

    nash --force > /dev/null 2>&1 <<EOF
mount -t vfat LABEL=Share $_tmpdir
EOF
    if [ $? -eq 0 ]; then
        version="1.0"
    else
        version="1.05"
    fi
 
    umount $_tmpdir 2> /dev/null
    rmdir $_tmpdir 2> /dev/null
}

function check_vendor() {

    # list of supported vendors/models

    # mandriva flash 1.0 (france)
    vendors[0]="13fe"
    models[0]="1a00"
    # mandriva flash 1.0 (brazil)
    vendors[1]="0930"
    models[1]="653e"
    # mandriva flash 4GB (france)
    vendors[2]="13fe"
    models[2]="1d00"

    rc=1

    mount -t usbfs none /proc/bus/usb

    i=0
    while [ ! -z "${vendors[$i]}" ]; do

        grep "P:" /proc/bus/usb/devices | grep -q \
                "Vendor=${vendors[$i]} ProdID=${models[$i]}"
        if [ $? -eq 0 ]; then
            rc=0
            break
        fi

        let i++
    done

    umount /proc/bus/usb

    return $rc
}

function insert_pendrive() {

    _tmpdir="/tmp/rescue-temp"
    mkdir -p $_tmpdir

    modprobe usb-storage > /dev/null 2>&1
    modprobe vfat > /dev/null 2>&1

    echo
    echo -n 'Please insert your Mandriva Flash pen drive and press ENTER when ready: '
    read READY
    echo
    echo -n 'Detecting pen drive: '

    for ((i=0; $i <= 15 ; i++)); do
        nash --force > /dev/null 2>&1 <<EOF
mount -t vfat LABEL=MDVUSBROOT $_tmpdir
EOF
        if [ $? -ne 0 ]; then
            echo -n '.'
            sleep 1
        else
            echo -n ' found!'

            if ! check_vendor; then
                echo
                echo "This is not an official Mandriva Flash key!"
                echo
            fi

            cat /proc/mounts | grep $_tmpdir | cut -d' ' -f1 | \
                sed 's/[0-9]*$//g' > /tmp/rescue-device
            umount $_tmpdir
            rmdir $_tmpdir 2> /dev/null

            detect_version

            return 0
        fi
    done

    rmdir $_tmpdir 2> /dev/null

    echo
    echo
    echo "Couldn't detect Mandriva Flash pen drive!"
    echo

    return 1
}

function mount_usbroot() {

    nash --force > /dev/null 2>&1 <<EOF
mount -t vfat LABEL=MDVUSBROOT $1
EOF
    if [ $? -ne 0 ]; then
        echo "Error mounting device labeled MDVUSBROOT"
        return 1
    fi

    return 0
}

function mount_sharedroot() {

    nash --force > /dev/null 2>&1 <<EOF
mount -t vfat LABEL=Share $1
EOF
    if [ $? -ne 0 ]; then
        echo "Error mounting device labeled Share"
        return 1
    fi

    return 0
}

function progress() {

    echo -ne '\b|'
    usleep 100000
    echo -ne '\b/'
    usleep 100000
    echo -ne '\b-'
    usleep 100000
    echo -ne '\b\\'
    usleep 100000
}