bool IniFile::ReadFile( RageFileBasic &f ) { RString keyname; while( 1 ) { RString line; /* Read lines until we reach a line that doesn't end in a backslash */ while( true ) { RString s; switch( f.GetLine(s) ) { case -1: m_sError = f.GetError(); return false; case 0: return true; /* eof */ } utf8_remove_bom( s ); line += s; if( line.empty() || line[line.size()-1] != '\\' ) break; line.erase( line.end()-1 ); } if( line.size() == 0 ) continue; if( line[0] == '#' ) continue; /* comment */ if( line.size() > 1 && line[0] == '/' && line[1] == '/' ) continue; /* comment */ if( line[0] == '[' && line[line.size()-1] == ']' ) { /* New section. */ keyname = line.substr(1, line.size()-2); } else { /* New value. */ size_t iEqualIndex = line.find("="); if( iEqualIndex != string::npos ) { RString valuename = line.Left( (int) iEqualIndex ); RString value = line.Right( line.size()-valuename.size()-1 ); Trim( valuename ); if( keyname.size() && valuename.size() ) SetValue( keyname, valuename, value ); } } } }
bool IniFile::ReadFile( RageFileBasic &f ) { CString keyname; while( 1 ) { CString line; switch( f.GetLine(line) ) { case -1: m_sError = f.GetError(); return false; case 0: return true; /* eof */ } utf8_remove_bom( line ); if( line.size() == 0 ) continue; if( line[0] == '#' ) continue; /* comment */ if( line.size() > 1 && line[0] == '/' && line[1] == '/' ) continue; /* comment */ if( line[0] == '[' && line[line.length()-1] == ']' ) { /* New section. */ keyname = line.substr(1, line.size()-2); } else //if a value { int iEqualIndex = line.find("="); if( iEqualIndex != -1 ) { CString valuename = line.Left(iEqualIndex); CString value = line.Right(line.length()-valuename.length()-1); if( keyname.size() && valuename.size() ) SetValue(keyname,valuename,value); } } } }