#include <cstdlib>
#include <string>
#ifndef _WIN32
# include <unistd.h>
# include <fcntl.h>
// This function counts the number of open file descriptors. It is used in
// some tests to make sure that we are not leaking file descriptors.
inline int count_fds() noexcept {
int count = 0;
for (int fd = 0; fd < 100; ++fd) {
if (fcntl(fd, F_GETFD) == 0) {
++count;
}
return count;
#else
// Dummy for Windows which doesn't have fcntl
return 0;
#endif
inline std::string with_data_dir(const char* filename) {
const char* data_dir = getenv("OSMIUM_TEST_DATA_DIR");
std::string result;
if (data_dir) {
result = data_dir;
result += '/';
result += filename;
return result;