diff --git a/src/love/lib/ini.lua b/src/love/lib/ini.lua index 43fee448..d56bf38c 100644 --- a/src/love/lib/ini.lua +++ b/src/love/lib/ini.lua @@ -34,6 +34,27 @@ function ini.load( filePath ) return nil end +function ini.loadString( iniString ) + local iniTable = {} + local currentSection = "default" + for line in iniString:gmatch( "[^\r\n]+" ) do + local isComment = string.match( line, "^%s*;.*$") + if line ~= "" and isComment == nil then + local section = string.match( line, "%[%s*(.*)%s*%]" ) + if section ~= nil then + currentSection = section + iniTable[section] = {} + else + local variableName, variableValue = string.match( line, "^%s*(.*[^%s])%s*=%s*(.*[^%s])%s*$" ) + if variableName and variableValue then + iniTable[currentSection][variableName] = variableValue + end + end + end + end + return iniTable +end + function ini.save( iniTable, file ) if iniTable then local writeString = "" diff --git a/src/love/settings.lua b/src/love/settings.lua index b7498917..93e0b0fa 100644 --- a/src/love/settings.lua +++ b/src/love/settings.lua @@ -105,7 +105,7 @@ if curOS == "NX" then love.filesystem.write("settings.ini", settingsStr) end - settingsIni = ini.load("settings.ini") + settingsIni = ini.load("settings.ini") or ini.loadString(settingsStr) if ini.readKey(settingsIni, "Video", "hardwareCompression") == "true" then settings.hardwareCompression = true