Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 417393 | Differences between
and this patch

Collapse All | Expand All

(-)grub.orig/util/grub-reboot.in (-9 / +45 lines)
Lines 129-144 Link Here
129
129
130
grubdir=`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'`
130
grubdir=`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'`
131
131
132
prev_saved_entry=`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^saved_entry=//p'`
132
if [ ! -d "${grubdir}" ]; then
133
if [ "$prev_saved_entry" ]; then
133
    echo "grub directory doesn't exist." 1>&2
134
    $grub_editenv ${grubdir}/grubenv set prev_saved_entry="$prev_saved_entry"
134
    exit 1
135
else
136
    # We need some non-empty value for prev_saved_entry so that GRUB will
137
    # recognise that grub-reboot has been used and restore the previous
138
    # saved entry. "0" is the same as an empty value, i.e. the first menu
139
    # entry.
140
    $grub_editenv ${grubdir}/grubenv set prev_saved_entry=0
141
fi
135
fi
136
137
prev_saved_entry=`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^prev_saved_entry=//p'`
138
if [ -z "${prev_saved_entry}" ]; then
139
    prev_saved_entry=`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^saved_entry=//p'`
140
    if [ "$prev_saved_entry" ]; then
141
        $grub_editenv ${grubdir}/grubenv set prev_saved_entry="$prev_saved_entry"
142
    else
143
        # We need some non-empty value for prev_saved_entry so that GRUB will
144
        # recognise that grub-reboot has been used and restore the previous
145
        # saved entry. "0" is the same as an empty value, i.e. the first menu
146
        # entry.
147
        $grub_editenv ${grubdir}/grubenv set prev_saved_entry=0
148
    fi
149
fi
150
151
tmp=$(echo ${entry} | sed 's/[^0-9]//g')
152
if [ "${tmp}" != "${entry}" -o "${tmp}" -gt 100 ]; then
153
    # User specified a menuentry name. Let's check if it exists
154
    name=
155
    names=$(sed -n $'/^menuentry / { s/.*[\'"]\\([^\'"]*\\)[\'"].*/\\1/ ; p }' \
156
        ${grubdir}/grub.cfg | grep "${entry}")
157
    if [ -z "${names}" ]; then
158
        echo "entry not found." 1>&2
159
        exit 1
160
    fi
161
    OLDIFS=$IFS
162
    IFS=$'\n'
163
    for n in ${names}; do
164
        if [ "${n}" == "${entry}" ]; then
165
            name="${entry}"
166
        fi
167
    done
168
    IFS=OLDIFS
169
    if [ -z "${name}" ]; then
170
        name=$(echo "${names}" | head -n 1)
171
        if [ "${names}" != "${name}" ]; then
172
            echo "matched multiple entries. using first entry found." 1>&2
173
        fi
174
    fi
175
    entry="${name}"
176
fi
177
142
$grub_editenv ${grubdir}/grubenv set saved_entry="$entry"
178
$grub_editenv ${grubdir}/grubenv set saved_entry="$entry"
143
179
144
# Bye.
180
# Bye.

Return to bug 417393