Pour ma part, j'aurais fait un système qui charge le fichier en mémoire quand nécessaire (au start/rehash de l'egg ou lors de l'ajout/la suppression d'un vip) du genre:
Et ta procédure est alors simplifiée en:
tcl
proc init:vip {} {
set fp [open "somefile" r]
set file_data [read $fp]
close $fp
set data [split $file_data "\n"]
foreach line $data {
set infos [split $line "@"]
set ::vip([string tolower [lindex $infos 0]]) [lindex $infos 1]
}
}
Et ta procédure est alors simplifiée en:
tcl
proc nicksaj {nick salon} {
if {![info exists $::vip([string tolower $nick])]} { return 0; }
set chans [split $::vip([string tolower $nick]) ","]
if { [lsearch $chans $salon] != -1 } {
putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo $salon"
}
return 1
}