rendered paste bodysub gst_replace_ini
{
open(DEBUG, ">/tmp/replace_ini.dbg");
my ($file, $section, $var, $value) = @_;
my ($buff, $i, $found_flag, $ret);
my ($pre_space, $post_comment, $sec_save);
print DEBUG "File : ".$file." Section :".$section." Var : ".var." Value : ".$value."\n";
&gst_report_enter ();
&gst_report ("replace_ini", $var, $section, $file);
print DEBUG "gst_report returns : File : ".$file." Section :".$section." Var : ".var."\n";
$buff = &gst_file_buffer_load ($file);
print DEBUG "file shoud be unchanged here : ".$file."\n";
&gst_file_buffer_join_lines ($buff);
$found_flag = 0;
foreach $i (@$buff)
{
$pre_space = $post_comment = "";
chomp $i;
$pre_space = $1 if $i =~ s/^([ \t]+)//;
$post_comment = $1 if $i =~ s/([ \t]*[\#;].*)//;
if ($i ne "")
{
if ($i =~ /\[$section\]/i)
{
$i =~ s/(\[$section\][ \t]*)//i;
$sec_save = $1;
$found_flag = 1;
print DEBUG "sec_save : " .$sec_save."\n";
}
if ($found_flag)
{
if ($i =~ /\[[^\]]+\]/)
{
$i = "$var = $value\n$i" if ($value ne "");
$found_flag = 2;
}
if ($i =~ /^$var[ \t]*=/i)
{
if ($value ne "")
{
$i =~ s/^($var[ \t]*=[ \t]*).*/$1$value/i;
}
else
{
$i = "";
}
$found_flag = 2;
}
print DEBUG "found_flag : ".$found_flag."\n";
}
print DEBUG "!!! NOT found_flag at all !!! \n";
}
if ($found_flag && $sec_save ne "")
{
$i = $sec_save . $i;
$sec_save = "";
}
$i = $pre_space . $i . $post_comment . "\n";
last if $found_flag == 2;
}
push @$buff, "\n[$section]\n" if (!$found_flag);
push @$buff, "$var = $value\n" if ($found_flag < 2 && $value ne "");
&gst_file_buffer_clean ($buff);
$ret = &gst_file_buffer_save ($buff, $file);
print DEBUG "gst_file_buffer_save : File : ".$file." Section :".$section." Var : ".var."\n";
&gst_report_leave ();
print DEBUG "gst_report_leave : File : ".$file." Section :".$section." Var : ".var."\n";
return $ret;
}