#define MS_CLASS "Utils::File"
#include "Logger.hpp"
#include "MediaSoupErrors.hpp"
#include "Utils.hpp"
#include <cerrno>
#include <sys/stat.h>
#ifdef _WIN32
#include <io.h>
#define __S_ISTYPE(mode, mask) (((mode)&_S_IFMT) == (mask))
#define S_ISREG(mode) __S_ISTYPE((mode), _S_IFREG)
#else
#include <unistd.h>
#endif
namespace Utils
{
void Utils::File::CheckFile(const char* file)
{
MS_TRACE();
struct stat fileStat; int err;
err = stat(file, &fileStat);
if (err != 0)
{
MS_THROW_ERROR("cannot read file '%s': %s", file, std::strerror(errno));
}
if (!S_ISREG(fileStat.st_mode))
{
MS_THROW_ERROR("'%s' is not a regular file", file);
}
err = access(file, R_OK);
if (err != 0)
{
MS_THROW_ERROR("cannot read file '%s': %s", file, std::strerror(errno));
}
}
}