From 0556b433bf6f58d837dae4b74ddea25260ca64c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Fri, 21 Jun 2024 21:34:05 +0900 Subject: =?UTF-8?q?=E3=82=B7=E3=82=A7=E3=83=AB=E6=83=85=E5=A0=B1=E3=81=AE?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shell.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/shell.c (limited to 'src/shell.c') diff --git a/src/shell.c b/src/shell.c new file mode 100644 index 0000000..783ed98 --- /dev/null +++ b/src/shell.c @@ -0,0 +1,42 @@ +#include "shell.h" +#include "common.h" + +#include +#include +#include + +const char *display_shell() { + char *shell = (char *)malloc(64 * sizeof(char)); + if (shell == NULL) { + return NULL; + } + + const char *ver; + const char *name = run_command_s("echo ${SHELL##*/}"); + + if (strncmp(name, "bash", strlen("bash")) == 0) { + ver = run_command_s("echo $BASH_VERSION"); + } else if (strncmp(name, "ksh", strlen("ksh")) == 0) { + ver = run_command_s("echo $KSH_VERSION | sed 's/^.*v//' | sed 's/ .*$//'"); + } else if (strncmp(name, "zsh", strlen("zsh")) == 0) { + ver = run_command_s("zsh --version | sed 's/ (.*$//' | sed 's/zsh //'"); + } else if (strncmp(name, "yash", strlen("yash")) == 0) { + ver = run_command_s("LC_ALL=C yash --version | head -1 | " + "sed 's/Yet another shell, version //'"); + } else if (strncmp(name, "tsch", strlen("tsch")) == 0) { + ver = run_command_s("tcsh --version | sed 's/tcsh //' | sed 's/ .*$//'"); + } else { + ver = NULL; + } + + if (ver != NULL) { + snprintf(shell, sizeof(shell), "%s %s", name, ver); + } else { + snprintf(shell, sizeof(shell), "%s", name); + } + + free((void *)name); + if (ver != NULL) free((void *)ver); + + return shell; +} -- cgit v1.2.3