[tracker/wip/carlosg/sparql-shell: 1/2] cli: Add boolean argument to use smart "less" command quit behavior




commit 4ad1868080d8330ba7464848fea94bc810e46a42
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Nov 1 00:17:25 2021 +0100

    cli: Add boolean argument to use smart "less" command quit behavior
    
    We normally want "less" to quit automatically if the content fits a
    screen. Add a boolean argument to control this behavior.

 src/libtracker-common/tracker-term-utils.c | 12 ++++++++----
 src/libtracker-common/tracker-term-utils.h |  2 +-
 src/tracker/tracker-export.c               |  2 +-
 src/tracker/tracker-sparql.c               |  2 +-
 src/tracker/tracker-sql.c                  |  2 +-
 5 files changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/src/libtracker-common/tracker-term-utils.c b/src/libtracker-common/tracker-term-utils.c
index 713b8d797..5a433bab9 100644
--- a/src/libtracker-common/tracker-term-utils.c
+++ b/src/libtracker-common/tracker-term-utils.c
@@ -147,10 +147,10 @@ best_pager (void)
 }
 
 gboolean
-tracker_term_pipe_to_pager (void)
+tracker_term_pipe_to_pager (gboolean quit_if_one_screen)
 {
        GSubprocessLauncher *launcher;
-       gchar *pager_command;
+       gchar *pager_command, *less_env;
        gint fds[2];
 
        if (!tracker_term_is_tty ())
@@ -166,10 +166,14 @@ tracker_term_pipe_to_pager (void)
        /* Ensure this is cached before we redirect to the pager */
        tracker_term_dimensions (NULL, NULL);
 
+       if (quit_if_one_screen)
+               less_env = "FRSXMK";
+       else
+               less_env = "RSXMK";
+
        launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE);
        g_subprocess_launcher_take_stdin_fd (launcher, fds[0]);
-       g_subprocess_launcher_setenv (launcher, "LESS", "FRSXMK", TRUE);
-
+       g_subprocess_launcher_setenv (launcher, "LESS", less_env, TRUE);
        pager = g_subprocess_launcher_spawn (launcher, NULL, pager_command, NULL);
        g_free (pager_command);
 
diff --git a/src/libtracker-common/tracker-term-utils.h b/src/libtracker-common/tracker-term-utils.h
index 1a4547d0b..44f8e9629 100644
--- a/src/libtracker-common/tracker-term-utils.h
+++ b/src/libtracker-common/tracker-term-utils.h
@@ -39,7 +39,7 @@ void tracker_term_dimensions (guint *columns,
 
 gboolean tracker_term_is_tty (void);
 
-gboolean tracker_term_pipe_to_pager (void);
+gboolean tracker_term_pipe_to_pager (gboolean quit_if_one_screen);
 gboolean tracker_term_pager_close (void);
 
 #endif /* __TRACKER_TERM_UTILS_H__ */
diff --git a/src/tracker/tracker-export.c b/src/tracker/tracker-export.c
index 38c05f941..bd33876e2 100644
--- a/src/tracker/tracker-export.c
+++ b/src/tracker/tracker-export.c
@@ -350,7 +350,7 @@ export_run_default (void)
                return EXIT_FAILURE;
        }
 
-       tracker_term_pipe_to_pager ();
+       tracker_term_pipe_to_pager (TRUE);
 
        g_hash_table_foreach (prefixes, (GHFunc) print_prefix, NULL);
        g_print ("\n");
diff --git a/src/tracker/tracker-sparql.c b/src/tracker/tracker-sparql.c
index b76e99ecd..09297af3a 100644
--- a/src/tracker/tracker-sparql.c
+++ b/src/tracker/tracker-sparql.c
@@ -1126,7 +1126,7 @@ sparql_run (void)
                return EXIT_FAILURE;
        }
 
-       tracker_term_pipe_to_pager ();
+       tracker_term_pipe_to_pager (TRUE);
 
        if (list_classes) {
                const gchar *query;
diff --git a/src/tracker/tracker-sql.c b/src/tracker/tracker-sql.c
index e02ba6fb2..a68867b6a 100644
--- a/src/tracker/tracker-sql.c
+++ b/src/tracker/tracker-sql.c
@@ -117,7 +117,7 @@ sql_by_query (void)
                return EXIT_FAILURE;
        }
 
-       tracker_term_pipe_to_pager ();
+       tracker_term_pipe_to_pager (TRUE);
 
        g_print ("--------------------------------------------------\n");
        g_print ("\n\n");


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