summaryrefslogtreecommitdiff
path: root/src/user.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/user.c')
-rw-r--r--src/user.c63
1 files changed, 35 insertions, 28 deletions
diff --git a/src/user.c b/src/user.c
index 9c01c82..a3805d5 100644
--- a/src/user.c
+++ b/src/user.c
@@ -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
}