Add a LLVMWriteBitcodeToFD that exposes the raw_fd_ostream options.
[oota-llvm.git] / lib / Bitcode / Writer / BitWriter.cpp
index 32a740569f7e88c66ff1258d3f64e55ab3474bbc..4288422463311f8f367ddfed21f3dbe1445a3403 100644 (file)
@@ -18,7 +18,7 @@ using namespace llvm;
 int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
   std::string ErrorInfo;
   raw_fd_ostream OS(Path, ErrorInfo,
-                    raw_fd_ostream::F_Force|raw_fd_ostream::F_Binary);
+                    raw_fd_ostream::F_Binary);
   
   if (!ErrorInfo.empty())
     return -1;
@@ -27,20 +27,14 @@ int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
   return 0;
 }
 
-#if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR >= 4)
-#include <ext/stdio_filebuf.h>
-
-int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
-  raw_fd_ostream OS(FileHandle, false);
+int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose,
+                         int Unbuffered) {
+  raw_fd_ostream OS(FD, ShouldClose, Unbuffered);
   
   WriteBitcodeToFile(unwrap(M), OS);
   return 0;
 }
 
-#else
-
 int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
-  return -1; // Not supported.
+  return LLVMWriteBitcodeToFD(M, FileHandle, true, false);
 }
-
-#endif