Move file utilities into their own file
This commit is contained in:
parent
d077aae74c
commit
1625de64e2
|
@ -446,6 +446,8 @@ add_library(rhubarb-tools
|
||||||
src/tools/EnumConverter.h
|
src/tools/EnumConverter.h
|
||||||
src/tools/exceptions.cpp
|
src/tools/exceptions.cpp
|
||||||
src/tools/exceptions.h
|
src/tools/exceptions.h
|
||||||
|
src/tools/fileTools.cpp
|
||||||
|
src/tools/fileTools.h
|
||||||
src/tools/Lazy.h
|
src/tools/Lazy.h
|
||||||
src/tools/nextCombination.h
|
src/tools/nextCombination.h
|
||||||
src/tools/NiceCmdLineOutput.cpp
|
src/tools/NiceCmdLineOutput.cpp
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#include <format.h>
|
#include <format.h>
|
||||||
#include <string.h>
|
|
||||||
#include "WaveFileReader.h"
|
#include "WaveFileReader.h"
|
||||||
#include "ioTools.h"
|
#include "ioTools.h"
|
||||||
#include "tools/platformTools.h"
|
#include "tools/platformTools.h"
|
||||||
|
#include "tools/fileTools.h"
|
||||||
|
|
||||||
using std::runtime_error;
|
using std::runtime_error;
|
||||||
using fmt::format;
|
using fmt::format;
|
||||||
|
@ -30,27 +30,6 @@ namespace Codec {
|
||||||
constexpr int Float = 0x03;
|
constexpr int Float = 0x03;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::ifstream openFile(path filePath) {
|
|
||||||
try {
|
|
||||||
std::ifstream file;
|
|
||||||
file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
file.open(filePath.c_str(), std::ios::binary);
|
|
||||||
|
|
||||||
// Error messages on stream exceptions are mostly useless.
|
|
||||||
// Read some dummy data so that we can throw a decent exception in case the file is missing, locked, etc.
|
|
||||||
file.seekg(0, std::ios_base::end);
|
|
||||||
if (file.tellg()) {
|
|
||||||
file.seekg(0);
|
|
||||||
file.get();
|
|
||||||
file.seekg(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return std::move(file);
|
|
||||||
} catch (const std::ifstream::failure&) {
|
|
||||||
throw runtime_error(errorNumberToString(errno));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string codecToString(int codec);
|
string codecToString(int codec);
|
||||||
|
|
||||||
WaveFileReader::WaveFileReader(path filePath) :
|
WaveFileReader::WaveFileReader(path filePath) :
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
#include "fileTools.h"
|
||||||
|
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
using boost::filesystem::path;
|
||||||
|
|
||||||
|
std::ifstream openFile(path filePath) {
|
||||||
|
try {
|
||||||
|
std::ifstream file;
|
||||||
|
file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||||
|
file.open(filePath.c_str(), std::ios::binary);
|
||||||
|
|
||||||
|
// Read some dummy data so that we can throw a decent exception in case the file is missing, locked, etc.
|
||||||
|
file.seekg(0, std::ios_base::end);
|
||||||
|
if (file.tellg()) {
|
||||||
|
file.seekg(0);
|
||||||
|
file.get();
|
||||||
|
file.seekg(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::move(file);
|
||||||
|
} catch (const std::ifstream::failure&) {
|
||||||
|
// Error messages on stream exceptions are mostly useless.
|
||||||
|
throw std::runtime_error(errorNumberToString(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void throwIfNotReadable(path filePath) {
|
||||||
|
openFile(filePath);
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
#include "platformTools.h"
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
std::ifstream openFile(boost::filesystem::path filePath);
|
||||||
|
|
||||||
|
void throwIfNotReadable(boost::filesystem::path filePath);
|
Loading…
Reference in New Issue