diff options
author | 諏訪子 <suwako@076.moe> | 2024-06-19 23:52:56 +0900 |
---|---|---|
committer | 諏訪子 <suwako@076.moe> | 2024-06-19 23:52:56 +0900 |
commit | b6e3f6cb5d1051777c35988f201e6730525e3389 (patch) | |
tree | 98679f1995f7b103f3314ce54fdf0d1c76df6dbd /src/gpu.c | |
parent | 8f378429801162d690dc68c0f15b483c1d291838 (diff) |
掃除
Diffstat (limited to 'src/gpu.c')
-rw-r--r-- | src/gpu.c | 52 |
1 files changed, 9 insertions, 43 deletions
@@ -1,59 +1,25 @@ #include "gpu.h" +#include "common.h" -#include <stdio.h> -#include <string.h> -#include <stdlib.h> +#if !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) &&\ + !defined(__linux__) && !defined(__DragonFly__) #include <unistd.h> - -const char *run_gpu_command(const char *command) { - char buf[128]; - char *out = NULL; - size_t outsize = 0; - - FILE *p = popen(command, "r"); - if (!p) { - fprintf(stderr, "GPUコマンドを実効に失敗: %s", command); - return NULL; - } - - while (fgets(buf, sizeof(buf), p) != NULL) { - buf[strcspn(buf, "\n")] = '\0'; - - size_t len = strlen(buf); - char *nout = realloc(out, outsize + len + 1); - if (nout == NULL) { - perror("メモリの役割に失敗"); - free(out); - pclose(p); - return NULL; - } - - out = nout; - - memccpy(out + outsize, buf, sizeof(buf), len); - outsize += len; - out[outsize] = '\0'; - } - - pclose(p); - - return out; -} +#endif const char *display_gpu() { #if defined(__OpenBSD__) - return run_gpu_command("dmesg | grep -i graphics | sed 's/^.* \"//' | " + return run_command_s("dmesg | grep -i graphics | sed 's/^.* \"//' | " "sed 's/\".*$//'"); #elif defined(__NetBSD__) - return run_gpu_command("dmesg | grep -i graphics | sed 's/^.*: //' | " + return run_command_s("dmesg | grep -i graphics | sed 's/^.*: //' | " "sed 's/ (.*$//'"); #elif defined(__FreeBSD__) || defined(__DragonFly__) - return run_gpu_command("pciconf -lv | grep -B 4 -F \"VGA\" | " + return run_command_s("pciconf -lv | grep -B 4 -F \"VGA\" | " "grep -F \"device\" | sed 's/^.* device//' | " "sed \"s/^.* '//\" | sed \"s/'//\" | tail -1 | " "sed 's/ Core Processor Integrated Graphics Controller//'"); #elif defined(__linux__) - return run_gpu_command("lspci | grep VGA | sed 's/^.*: //' | " + return run_command_s("lspci | grep VGA | sed 's/^.*: //' | " "sed 's/Corporation //' | sed 's/ (.*$//' | " "sed 's/Advanced Micro Devices//' | " "sed 's/, Inc. //' | sed 's/Navi [0-9]* //' | " @@ -67,7 +33,7 @@ const char *display_gpu() { access("/usr/X11R7/bin/glxinfo", F_OK) == -1 && access("/usr/pkg/bin/glxinfo", F_OK) == -1 ) return NULL; - return run_gpu_command("glxinfo -B | grep -F 'OpenGL renderer string' | " + return run_command_s("glxinfo -B | grep -F 'OpenGL renderer string' | " "sed 's/OpenGL renderer string: //' | sed 's/Mesa //' | " "sed 's/DRI //' | sed 's/(R)//' | sed 's/(.*$//'"); #endif |