proc ini_write {inifile section item value} { # Look for [$section] then set ok 0 # at next [(.*)] if ok==0 write entry and [] to new file set section [string tolower [join [lindex [list [split $section]] 0]]] set item [join [lindex [list [split $item]] 0]] set value [join [lrange [split $value] 0 end]] if {[lindex $inifile 0] == "" || [lindex $section 0] == "" || [lindex $item 0] == ""} { return 0 } if {![file exists $inifile] || [file size $inifile] == 0} { set filew [open $inifile w] puts $filew "\[$section\]" puts $filew "[string tolower $item]=$value" close $filew; return 1 } set fileo [open $inifile r] set cursect ""; set sect "" while {![eof $fileo]} { set rline [string trim [gets $fileo]] if {$rline != "" || [string index $rline 0] != "\;"} { if {[string index $rline 0] == "\[" && [string index $rline [expr [string length $rline] - 1]] == "\]"} { set cursect [string tolower [string range $rline 1 [expr [string length $rline] - 2]]] lappend sect $cursect } { set im [string tolower [string range $rline 0 [expr [string first = $rline] - 1]]] set vl [string range $rline [expr [string first = $rline] + 1] end] lappend [join "ini $cursect" ""]($im) $vl } } } close $fileo; unset fileo if {[lsearch $sect $section] == -1} { lappend sect $section } set [join "ini $section" ""]([string tolower $item]) $value set fileo [open $inifile w] foreach sct $sect { puts $fileo "\[$sct\]" foreach ite [array names [join "ini $sct" ""]] { set ite [lindex $ite 0] set valu [set [join "ini $sct" ""]($ite)] if {$ite != ""} { puts $fileo "$ite=[join $valu]" } } puts $fileo "" } close $fileo return 1 }