# # patch "ChangeLog" # from [ad0bc4053096c5fdad73b9b6fed9ab342c5bf84b] # to [ea3419da8450858f72195d6719b970f28e892d88] # # patch "tests/t_normalized_filenames.at" # from [50cb5355b10548ca00c2bd8c5c95439ca9b61dd5] # to [fedb790a819bcbed4a3402f5d09c3be7b59a4a38] # # patch "vocab.cc" # from [da6bdb0081213dee3f0268846d7b0cacedc68b35] # to [306f28040121de17ab2e4849928e9cf2938943bd] # --- ChangeLog +++ ChangeLog @@ -1,5 +1,12 @@ 2005-04-22 Nathaniel Smith + * vocab.cc (verify(file_path), verify(local_path)): Normalize + paths on the way in. + * tests/t_normalized_filenames.at: Fix to match behavior + eventually declared "correct". + +2005-04-22 Nathaniel Smith + * vocab.{cc,hh}: Make verify functions public, make ATOMIC(foo)'s verify function a friend of foo, add ATOMIC_NOVERIFY macro, add long comment explaining all this. --- tests/t_normalized_filenames.at +++ tests/t_normalized_filenames.at @@ -14,7 +14,12 @@ AT_DATA(bar, [blah blah ]) -AT_CHECK(MONOTONE cat manifest, [3], [ignore], [ignore]) -AT_CHECK(MONOTONE commit --message=foo --branch=foo, [3], [ignore], [ignore]) +AT_CHECK(MONOTONE cat manifest, [], [stdout], [ignore]) +AT_CHECK(grep -q ' bar' stdout) +AT_CHECK(MONOTONE cat revision, [], [stdout], [ignore]) +AT_CHECK(grep -q '"bar"' stdout) +AT_CHECK(MONOTONE commit --message=foo --branch=foo, [], [ignore], [ignore]) +AT_CHECK(MONOTONE cat revision `BASE_REVISION`, [], [stdout], [ignore]) +AT_CHECK(grep -q '"bar"' stdout) AT_CLEANUP --- vocab.cc +++ vocab.cc @@ -149,13 +149,16 @@ } + // save back the normalized string + val.s = p.string(); + val.ok = true; } inline void verify(file_path & val) { - static std::set known_good; + static std::map known_good; if (val.ok) return; @@ -166,8 +169,11 @@ verify(loc); N(!book_keeping_file(loc), F("prohibited book-keeping path in '%s'") % val); - known_good.insert(val()); + const std::string & normalized_val = loc(); + known_good.insert(std::make_pair(val(), normalized_val)); } + + val.s = known_good.find(val())->second; val.ok = true; }