#define S_ISBLK(x) (0)
#endif
#endif
-#include <fcntl.h>
using namespace llvm;
//===----------------------------------------------------------------------===//
return getFile(Filename, result, FileSize);
}
-error_code MemoryBuffer::getFileOrSTDIN(const char *Filename,
- OwningPtr<MemoryBuffer> &result,
- int64_t FileSize) {
- if (strcmp(Filename, "-") == 0)
- return getSTDIN(result);
- return getFile(Filename, result, FileSize);
-}
-
//===----------------------------------------------------------------------===//
// MemoryBuffer::getFile implementation.
//===----------------------------------------------------------------------===//
OwningPtr<MemoryBuffer> &result,
int64_t FileSize,
bool RequiresNullTerminator) {
- // FIXME: Review if this check is unnecessary on windows as well.
-#ifdef LLVM_ON_WIN32
- // First check that the "file" is not a directory
- bool is_dir = false;
- error_code err = sys::fs::is_directory(Filename, is_dir);
- if (err)
- return err;
- if (is_dir)
- return make_error_code(errc::is_a_directory);
-#endif
-
- int OpenFlags = O_RDONLY;
-#ifdef O_BINARY
- OpenFlags |= O_BINARY; // Open input file in binary mode on win32.
-#endif
- int FD = ::open(Filename, OpenFlags);
- if (FD == -1)
- return error_code(errno, posix_category());
+ int FD;
+ error_code EC = sys::fs::openFileForRead(Filename, FD);
+ if (EC)
+ return EC;
error_code ret = getOpenFile(FD, Filename, result, FileSize, FileSize,
0, RequiresNullTerminator);