#!/usr/bin/perl -w

#----------------------------------------------------------------------
# copyright (C) 1999-2005 Mitel Networks Corporation
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 		
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 		
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
# 
# Technical support for this program is available from Mitel Networks 
# Please visit our web site www.mitel.com/sme/ for details.
#----------------------------------------------------------------------

package esmith;

use strict;
use Errno;
use esmith::templates;

opendir(BOOT, "/boot") or die("Can't open /boot directory: $!\n");

while (defined (my $file = readdir(BOOT)))
{
    next unless $file =~ /System.map-(.*)/;
    my $version = $1;
    open(MODULES, "</etc/modprobe.conf") or
	die "Could not read /etc/modprobe.conf: $!";

    my $pid = open(DEPMOD, "|-");
    $SIG{ALRM} = sub { die "whoops, depmod pipe broke" };

    if ($pid)
    {  # parent
	while (<MODULES>)
	{
	    s/\$\(\/bin\/uname -r\)/$version/;
	    print DEPMOD;
	}
	close(DEPMOD) || warn "depmod exited $?";
	close(MODULES);
    }
    else
    {     # child
	exec("/sbin/depmod",
		    "-C", "/dev/stdin",
		    "-a",
		    "-F", "/boot/System.map-$version",
		    "$version")
	    or die "can't exec depmod: $!";
	# NOTREACHED
    }
}
closedir(BOOT) or die("Can't close /boot: $!\n");

exit (0);
