This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 3d5821802240c81a7bcfa263f94ae2b9af4435c1 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Apr 24 01:08:39 2015 +0200 help.{cpp,h}: add a boolean terminal_output parameter to the pretty_print() function family. Controls terminal width auto-detection and automatic printing to stderr. --- debian/changelog | 3 +++ src/help.cpp | 30 +++++++++++++++++------------- src/help.h | 12 +++++++++--- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5b9ad08..e7a6516 100644 --- a/debian/changelog +++ b/debian/changelog @@ -307,6 +307,9 @@ x2goclient (4.0.4.0-0x2go1) UNRELEASED; urgency=low split_long_line() function. Use this in pretty_print(). - help.cpp: simplify pretty_print() and make it also split lines for non-terminal output or when the terminal width is unknown. + - help.{cpp,h}: add a boolean terminal_output parameter to the + pretty_print() function family. Controls terminal width auto-detection + and automatic printing to stderr. [ Fernando Pedemonte ] * New upstream release (4.0.4.0): diff --git a/src/help.cpp b/src/help.cpp index 6b95732..f5871be 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -181,11 +181,11 @@ help::string_split_t help::split_long_line (QString &line, std::ptrdiff_t max_le return (ret); } -QString help::pretty_print () { - return (help::pretty_print (help::build_data ())); +QString help::pretty_print (bool terminal_output) { + return (help::pretty_print (help::build_data (), terminal_output)); } -QString help::pretty_print (help::data_t data) { +QString help::pretty_print (help::data_t data, bool terminal_output) { QString ret = ""; QTextStream out (&ret); out << data.first.join ("\n") << "\n"; @@ -199,19 +199,21 @@ QString help::pretty_print (help::data_t data) { std::size_t terminal_cols = 0; + if (terminal_output) { #ifdef Q_OS_WIN - CONSOLE_SCREEN_BUFFER_INFO terminal_internal; - HANDLE stderr_handle = GetStdHandle (STD_ERROR_HANDLE); - if (stderr_handle && (stderr_handle != INVALID_HANDLE_VALUE)) { - if (GetConsoleScreenBufferInfo (stderr_handle, &terminal_internal)) { - terminal_cols = (terminal_internal.srWindow.Right - terminal_internal.srWindow.Left) + 1; + CONSOLE_SCREEN_BUFFER_INFO terminal_internal; + HANDLE stderr_handle = GetStdHandle (STD_ERROR_HANDLE); + if (stderr_handle && (stderr_handle != INVALID_HANDLE_VALUE)) { + if (GetConsoleScreenBufferInfo (stderr_handle, &terminal_internal)) { + terminal_cols = (terminal_internal.srWindow.Right - terminal_internal.srWindow.Left) + 1; + } } - } #elif defined (Q_OS_UNIX) - struct winsize terminal_internal; - ioctl (0, TIOCGWINSZ, &terminal_internal); - terminal_cols = terminal_internal.ws_col; + struct winsize terminal_internal; + ioctl (0, TIOCGWINSZ, &terminal_internal); + terminal_cols = terminal_internal.ws_col; #endif + } x2goDebug << "Terminal cols: " << terminal_cols << endl; @@ -288,7 +290,9 @@ QString help::pretty_print (help::data_t data) { } } - qCritical ().nospace () << qPrintable (ret); + if (terminal_output) { + qCritical ().nospace () << qPrintable (ret); + } return (ret); } diff --git a/src/help.h b/src/help.h index b6bfb21..3a9c24d 100644 --- a/src/help.h +++ b/src/help.h @@ -56,9 +56,15 @@ namespace help { */ string_split_t split_long_line (QString &line, std::ptrdiff_t max_length = 200); - /* Prints a help_data_t structure. */ - QString pretty_print (); - QString pretty_print (data_t data); + /* + * Returns a help_data_t structure as a QString. + * If terminal_output is true, the terminal width is probed for and the function + * family tries its best to adhere to the auto-detected width. + * Additionally, terminal_output controls whether the resulting string is + * printed to stderr or not. + */ + QString pretty_print (bool terminal_output = true); + QString pretty_print (data_t data, bool terminal_output = true); } #endif /* !defined (HELP_H) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git