#!/vendor/bin/sh

########################################################
### init.insmod.cfg format:                          ###
### -----------------------------------------------  ###
### [insmod|setprop|enable/moprobe] [path|prop name] ###
### ...                                              ###
########################################################

if [ $# -eq 1 ]; then
  cfg_file=$1
else
  exit 1
fi

if [ -f $cfg_file ]; then
  while IFS="|" read -r action arg
  do
    case $action in
      "insmod") insmod $arg ;;
      "setprop")
        times=1
        setprop $arg 1
        while [ "$?" -ne 0 ]
        do
          if [ $times -gt 128 ]; then
            break
          fi
          let times++
          setprop $arg 1
        done ;;
      "enable") echo 1 > $arg ;;
      "modprobe")
        insmod_arg=${arg}
        for partition in system_dlkm vendor
        do
          case ${insmod_arg} in
            "-b *" | "-b")
              arg="-b $(cat /${partition}/lib/modules/modules.load)" ;;
            "*" | "")
              arg="$(cat /${partition}/lib/modules/modules.load)" ;;
          esac
          modprobe -a -d /${partition}/lib/modules $arg
        done
    esac
  done < $cfg_file
else
  exit 2
fi
