summaryrefslogtreecommitdiff
path: root/library/config.cpp
Unidiff
Diffstat (limited to 'library/config.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/config.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/library/config.cpp b/library/config.cpp
index e07eecb..1121cd4 100644
--- a/library/config.cpp
+++ b/library/config.cpp
@@ -489,66 +489,70 @@ void Config::write( const QString &fn )
489bool Config::isValid() const 489bool Config::isValid() const
490{ 490{
491 return groups.end() != git; 491 return groups.end() != git;
492} 492}
493 493
494/*! 494/*!
495 \internal 495 \internal
496*/ 496*/
497void Config::read() 497void Config::read()
498{ 498{
499 changed = FALSE; 499 changed = FALSE;
500 500
501 if ( !QFileInfo( filename ).exists() ) { 501 if ( !QFileInfo( filename ).exists() ) {
502 git = groups.end(); 502 git = groups.end();
503 return; 503 return;
504 } 504 }
505 505
506 QFile f( filename ); 506 QFile f( filename );
507 if ( !f.open( IO_ReadOnly ) ) { 507 if ( !f.open( IO_ReadOnly ) ) {
508 git = groups.end(); 508 git = groups.end();
509 return; 509 return;
510 } 510 }
511 511
512 QTextStream s( &f ); 512 QTextStream s( &f );
513#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 513#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
514 // The below should work, but doesn't in Qt 2.3.0 514 // The below should work, but doesn't in Qt 2.3.0
515 s.setCodec( QTextCodec::codecForMib( 106 ) ); 515 s.setCodec( QTextCodec::codecForMib( 106 ) );
516#else 516#else
517 s.setEncoding( QTextStream::UnicodeUTF8 ); 517 s.setEncoding( QTextStream::UnicodeUTF8 );
518#endif 518#endif
519 519
520 QStringList list = QStringList::split('\n', s.read() ); 520 QStringList list = QStringList::split('\n', s.read() );
521 f.close(); 521 f.close();
522 522
523 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 523 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
524 if ( !parse( *it ) ) { 524 if ( !parse( *it ) ) {
525 git = groups.end(); 525 git = groups.end();
526 return; 526 return;
527 } 527 }
528 } 528 }
529} 529}
530 530
531/*! 531/*!
532 \internal 532 \internal
533*/ 533*/
534bool Config::parse( const QString &l ) 534bool Config::parse( const QString &l )
535{ 535{
536 QString line = l.stripWhiteSpace(); 536 QString line = l.stripWhiteSpace();
537
538 if ( line [0] == QChar ( '#' ))
539 return true; // ignore comments
540
537 if ( line[ 0 ] == QChar( '[' ) ) { 541 if ( line[ 0 ] == QChar( '[' ) ) {
538 QString gname = line; 542 QString gname = line;
539 gname = gname.remove( 0, 1 ); 543 gname = gname.remove( 0, 1 );
540 if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) ) 544 if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) )
541 gname = gname.remove( gname.length() - 1, 1 ); 545 gname = gname.remove( gname.length() - 1, 1 );
542 git = groups.insert( gname, ConfigGroup() ); 546 git = groups.insert( gname, ConfigGroup() );
543 } else if ( !line.isEmpty() ) { 547 } else if ( !line.isEmpty() ) {
544 if ( git == groups.end() ) 548 if ( git == groups.end() )
545 return FALSE; 549 return FALSE;
546 int eq = line.find( '=' ); 550 int eq = line.find( '=' );
547 if ( eq == -1 ) 551 if ( eq == -1 )
548 return FALSE; 552 return FALSE;
549 QString key = line.left(eq).stripWhiteSpace(); 553 QString key = line.left(eq).stripWhiteSpace();
550 QString value = line.mid(eq+1).stripWhiteSpace(); 554 QString value = line.mid(eq+1).stripWhiteSpace();
551 ( *git ).insert( key, value ); 555 ( *git ).insert( key, value );
552 } 556 }
553 return TRUE; 557 return TRUE;
554} 558}