diff options
author | Daniele Nicolodi <daniele@grinta.net> | 2021-05-02 15:32:02 +0200 |
---|---|---|
committer | Daniele Nicolodi <daniele@grinta.net> | 2021-05-08 14:11:26 +0200 |
commit | a29cee8993c6d21eb784e75f04c5aee68517d02e (patch) | |
tree | 2f9df6613ba8c2e640762f8e08ee72e52437f489 /src/libtracker-common | |
parent | 5e612b2e55d569b8e5b228a124cf59a36d200e3d (diff) | |
download | tracker-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.c | 41 |
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; |