diff options
author | 諏訪子 <suwako@076.moe> | 2024-06-20 05:43:26 +0900 |
---|---|---|
committer | 諏訪子 <suwako@076.moe> | 2024-06-20 05:43:26 +0900 |
commit | c6fe85d881a68cb000609779b2abdcaa6a4e1ec3 (patch) | |
tree | e165fc03c20d75320f5ebf9ae644f8140cd20cdb | |
parent | 662dff2bfa28f523355c69ae83c3f16032e11c3d (diff) |
.
-rw-r--r-- | main.c | 96 | ||||
-rw-r--r-- | src/host.c | 31 | ||||
-rw-r--r-- | src/logo/freebsd.c | 5 | ||||
-rw-r--r-- | src/logo/linux.c | 5 | ||||
-rw-r--r-- | src/logo/netbsd.c | 5 | ||||
-rw-r--r-- | src/logo/openbsd.c | 5 | ||||
-rw-r--r-- | src/logo/openindiana.c | 5 |
7 files changed, 101 insertions, 51 deletions
@@ -73,7 +73,11 @@ int main(int argc, char *argv[]) { #endif int minsize = MIN_SIZE; - if (!display_resolution()) minsize--; + + const char *res = display_resolution(); + if (!res) minsize--; + else free((void *)res); + const char *reset = RESET; size_t ls = logosize <= (size_t)minsize ? (size_t)minsize : logosize; if (issmall) { @@ -84,35 +88,39 @@ int main(int argc, char *argv[]) { ls = ne >= (size_t)minsize ? (size_t)minsize : ne; } - if (display_user_name() || display_user_host()) { + const char *name = display_user_name(); + const char *host = display_user_host(); + if (name || host) { printf("%s ", LOGO[lc]); printf( "%s%s%s@%s%s%s\n", - titlecolor, display_user_name(), reset, - titlecolor, display_user_host(), reset + titlecolor, name, reset, + titlecolor, host, reset ); + if (name) free((void *)name); + if (host) free((void *)host); lc++; - if (display_user_name()) free((void *)display_user_name()); - if (display_user_host()) free((void *)display_user_host()); } printf("%s ", LOGO[lc]); printf("------------------\n"); lc++; - if (display_os()) { + const char *os = display_os(); + if (os) { printf("%s ", LOGO[lc]); - printf("%sOS%s: %s\n", color, reset, display_os()); + printf("%sOS%s: %s\n", color, reset, os); + free((void *)os); lc++; - free((void *)display_os()); } #if defined(__linux__) - if (display_distro()) { + const char *distroo = display_distro(); + if (distroo) { printf("%s ", LOGO[lc]); - printf("%sDistro%s: %s\n", color, reset, display_distro()); + printf("%sDistro%s: %s\n", color, reset, distroo); lc++; - free((void *)display_distro()); + free((void *)distroo); } #endif @@ -122,66 +130,74 @@ int main(int argc, char *argv[]) { printf("\n"); lc++; - if (display_days() || display_time()) { + const char *days = display_days(); + const char *time = display_time(); + if (days || time) { printf("%s ", LOGO[lc]); printf("%s%s%s%s", color, "Uptime", reset, ": "); - if (display_days()) { - printf("%s", display_days()); - if (display_time()) printf(" "); + if (days) { + printf("%s", days); + if (time) printf(" "); } - if (display_time()) { - printf("%s", display_time()); + if (time) { + printf("%s", time); } printf("\n"); + if (days) free((void *)days); + if (time) free((void *)time); lc++; - if (display_days()) free((void *)display_days()); - if (display_time()) free((void *)display_time()); } #if defined(__OpenBSD__) - if (display_recording_audio() || display_recording_video()) { + const char *audio = display_recording_audio(); + const char *video = display_recording_video(); + if (audio || video) { printf("%s ", LOGO[lc]); printf("%sRecording%s: ", color, reset); - if (display_recording_audio()) { - printf("audio = %s", display_recording_audio()); - if (display_recording_video()) printf(", "); + if (audio) { + printf("audio = %s", audio); + if (video) printf(", "); } - if (display_recording_video()) { - printf("video = %s", display_recording_video()); + if (video) { + printf("video = %s", video); } printf("\n"); + if (audio) free((void *)audio); + if (video) free((void *)video); lc++; - if (display_recording_audio()) free((void *)display_recording_audio()); - if (display_recording_video()) free((void *)display_recording_video()); } #endif - if (display_packages()) { + const char *packages = display_packages(); + if (packages) { printf("%s ", LOGO[lc]); - printf("%sPackages%s: %s\n", color, reset, display_packages()); + printf("%sPackages%s: %s\n", color, reset, packages); lc++; - free((void *)display_packages()); + free((void *)packages); } - if (display_resolution()) { + const char *resolution = display_resolution(); + if (resolution) { printf("%s ", LOGO[lc]); - printf("%sResolution%s: %s\n", color, reset, display_resolution()); + printf("%sResolution%s: %s\n", color, reset, resolution); lc++; - free((void *)display_resolution()); + free((void *)resolution); } - if (display_cpu()) { + const char *cpu = display_cpu(); + if (cpu) { printf("%s ", LOGO[lc]); - printf("%sCPU%s: %s\n", color, reset, display_cpu()); + printf("%sCPU%s: %s\n", color, reset, cpu); lc++; - free((void *)display_cpu()); + free((void *)cpu); } - if (display_gpu()) { + const char *gpu = display_gpu(); + if (gpu) { printf("%s ", LOGO[lc]); - printf("%sGPU%s: %s\n", color, reset, display_gpu()); + printf("%sGPU%s: %s\n", color, reset, gpu); lc++; - free((void *)display_gpu()); + free((void *)gpu); } printf("%s ", LOGO[lc]); @@ -68,6 +68,7 @@ void display_host_model() { "\"sysctl: hw.version: value is not available\" ]; then " "sysctl -n hw.version && echo \" \"; fi && " "sysctl -n hw.product"); + if (!cmd) return; printf("%s", cmd); free((void *)cmd); #elif defined(__FreeBSD__) @@ -82,12 +83,22 @@ void display_host_model() { const char *maker = run_host_command("kenv | grep smbios.system.maker | " "sed 's/\"//g' | sed 's/smbios.system.maker=//'"); printf("%s %s %s", maker, family, product); + if (maker) free((void *)maker); + if (family) free((void *)family); + if (product) free((void *)product); #elif defined(__NetBSD__) - printf("%s", run_host_command("sysctl -n machdep.dmi.system-vendor && " + const char *cmd = run_host_command("sysctl -n machdep.dmi.system-vendor && " "echo \" \" && sysctl -n machdep.dmi.system-version && " - "echo \" \" && sysctl -n machdep.dmi.system-product")); + "echo \" \" && sysctl -n machdep.dmi.system-product"); + if (!cmd) return; + printf("%s", cmd); + free((void *)cmd); #elif defined(__sun) - printf("%s", run_host_command("prtconf -b | awk -F':' '/banner-name/ {printf $2}'")); + const char *cmd = run_host_command("prtconf -b | " + "awk -F':' '/banner-name/ {printf $2}'"); + if (!cmd) return; + printf("%s", cmd); + free((void *)cm(void *)cmd); #elif defined(__linux__) const char *cmd1 = NULL; const char *cmd2 = NULL; @@ -109,15 +120,23 @@ void display_host_model() { if (!cmd1) { printf("Unknown"); } else { - printf("%s", run_host_command(cmd1)); + const char *cmd = run_host_command(cmd1); + if (!cmd) return; + printf("%s", cmd); + free((void *)cmd); } if (cmd2) { const char *model = run_host_command(cmd2); - if (model) printf(" %s", model); + if (!model) return; + printf(" %s", model); + free((void *)model); } #elif defined(__APPLE__) - printf("%s", run_host_command("sysctl -n hw.model")); + const char *cmd = run_host_command("sysctl -n hw.model"); + if (!cmd) return; + printf("%s", cmd); + free((void *)cmd); FILE *p = popen("kextstat | grep -F -e \"FakeSMC\" -e \"VirtualSMC\"", "r"); if (!p) { diff --git a/src/logo/freebsd.c b/src/logo/freebsd.c index 685deb5..ec3926d 100644 --- a/src/logo/freebsd.c +++ b/src/logo/freebsd.c @@ -3,6 +3,7 @@ #include "../resolution.h" #include <string.h> +#include <stdlib.h> char *LOGO[23]; char *LOGO_SMALL[23]; @@ -14,7 +15,9 @@ int minsize = MIN_SIZE; void getOS() { color = RED; titlecolor = RED; - if (!display_resolution()) minsize--; + const char *res = display_resolution(); + if (!res) minsize--; + else free((void *)res); LOGO[0] = WHITE "``` " RED "` " RESET; LOGO[1] = WHITE " ` `.....---..." RED "....--.``` -/ " RESET; diff --git a/src/logo/linux.c b/src/logo/linux.c index 604130c..6a58f7e 100644 --- a/src/logo/linux.c +++ b/src/logo/linux.c @@ -4,6 +4,7 @@ #include <stdio.h> #include <string.h> +#include <stdlib.h> char *LOGO[23]; char *LOGO_SMALL[23]; @@ -13,7 +14,9 @@ size_t logosize; int minsize = MIN_SIZE; void getDistro(const char *distroname) { - if (!display_resolution()) minsize--; + const char *res = display_resolution(); + if (!res) minsize--; + else free((void *)res); if (strncmp((char *)distroname, "alpine", strlen("alpine")) == 0) { color = MAGENTA; diff --git a/src/logo/netbsd.c b/src/logo/netbsd.c index 9726f2e..18066a5 100644 --- a/src/logo/netbsd.c +++ b/src/logo/netbsd.c @@ -3,6 +3,7 @@ #include "../resolution.h" #include <string.h> +#include <stdlib.h> char *LOGO[23]; char *LOGO_SMALL[23]; @@ -14,7 +15,9 @@ int minsize = MIN_SIZE; void getOS() { color = MAGENTA; titlecolor = MAGENTA; - if (!display_resolution()) minsize--; + const char *res = display_resolution(); + if (!res) minsize--; + else free((void *)res); LOGO[0] = MAGENTA " `-/oshdmNMNdhyo+:-` " RESET; LOGO[1] = WHITE "y" MAGENTA "/s+:-`` `.-:+oydNMMMMNhs/-`` " RESET; diff --git a/src/logo/openbsd.c b/src/logo/openbsd.c index c33835f..fa59bba 100644 --- a/src/logo/openbsd.c +++ b/src/logo/openbsd.c @@ -3,6 +3,7 @@ #include "../resolution.h" #include <string.h> +#include <stdlib.h> char *LOGO[23]; char *LOGO_SMALL[23]; @@ -14,7 +15,9 @@ int minsize = MIN_SIZE; void getOS() { color = YELLOW; titlecolor = YELLOW; - if (!display_resolution()) minsize--; + const char *res = display_resolution(); + if (!res) minsize--; + else free((void *)res); for (int i = 0; i < LOGO_SIZE; i++) { LOGO[i] = NULL; diff --git a/src/logo/openindiana.c b/src/logo/openindiana.c index 2989078..0195641 100644 --- a/src/logo/openindiana.c +++ b/src/logo/openindiana.c @@ -3,6 +3,7 @@ #include "../resolution.h" #include <string.h> +#include <stdlib.h> char *LOGO[23]; char *LOGO_SMALL[23]; @@ -14,7 +15,9 @@ int minsize = MIN_SIZE; void getOS() { color = BLUE; titlecolor = BLUE; - if (!display_resolution()) minsize--; + const char *res = display_resolution(); + if (!res) minsize--; + else free((void *)res); LOGO[0] = WHITE " .sy/ " RESET; LOGO[1] = WHITE " .yh+ " RESET; |