#!/bin/sh
#
# Copyright 1993,1994 Patrick Volkerding, Moorhead, Minnesota USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is 
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
#

source /usr/lib/setup/setup_main.mes

rm -f /tmp/SeT*
echo "on" > /tmp/SeTcolor # turn on color menus
PATH="/usr/lib/setup:$PATH"
export PATH
if [ ! -L /var/adm ]; then
    cd /var ; ln -sf log adm
fi
/sbin/probe -r 1> /dev/null 2> /dev/null
PARTLIST="`probe -l | grep "Linux" | grep -v swap 2> /dev/null`"
if [ "$PARTLIST" = "" ]; then
    SeTnopart
    exit
fi
echo "$PARTLIST" > /tmp/SeTplist
T_PX="/mnt"
echo "$T_PX" > /tmp/SeTT_PX
#DISTRIBUTION_SOURCE="/var/adm/mount"
#echo "$DISTRIBUTION_SOURCE" > /tmp/SeTDS
#SOURCE_DEVICE="/dev/fd0"
# We may want to force the issue...
# echo "$SOURCE_DEVICE" > /tmp/SeTsource
ROOT_DEVICE="`mount | grep "on / " | cut -b-10`"
echo "$ROOT_DEVICE" > /tmp/SeTrootdev
if mount | grep /var/adm/mount 1> /dev/null 2> /dev/null ; then # clear source
    umount /var/adm/mount                                           # location
fi
rm -f /var/adm/mount 2> /dev/null
rmdir /var/adm/mount 2> /dev/null
mkdir /var/adm/mount 2> /dev/null

# main loop begin
while [ 0 ]; do  

