#!/bin/sh

SUFFIX="moved_by_switch_prism_driver"
WLANNG_CFG="/etc/pcmcia/wlan-ng.conf"
HOSTAP_CFG="/etc/pcmcia/hostap_cs.conf"

switch_to_wlanng()
{
    echo "Switching driver for Prism2/2.5/3 cards to 'wlan-ng'"
    test -f $HOSTAP_CFG && mv $HOSTAP_CFG $HOSTAP_CFG.$SUFFIX
    if [ -f $WLANNG_CFG.$SUFFIX ]; then
	mv $WLANNG_CFG.$SUFFIX $WLANNG_CFG
    elif grep -q ^card $WLANNG_CFG ; then
	echo "wlan-ng already active"
    else
# in its original state everything is commented out in wlan-ng.conf
	TMP=$( mktemp ${WLANNG_CFG}.XXXXXX )
	sed -e 's/\(^#\)\(\(card\)\|\([# ]*version\)\|\([# ]*manfid\)\|\([ #]*bind\)\)/\2/g' \
	    $WLANNG_CFG > $TMP
	mv -f $TMP $WLANNG_CFG
    fi
}

switch_to_orinoco()
{
    echo "Switching driver for Prism2/2.5/3 cards to 'orinoco'"
    test -f $HOSTAP_CFG && mv $HOSTAP_CFG $HOSTAP_CFG.$SUFFIX
    test -f $WLANNG_CFG && mv $WLANNG_CFG $WLANNG_CFG.$SUFFIX
}

switch_to_hostap()
{
    echo "Switching driver for Prism2/2.5/3 cards to 'hostap'"
    test -f $WLANNG_CFG && mv $WLANNG_CFG $WLANNG_CFG.$SUFFIX
    if [ -f $HOSTAP_CFG ]; then
	echo "hostap already active"
    else
	mv $HOSTAP_CFG.$SUFFIX $HOSTAP_CFG
    fi
}

case "$1" in
    prism|wlan-ng|wlanng|prism_cs)
	switch_to_wlanng
	;;
    hostap|hostap_cs)
	switch_to_hostap
	;;
    orinoco|orinoco_cs)
	switch_to_orinoco
	;;
    *)
	echo "Usage: $0 hostap|orinoco|wlan-ng" >&2
	exit 1
	;;
esac

/etc/init.d/pcmcia restart

exit 0
