std::vector enumerate_filesystems() { std::vector res; #ifdef _WIN32 const DWORD drive_table = GetLogicalDrives(); for(unsigned n = 0; n < 26; ++n) { if((drive_table >> n) & 1) { res.emplace_back(2, char(65 + n)); res.back()[1] = ':'; } } #elif !defined(__APPLE__) // FIXME: Sensible guesses. It'll be far too much work to implement a more // factual version that works reliably across multiple POSIX // platforms, at least without adding new build dependencies. res.push_back("/home"); res.push_back("/media"); res.push_back("/"); #endif return res; }