# Reset menu flag:
    rm -f /tmp/SeTQUICK
    dialog --title "Plamo Linux installation menu(ver 4.0)" \
	   --menu \
	   "$main_mes1" 19 76 10 \
	   "HELP" "$list_01" \
	   "ADDSWAP" "$list_03" \
	   "TARGET" "$list_04" \
	   "SOURCE" "$list_05" \
	   "DISK SETS" "$list_06" \
	   "INSTALL" "$list_07" \
	   "CONFIGURE" "$list_08" \
	   "EXIT" "$list_09" 2> /tmp/hdset
    if [ $? = 1 -o $? = 255 ]; then
	rm -f /tmp/hdset /tmp/SeT*
	exit
    fi
    MAINSELECT="`cat /tmp/hdset`"
    rm /tmp/hdset

 # Start checking what to do. Some modules may reset MAINSELECT to run the
 # next item in line.

    if [ "$MAINSELECT" = "HELP" ]; then
	SeTHELP
    fi

    if [ "$MAINSELECT" = "ADDSWAP" ]; then
	SeTswap
	if [ -r /tmp/SeTswap ]; then
	    dialog --title "Continue to select partition?" --yesno "$end_swap" 9 70
	    if [ $? = 0 ]; then
		MAINSELECT="TARGET"
	    fi
	fi
    fi

    if [ "$MAINSELECT" = "TARGET" ]; then
	SeTpartitions
	SeTDOS
	if [ -r /tmp/SeTnative ]; then
	    dialog --title "Continue to select media ?" --yesno "$end_partition" 7 62
	    if [ $? = 0 ]; then
		MAINSELECT="SOURCE"
	    fi
	fi
    fi

    if [ "$MAINSELECT" = "SOURCE" ]; then
	SeTmedia
	if [ -r /tmp/SeTsource ]; then
	    dialog --title "Continue to select categories?" --yesno "$end_media" 7 60
	    if [ $? = 0 ]; then
		MAINSELECT="DISK SETS"
	    fi
	fi
    fi

    if [ "$MAINSELECT" = "DISK SETS" ]; then
	SeTPKG
	if [ -r /tmp/SeTSERIES ]; then
	    dialog --title "Continue to install pkgs?" --yesno "$end_category" 11 70
	    if [ $? = 0 ]; then
		MAINSELECT="INSTALL"
	    fi
	fi
    fi

    # begin install
    if [ "$MAINSELECT" = "INSTALL" ]; then
	if [ ! -r /tmp/SeTSERIES -o ! -r /tmp/SeTsource -o ! /tmp/SeTnative ]; then
	    dialog --title "Can't install now" --msgbox "$cant_mes" 16 70
	    continue
	fi
	SERIES="`cat /tmp/SeTSERIES`"
	SOURCE_DEVICE="`cat /tmp/SeTsource`"
	IGNORE_TAGFILES=""

	while [ 0 ]; do
	    dialog --title "Select install method ?" --menu "$method_mes" 19 70 7 \
		   "RECOM"  "$method_list1" \
		   "EXPERT" "$method_list2" \
		   "HELP"   "$method_list3" 2> /tmp/SeTpmode
	    if [ $? = 1 -o $? = 255 ]; then
		rm -f /tmp/SeTpmode
		exit
	    fi
	    MODE="`cat /tmp/SeTpmode`"
	    rm -f /tmp/SeTtagext

	    if [ "$MODE" = "HELP" ]; then
		dialog --title "Help for prompt mode" --textbox "/usr/lib/setup/PROMPThelpj" 19 65
	    fi

	    if [ "$MODE" = "RECOM" ]; then
		touch /tmp/recom
		dialog --title "Recommend mode selected" --infobox "$recom_mes" 4 70
		break;
	    fi

	    if [ "$MODE" = "EXPERT" ]; then
		touch /tmp/SeTQUICK
		dialog --title "Expert mode selected" --infobox "$menu_mes" 4 70
		break;
	    fi 
	done

	if [ ! -r /tmp/SeTCDdev ]; then # only try to remount media if it's a CD/DVD
	    slackinstall --device noremount --promptmode $MODE --srcpath `cat /tmp/SeTDS` --mountpoint /var/log/mount --target $T_PX --series "$SERIES"
	else
	    echo " calling slackinstall with --device `cat /tmp/SeTCDdev` --promptmode $MODE --srcpath `cat /tmp/SeTDS` --mountpoint /var/log/mount --target $T_PX --series $SERIES"
	    slackinstall --device `cat /tmp/SeTCDdev` --promptmode $MODE --srcpath `cat /tmp/SeTDS` --mountpoint /var/log/mount --target $T_PX --series "$SERIES"
	fi
 	MAINSELECT="CONFIGURE"
    fi
    # end install

    if [ "$MAINSELECT" = "CONFIGURE" ]; then
	if [ -r /tmp/SeTnative ]; then
	    if [ -r /mnt/etc/fstab ]; then
		dialog --title "Update /etc/fstab" --yesno "$fstab_mes" 10 70
		if [ $? = 0 ]; then
		    cat /dev/null > /mnt/etc/fstab
		    if [ -r /tmp/SeTswap ]; then
			cat /tmp/SeTswap > /mnt/etc/fstab
		    fi
		    cat /tmp/SeTnative >> /mnt/etc/fstab
		    # Mount up the CD-ROM if it exists...
		    # if [ -r /tmp/SeTcdfstab ]; then
		    # mkdir -p /mnt/cdrom
		    # cat /tmp/SeTcdfstab >> /tmp/SeTDOS
		    #fi
		    if [ -r /tmp/SeTDOS ]; then
			cat /tmp/SeTDOS >> /mnt/etc/fstab
		    fi
		    echo "/dev/sr0       /cdrom         iso9660    user,ro,noauto,exec,iocharset=utf8 0   0" >> /mnt/etc/fstab
		    echo "proc           /proc          proc       defaults   0   0" >> /mnt/etc/fstab
                    echo "tmpfs          /run           tmpfs      defaults   0   0" >> /mnt/etc/fstab
		    echo "sysfs          /sys           sysfs      defaults   0   0" >> /mnt/etc/fstab
		    echo "devtmpfs       /dev           devtmpfs   defaults   0   0" >> /mnt/etc/fstab
		    echo "tmpfs		 /tmp           tmpfs      defaults   0   0" >> /mnt/etc/fstab
		    echo "devpts         /dev/pts       devpts     gid=5,mode=620    0 0" >> /mnt/etc/fstab
		    echo "usbfs          /proc/bus/usb  usbfs      noauto   0   0" >> /mnt/etc/fstab

		fi
	    else # /mnt/etc/fstab not found
		cat /dev/null > /mnt/etc/fstab
		if [ -r /tmp/SeTswap ]; then
		    cat /tmp/SeTswap > /mnt/etc/fstab
		fi
		cat /tmp/SeTnative >> /mnt/etc/fstab
		# Mount up the CD-ROM if it exists...
		#if [ -r /tmp/SeTcdfstab ]; then
		# mkdir -p /mnt/cdrom
		# cat /tmp/SeTcdfstab >> /tmp/SeTDOS
		#fi
		if [ -r /tmp/SeTDOS ]; then
		    cat /tmp/SeTDOS >> /mnt/etc/fstab
		fi
		echo "/dev/sr0         /cdrom         iso9660    user,ro,noauto,exec,iocharset=utf8 0   0" >> /mnt/etc/fstab
		echo "proc             /proc          proc       defaults   0   0" >> /mnt/etc/fstab
                echo "tmpfs            /run           tmpfs      defaults   0   0" >> /mnt/etc/fstab
		echo "sysfs            /sys           sysfs      defaults   0   0" >> /mnt/etc/fstab
		echo "devtmpfs         /dev           devtmpfs   defaults   0   0" >> /mnt/etc/fstab
		echo "tmpfs	       /tmp           tmpfs      defaults   0   0" >> /mnt/etc/fstab
		echo "devpts           /dev/pts       devpts     gid=5,mode=620    0 0" >> /mnt/etc/fstab
		echo "usbfs            /proc/bus/usb  usbfs      noauto   0   0" >> /mnt/etc/fstab
	    fi
	fi
	SeTconfig
	dialog --title "Finish setup" --msgbox "$finish_mes" 6 60
    fi

    if [ "$MAINSELECT" = "EXIT" ]; then
	break
    fi

done # end of main loop
 
sync
if mount | grep /var/adm/mount 1> /dev/null 2> /dev/null ; then
 umount /var/adm/mount 
fi
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then
 umount /var/log/mount 
fi
rm -f /var/adm/mount 2> /dev/null
rmdir /var/adm/mount 2> /dev/null
mkdir /var/adm/mount 2> /dev/null
chmod 755 /var/adm/mount
chmod 755 $T_PX
if [ -d $T_PX/tmp ]; then
 chmod 1777 $T_PX/tmp
fi
if [ -f /tmp/SeTCDdev ]; then
  eject `cat /tmp/SeTCDdev`
fi
rm -f /tmp/tagfile /tmp/SeT*
# end slackware setup script


