#!/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/'
                'qed/qed_init_values_zipped-8.37.2.0.bin'
                '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
