comparison dep/animia/src/fd/linux.cc @ 150:ffa535b6d630

*: avoid usage of std::[pair,tuple] https://arne-mertz.de/2017/03/smelly-pair-tuple/ it's better to use real structures and such where variables are easily known... also apparently using [] on structs is actually valid? I had no idea.
author Paper <mrpapersonic@gmail.com>
date Tue, 14 Nov 2023 16:27:33 -0500
parents aa4df5a84338
children 54744a48a7d7
comparison
equal deleted inserted replaced
149:e41505d24733 150:ffa535b6d630
122 122
123 result.erase(std::remove(result.begin(), result.end(), '\n'), result.end()); 123 result.erase(std::remove(result.begin(), result.end(), '\n'), result.end());
124 return true; 124 return true;
125 } 125 }
126 126
127 bool LinuxFdTools::EnumerateOpenFiles(const std::set<pid_t>& pids, std::vector<std::pair<pid_t, std::string>>& files) { 127 bool LinuxFdTools::EnumerateOpenFiles(const std::set<pid_t>& pids, std::vector<OpenFile>& files) {
128 for (const auto& pid : pids) { 128 for (const auto& pid : pids) {
129 const std::string path = PROC_LOCATION "/" + std::to_string(pid) + "/fd"; 129 const std::string path = PROC_LOCATION "/" + std::to_string(pid) + "/fd";
130 130
131 for (const auto& dir : GetAllFilesInDir(path)) { 131 for (const auto& dir : GetAllFilesInDir(path)) {
132 if (!AreFlagsOk(pid, std::stoi(Basename(dir)))) 132 if (!AreFlagsOk(pid, std::stoi(Basename(dir))))
135 std::string name = GetFilenameFromFd(dir); 135 std::string name = GetFilenameFromFd(dir);
136 136
137 if (!IsRegularFile(name)) 137 if (!IsRegularFile(name))
138 continue; 138 continue;
139 139
140 files.push_back({pid, name}); 140 OpenFile file;
141 file.pid = pid;
142 file.path = name;
143
144 files.push_back(file);
141 } 145 }
142 } 146 }
143 return true; 147 return true;
144 } 148 }
145 149