Get rid of leading zeros in the output of toString.
[oota-llvm.git] / lib / Support / SystemUtils.cpp
index 4213b84b8bde374dfe5c703c632804b3cc2ee6b8..30b9f8d43d5da950f914eeab18b23bde516c676a 100644 (file)
@@ -1,10 +1,10 @@
 //===- SystemUtils.cpp - Utilities for low-level system tasks -------------===//
-// 
+//
 //                     The LLVM Compiler Infrastructure
 //
 // This file was developed by the LLVM research group and is distributed under
 // the University of Illinois Open Source License. See LICENSE.TXT for details.
-// 
+//
 //===----------------------------------------------------------------------===//
 //
 // This file contains functions used to do a variety of low-level, often
 //
 //===----------------------------------------------------------------------===//
 
+#include "llvm/Support/Streams.h"
 #include "llvm/Support/SystemUtils.h"
+#include "llvm/System/Process.h"
 #include "llvm/System/Program.h"
-
+#include <ostream>
 using namespace llvm;
 
-/// isStandardOutAConsole - Return true if we can tell that the standard output
-/// stream goes to a terminal window or console.
-bool llvm::isStandardOutAConsole() {
-#if HAVE_ISATTY
-  return isatty(1);
-#endif
-  // If we don't have isatty, just return false.
+bool llvm::CheckBytecodeOutputToConsole(std::ostream* stream_to_check,
+                                        bool print_warning) {
+  if (stream_to_check == cout.stream() &&
+      sys::Process::StandardOutIsDisplayed()) {
+    if (print_warning) {
+      cerr << "WARNING: You're attempting to print out a bytecode file.\n"
+           << "This is inadvisable as it may cause display problems. If\n"
+           << "you REALLY want to taste LLVM bytecode first-hand, you\n"
+           << "can force output with the `-f' option.\n\n";
+    }
+    return true;
+  }
   return false;
 }
 
-
 /// FindExecutable - Find a named executable, giving the argv[0] of program
 /// being executed. This allows us to find another LLVM tool if it is built
 /// into the same directory, but that directory is neither the current
@@ -37,14 +43,14 @@ bool llvm::isStandardOutAConsole() {
 #undef FindExecutable   // needed on windows :(
 sys::Path llvm::FindExecutable(const std::string &ExeName,
                                const std::string &ProgramPath) {
-  // First check the directory that the calling program is in.  We can do this  
+  // First check the directory that the calling program is in.  We can do this
   // if ProgramPath contains at least one / character, indicating that it is a
   // relative path to bugpoint itself.
   sys::Path Result ( ProgramPath );
-  Result.elideFile();
+  Result.eraseComponent();
   if (!Result.isEmpty()) {
-    Result.appendFile(ExeName);
-    if (Result.executable()) 
+    Result.appendComponent(ExeName);
+    if (Result.canExecute())
       return Result;
   }