diff --git a/exec/load/fidocfg.js b/exec/load/fidocfg.js index 72aa6e7e7f50d7ecd79e9591cf1a20443da857e4..8e6541102bc58930d24cdccdbcfaa81b5ed1f7ba 100644 --- a/exec/load/fidocfg.js +++ b/exec/load/fidocfg.js @@ -72,21 +72,21 @@ function TickITCfg() { function lcprops(obj) { var i; - - for (i in obj) { - if (i.toLowerCase() !== i) { - if (obj[i.toLowerCase()] === undefined) - obj[i.toLowerCase()] = obj[i]; - if (typeof(obj[i]) == 'Object') - lcprops(obj[i]); + var keys = Object.keys(obj); + + for (i=0; i<keys.length; i++) { + if (keys[i].toLowerCase() !== keys[i]) { + if (obj[keys[i].toLowerCase()] === undefined) + obj[keys[i].toLowerCase()] = obj[keys[i]]; + delete obj[keys[i]]; + if (typeof(obj[keys[i].toLowerCase()]) == 'Object') + lcprops(obj[keys[i].toLowerCase()]); } } } - if (!tcfg.open("r")) { - tcfg.close(); + if (!tcfg.open("r")) throw("Unable to open '"+tcfg.name+"'"); - } this.gcfg = tcfg.iniGetObject(); lcprops(this.gcfg); sects = tcfg.iniGetSections(); @@ -166,3 +166,42 @@ TickITCfg.prototype.get_next_tic_filename = function() // Add pre/suf-fix return 'ti_'+ret+'.tic'; }; +TickITCfg.prototype.save = function() +{ + var tcfg = new File(system.ctrl_dir+'tickit.ini'); + var sects; + var i; + var j; + + function writesect(section, obj) { + if (obj.links === undefined) + tcfg.iniRemoveKey(section, 'Links'); + else + tcfg.iniSetValue(section, 'Links', obj.links); + + if (obj.dir === undefined) + tcfg.iniRemoveKey(section, 'Dir'); + else + tcfg.iniSetValue(section, 'Dir', obj.dir); + + if (obj.path === undefined) + tcfg.iniRemoveKey(section, 'Path'); + else + tcfg.iniSetValue(section, 'Path', obj.path); + } + + if (!tcfg.open(tcfg.exists ? 'r+':'w+')) + throw("Unable to open '"+tcfg.name+"'"); + + writesect(null, this.gcfg); + sects = tcfg.iniGetSections().map(function(v){return v.toLowerCase();}); + for (i in this.acfg) { + writesect(i.toUpperCase(), this.acfg[i]); + while ((j=sects.indexOf(i.toLowerCase())) >= 0) { + sects.splice(j, 1); + } + } + for (i=0; i<sects.length; i++) + tcfg.iniRemoveSection(sects[i]); + tcfg.close(); +}