#!/bin/sh

RVAL=1
TO_BUILD=1

BUILD_TYPE=modules

if [ $1 ]
then
	if [ "$1" = "force" ]
	then
		FORCE=1
	else
		BUILD_TYPE=$1
		FORCE=0
	fi
else
	FORCE=0
fi


if [ -d /usr/src/linux-obj/i386 ]
then
    for i in $(ls /usr/src/linux-obj/i386) 
    do
		TO_BUILD=1
    	VERSION=`cat /usr/src/linux-obj/i386/$i/include/linux/version.h |grep UTS_RELEASE |awk '{printf("%s\n", substr($3, 2,length($3)-2))}'`
		NOVFS_PATH=/lib/modules/$VERSION/kernel/fs/novfs

    	if [ -e /lib/modules/$VERSION/extra/novfs.ko ]
    	then
			NOVFS_PATH=/lib/modules/$VERSION/extra
		fi

		if [ -d /lib/modules/$VERSION ]
		then

			if [ -e $NOVFS_PATH/novfs.ko ]
			then
				CUR_NOVFS_VERSION=`od -s $NOVFS_PATH/novfs.ko |grep version= |awk '{split($2,a,"=");printf("%s", a[2])}'`
				CUR_NOVFS_VFS_MAJOR=`echo $CUR_NOVFS_VERSION |awk '{split($0,a,"."); printf("%d", a[1])}'`
				CUR_NOVFS_VFS_MINOR=`echo $CUR_NOVFS_VERSION |awk '{split($0,a,"."); printf("%d", a[2])}'`
				CUR_NOVFS_VFS_SUB=`echo $CUR_NOVFS_VERSION |awk '{split($0,a,"."); printf("%d", a[3])}'`
				CUR_NOVFS_VFS_RELEASE=`echo $CUR_NOVFS_VERSION |awk '{split($0,a,"-"); printf("%d", a[2])}'`

				NOVFS_VFS_MAJOR=`cat Makefile |grep 'NOVFS_VFS_MAJOR =' |awk '{printf("%d", $3)}'`
				NOVFS_VFS_MINOR=`cat Makefile |grep 'NOVFS_VFS_MINOR =' |awk '{printf("%d", $3)}'`
				NOVFS_VFS_SUB=`cat Makefile |grep 'NOVFS_VFS_SUB =' |awk '{printf("%d", $3)}'`
				NOVFS_VFS_RELEASE=`cat Makefile |grep 'NOVFS_VFS_RELEASE =' |awk '{printf("%d", $6)}'`
				NOVFS_VFS_VERSION="$NOVFS_VFS_MAJOR.$NOVFS_VFS_MINOR.$NOVFS_VFS_SUB-$NOVFS_VFS_RELEASE"

				TO_BUILD=0

				if [ $NOVFS_VFS_MAJOR -gt $CUR_NOVFS_VFS_MAJOR ]
				then
					TO_BUILD=1
				else 
					if [ $NOVFS_VFS_MAJOR -eq $CUR_NOVFS_VFS_MAJOR ]
					then
						if [ $NOVFS_VFS_MINOR -gt $CUR_NOVFS_VFS_MINOR ]
						then
							TO_BUILD=1
						else
							if [ $NOVFS_VFS_MINOR -eq $CUR_NOVFS_VFS_MINOR ]
							then
								if [ $NOVFS_VFS_SUB -gt $CUR_NOVFS_VFS_SUB ]
								then
									TO_BUILD=1
								else
									if [ $NOVFS_VFS_SUB -eq $CUR_NOVFS_VFS_SUB ]
									then
										if [ $NOVFS_VFS_RELEASE -gt $CUR_NOVFS_VFS_RELEASE ]
										then
											TO_BUILD=1
										fi
									fi
								fi
							fi
						fi
					fi
				fi
			fi

			if [ $FORCE -eq 1 ]
			then
				TO_BUILD=1;
			fi

			if [ $TO_BUILD -eq 1 ]
			then
	    		echo Building novfs.ko for $VERSION
	    		make -C /usr/src/linux-obj/i386/$i SUBDIRS=$PWD $BUILD_TYPE 
	    		RVAL=$?
	    		if [ -e novfs.ko ]
	    		then
	    			mkdir -p -m 755 $NOVFS_PATH
	    			echo "copying novfs.ko to $NOVFS_PATH"
	    			cp novfs.ko $NOVFS_PATH
	    			RVAL=$?
	    		fi
			fi
		fi
    done
fi
exit $RVAL

