Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cerrno>
- #include <cstring>
- #include <cstdlib>
- #include <cstdint>
- #include <iostream>
- #include <map>
- #include <string>
- #include <unistd.h>
- #include <sys/types.h>
- #include <dirent.h>
- #include <sys/stat.h>
- int main(int argc, char *argv[]) {
- const char *dirname = argc > 1 ? argv[1] : nullptr;
- if (! dirname || chdir(dirname)) {
- std::cerr << dirname << ": chdir(2) failed: "
- << strerror(errno) << std::endl;
- exit(EXIT_FAILURE);
- }
- DIR *dir = opendir(dirname);
- if (! dir) {
- std::cerr << dirname << ": opendir(3) failed: "
- << strerror(errno) << std::endl;
- exit(EXIT_FAILURE);
- }
- std::multimap<off_t, std::string> files;
- for (dirent *entry = readdir(dir); entry; entry = readdir(dir)) {
- struct stat stats;
- if (stat(entry->d_name, &stats)) {
- std::cerr << entry->d_name << ": stat(2) failed: "
- << strerror(errno) << std::endl;
- }
- files.insert(std::make_pair(stats.st_size, std::string(entry->d_name)));
- }
- if (errno) {
- std::cerr << dirname << ": readdir(3) failed: "
- << strerror(errno) << std::endl;
- }
- closedir(dir);
- for (auto entry : files) {
- std::cout << entry.first << "\t" << entry.second << std::endl;
- }
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement