常见的具有命令行交互的软件,例如bash、python等,在输完一行后,按上下键可以切换显示之前输入的行,即历史记录。单文件版的eigenmath(GitHub:https://github.com/georgeweigt/eigenmath)没有依赖任何的第三方库,且CLI部分没有实现历史记录功能。本文记录了使用readline给该软件添加简单的历史记录的功能。

平台为Debian 12。使用readline需要安装开发库:

sudo apt install libreadline-dev

在eigenmath.c中添加readline的相关头文件:

#include <readline/readline.h>
#include <readline/history.h>

原版的run_stdin使用fgets读取输入,方向键会直接输入为键码。将run_stdin函数修改为如下内容:

void run_stdin(void)
{
  char *instr;
  while(1)
  {
    instr=readline(">");
    run(instr);
    add_history(instr);
    free(instr);
  }
}

编译:

gcc -O3 -o eigenmath eigenmath.c -lm -lreadline

该编译完成的修改后的eigenmath即具有简单的历史记录功能,可通过上下键找到之前输入的表达式。

源代码仓库已fork并修改在此仓库中:https://github.com/Ayahuasec/eigenmath_with_readline

标签: none

添加新评论