diff options
author | Dan Gohman <gohman@apple.com> | 2010-06-24 16:25:50 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-06-24 16:25:50 +0000 |
commit | b377e2828d99406edaa99c0f944f9a17874f9cf7 (patch) | |
tree | e05c28939637da1dd87aa98c7499c3723cb1167d /llvm/lib/Support | |
parent | 3b2b46a700e7cf3c572fc2e5fea843b0085f8208 (diff) | |
download | bcm5719-llvm-b377e2828d99406edaa99c0f944f9a17874f9cf7.tar.gz bcm5719-llvm-b377e2828d99406edaa99c0f944f9a17874f9cf7.zip |
Add overloads for getFile and getFileOrSTDIN which take a const char *
instead of a StringRef, avoiding the need to copy the string in the
common case.
llvm-svn: 106754
Diffstat (limited to 'llvm/lib/Support')
-rw-r--r-- | llvm/lib/Support/MemoryBuffer.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/llvm/lib/Support/MemoryBuffer.cpp b/llvm/lib/Support/MemoryBuffer.cpp index e8c34da49b8..b1a767c35a2 100644 --- a/llvm/lib/Support/MemoryBuffer.cpp +++ b/llvm/lib/Support/MemoryBuffer.cpp @@ -141,6 +141,15 @@ MemoryBuffer *MemoryBuffer::getFileOrSTDIN(StringRef Filename, return getFile(Filename, ErrStr, FileSize, FileInfo); } +MemoryBuffer *MemoryBuffer::getFileOrSTDIN(const char *Filename, + std::string *ErrStr, + int64_t FileSize, + struct stat *FileInfo) { + if (strcmp(Filename, "-") == 0) + return getSTDIN(ErrStr); + return getFile(Filename, ErrStr, FileSize, FileInfo); +} + //===----------------------------------------------------------------------===// // MemoryBuffer::getFile implementation. //===----------------------------------------------------------------------===// @@ -177,12 +186,17 @@ public: MemoryBuffer *MemoryBuffer::getFile(StringRef Filename, std::string *ErrStr, int64_t FileSize, struct stat *FileInfo) { - int OpenFlags = 0; + SmallString<256> PathBuf(Filename.begin(), Filename.end()); + return MemoryBuffer::getFile(PathBuf.c_str(), ErrStr, FileSize, FileInfo); +} + +MemoryBuffer *MemoryBuffer::getFile(const char *Filename, std::string *ErrStr, + int64_t FileSize, struct stat *FileInfo) { + int OpenFlags = O_RDONLY; #ifdef O_BINARY OpenFlags |= O_BINARY; // Open input file in binary mode on win32. #endif - SmallString<256> PathBuf(Filename.begin(), Filename.end()); - int FD = ::open(PathBuf.c_str(), O_RDONLY|OpenFlags); + int FD = ::open(Filename, OpenFlags); if (FD == -1) { if (ErrStr) *ErrStr = sys::StrError(); return 0; |