#!/bin/sh -e
#
#   /etc/init.d/zxdsl-update: compiles and installs driver for cxacru

. /lib/lsb/init-functions

install_driver()
{
    modules_dir=/lib/modules/`uname -r`
    if [ -f $modules_dir/extra/cxacru.ko ]; then
        log_success_msg "Driver cxacru already installed"
        return 0
    fi
    if [ -e "$modules_dir/kernel/drivers/usb/atm/cxacru.ko" ]; then
        mv -f "$modules_dir/kernel/drivers/usb/atm/cxacru.ko" "$modules_dir/kernel/drivers/usb/atm/cxacru.ko.tmp"
    fi
    if [ -e "$modules_dir/kernel/drivers/usb/atm/usbatm.ko" ]; then
        mv -f "$modules_dir/kernel/drivers/usb/atm/usbatm.ko" "$modules_dir/kernel/drivers/usb/atm/usbatm.ko.tmp"
    fi
    compile_dir=`mktemp -d`
    if [ $? -ne 0 ]; then
        log_failure_msg "Failed to create temporary directory"
        return 1
    fi
    PREVIOUS_DIR=`pwd`
    cd "$compile_dir"
    tar zxf /root/drivers/usbatm-zxdsl852.tar.gz
    if [ $? -ne 0 ]; then
        log_failure_msg "Failed to unpack drivers package"
        return 1
    fi
    cd usbatm
    if [ $? -ne 0 ]; then
        log_failure_msg "Failed to change directory to usbatm, drivers package might be corrupt"
        return 1
    fi
    make 
    if [ $? -ne 0 ]; then
        log_failure_msg "Failed to compile driver"
        return 1
    fi
    make install
    if [ $? -ne 0 ]; then
        log_failure_msg "Failed to install driver"
        return 1
    fi
    
    cd "$PREVIOUS_DIR"
    rm -rf "$compile_dir"
    log_success_msg "Driver cxacru installed"
}

remove_driver()
{
    modules_dir=/lib/modules/`uname -r`
    if [ -f "$modules_dir/extra/cxacru.ko" ]; then
        if rm -f "$modules_dir/extra/cxacru.ko"; then
            log_progress_msg "Driver cxacru removed"
        else
            log_failure_msg "Driver cxacru not removed"
        fi
    else
        log_progress_msg "Driver cxacru not present, so not removed"
    fi
    if [ -f "$modules_dir/extra/usbatm.ko" ]; then
        if rm -f "$modules_dir/extra/usbatm.ko"; then
            log_progress_msg "Driver usbatm removed"
        else
            log_failure_msg "Driver usbatm not removed"
        fi
    else
        log_progress_msg "Driver usbatm not present, so not removed"
    fi
    log_success_msg "Driver cxacru removed"
}

case "$1" in
start)
    log_begin_msg "Installing cxacru driver..."
    install_driver
    log_end_msg $?
    ;;
stop)
    ;;
restart|force-reload)
    ;;
remove)
    remove_driver
    ;;
reinstall)
    remove_driver
    install_driver
    ;;
*)
    log_success_msg "Usage: /etc/init.d/zxdsl-compile {start|stop|restart|force-reload|remove}"
    exit 1
    ;;
esac

exit 0
