#!/bin/busybox ash
# RC Script for Tiny Core Linux
# (c) Robert Shingledecker 2004-2012
# Several modifications for speed by Curaga
. /etc/init.d/tc-functions
useBusybox

USER="tc"
TCEDIR="/tmp/tce"
TCEOPT="/tmp/tce/optional"
TCLOOP="/tmp/tcloop"
TCEINSTALLED="/usr/local/tce.installed"
INSTALLED=""
VERSION="$(getFullVer)"
KERNEL="$(uname -r)"

addUser(){
	echo "${GREEN}Adding user ${YELLOW}$USER ${NORMAL}"
	/usr/sbin/adduser -s /bin/sh -G staff -D "$USER"
	echo "$USER":tcuser | /usr/sbin/chpasswd -m
	echo -e "$USER\tALL=NOPASSWD: ALL" >> /etc/sudoers
}

### END functions

# Main

echo "${GREEN}Booting ${YELLOW}Core $VERSION ${NORMAL}"
echo "${GREEN}Running Linux Kernel ${YELLOW}$KERNEL${GREEN}.${NORMAL}"
export PATH=/usr/local/sbin:/usr/local/bin:"$PATH"

# Here we check all the boot parameters using the fastest way known to men, case & loop
echo -n "${BLUE}Checking boot options...${NORMAL}"
for i in `cat /proc/cmdline`; do
	case $i in
		*=*)
			case $i in
				user*) USER=${i#*=} ;;
				kmap*) KEYMAP=${i#*=} ;;
			esac
		;;
		*)
			case $i in
				noutc) NOUTC=1 ;;
				text) TEXT=1 ;;
				xonly) XONLY=1 ;;
				superuser) SUPERUSER=1 ;;
				noswap) NOSWAP=1 ;;
				norestore) NORESTORE=1 ;;
				noautologin) NOAUTOLOGIN=1 ;;
				pause) PAUSE=1 ;;
			esac
		;;
	esac
done
echo "${GREEN} Done.${NORMAL}"

# Start Udev to populate /dev and handle hotplug events
echo -n "${BLUE}Starting udev daemon for hotplug support...${NORMAL}"
#/sbin/udevd --daemon 2>/dev/null >/dev/null
/sbin/udevd --daemon 2>&1 >/dev/null
#/sbin/udevadm trigger --action=add 2>/dev/null >/dev/null &
#/sbin/udevadm trigger --action=add 2>&1 >/dev/null &
rotdash $!
echo "${GREEN} Done.${NORMAL}"

if [ -n "$NOSWAP" ]; then
	echo "${BLUE}Ignoring swap partition(s) seek as requested.${NORMAL}"
else
	/sbin/swapon -a 2>/dev/null
	if [ "$?" == 0 ]; then echo "${GREEN}Possible swap partition(s) enabled.${NORMAL}"; fi
fi

[ -n "$LANGUAGE" ] || LANGUAGE="C"
echo -n "${GREEN}Setting Language to ${MAGENTA}$LANGUAGE"
echo "LANG=$LANGUAGE" > /etc/sysconfig/language
export LANG=$LANGUAGE
echo "${GREEN} Done.${NORMAL}"

if [ -n "$USER" ]; then
	if ! grep "$USER" /etc/passwd >/dev/null; then addUser; fi
else
	USER="tc"
fi
echo "$USER" > /etc/sysconfig/tcuser
mkdir -p /home/"$USER"

if [ -n "$SUPERUSER" ]; then
	touch /etc/sysconfig/superuser
fi

# Setup base directories for TCE Applicatons 
[ -d "$TCEINSTALLED" ] || mkdir "$TCEINSTALLED"
[ -d "$TCEDIR" ] || mkdir "$TCEDIR"
[ -d "$TCEOPT" ] || mkdir "$TCEOPT"
[ -d "$TCLOOP" ] || mkdir "$TCLOOP"
ln -sf "$TCEDIR" /etc/sysconfig/tcedir
chown "$USER" "$TCEOPT"
chgrp staff "$TCEDIR" "$TCEOPT" "$TCEINSTALLED" "$TCLOOP"
chmod g+w "$TCEDIR" "$TCEOPT" "$TCEINSTALLED" "$TCLOOP"

chmod u+s /bin/busybox.suid /usr/bin/sudo

touch /var/tmp/k5_skip

if grep -q "^/dev/root" /proc/mounts; then
	INSTALLED=1
	echo "${RED}Detected Traditional Hard drive installation.${NORMAL}"
fi

#/sbin/ldconfig 2>/dev/null

[ -n "$TEXT" ] && touch /etc/sysconfig/text
[ -n "$XONLY" ] && touch /etc/sysconfig/xonly

setupHome

unset OPT_SETUP

[ -n "$KEYMAP" ] || KEYMAP="us"
if [ -f "/usr/share/kmap/$KEYMAP.kmap" ]; then
	echo -n "${GREEN}Setting keymap to ${MAGENTA}$KEYMAP"
	/sbin/loadkmap < /usr/share/kmap/$KEYMAP.kmap
	echo "KEYMAP=$KEYMAP" > /etc/sysconfig/keymap
	echo "${GREEN} Done.${NORMAL}"
fi

[ -n "$NOAUTOLOGIN" ] && echo "booting" > /etc/sysconfig/noautologin

if [ -n "$PAUSE" ]; then
	echo -n "${BLUE}Boot time configuration completed. Press <Enter> to continue.${NORMAL}"
	read junk
fi
