#include "file.h" #include FileSize::FileSize(uint64_t fs) : fs(fs) {} File::File(uint64_t fs, uint64_t inode, uint64_t linkcount, const std::string& path) : filesize(fs), inode(inode), linkcount(linkcount), path(path) {} Hash File::createHash() { Hash hash; Hash::create(hash, path); return hash; } std::ostream& operator<<(std::ostream& str, const FileSize& fs) { static const char PREFIX[] {' ', 'K', 'M', 'G', 'T', 'P', 'E'}; static const uint_fast8_t PREFIXCOUNT = 7; static const uint_fast32_t FACTOR = 1000; static const uint_fast32_t COMMA = 100; // nach komma stellen uint64_t cpy = fs.fs * COMMA; uint_fast8_t prefix = 0; while(cpy > (FACTOR * 3 * COMMA) && prefix < PREFIXCOUNT) { cpy /= FACTOR; ++prefix; } str << std::setprecision(2) << std::fixed << (cpy / (float) COMMA); if(prefix > 0) str << PREFIX[prefix]; return str << "B"; }