#!/bin/bash

# Set default driver name
drv_name=9054

# Verify superuser access
if [ `id -u` != 0 ]; then
    echo
    echo "   ***************************************************"
    echo "   * NOTE: You must be superuser, logged in as root, *"
    echo "   *       or have sufficient rights to unload       *"
    echo "   *       modules or this script will not work.     *"
    echo "   ***************************************************"
    echo
    echo "  ---- ERROR: Admin rights not detected, halting ----"
    echo
    exit
fi


# Verify rmmod is found
if [ -f /sbin/rmmod ]; then
    RmMod=/sbin/rmmod
fi
if [ -f /usr/sbin/rmmod ]; then
    RmMod=/usr/sbin/rmmod
fi
if [ "$RmMod" = "" ]; then
    echo "ERROR: 'rmmod' not found in /sbin or /usr/sbin"
    echo
    exit
fi

# Path to the driver nodes
path=/dev/plx

# Registered name of driver
name=Plx$drv_name

# Name of module
module=$name


echo
echo Remove: $module

# Get module load status
drv_Name=`lsmod | awk "\\$1==\"$module\" {print \\$1}"`

echo -n "  Unload module................... "
if [ "$drv_Name" = "" ]; then
    echo ERROR: \'$module\' not loaded
    echo
    exit
fi

# Generate temp file name
TmpFile=/tmp/_Plx_Rmmod_$module.tmp

# Remove module & capture output
$RmMod $module 2> $TmpFile
Rm_mod=`cat $TmpFile | awk "\\$1==\"ERROR:\" {print \\$1}"`

# Check for error
if [ "$Rm_mod" = "ERROR:" ]; then
    echo ERROR: Unable to remove module
    echo "      \-- Msg: `cat $TmpFile`"
    echo
    rm $TmpFile
    exit
else
    echo "Ok ($module)"
    rm $TmpFile
fi

echo -n "  Clear device nodes.............. "
rm -f $path/$name*
echo "Ok ($path/$name)"

# Delete the directory only if empty
if [ -d $path ]; then
    echo -n "  Delete device node path......... "
    rmdir --ignore-fail-on-non-empty ${path}
    echo "Ok ($path)"
fi
echo
