diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-11 22:53:00 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-11 22:53:00 +0000 |
commit | da70bfd82650d80ee43e9c6ff5f202da959ef09b (patch) | |
tree | 4b1bcc747cc94d9b87e9daa8b2c5e9755cff27c5 /llvm/lib/Support/Path.cpp | |
parent | e8ad3839a19e0731b8c8ba716263ecbea0223c03 (diff) | |
download | bcm5719-llvm-da70bfd82650d80ee43e9c6ff5f202da959ef09b.tar.gz bcm5719-llvm-da70bfd82650d80ee43e9c6ff5f202da959ef09b.zip |
Implement get_magic with generic tools and inline it.
llvm-svn: 210716
Diffstat (limited to 'llvm/lib/Support/Path.cpp')
-rw-r--r-- | llvm/lib/Support/Path.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/llvm/lib/Support/Path.cpp b/llvm/lib/Support/Path.cpp index c063bed2b50..9d98503e02f 100644 --- a/llvm/lib/Support/Path.cpp +++ b/llvm/lib/Support/Path.cpp @@ -1022,13 +1022,17 @@ void directory_entry::replace_filename(const Twine &filename, file_status st) { return file_magic::unknown; } -error_code identify_magic(const Twine &path, file_magic &result) { - SmallString<32> Magic; - error_code ec = get_magic(path, Magic.capacity(), Magic); - if (ec && ec != std::errc::value_too_large) - return ec; +error_code identify_magic(const Twine &Path, file_magic &Result) { + int FD; + if (error_code EC = openFileForRead(Path, FD)) + return EC; + + char Buffer[32]; + int Length = read(FD, Buffer, sizeof(Buffer)); + if (Length < 0) + return error_code(errno, generic_category()); - result = identify_magic(Magic); + Result = identify_magic(StringRef(Buffer, Length)); return error_code(); } |