sub 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; }