Implement get_magic with generic tools and inline it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210716 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-06-11 22:53:00 +00:00
parent c6d63a3b0d
commit 07aac43603
4 changed files with 10 additions and 92 deletions

View File

@@ -622,37 +622,6 @@ error_code detail::directory_iterator_increment(detail::DirIterState &it) {
return error_code();
}
error_code get_magic(const Twine &path, uint32_t len,
SmallVectorImpl<char> &result) {
SmallString<128> PathStorage;
StringRef Path = path.toNullTerminatedStringRef(PathStorage);
result.set_size(0);
// Open path.
std::FILE *file = std::fopen(Path.data(), "rb");
if (!file)
return error_code(errno, generic_category());
// Reserve storage.
result.reserve(len);
// Read magic!
size_t size = std::fread(result.data(), 1, len, file);
if (std::ferror(file) != 0) {
std::fclose(file);
return error_code(errno, generic_category());
} else if (size != len) {
if (std::feof(file) != 0) {
std::fclose(file);
result.set_size(size);
return make_error_code(std::errc::value_too_large);
}
}
std::fclose(file);
result.set_size(size);
return error_code();
}
error_code openFileForRead(const Twine &Name, int &ResultFD) {
SmallString<128> Storage;
StringRef P = Name.toNullTerminatedStringRef(Storage);