From b4307fffd9ef76efc612699a783e76368291f882 Mon Sep 17 00:00:00 2001 From: haturatu Date: Tue, 25 Jun 2024 00:33:30 +0900 Subject: fix escape & storage --- src/storage.c | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'src/storage.c') diff --git a/src/storage.c b/src/storage.c index 1924acf..5500e93 100644 --- a/src/storage.c +++ b/src/storage.c @@ -4,27 +4,26 @@ #include const char *display_storage() { - const char *iszfs = run_command_s("LC_ALL=C zpool list 2>&1"); - if ( - strncmp( - iszfs, - "sh: command not found: zpool", - strlen("sh: command not found: zpool") - ) == 0 || - strncmp( - iszfs, - "internal error: failed to initialize ZFS library", - strlen("internal error: failed to initialize ZFS library") - ) == 0 || - strncmp(iszfs, "sh: zpool: not found", strlen("sh: zpool: not found")) == 0 || - strncmp(iszfs, "sh: 1: zpool: not found", strlen("sh: 1: zpool: not found")) == 0 - ) { + const char *excode = run_command_s("LC_ALL=C zpool list 2>/dev/null || echo $?"); + + if (excode != NULL && strcmp(excode, "127") == 0) { return run_command_s("df -h | " - "awk '/^\\/dev\\// {printf \"%s: %s / %s, \", $1, $3, $2}' | " - "awk '{sub(/, $/, \"\"); print}'"); + "awk '/^\\/dev\\// {printf \"%s: %s / %s, \", $1, $3, $2}' | " + "awk '{sub(/, $/, \"\"); print}'"); + } else { + const char *iszfs = run_command_s("LC_ALL=C zpool list 2>&1"); + if ( + strncmp(iszfs, "sh: zpool: not found", strlen("sh: zpool: not found")) == 0 || + strncmp(iszfs, "sh: 1: zpool: not found", strlen("sh: 1: zpool: not found")) == 0 + ) { + return run_command_s("df -h | " + "awk '/^\\/dev\\// {printf \"%s: %s / %s, \", $1, $3, $2}' | " + "awk '{sub(/, $/, \"\"); print}'"); + } else { + return run_command_s("zpool list | " + "awk 'NR>1 {printf \"%s: %s / %s, \", $1, $3, $2}' | " + "awk '{sub(/, $/, \"\"); print}'"); + } } - - return run_command_s("zpool list | " - "awk 'NR>1 {printf \"%s: %s / %s, \", $1, $3, $2}' | " - "awk '{sub(/, $/, \"\"); print}'"); } + -- cgit v1.2.3