summaryrefslogtreecommitdiff
path: root/src/libtracker-common
diff options
context:
space:
mode:
authorDaniele Nicolodi <daniele@grinta.net>2021-05-02 15:32:02 +0200
committerDaniele Nicolodi <daniele@grinta.net>2021-05-08 14:11:26 +0200
commita29cee8993c6d21eb784e75f04c5aee68517d02e (patch)
tree2f9df6613ba8c2e640762f8e08ee72e52437f489 /src/libtracker-common
parent5e612b2e55d569b8e5b228a124cf59a36d200e3d (diff)
downloadtracker-a29cee8993c6d21eb784e75f04c5aee68517d02e.tar.gz
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.
Diffstat (limited to 'src/libtracker-common')
-rw-r--r--src/libtracker-common/tracker-term-utils.c41
1 files changed, 20 insertions, 21 deletions
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 <fcntl.h>
#include <stdio.h>
-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;