sub gst_replace_ini { my ($file, $section, $var, $value) = @_; my ($buff, $i, $found_flag, $ret); my ($pre_space, $post_comment, $sec_save); &gst_report_enter (); &gst_report ("replace_ini", $var, $section, $file); $buff = &gst_file_buffer_load ($file); &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; } 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; } } } 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); &gst_report_leave (); return $ret; }