#! /usr/bin/perl
#
#  TOPPERS Software
#      Toyohashi Open Platform for Embedded Real-Time Systems
# 
#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
#                              Toyohashi Univ. of Technology, JAPAN
#  Copyright (C) 2004-2007 by Embedded and Real-Time Systems Laboratory
#              Graduate School of Information Science, Nagoya Univ., JAPAN
# 
#  L쌠҂́Cȉ(1)`(4)̏𖞂ꍇɌC{\tgEF
#  Ai{\tgEFAς̂܂ށDȉjgpEE
#  ρEĔzziȉCpƌĂԁj邱Ƃ𖳏ŋD
#  (1) {\tgEFA\[XR[ȟ`ŗpꍇɂ́CL̒
#      \C̗pщL̖ۏ؋K肪Ĉ܂܂̌`Ń\[
#      XR[hɊ܂܂Ă邱ƁD
#  (2) {\tgEFACCu`ȂǁC̃\tgEFAJɎg
#      pł`ōĔzzꍇɂ́CĔzzɔhLgip
#      ҃}jAȂǁjɁCL̒쌠\C̗pщL
#      ̖ۏ؋Kfڂ邱ƁD
#  (3) {\tgEFAC@ɑgݍނȂǁC̃\tgEFAJɎg
#      płȂ`ōĔzzꍇɂ́Ĉꂩ̏𖞂
#      ƁD
#    (a) ĔzzɔhLgip҃}jAȂǁjɁCL̒
#        쌠\C̗pщL̖ۏ؋Kfڂ邱ƁD
#    (b) Ĕzž`ԂCʂɒ߂@ɂāCTOPPERSvWFNg
#        񍐂邱ƁD
#  (4) {\tgEFA̗pɂ蒼ړI܂͊ԐړIɐ邢Ȃ鑹
#      QCL쌠҂TOPPERSvWFNgƐӂ邱ƁD
#      ܂C{\tgEFÃ[U܂̓Gh[ÛȂ闝
#      RɊÂCL쌠҂TOPPERSvWFNg
#      Ɛӂ邱ƁD
# 
#  {\tgEFÁCۏ؂Œ񋟂Ă̂łDL쌠҂
#  TOPPERSvWFNǵC{\tgEFAɊւāC̎gpړI
#  ɑ΂K܂߂āCȂۏ؂sȂD܂C{\tgEF
#  A̗pɂ蒼ړI܂͊ԐړIɐȂ鑹QɊւĂC
#  ̐ӔC𕉂ȂD
# 
#  @(#) $Id: applyrename 332 2007-07-17 12:15:37Z hiro $
# 

#
#  t@CɃl[Kp
#
sub applyrename
{
	local($infile) = @_;
	local($outfile) = $infile.".new";
	local($line);

	open(INFILE, "< ".$infile) || die;
	open(OUTFILE, "> ".$outfile) || die;

	while ($line = <INFILE>) {
		$line =~ s/\b(_?)($syms)\b/$1_kernel_$2/gc;
		print OUTFILE $line;
	}

	close(INFILE);
	close(OUTFILE);

	if (`cmp $infile $outfile`) {
		rename($infile, $infile.".bak");
		rename($outfile, $infile);
		print STDERR "Modified: ",$infile,"\n";
	}
	else {
		unlink($outfile);
	}
}

#
#  G[`FbN
#
if ($#ARGV < 1) {
	die "Usage: appyrename <prefix> <filelist>\n";
}

#
#  
#
@syms = ();
$name = $ARGV[0];

#
#  V{Xgǂݍ
#
$deffile = $name."_rename.def";
open(INFILE, $deffile) || die "Cannot open $deffile";
while ($line = <INFILE>) {
	chomp $line;
	if ($line =~ /^#(.*)$/) {
		# do nothing
	}
	elsif ($line =~ /^INCLUDE[ \t]+(.*)$/) {
		# do nothing
	}
	elsif ($line ne "") {
		@syms = (@syms, $line)
	}
}
close(INFILE);

#
#  K\
#
$syms = join("|", @syms);

#
#  t@CɃl[Kp
#
shift @ARGV;
foreach $infile (@ARGV) {
	# t@CłȂ΃XLbv
	next unless (-f $infile);

	do applyrename($infile) if ($infile ne $deffile);
}
