From 67187ceb216331f8b8eeacd3f8b34f504b9bbcaf Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 11 May 2009 18:06:49 +0000 Subject: [PATCH] Move terminal-width computation over to llvm::sys. Update to LLVM r71448 required. Fixes PR 4148 and PR 4183. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71450 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/clang-cc/clang-cc.cpp | 37 +------------------------------------ 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp index 23230b3bc1..ca8d6e5117 100644 --- a/tools/clang-cc/clang-cc.cpp +++ b/tools/clang-cc/clang-cc.cpp @@ -67,7 +67,6 @@ #include #if HAVE_SYS_TYPES_H # include -# include #endif using namespace clang; @@ -1883,40 +1882,6 @@ static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF, static llvm::cl::list InputFilenames(llvm::cl::Positional, llvm::cl::desc("")); -/// \brief Determine the width of the terminal we'll be printing to, -/// if any. -/// -/// \returns the width of the terminal (in characters), if there is a -/// terminal. If there is no terminal, returns 0. -static unsigned getTerminalWidth() { - // Is this a terminal? If not, don't wrap by default. - if (!llvm::sys::Process::StandardErrIsDisplayed()) - return 0; - - // If COLUMNS is defined in the environment, wrap to that many columns. - if (const char *ColumnsStr = std::getenv("COLUMNS")) { - int Columns = atoi(ColumnsStr); - if (Columns > 0) - return Columns; - } - -#if HAVE_SYS_TYPES_H - // Try to determine the width of the terminal. - struct winsize ws; - unsigned Columns = 80; // A guess, in case the ioctl fails. - if (ioctl(2, TIOCGWINSZ, &ws) == 0) - Columns = ws.ws_col; - - // Give ourselves just a little extra room, since printing to the - // end of the terminal will make it wrap when we don't want it to. - if (Columns) - --Columns; - return Columns; -#endif - - return 0; -} - int main(int argc, char **argv) { llvm::sys::PrintStackTraceOnErrorSignal(); llvm::PrettyStackTraceProgram X(argc, argv); @@ -1951,7 +1916,7 @@ int main(int argc, char **argv) { // is a terminal and, if so, implicitly define -fmessage-length // appropriately. if (MessageLength.getNumOccurrences() == 0) - MessageLength.setValue(getTerminalWidth()); + MessageLength.setValue(llvm::sys::Process::StandardErrColumns()); DiagClient.reset(new TextDiagnosticPrinter(llvm::errs(), !NoShowColumn, -- 2.40.0