#!/bin/bash
# vinelib                by Jun Nishii <jun@vinelinux.org>
#                    Time-stamp: <2008-03-08 18:44:45 munepi>

. /usr/share/vine/functions

setime(){

. /usr/share/vine/imelib

setLocale

for arg in $* ; do
    case $arg in
	-k) Kinput2mod=-1; shift ;;
	-h) eval ShowUsage_$LOCALE ${0##*/} ; return 0 ;;
    esac
done

CheckOption $* || return -1
CheckXIMStatus

FE=kinput2
for arg in $* ; do
	case $arg in
	status)
		ShowIMEStatus
		unsetImeFuncs
		return 0
		;;
	canna|Canna|CANNA)
		IM=canna
		;;
	wnn|Wnn|WNN)
		IM=wnn
		;;
	Wnn8|wnn8|Wnn8kinput2|wnn8kinput2)
		IM=wnn8
		;;
	Wnn7|wnn7|Wnn7kinput2|wnn7kinput2)
		IM=wnn7
		;;
	Wnn6|wnn6|Wnn6kinput2|wnn6kinput2)
		IM=wnn6
		;;
	Wnn8le|wnn8le)
		FE=le
		IM=wnn8
		;;
	Wnn8scim|wnn8scim)
		FE=scim
		IM=wnn8
		;;
	Wnn7xwnmo|wnn7xwnmo)
		FE=xwnmo
		IM=wnn7
		;;
	Wnn6xwnmo|wnn6xwnmo)
		FE=xwnmo
		IM=wnn6
		;;
	FreeWnn|freewnn|wnn4|Wnn4)
		IM=FreeWnn
		;;
	atokx|Atokx)
		FE=
		IM=atokx
		;;
	atokx2|AtokX2)
		FE=
		IM=atokx2
		;;
	atokx3|AtokX3)
		FE=
		IM=atokx3
		;;
	vje|Vje|VJE)
		IM=vje
		;;
	skk|SKK)
		IM=skk
		;;
	uim|UIM|anthy|Anthy|ANTHY)
		IM=uim
		;;
	scim|SCIM)
		IM=scim
		;;
	ibus|IBUS|IBus|iBus)
		IM=ibus
		;;
	none|No_IM)
		IM=No_IM
		;;
	default)
		IM=default
		;;
	*)  eval ShowUsage_$LOCALE ${0##*/} 
	    unsetImeFuncs
	    return 0
		;;
	esac
done

setIME $IM || return -1

export XMODIFIERS TK_KCPROTO
export EMACS_IME XIM_PROG JSERVER WNN6_FRONT_END WNN6_SERVER CANNA_SERVER
export WNN7_FRONT_END WNN7_SERVER GTK_IM_MODULE QT_IM_MODULE
export WNN8_FRONT_END WNN8_SERVER QT_IM_MODULE HTT_DISABLE_STATUS_WINDOW

eval ExitMsg_$LOCALE

unsetImeFuncs

return 0
}

# Functions to manipulate PATH, addpath and rmpath. 
# developed by M. Kawamura
# Ver. 1.0     - 2000.07.07

ckpath () {
    if [ $# -lt 1 ]; then
	echo "Usage: ckpath path"
	return
    fi

    local OLD_IFS=$IFS
    IFS=":"
    local ret=0
    local pdir
    for pdir in $PATH
    do
	if [ "X$pdir" = "X$1" ]; then
	    ret=1
	fi
    done
    IFS=$OLD_IFS

    return $ret
}

addpath () {
    local ADD_PRE=0
    local opt OPTIND adir pdir

    while getopts "p" opt
    do
	case $opt in
	    p) ADD_PRE=1
	    ;;
	esac
    done
    
    shift $(($OPTIND-1))

    if [ $# -lt 1 ]; then
	echo "Usage: addpath [option] path"
	echo "option: -p ... add the new path at the head."
	return
    fi

    for adir in $@
    do
	pdir=${adir%/}
        if [ ! -d $pdir ]; then
	   echo "No such directory: $pdir"
	   	return
	fi

	if ckpath $pdir; then 
	    if [ $ADD_PRE -eq 1 ]; then
		PATH=$pdir:$PATH
	    else
		PATH=$PATH:$pdir
	   fi
	fi
    done
}

rmpath () {
    if [ $# -lt 1 ]; then 
	echo "Usage: rmpath path"
	return
    fi

    local adir
    for adir in $@
    do
	local pdir=${adir%/}
	local OLD_IFS=$IFS NewPath="" list
	IFS=":"
	for list in $PATH
	do
	    if [ ! $list = $pdir ]; then
		if [ "X$NewPath" = "X" ]; then 
		    NewPath=$list
		else
		    NewPath=$NewPath:$list
		fi
	    fi
	done
	IFS=$OLD_IFS
	PATH=$NewPath
    done
}

