From 1b50145b6f74f0d398bc01ae25d21fd18457a7c5 Mon Sep 17 00:00:00 2001 From: Tristan Riehs Date: Fri, 31 May 2024 21:56:22 +0900 Subject: Switch to linenoise instead of readline The API is the exact same, and this implementation is much lighter and memory-leak-free. --- configure.ac | 9 +++++++++ src/Makefile.am | 9 ++++++--- src/calculer.c | 5 +++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 189162f..e3298be 100644 --- a/configure.ac +++ b/configure.ac @@ -7,4 +7,13 @@ AC_CONFIG_FILES([ Makefile src/Makefile ]) +AC_CHECK_PROG([DLPROG], [curl], [curl -LO], [false]) +if [ ! -d "./linenoise-master/" ] +then + if [ ! -f "./master.zip" ] + then + $DLPROG 'https://github.com/antirez/linenoise/archive/refs/heads/master.zip' + fi + unzip 'master.zip' +fi AC_OUTPUT diff --git a/src/Makefile.am b/src/Makefile.am index ddf7c6b..728ef88 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,7 @@ bin_PROGRAMS = calculer -AM_CFLAGS = -std=c99 -Wall -Wextra -AM_LDFLAGS = -lreadline -calculer_SOURCES = calculer.c +AM_CFLAGS = -Wall -Wextra -I../linenoise-master/ +calculer_SOURCES = calculer.c linenoise.c +BUILT_SOURCES: linenoise.c + +linenoise.c: + cp ../linenoise-master/linenoise.c . diff --git a/src/calculer.c b/src/calculer.c index 6ed5983..0c9fe8b 100644 --- a/src/calculer.c +++ b/src/calculer.c @@ -24,7 +24,7 @@ #include #include -#include +#include "linenoise.h" static int lower = 0; static int upper = 100; @@ -67,6 +67,7 @@ main(void) int x, y, res; char *input; + srand(time(NULL)); logfile = fopen("./calculer.log", "a"); assert(logfile); @@ -78,7 +79,7 @@ main(void) res = x+y; assert(!measure_after(measure_data)); sprintf(prompt, "%d + %d = ", x, y); - input = readline(prompt); + input = linenoise(prompt); if (strcmp(input, "q") == 0) { -- cgit v1.2.3