#!/bin/bash
# Scan the /lib/firmware directory of the target and delete any firmware
# binaries that are not in our whitelist

# A whitelist of entire directories or specific binary files. The trailing
# slash is required.
whitelist=(     'acenic/'
                'bnx2/'
                'bnx2x/bnx2x-e2-7.13.1.0.fw'
                'cxgb4/t4fw-1.16.63.0.bin'
                'cxgb4/t4fw.bin'
                'cxgb3/'
                'ql2500_fw.bin')

if [ -z "${TARGET_DIR}" ] ; then
        echo "TARGET_DIR not defined, setting to $1"
        TARGET_DIR=$1
fi

files=$(find ${TARGET_DIR}/lib/firmware/*)
for file in ${files};
do
        if [ -d  $file ] ; then
                continue
        fi

        found=0
        for item in ${whitelist[@]};
        do
                if [ "${file/${item}}" != "${file}" ] ; then
                        found=1
                        break
                fi
        done

        if [ "${found}" -ne "1" ] ; then
                rm -v ${file}
        fi
done
