]> git.draconx.ca Git - cdecl99.git/commitdiff
cdecl99: Don't check blank lines if no history support.
authorNick Bowler <nbowler@draconx.ca>
Wed, 5 Jul 2023 01:27:47 +0000 (21:27 -0400)
committerNick Bowler <nbowler@draconx.ca>
Wed, 5 Jul 2023 01:27:47 +0000 (21:27 -0400)
Move the whole "if not blank, then add history" logic under the #ifdef,
so it can be eliminated completely if add_history is not available at
compile time.

This probably makes no major difference on GNU/Linux, since GCC knows
that strspn has no side effects and can drop the call as dead code, but
this may help with less sophisticated toolchains.

src/cdecl99.c
src/cdecl99.h

index d7ddd77960a284fa07844a5bf67331b1453ae36a..f7eed62acbd94bf0a74dc7d0d73398dc6dc05704 100644 (file)
 #if HAVE_READLINE_READLINE_H
 #  include <readline/readline.h>
 #endif
+#if HAVE_RL_ADD_HISTORY && HAVE_READLINE_HISTORY_H
+#  include <readline/history.h>
+
+/* call add_history only if the line is non-blank */
+static void do_add_history(const char *line)
+{
+       if (line[strspn(line, " \t")])
+               add_history(line);
+}
+#else
+static void do_add_history(const char *line)
+{
+}
+#endif
 
 static const char *progname = "cdecl99";
 static bool interactive = true;
@@ -110,11 +124,6 @@ static void print_help(const struct option *lopts)
        printf(_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
 }
 
-static int is_blank_line(const char *line)
-{
-       return !line[strspn(line, " \t")];
-}
-
 static int repl_cmdline(unsigned count, char **commands)
 {
        int ret = 0;
@@ -163,8 +172,7 @@ static int do_readline(char **linebuf, size_t *n, int interactive)
        if (!(*linebuf = readline("> ")))
                return 0;
 
-       if (!is_blank_line(*linebuf))
-               add_history(*linebuf);
+       do_add_history(*linebuf);
        return 1;
 #endif
 }
index 7ed24072a9826d4ba3c0dae3c3077b09c8e1c3b6..0f36f7b9ab45ab45631438d85e816176098ace5b 100644 (file)
@@ -29,12 +29,4 @@ int run_command_declare(const char *cmdarg);
 
 void print_error(const char *fmt, ...);
 
-#if HAVE_RL_ADD_HISTORY && HAVE_READLINE_HISTORY_H
-#  include <readline/history.h>
-#else
-static inline void add_history(const char *str)
-{
-}
-#endif
-
 #endif