From 6d03e7ef3c9a6abdf82f9e85900a7df5f7dd2aeb Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 11 Jul 2024 07:44:16 +0200 Subject: [PATCH] src/klish-plugin-infix: fixes to 'dir' and 'show log' commands These changes are designed to make the experience working with log files easier. Both listing available log files and viewing them. - replace C dir@infix with a shell script for easier extensions, e.g., we want to show both available .cfg and log files - add support for gunzipping .gz log files before viewing them Signed-off-by: Joachim Wiberg --- board/common/rootfs/usr/bin/dir | 27 +++++++++++++++++++++++++++ src/klish-plugin-infix/src/infix.c | 14 -------------- src/klish-plugin-infix/xml/infix.xml | 23 ++++++++++++++++++----- 3 files changed, 45 insertions(+), 19 deletions(-) create mode 100755 board/common/rootfs/usr/bin/dir diff --git a/board/common/rootfs/usr/bin/dir b/board/common/rootfs/usr/bin/dir new file mode 100755 index 00000000..4d8fc7b7 --- /dev/null +++ b/board/common/rootfs/usr/bin/dir @@ -0,0 +1,27 @@ +#!/bin/sh + +dir() +{ + path=$1 + + if [ -z "$COLUMS" ]; then + TTY=$(resize) + eval "$TTY" + fi + + printf "\033[7m%-*s\033[0m\n" "$COLUMNS" "$path directory" + if [ -d "$path" ]; then + ls -p "$path/" + else + echo "Directory $path does not exist." + fi + echo +} + +if [ -d "$1" ]; then + dir "$1" +else + dir "$HOME" + dir "/cfg" + dir "/log" +fi diff --git a/src/klish-plugin-infix/src/infix.c b/src/klish-plugin-infix/src/infix.c index 1b17db16..57e02327 100644 --- a/src/klish-plugin-infix/src/infix.c +++ b/src/klish-plugin-infix/src/infix.c @@ -300,19 +300,6 @@ done: return files("/cfg", ".cfg"); } -int infix_dir(kcontext_t *ctx) -{ - cd_home(ctx); - - fputs("\e[7mHome directory \e[0m\n", stderr); - system("ls --color=always -p >&2"); - - fputs("\n\e[7m/cfg directory \e[0m\n", stderr); - system("ls --color=always -p /cfg >&2"); - - return 0; -} - int infix_erase(kcontext_t *ctx) { kpargv_t *pargv = kcontext_pargv(ctx); @@ -760,7 +747,6 @@ int kplugin_infix_init(kcontext_t *ctx) kplugin_add_syms(plugin, ksym_new("copy", infix_copy)); kplugin_add_syms(plugin, ksym_new("commit", infix_commit)); kplugin_add_syms(plugin, ksym_new("datastore", infix_datastore)); - kplugin_add_syms(plugin, ksym_new("dir", infix_dir)); kplugin_add_syms(plugin, ksym_new("erase", infix_erase)); kplugin_add_syms(plugin, ksym_new("files", infix_files)); kplugin_add_syms(plugin, ksym_new("ifaces", infix_ifaces)); diff --git a/src/klish-plugin-infix/xml/infix.xml b/src/klish-plugin-infix/xml/infix.xml index 4ee150a1..9cf3601e 100644 --- a/src/klish-plugin-infix/xml/infix.xml +++ b/src/klish-plugin-infix/xml/infix.xml @@ -172,8 +172,13 @@ - - + + + + + + dir $KLISH_PARAM_path + @@ -388,11 +393,19 @@ - file=${KLISH_PARAM_fn:-syslog} + file=/log/${KLISH_PARAM_fn:-syslog} + case "$file" in + *.gz) + cmd=zcat + ;; + *) + cmd=cat + ;; + esac if [ -n "$KLISH_PARAM_lines" ]; then - tail -n $KLISH_PARAM_lines /log/$file + $cmd "$file" | tail -n $KLISH_PARAM_lines else - cat /log/$file + $cmd "$file" fi