post_install() {

    /sbin/ldconfig

    echo
    echo "Checking libusb-0.1"

    if tr -d '\0' < /etc/ld.so.cache | grep -qa libusb-0.1; then
        echo "libusb-0.1 : [ YES ]"

        for sane_dir in \
            /usr/lib64/sane \
            /usr/lib/sane \
            /usr/lib/i386-linux-gnu/sane \
            /usr/lib/x86_64-linux-gnu/sane \
            /usr/lib/arm-linux-gnueabihf/sane \
            /usr/lib/aarch64-linux-gnu/sane \
            /usr/lib/mipsel-linux-gnu/sane \
            /usr/lib/mips64el-linux-gnuabi64/sane \
            /usr/lib/mips64el-linux-gnu/sane \
            /usr/lib/sw_64-linux-gnu/sane \
            /usr/lib/loongarch64-linux-gnu/sane
        do
            if [ -d "$sane_dir" ]; then
                ln -sf /opt/apps/scanner-driver-avision/sane/libsane-avision_adv.so.1.0.22 "$sane_dir"/libsane-avision_adv.so
                ln -sf /opt/apps/scanner-driver-avision/sane/libsane-avision_adv.so.1.0.22 "$sane_dir"/libsane-avision_adv.so.1
            fi
        done
    else
        echo "libusb-0.1 : [ NO ]"
    fi


    echo
    echo "Checking libusb-1.0"

    if tr -d '\0' < /etc/ld.so.cache | grep -qa libusb-1.0; then
        echo "libusb-1.0 : [ YES ]"

        for sane_dir in \
            /usr/lib64/sane \
            /usr/lib/sane \
            /usr/lib/i386-linux-gnu/sane \
            /usr/lib/x86_64-linux-gnu/sane \
            /usr/lib/arm-linux-gnueabihf/sane \
            /usr/lib/aarch64-linux-gnu/sane \
            /usr/lib/mipsel-linux-gnu/sane \
            /usr/lib/mips64el-linux-gnuabi64/sane \
            /usr/lib/mips64el-linux-gnu/sane \
            /usr/lib/sw_64-linux-gnu/sane \
            /usr/lib/loongarch64-linux-gnu/sane
        do
            if [ -d "$sane_dir" ]; then
                ln -sf /opt/apps/scanner-driver-avision/sane/libsane-avision_adv.so.1.0.22_1.0 "$sane_dir"/libsane-avision_adv.so
                ln -sf /opt/apps/scanner-driver-avision/sane/libsane-avision_adv.so.1.0.22_1.0 "$sane_dir"/libsane-avision_adv.so.1
            fi
        done
    else
        echo "libusb-1.0 : [ NO ]"
    fi


    echo
    SANECONF_PATH="/etc/sane.d/dll.conf"

    if [ -e "$SANECONF_PATH" ]; then
        echo "Checking SANE $SANECONF_PATH"
        if ! grep -q "^avision_adv$" "$SANECONF_PATH"; then
            echo "Not found: adding 'avision_adv'"
            echo "avision_adv" >> "$SANECONF_PATH"
        else
            echo "'avision_adv' already present."
        fi
    fi


    # Udev rules reload
    if command -v udevadm >/dev/null 2>&1; then
        UDEVPROGRAM=$(command -v udevadm)
        echo "$UDEVPROGRAM control --reload"
        "$UDEVPROGRAM" control --reload || \
        "$UDEVPROGRAM" control --reload-rules || \
        "$UDEVPROGRAM" control --reload_rules
        echo "$UDEVPROGRAM trigger --action=add"
        "$UDEVPROGRAM" trigger --action=add
    elif command -v udevcontrol >/dev/null 2>&1; then
        UDEVPROGRAM=$(command -v udevcontrol)
        echo "$UDEVPROGRAM reload_rules"
        "$UDEVPROGRAM" reload_rules
    fi

    /sbin/ldconfig
}


post_upgrade() {
    post_install
}


pre_remove() {

    if [ "$1" == "remove" ]; then
        for sane_dir in \
            /usr/lib64/sane \
            /usr/lib/sane \
            /usr/lib/i386-linux-gnu/sane \
            /usr/lib/x86_64-linux-gnu/sane \
            /usr/lib/arm-linux-gnueabihf/sane \
            /usr/lib/aarch64-linux-gnu/sane \
            /usr/lib/mipsel-linux-gnu/sane \
            /usr/lib/mips64el-linux-gnuabi64/sane \
            /usr/lib/mips64el-linux-gnu/sane \
            /usr/lib/sw_64-linux-gnu/sane \
            /usr/lib/loongarch64-linux-gnu/sane
        do
            if [ -L "$sane_dir"/libsane-avision_adv.so ]; then
                rm -f "$sane_dir"/libsane-avision_adv.so
            fi
            if [ -L "$sane_dir"/libsane-avision_adv.so.1 ]; then
                rm -f "$sane_dir"/libsane-avision_adv.so.1
            fi
        done
    fi

    /sbin/ldconfig
}
