#!/bin/sh

if [ "`id -u`" != "0" ]; then
 echo "You must be root to use this program!"
 exit 0
fi

if [ $# -lt 1 -o $# -gt 3 ]; then
  echo -n "usage: `basename $0` " 
  echo "<--pre|--preun|--post|--postun> [<kernel-release> [pkg-count]]"
  exit 0
fi

if [ $# -gt 1 ]; then
  kver="$2"
else
  kver="`uname -r`"
fi

libdir="lib"
test "`uname -i`" == "x86_64" && libdir="lib64"

ext=ko
LD_OPTIONS="-d -r -o"

strings /usr/X11R6/$libdir/modules/drivers/nvidia_drv.o | \
  grep -q "NVIDIA X Driver"
if [ $? -eq 0 ]; then
nver="`strings /usr/X11R6/$libdir/modules/drivers/nvidia_drv.o | grep \
  "NVIDIA X Driver" |awk '{print $6}'`"
else
  exit 0
fi

if [ "$1" == "--post" ]; then
if [ -r /lib/modules/scripts/nvidia/${kver}/nv-linux.o-${nver} -a \
     -r /lib/modules/scripts/nvidia/nv-kernel.o-${nver} ]; then
    ld $LD_OPTIONS /lib/modules/${kver}/kernel/drivers/video/nvidia.$ext \
      /lib/modules/scripts/nvidia/${kver}/nv-linux.o-${nver} \
      /lib/modules/scripts/nvidia/nv-kernel.o-${nver}
    # Bug 39949
    depmod -a ${kver}
else
  echo
  echo "WARNING: nVidia kernel interface (nv-linux.o) or nVidia binary-only" 
  echo "         part (nv-kernel.o) is missing."
  echo
  echo "Missing file(s):"
  test -r /lib/modules/scripts/nvidia/${kver}/nv-linux.o-${nver} ||
    echo " /lib/modules/scripts/nvidia/${kver}/nv-linux.o-${nver}"
  test -r /lib/modules/scripts/nvidia/nv-kernel.o-${nver} || 
    echo " /lib/modules/scripts/nvidia/nv-kernel.o-${nver}"
  echo
  exit 1
fi
fi

if [ "$1" == "--preun" ]; then
  rm -f /lib/modules/${kver}/kernel/drivers/video/nvidia.$ext
fi
