[tracker: 1/5] tracker-term-utils: Fix gint vs guint pointer comparison




commit a29cee8993c6d21eb784e75f04c5aee68517d02e
Author: Daniele Nicolodi <daniele grinta net>
Date:   Sun May 2 15:32:02 2021 +0200

    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(-)
---
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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]