#!/bin/bash
#
# Copyright (c) 2007, Bjoern B. Brandenburg <bbb [at] cs.unc.edu>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of the copyright holder nor the
#       names of its contributors may be used to endorse or promote products
#       derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS  PROVIDED BY THE COPYRIGHT HOLDERS  AND CONTRIBUTORS "AS IS"
# AND ANY  EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT LIMITED  TO, THE
# IMPLIED WARRANTIES  OF MERCHANTABILITY AND  FITNESS FOR A  PARTICULAR PURPOSE
# ARE  DISCLAIMED. IN NO  EVENT SHALL  THE COPYRIGHT  OWNER OR  CONTRIBUTORS BE
# LIABLE  FOR   ANY  DIRECT,  INDIRECT,  INCIDENTAL,   SPECIAL,  EXEMPLARY,  OR
# CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT   NOT  LIMITED  TO,  PROCUREMENT  OF
# SUBSTITUTE  GOODS OR SERVICES;  LOSS OF  USE, DATA,  OR PROFITS;  OR BUSINESS
# INTERRUPTION)  HOWEVER CAUSED  AND ON  ANY  THEORY OF  LIABILITY, WHETHER  IN
# CONTRACT,  STRICT  LIABILITY, OR  TORT  (INCLUDING  NEGLIGENCE OR  OTHERWISE)
# ARISING IN ANY  WAY OUT OF THE USE  OF THIS SOFTWARE, EVEN IF  ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.


#########
# CONFIG:
#
# Where is the GRUB config located?
MENU="/boot/grub/menu.lst"
#########

#########
# SCRIPT:
#########

BACK="(c) 2007 Bjoern B. Brandenburg"
TITLE="GRUB Boot Kernel Selector v0.1"

TMPFILE=`mktemp`
(egrep '^title' $MENU | sed 's/title *//' | awk '
	BEGIN {c = 0} \
	{print c " \"" $0  "\""; c++ } \
	
' | xargs dialog --title "$TITLE" --backtitle "$BACK"  \
--cancel-label "Keep old default" --ok-label "Select new default" \
--menu "Choose default kernel: " 23 60 16 ) 2> $TMPFILE
OK=$?

clear

if [[ $OK == 0 ]]; then
    CHOICE=`cat $TMPFILE`
    sed -ibak "s/^default *[0123456789]\+$/default $CHOICE/" $MENU 
    echo "New default set to ${CHOICE}."
else
    echo "Keeping old default kernel."
fi

rm $TMPFILE

