summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author諏訪子 <suwako@076.moe>2024-06-20 05:43:26 +0900
committer諏訪子 <suwako@076.moe>2024-06-20 05:43:26 +0900
commitc6fe85d881a68cb000609779b2abdcaa6a4e1ec3 (patch)
treee165fc03c20d75320f5ebf9ae644f8140cd20cdb
parent662dff2bfa28f523355c69ae83c3f16032e11c3d (diff)
.
-rw-r--r--main.c96
-rw-r--r--src/host.c31
-rw-r--r--src/logo/freebsd.c5
-rw-r--r--src/logo/linux.c5
-rw-r--r--src/logo/netbsd.c5
-rw-r--r--src/logo/openbsd.c5
-rw-r--r--src/logo/openindiana.c5
7 files changed, 101 insertions, 51 deletions
diff --git a/main.c b/main.c
index 0b273c9..92a3b9e 100644
--- a/main.c
+++ b/main.c
@@ -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]);
diff --git a/src/host.c b/src/host.c
index 72b4cdf..8996908 100644
--- a/src/host.c
+++ b/src/host.c
@@ -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;