Make LLVM command-line tools overwrite their output files without -f.
This is conventional command-line tool behavior. -f now just means
"enable binary output on terminals".

Add a -f option to llvm-extract and llvm-link, for consistency.

Remove F_Force from raw_fd_ostream and enable overwriting and
truncating by default. Introduce an F_Excl flag to permit users to
enable a failure when the file already exists. This flag is
currently unused.

Update Makefiles and documentation accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79990 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp
index 230d9a8..a229efd 100644
--- a/lib/Support/raw_ostream.cpp
+++ b/lib/Support/raw_ostream.cpp
@@ -335,9 +335,9 @@
 /// if no error occurred.
 raw_fd_ostream::raw_fd_ostream(const char *Filename, std::string &ErrorInfo,
                                unsigned Flags) : pos(0) {
-  // Verify that we don't have both "append" and "force".
-  assert((!(Flags & F_Force) || !(Flags & F_Append)) &&
-         "Cannot specify both 'force' and 'append' file creation flags!");
+  // Verify that we don't have both "append" and "excl".
+  assert((!(Flags & F_Excl) || !(Flags & F_Append)) &&
+         "Cannot specify both 'excl' and 'append' file creation flags!");
   
   ErrorInfo.clear();
 
@@ -358,11 +358,11 @@
     OpenFlags |= O_BINARY;
 #endif
   
-  if (Flags & F_Force)
-    OpenFlags |= O_TRUNC;
-  else if (Flags & F_Append)
+  if (Flags & F_Append)
     OpenFlags |= O_APPEND;
   else
+    OpenFlags |= O_TRUNC;
+  if (Flags & F_Excl)
     OpenFlags |= O_EXCL;
   
   FD = open(Filename, OpenFlags, 0664);