diff options
author | 諏訪子 <suwako@076.moe> | 2024-06-18 01:43:55 +0900 |
---|---|---|
committer | 諏訪子 <suwako@076.moe> | 2024-06-18 01:43:55 +0900 |
commit | a2bd4b2b5cee06e89084910171341e729fc215e2 (patch) | |
tree | 1e2a773c3748038176f44c0d16e58b3411b7125d /src/user.c | |
parent | 88cdbee9d9cfd258e1ef4117af556fc09b126427 (diff) |
FreeBSD: ホスト名とモデル名の修正
Diffstat (limited to 'src/user.c')
-rw-r--r-- | src/user.c | 63 |
1 files changed, 35 insertions, 28 deletions
@@ -3,55 +3,62 @@ #include <stdio.h> #include <string.h> -void display_user_name() { - char buf[128]; - FILE *p = popen("whoami", "r"); +void run_user_command(const char *command) { + char buf[64]; +#if defined(__NetBSD__) || defined(__FreeBSD__) + FILE *p = popen(command, "r"); if (!p) { - fprintf(stderr, "「whoami」コマンドを実効に失敗"); + snprintf(buf, sizeof(buf), "「%s」コマンドを見つけられません。", command); + perror(buf); return; } while (fgets(buf, sizeof(buf), p) != NULL) { - buf[strcspn(buf, "\n")] = '\0'; printf("%s", buf); } pclose(p); -} - -void display_user_host() { - char buf[64]; -#ifdef __NetBSD__ - FILE *p = popen("hostname", "r"); - if (!p) { - perror("hostnameコマンドを見つけられません。"); + // +#else + FILE *f = fopen(command, "r"); + if (!f) { + snprintf(buf, sizeof(buf), "「%s」ファイルを見つけられません。", command); + perror(buf); return; } - while (fgets(buf, sizeof(buf), p) != NULL) { - buf[strcspn(buf, "\n")] = '\0'; + while (fgets(buf, sizeof(buf), f) != NULL) { printf("%s", buf); } - pclose(p); -#else - const char *filename; -#ifdef __OpenBSD__ - filename = "/etc/myname"; -#else - filename = "/etc/hostname"; + fclose(f); #endif - FILE *f = fopen(filename, "r"); - if (!f) { - snprintf(buf, sizeof(buf), "「%s」ファイルを見つけられません。", filename); - perror(buf); +} + +void display_user_name() { + char buf[128]; + FILE *p = popen("whoami", "r"); + if (!p) { + fprintf(stderr, "「whoami」コマンドを実効に失敗"); return; } - while (fgets(buf, sizeof(buf), f) != NULL) { + while (fgets(buf, sizeof(buf), p) != NULL) { + buf[strcspn(buf, "\n")] = '\0'; printf("%s", buf); } - fclose(f); + pclose(p); +} + +void display_user_host() { +#if defined(__OpenBSD__) + run_user_command("/etc/myname"); +#elif defined(__NetBSD__) + run_user_command("hostname"); +#elif defined(__FreeBSD__) + run_user_command("sysctl -n kern.hostname"); +#else + run_user_command("/etc/hostname"); #endif } |