mapping ini(string fname) { Stdio.FILE inifile = Stdio.FILE(fname); string line; mapping out = ([]); string currsect; while(line=inifile->gets()) { // strip comments, if any line = String.trim_whites((line/"#")[0]); if(!sizeof(line)) // empty line, skip continue; if(line[0]=='[' && line[-1]==']') // section heading { currsect = String.trim_whites(line[1..sizeof(line)-2]); continue; } if(String.count(line, "=")>0) // variable assignment { if(!currsect) { werror("%s\: skipping garbage before any section heading\n", fname); continue; } string var = String.trim_whites((line/"=")[0]); string value = String.trim_whites(line[search(line, "=")+1..]); out[currsect]+=([var:value]); } else { throw(({"Error reading "+fname+"\n", backtrace()})); } } inifile->close(); return out; }