| 170 | namespace util { |
| 171 | |
| 172 | std::string StrError(int errnum) { |
| 173 | constexpr int kStrErrorSize = 1024; |
| 174 | char buffer[kStrErrorSize]; |
| 175 | char *str = nullptr; |
| 176 | #if defined(__GLIBC__) && defined(_GNU_SOURCE) |
| 177 | str = strerror_r(errnum, buffer, kStrErrorSize - 1); |
| 178 | #elif defined(_WIN32) |
| 179 | strerror_s(buffer, kStrErrorSize - 1, errnum); |
| 180 | str = buffer; |
| 181 | #else |
| 182 | strerror_r(errnum, buffer, kStrErrorSize - 1); |
| 183 | str = buffer; |
| 184 | #endif |
| 185 | std::ostringstream os; |
| 186 | os << str << " Error #" << errnum; |
| 187 | return os.str(); |
| 188 | } |
| 189 | } // namespace util |
| 190 | |
| 191 | #ifdef OS_WIN |
no outgoing calls
no test coverage detected