#!/bin/sh
#
# momonga	This shell script is for Momonga Linux Support.
#
#
# Author:	Makoto Kikutani <g@kondara.org>
#			Tenkou N. Hattori <tnh@kondara.org>
#			Dyky Matsuda <dyky@kondara.org>
#
# chkconfig:  345 90 90
# description: Momonga Linux Support
#

[ "$1" != "start" -a "$1" != "restart" ] && exit 0

echo -n "relinking some header files"

curker=`uname -r`
case $curker in
  *own) suffix="own" ;;
  *dp264) suffix="dp264" ;;
  *dp264-smp) suffix="dp264-smp" ;;
  *nautilus) suffix="nautilus" ;;
  *wildfire) suffix="wildfire" ;;
  *cm) suffix="cm" ;;
  *cm-smp) suffix="cm-smp" ;;
  *cm-co) suffix="cm-co" ;;
  *p4) suffix="p4" ;;
  *p4-smp) suffix="p4-smp" ;;
  *p4-co) suffix="p4-co" ;;
  *icc) suffix="icc" ;;
  *icc-smp) suffix="icc-smp" ;;
  *k7) suffix="k7" ;;
  *k7-smp) suffix="k7-smp" ;;
  *k7-co) suffix="k7-co" ;;
  *k8) suffix="k8" ;;
  *k8-smp) suffix="k8-smp" ;;
  *k8-co) suffix="k8-co" ;;
  *fiva) suffix="fiva" ;;
  *smp) suffix="smp" ;;
  *co) suffix="co" ;;
  *um) suffix="dummy" ;;
  *) suffix="uni" ;;
esac

name=`basename $curker $suffix`
if [ -d /usr/src ]; then
  cd /usr/src
  for h in linux;  do
    for hh in $h $h-2.6; do
      if [ ! -e $hh -o -L $hh ]; then
        /bin/rm -f $hh
        ln -sf $h-$name /usr/src/$hh
      fi
    done
# For kernel24-headers and kernel24-source:
# use mose recent headers and source are linked.
    kernel24=`/bin/ls -d /usr/src/linux-2.4.* 2>/dev/null`
    if [ "x$kernel24" != "x" ]; then
      ln -sf `/bin/ls -d /usr/src/linux-2.4.* 2>/dev/null | sort -k 3 -t . -n -r | head -n 1 2>/dev/null` /usr/src/linux-2.4
    fi
    if [ $suffix = "own" ] ; then
      exit;
    fi
  done
fi

# For glibc-kernheaders:
#   re-link /usr/include/{linux,asm,sound}
#   if /usr/src/linux-libc-headers-<kernel_ver> exists,
#     use /usr/src/linux-libc-headers-<kernel_ver>/include/{linux,asm,sound}
#   else
#     use /usr/src/linux/include/{linux,asm,sound}
kernelpkgver=`uname -r | awk -F '-' '{print $1;}'`
glibc_kernheaders=''
if [ -d /usr/src/linux-libc-headers-$kernelpkgver ] ; then
  glibc_kernheaders=/usr/src/linux-libc-headers-$kernelpkgver  
else
  # altenatively use maximum revision dir
  glibc_kernheaders=`/bin/ls -d /usr/src/linux-libc-headers-2.6.* 2>/dev/null | sort -k 3 -t . -n -r | head -n 1 2>/dev/null`
fi
cd /usr/include
if [ -h linux -a -h asm -a -h sound ] ; then
  rm -f linux asm sound
  if [ "x$glibc_kernheaders" != "x" ]; then
      for dir in linux asm sound; do
	ln -sf $glibc_kernheaders/include/$dir $dir
      done
  else
      for dir in linux asm sound; do
	ln -sf /usr/src/linux/include/$dir $dir
      done
  fi
fi

if [ -d /usr/include/linux ]; then
  for h in autoconf modversions version;  do
    if [ ! -e ${h}.h -o -L ${h}.h ]; then
      /bin/rm -f ${h}.h
      kernel24=`/bin/ls -d /usr/src/linux-2.4.* 2>/dev/null`
      if [ "x$kernel24" != "x" ]; then
        ln -sf /usr/src/linux-2.4/include/linux/${h}-uni.h /usr/src/linux-2.4/include/linux/${h}.h
      fi
    fi
  done
  for h in autoconf compile version;  do
    if [ ! -e ${h}.h -o -L ${h}.h ]; then
      /bin/rm -f ${h}.h
      if [ "x$glibc_kernheaders" != "x" ]; then
	# linux-libc-headers does not contain some headers.
	# Use kernel headers.
	ln -sf /usr/src/linux-2.6/include/linux/${h}-${suffix}.h /usr/include/linux/${h}.h
      else
        ln -sf /usr/include/linux/${h}-${suffix}.h /usr/include/linux/${h}.h
      fi
    fi
  done
fi

[ "$1" != "start" ] && exit 0

if [ -f /etc/sysconfig/firsttime/RUN_FIRSTTIME ] ; then
  pushd /etc/sysconfig/firsttime > /dev/null
  for i in *
  do
    case $i in
      RUN_FIRSTTIME) ;;
      *) sh $i;;
    esac
  done
  popd > /dev/null
fi
rm -f /etc/sysconfig/firsttime/RUN_FIRSTTIME
