From 3d418e666955695052d25e32c6b2f296b7af6859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Mon, 17 Jun 2024 22:54:24 +0900 Subject: [PATCH] =?UTF-8?q?Linux=E3=81=A7=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/distro.c | 32 ++++++++++++++++++++------------ src/host.c | 3 ++- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/distro.c b/src/distro.c index e94922b..8830e7c 100644 --- a/src/distro.c +++ b/src/distro.c @@ -3,31 +3,39 @@ #include #include - #include void display_distro() { - char buf[64]; - const char *cmd; + char buf[1288]; + const char *cmd = NULL; if (access("/bedrock/etc/bedrock-release", F_OK) != -1) { - cmd = "cat /bedrock/etc/bedrock-release"; + cmd = "cat /bedrock/etc/bedrock-release | grep '^PRETTY_NAME' | " + "cut -d '=' -f2 | tr -d '\"'"; } else if (access("/etc/redstar-release", F_OK) != -1) { - cmd = "echo \"Red Star OS\" && cat /etc/redstar-release | awk -F'[^0-9]' '$0=$2'"; + cmd = "echo \"Red Star OS\" && cat /etc/redstar-release | " + "awk -F'[^0-9]' '$0=$2'"; } else if (access("/etc/siduction-version", F_OK) != -1) { - cmd = "echo \"Siduction\" && lsb_release -sic"; + cmd = "echo \"Siduction\" && lsb_release -sic | " + "grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'"; } else if (access("/etc/mcst_version", F_OK) != -1) { - cmd = "echo \"OS Elbrus\" && cat /etc/mcst_version"; + cmd = "echo \"OS Elbrus\" && cat /etc/mcst_version | " + "grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'"; } else if (access("/etc/GoboLinuxVersion", F_OK) != -1) { - cmd = "echo \"GoboLinux\" && cat /etc/GoboLinuxVersion"; + cmd = "echo \"GoboLinux\" && cat /etc/GoboLinuxVersion | " + "grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'"; } else if (access("/etc/os-release", F_OK) != -1) { - cmd = "cat /etc/os-release"; + cmd = "cat /etc/os-release | " + "grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'"; } else if (access("/usr/lib/os-release", F_OK) != -1) { - cmd = "cat /usr/lib/os-release"; + cmd = "cat /usr/lib/os-release | " + "grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'"; } else if (access("/etc/openwrt_release", F_OK) != -1) { - cmd = "cat /etc/openwrt_release"; + cmd = "cat /etc/openwrt_release | " + "grep '^PRETTY_NAME' | cut -d '=' -f2 | tr -d '\"'"; } else if (access("/etc/lsb-release", F_OK) != -1) { - cmd = "cat /etc/lsb-release"; + cmd = "cat /etc/lsb-release | " + "grep '^DISTRIB_DESCRIPTION' | cut -d '=' -f2 | tr -d '\"'"; } else { perror("不明なディストリビューション。"); } diff --git a/src/host.c b/src/host.c index 2cc02ff..f10cc52 100644 --- a/src/host.c +++ b/src/host.c @@ -32,7 +32,8 @@ void display_host_model() { #elif defined(__sun) run_command("prtconf -b | awk -F':' '/banner-name/ {printf $2}'"); #elif defined(__linux__) - const char *cmd1, *cmd2; + const char *cmd1 = NULL; + const char *cmd2 = NULL; if (access("/system/app/", F_OK) != -1) { cmd1 = "getprop ro.product.brand"; cmd2 = "getprop ro.product.model";