#!/bin/bash
#

case $1 in

cdrom)
for device in `cat /proc/sys/dev/cdrom/info | head -n 3 | tail -n 1 | cut -d ":" -f 2`; do
	if [ `echo $device | tr -d '0-9'` = sr ]; then cd /dev; ln -sf $device `echo $device | tr 'sr' 'pg'`; fi
done
SCANBUS=`cdrecord -scanbus | grep ") '" | awk '{print $1}'`
cd_info() {
CDINFO=`dmesg | grep $CDROM | grep CD | awk '{print $2,$3,$5}'`
MODEL=`echo $CDINFO | awk '{print $1,$2}' | tr -d ','`
SPEED=`echo $CDINFO | awk '{print $5}'`
R_RW=`echo $CDINFO | awk '{print $6}'`
echo "$BUS|cdrom_$CDROM|$MODEL|$SPEED|$R_RW"
}
for BUS in $SCANBUS; do
case "$BUS" in
1000,0,0) CDROM=hda; cd_info ;;
1000,1,0) CDROM=hdb; cd_info ;;
1001,0,0) CDROM=hdc; cd_info ;;
1001,1,0) CDROM=hdd; cd_info ;;
1002,0,0) CDROM=hde; cd_info ;;
1002,1,0) CDROM=hdf; cd_info ;;
1003,0,0) CDROM=hdg; cd_info ;;
1003,1,0) CDROM=hdh; cd_info ;;
0,0,0) CDROM=sr0; cd_info ;;
0,1,0) CDROM=sr1; cd_info ;;
1,0,0) CDROM=sr2; cd_info ;;
1,1,0) CDROM=sr3; cd_info ;;
2,0,0) CDROM=sr4; cd_info ;;
2,1,0) CDROM=sr5; cd_info ;;
3,0,0) CDROM=sr6; cd_info ;;
3,1,0) CDROM=sr7; cd_info ;;
esac
done
;;

disk | partitions)
for mdisk in /dev/hd? /dev/sd?; do
test -e "$mdisk" || continue
dev_basename=$(basename "$mdisk") || continue
device=`cat /proc/sys/dev/cdrom/info | head -n 3 | tail -n 1 | cut -d ":" -f 2 | tr '\t' '\n' | grep $dev_basename`
if [ "$dev_basename" = "$device" ]; then continue; fi
case $1 in
disk)
disk=$(/sbin/sfdisk -l "$mdisk" 2>/dev/null | grep "Disk")
DEV=`echo $disk | awk '{print $2}' | tr -d ':'`
DEV=$(basename $DEV)
CYLS=`echo $disk | awk '{print $3}'`
HDS=`echo $disk | awk '{print $5}'`
SECT=`echo $disk | awk '{print $7}'`
test -e /proc/ide/${DEV}/model && MODEL=`cat /proc/ide/${DEV}/model` || MODEL=Unknown
SIZE=$[CYLS*HDS*SECT/2048]
if [ $SIZE != 0 ]; then echo $DEV"|"$SIZE"|""$MODEL"; fi
;;
partitions)
partition_list=$(/sbin/sfdisk -l "$mdisk") || continue
partition_list=$(echo "$partition_list" | tr '\t*+' '  ' | sed '/^\/dev\// ! d
s,^\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*\(.*\)$,\1:\5:\7, ' | tr ' ' '\073' )
test -z "$partition_list" && continue
for line in $partition_list; do
	dev=$(echo "$line" | cut -d: -f1); size=$(echo "$line" | cut -d: -f2); ptype=$(echo "$line" | cut -d: -f3)
	if [ $size != 0 ]; then dev=$(basename $dev); echo $dev"|"$[size/1024]"|"$ptype; continue; 	fi
done
;;
esac
done
;;

usb_drive)
ls -A1d /sys/block/sd*/dev /sys/block/sd*/sd*/dev 2>/dev/null | while read DEV; do
   DEVICE="/dev/`basename \`dirname $DEV\``"
   if [ "`cat \`dirname $DEV\`/removable 2>&1`" = 1 ]; then echo "${DEVICE}1|`cat \`dirname $DEV\`/device/model`"; fi
done
;;
austrumi_cd)
if [ -f /etc/auto.cdrom ]; then
	CDROMS=`cat /etc/auto.cdrom | grep "cdrom" | awk '{print $1}'`
	for CDROM in $CDROMS; do
		if [ -f /media/$CDROM/austrumi/austrumi.fs ]; then echo /media/$CDROM; continue; fi
	done
elif [ "`cat /proc/cmdline | grep "dousb"`" ]; then 
	USBDRIVES=`mount | grep "^/dev/sd" | awk '{print $3}'`
	for USBDRIVE in $USBDRIVES; do
		if [ -f $USBDRIVE/austrumi/austrumi.fs ]; then echo $USBDRIVE; continue; fi
	done
fi
;;
x_autoconf)
conf=/etc/rc.d/rc.S
if [ `cat $conf | grep "config-xorg" | grep "#"` ]; then
sed -i "s/\#\/usr\/sbin\/config-xorg/\/usr\/sbin\/config-xorg/" $conf
else sed -i "s/\/usr\/sbin\/config-xorg/\#\/usr\/sbin\/config-xorg/" $conf
fi
;;
refresh_rate)
if [ $2 != "-----" ]; then xrandr -r $2; fi
;;
growisofs)
growisofs -Z $IEKARTA -R -J `cat /tmp/bbox.txt | sed -e 's/^/"/' | sed -e 's/$/"/' | tr '\n' ' '`
;;

wifi)
DEVICE=$(grep : /proc/net/wireless | cut -d ':' -f 1 | tr -d ' ')
for ETH in $DEVICE; do
	MAC=`/usr/sbin/ifconfig ${ETH} | sed -ne 's/.*\(..:..:..:..:..:..\).*/\1/p'`
	echo "$ETH|$MAC"
done
;;

kvm)
if [ "`egrep '^flags.*(svm)' /proc/cpuinfo`" ]; then
	/sbin/modprobe kvm_amd
	if [ "`/sbin/lsmod | grep "kvm_amd"`" ]; then
		mknod /dev/kvm c `head -n 1 /sys/class/misc/kvm/dev | tr ':' ' '`
	else /sbin/rmmod kvm; fi
elif [ "`egrep '^flags.*(vmx)' /proc/cpuinfo`" ]; then
	/sbin/modprobe kvm_intel
	if [ "`/sbin/lsmod | grep "kvm_intel"`" ]; then
		mknod /dev/kvm c `head -n 1 /sys/class/misc/kvm/dev | tr ':' ' '`
	else /sbin/rmmod kvm; fi
fi
;;

esac
