<br><br><div><span class="gmail_quote">On 10/29/07, <b class="gmail_sendername">Oswald Buddenhagen</b> <<a href="mailto:ossi@kde.org">ossi@kde.org</a>> wrote:</span><blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">
On Sun, Oct 28, 2007 at 09:57:30PM -0500, Thomas Braxton wrote:<br>> This patch fixes the wierdness and<br>><br>good<br><br>> removes entries from other locales from the entryMap,<br>><br>good, but ...<br><br>
> since I was already in the area ;)<br>><br>cumulative patches suck. don't do them unless necessary (yes, svn makes<br>them necessary more often than one'd like it to, but not in this case).<br><br>> I also added a test, since the test for "stringEntry1[fr]" was wrong
<br>> since KConfigGroup was saving the key as "stringEntry1\x5cfr\x5d", I<br>> think those are the right codes.<br>><br>yes. you should have tracked the kconfig_new_take2 branch. ;)<br><br>pasting the patch wasn't particularly clever ... the line breaks don't
<br>exactly help applying or reading it. :}<br>btw, gmail's mime type detection works for me - maybe the windows<br>lineendings were at fault or maybe gmail uses a mime type delivered by<br>the browser - dunno.<br><br>
>  Index: tests/kconfigtest.cpp<br>> ===================================================================<br>> --- tests/kconfigtest.cpp (revision 730047)<br>> +++ tests/kconfigtest.cpp (working copy)<br>> @@ -500,6 +527,23 @@
<br>> +  // test for entries that are marked as deleted when there is no default<br>> +  KConfig config("kconfigtest", KConfig::SimpleConfig); // make sure there<br>> are no defaults<br>> +  cg = config.group
("Portable Devices");<br>> +  cg.writeEntry("devices|manual|(null)", "whatever");<br>> +  cg.writeEntry("devices|manual|/mnt/ipod", "/mnt/ipod");<br>> +  cg.sync();
<br>> +<br>> +  int count=0;<br>> +  foreach(const QByteArray& item, readLines())<br>> +      if (item.startsWith("devices|"))<br>> +          count++;<br>> +  QVERIFY(count == 2);<br>> +  
cg.deleteEntry("devices|manual|/mnt/ipod");<br>> +  cg.sync();<br>> +  foreach(const QByteArray& item, readLines())<br>> +      QVERIFY(item != "devices|manual|/mnt/ipod[$d]");<br>><br>
that doesn't test that the entry is gone, though.<br>i guess copying the startsWith("devices|") counter and comparing with<br>one would make more sense.<br><br>> Index: config/kconfigini.cpp<br>> ===================================================================
<br>> --- config/kconfigini.cpp (revision 730047)<br>> +++ config/kconfigini.cpp (working copy)<br>> @@ -202,10 +202,8 @@<br>>              if (!locale.isEmpty()) {<br>>                  if (locale != currentLocale) {
<br>>                      // backward compatibility. C == en_US<br>> -                    if (locale.at(0) != 'C' || currentLocale != "en_US") {<br>> -                        aKey += '[' + locale + ']';
<br>> -                        locale = QByteArray();<br>> -                    }<br>><br>wow, this was impressively broken - locale appended after the key was<br>decoded.<br><br>> +    // FIXME is this needed anymore?
<br>><br>why not?<br>>      if ( !file.size() && ((fileMode == -1) || (fileMode == 0600)) ) {<br>>          // File is empty and doesn't have special permissions: delete it.<br>>          file.abort
();<br>><br><br>while trying to understand the rest of the patch i noticed that<br>EntryDefault isn't set anywhere. consequently all the logic building on<br>top of it is dysfuct. so there is little point in reviewing the patch,
<br>i figure.<br><br>procedure:<br>- revert everything<br>- do the localized entry purge, commit<br>- add the failing tests (possibly come up with more?), commit<br>- fix cascaded parsing. revisit the problems. if they persist, post a
<br>  new patch.<br><br>--<br>Hi! I'm a .signature virus! Copy me into your ~/.signature, please!<br>--<br>Chaos, panic, and disorder - my work here is done.<br></blockquote></div>this should now be fixed, update & let me know if anything doesn't work right