fix(m10): item-scope take-FX fingerprint; Windows path case-fold; comments

Item scope now reads the active take's FX chain via TakeFX_* (new
fxChainIdentityForItems helper), not the owning track's chain.
normalizeSlashes lowercases on _WIN32 for detectParent. Stale
comments corrected; case-fold tests added.
This commit is contained in:
2026-07-26 18:03:20 -04:00
parent 20018c1df2
commit 7d0fcc49ac
8 changed files with 177 additions and 38 deletions
+8
View File
@@ -1,6 +1,7 @@
#include "capture_paths.h"
#include <cassert>
#include <cctype>
#include <cstdint>
#include <cstdio>
#include <cstring> // std::memcmp
@@ -124,6 +125,13 @@ std::string normalizeSlashes(const std::string& path) {
if (out.size() > 1 && out.back() == '/') {
out.pop_back();
}
#ifdef _WIN32
// Windows paths are case-insensitive. Fold to lowercase so that two paths
// that differ only in drive-letter or component casing compare equal (e.g.
// "C:/Foo/BAR.wav" == "c:/foo/bar.wav"). On macOS/Linux, exact case is
// preserved (the filesystem is case-sensitive; folding would be wrong).
for (char& c : out) c = static_cast<char>(std::tolower(static_cast<unsigned char>(c)));
#endif
return out;
}