X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FBitcode%2FWriter%2FBitWriter.cpp;h=4288422463311f8f367ddfed21f3dbe1445a3403;hb=867fe8570f299a058f155f98646d85cabc27155b;hp=d7b1510466260c2547030fb7a5b22ddcc3c2fa75;hpb=3194012664b051d260281f54b2a1534a4fe26eac;p=oota-llvm.git diff --git a/lib/Bitcode/Writer/BitWriter.cpp b/lib/Bitcode/Writer/BitWriter.cpp index d7b15104662..42884224633 100644 --- a/lib/Bitcode/Writer/BitWriter.cpp +++ b/lib/Bitcode/Writer/BitWriter.cpp @@ -2,51 +2,39 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by Gordon Henriksen and is distributed under the -// University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm-c/BitWriter.h" #include "llvm/Bitcode/ReaderWriter.h" -#include - +#include "llvm/Support/raw_ostream.h" using namespace llvm; /*===-- Operations on modules ---------------------------------------------===*/ int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) { - std::ofstream OS(Path); - - if (!OS.fail()) - WriteBitcodeToFile(unwrap(M), OS); + std::string ErrorInfo; + raw_fd_ostream OS(Path, ErrorInfo, + raw_fd_ostream::F_Binary); - if (OS.fail()) + if (!ErrorInfo.empty()) return -1; + WriteBitcodeToFile(unwrap(M), OS); return 0; } -#ifdef __GNUC__ -#include - -// FIXME: Control this with configure? Provide some portable abstraction in -// libSystem? As is, the user will just get a linker error if they use this on -// non-GCC. Some C++ stdlibs even have ofstream::ofstream(int fd). -int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) { - __gnu_cxx::stdio_filebuf Buffer(FileHandle, std::ios_base::out | - std::ios::trunc | - std::ios::binary); - std::ostream OS(&Buffer); - - if (!OS.fail()) - WriteBitcodeToFile(unwrap(M), OS); - - if (OS.fail()) - return -1; +int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose, + int Unbuffered) { + raw_fd_ostream OS(FD, ShouldClose, Unbuffered); + WriteBitcodeToFile(unwrap(M), OS); return 0; } -#endif +int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) { + return LLVMWriteBitcodeToFD(M, FileHandle, true, false); +}