diff options
author | Chris Lattner <sabre@nondot.org> | 2008-04-01 18:04:03 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-04-01 18:04:03 +0000 |
commit | 038112a4e0a9afd656f415ab397a230ae5921627 (patch) | |
tree | 1e533932de12cd50bf288f55438475ed736bdce8 /lib/Support/MemoryBuffer.cpp | |
parent | 8eedc9ee2ca3bb489957de68e3f907c88ca39efc (diff) |
Change the MemoryBuffer::getFile* methods to take just a pointer to the
start of a filename, not a filename+length. All clients can produce a
null terminated name, and the system api's require null terminated
strings anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49041 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/MemoryBuffer.cpp')
-rw-r--r-- | lib/Support/MemoryBuffer.cpp | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/lib/Support/MemoryBuffer.cpp b/lib/Support/MemoryBuffer.cpp index 4e4dabc5e7..7a60b85b91 100644 --- a/lib/Support/MemoryBuffer.cpp +++ b/lib/Support/MemoryBuffer.cpp @@ -132,12 +132,11 @@ MemoryBuffer *MemoryBuffer::getNewMemBuffer(unsigned Size, /// if the Filename is "-". If an error occurs, this returns null and fills /// in *ErrStr with a reason. If stdin is empty, this API (unlike getSTDIN) /// returns an empty buffer. -MemoryBuffer *MemoryBuffer::getFileOrSTDIN(const char *FilenameStart, - unsigned FnSize, +MemoryBuffer *MemoryBuffer::getFileOrSTDIN(const char *Filename, std::string *ErrStr, int64_t FileSize) { - if (FnSize != 1 || FilenameStart[0] != '-') - return getFile(FilenameStart, FnSize, ErrStr, FileSize); + if (Filename[0] != '-' || Filename[1] != 0) + return getFile(Filename, ErrStr, FileSize); MemoryBuffer *M = getSTDIN(); if (M) return M; @@ -172,17 +171,13 @@ public: }; } -MemoryBuffer *MemoryBuffer::getFile(const char *FilenameStart, unsigned FnSize, - std::string *ErrStr, int64_t FileSize) { - // Null terminate the filename. - SmallString<1000> Filename(FilenameStart, FilenameStart+FnSize); - Filename.push_back(0); - +MemoryBuffer *MemoryBuffer::getFile(const char *Filename, std::string *ErrStr, + int64_t FileSize) { int OpenFlags = 0; #ifdef O_BINARY Flags |= O_BINARY; // Open input file in binary mode on win32. #endif - int FD = ::open(&Filename[0], O_RDONLY|OpenFlags); + int FD = ::open(Filename, O_RDONLY|OpenFlags); if (FD == -1) { if (ErrStr) *ErrStr = "could not open file"; return 0; @@ -211,12 +206,12 @@ MemoryBuffer *MemoryBuffer::getFile(const char *FilenameStart, unsigned FnSize, if (const char *Pages = sys::Path::MapInFilePages(FD, FileSize)) { // Close the file descriptor, now that the whole file is in memory. ::close(FD); - return new MemoryBufferMMapFile(&Filename[0], Pages, FileSize); + return new MemoryBufferMMapFile(Filename, Pages, FileSize); } } OwningPtr<MemoryBuffer> SB; - SB.reset(MemoryBuffer::getNewUninitMemBuffer(FileSize, &Filename[0])); + SB.reset(MemoryBuffer::getNewUninitMemBuffer(FileSize, Filename)); char *BufPtr = const_cast<char*>(SB->getBufferStart()); unsigned BytesLeft = FileSize; |