Skip to content
  • Harald Sitter's avatar
    rebuild the iteration tech using better architecture · e4c9db69
    Harald Sitter authored
    the previous approach just didn't cut it for windows.
    
    the new code sports a forward iterator that fronts for a
    platform-dependent walker object that encapsulates the iteration logic
    
    this looks and feels a lot like std::filesystem API but unfortunately we
    cannot really use that API directly because I want this change to be
    conservative enough to land in 22.04 as a bugfix for windows, also on
    POSIX std::filesystem returns the st_size (size in bytes) whereas we
    want the actual occupied blocks (st_blocks*size), and lastly it's also a
    tad slower because of heavier abstraction
    
    should we choose to go the std::filesystem route in the future anyway it
    should be a trivial switch because of how similar the APIs are.
    
    furthermore move to always convert from/to utf8. the QFile helpers
    ultimately end up in the same code paths anyway, so it seems simpler to
    just go with the utf8 variants directly (also on windows QFile somehow
    produces bogus output for actual unicode characters)
    
    the combined set of changes improves windows support substantially. it's
    now correctly iterating unicode entries, and correctly displaying
    unicode characters. iteration in general now has unit testing.
    
    BUG: 442299
    e4c9db69