From a29cee8993c6d21eb784e75f04c5aee68517d02e Mon Sep 17 00:00:00 2001 From: Daniele Nicolodi Date: Sun, 2 May 2021 15:32:02 +0200 Subject: tracker-term-utils: Fix gint vs guint pointer comparison This also fixes a minor bug where tracker_term_dimensions() would return uninizialized value if the TIOCGWINSZ ioctl failed. --- src/libtracker-common/tracker-term-utils.c | 41 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'src/libtracker-common') diff --git a/src/libtracker-common/tracker-term-utils.c b/src/libtracker-common/tracker-term-utils.c index 0ccc243d4..a6d5d3a97 100644 --- a/src/libtracker-common/tracker-term-utils.c +++ b/src/libtracker-common/tracker-term-utils.c @@ -28,8 +28,6 @@ #include #include -static guint n_columns = 0; -static guint n_rows = 0; static GSubprocess *pager = NULL; static gint stdout_fd = 0; static guint signal_handler_id = 0; @@ -77,36 +75,37 @@ tracker_term_ellipsize (const gchar *str, return retval; } -static gboolean -fd_term_dimensions (gint fd, - gint *cols, - gint *rows) +static void +fd_term_dimensions (gint fd, + guint *cols, + guint *rows) { - struct winsize ws = {}; - - if (ioctl(fd, TIOCGWINSZ, &ws) < 0) - return FALSE; - - if (ws.ws_col <= 0 || ws.ws_row <= 0) - return FALSE; + struct winsize ws = {}; - *cols = ws.ws_col; - *rows = ws.ws_row; + if (ioctl(fd, TIOCGWINSZ, &ws) < 0) { + *cols = 0; + *rows = 0; + } - return TRUE; + *cols = ws.ws_col; + *rows = ws.ws_row; } void tracker_term_dimensions (guint *columns, guint *rows) { - if (n_columns == 0 || n_rows == 0) + static guint n_columns = 0; + static guint n_rows = 0; + + if (n_columns == 0 || n_rows == 0) { fd_term_dimensions (STDOUT_FILENO, &n_columns, &n_rows); - if (n_columns <= 0) - n_columns = 80; - if (n_rows <= 0) - n_rows = 24; + if (n_columns == 0) + n_columns = 80; + if (n_rows == 0) + n_rows = 24; + } if (columns) *columns = n_columns; -- cgit v1.2.1