#!/bin/sh

#edited by BK 2005
DEFAULTBROWSER="`cat /usr/local/bin/defaultbrowser | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTDRAW="`cat /usr/local/bin/defaultdraw  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTHTMLEDITOR="`cat /usr/local/bin/defaulthtmleditor  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTMEDIAPLAYER="`cat /usr/local/bin/defaultmediaplayer  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTPAINT="`cat /usr/local/bin/defaultpaint  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTSPREADSHEET="`cat /usr/local/bin/defaultspreadsheet  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTTEXTEDITOR="`cat /usr/local/bin/defaulttexteditor  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"
DEFAULTWORDPROCESSOR="`cat /usr/local/bin/defaultwordprocessor  | tail -n 1 | tr -s " " | cut -f 2 -d " "`"

ShowARJ()
{
	unarj l "$1" 2> /dev/null
}

ShowRPM()
{
	rpm -qip "$1"
}

# _Everything_ on msdos and vfat is marked executable, so mime types
# must be explicitly searched for, before checking execution flags, to prevent
# execution of a data file erroneously marked executable.

Detected()
{
	case "$1" in
	*.html )    $DEFAULTBROWSER   "$1" &;;
	*.htm )     $DEFAULTBROWSER   "$1" &;;
	*.c   )     $DEFAULTTEXTEDITOR      "$1" &;;
	*.h   )     $DEFAULTTEXTEDITOR      "$1" &;;
	*.txt )     $DEFAULTTEXTEDITOR      "$1" &;;
	*.tar )     guitar "$1" &;;
	*.tgz )     guitar "$1" &;;
	*.tar.gz )  guitar "$1" &;;
	*.tar.Z )   guitar "$1" &;;
	*.tar.z )   guitar "$1" &;;
	*.tbz2 )    guitar "$1" &;;
	*.tar.bz2 ) guitar "$1" &;;
	*.Z )       guitar "$1" &;;
	*.z )       guitar "$1" &;;
	*.gz )      guitar "$1" &;;
	*.bz2 )     guitar "$1" &;;
	*.zip )     guitar "$1" &;;
	*.ZIP )     guitar "$1" &;;
	*.arj )     ShowARJ    "$1" | xless &;;
	*.ARJ )     ShowARJ    "$1" | xless &;;
	*.rpm )     rpm -qip   "$1" | xless &;;
	*.o   )     hexdump    "$1" | xless &;;
	*.lib )     hexdump    "$1" | xless &;;
	*.a   )     hexdump    "$1" | xless &;;
	*.jpg )     $DEFAULTPAINT         "$1" &;;
	*.jpeg )    $DEFAULTPAINT         "$1" &;;
	*.avi )     $DEFAULTMEDIAPLAYER   "$1" &;;
	*.mov )     $DEFAULTMEDIAPLAYER   "$1" &;;
	*.mpg )     $DEFAULTMEDIAPLAYER   "$1" &;;
	*.mpeg )    $DEFAULTMEDIAPLAYER   "$1" &;;
	*.bmp )     $DEFAULTPAINT         "$1" &;;
	*.xpm )     $DEFAULTPAINT         "$1" &;;
	*.png )     $DEFAULTPAINT         "$1" &;;
	*.gif )     $DEFAULTPAINT         "$1" &;;
	*.tif )     $DEFAULTPAINT         "$1" &;;
	*.tiff )    $DEFAULTPAINT         "$1" &;;
	*.pcx )     $DEFAULTPAINT         "$1" &;;
	*.PCX )     $DEFAULTPAINT         "$1" &;;
	*.wav )     play.tcl       "$1" &;;
	*.au  )     play.tcl       "$1" &;;
	*.voc )     play.tcl       "$1" &;;
	*.doc )     $DEFAULTWORDPROCESSOR    "$1" &;;
	*.DOC )     $DEFAULTWORDPROCESSOR    "$1" &;;
	*.ps )      gsview         "$1" &;;
	*.eps )     gsview         "$1" &;;
	*.pdf )     gsview "$1" &;;
	* )         false ;;
	esac
}

if [ "$1" = "" ]
then
	echo "syntax: $(basename '$0') file"
else
	# predefined types take precedence over execution
	if Detected "$1" ;then
	  exit
	fi
	if [ -x "$1"  ];then
	  exec "$1" 2> /dev/null &
	  exit
	fi
	case "$1" in
	* )         $DEFAULTTEXTEDITOR      "$1" &;;
	esac
fi

