commit 7be94fd3c825a0aa8f6cef97240bdae7eec3f47d
parent d0c87f6d3e3b0d13d8599d02d4a8a5509ee1eaab
Author: sin <sin@2f30.org>
Date: Mon, 19 Aug 2013 17:22:46 +0100
Add hostname(1)
Diffstat:
3 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
@@ -46,6 +46,7 @@ SRC = \
fold.c \
grep.c \
head.c \
+ hostname.c \
id.c \
kill.c \
ln.c \
diff --git a/hostname.1 b/hostname.1
@@ -0,0 +1,12 @@
+.TH HOSTNAME 1 sbase\-VERSION
+.SH NAME
+hostname \- set or print name of current host system
+.SH SYNOPSIS
+.B hostname
+.I [name]
+.SH DESCRIPTION
+.B hostname
+sets or prints the name of the current host. If no argument is given,
+the name of the current host is printed.
+.SH SEE ALSO
+.IR hostname (7)
diff --git a/hostname.c b/hostname.c
@@ -0,0 +1,33 @@
+/* See LICENSE file for copyright and license details. */
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include "util.h"
+
+static void
+usage(void)
+{
+ eprintf("usage: %s [name]\n", argv0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ char buf[BUFSIZ];
+
+ ARGBEGIN {
+ default:
+ usage();
+ } ARGEND;
+
+ if (argc < 1) {
+ if (gethostname(buf, sizeof(buf)) < 0)
+ eprintf("gethostname:");
+ puts(buf);
+ } else {
+ if (sethostname(argv[0], strlen(argv[0])) < 0)
+ eprintf("sethostname:");
+ }
+
+ return 0;
+}