diff --git a/Makefile b/Makefile index 8bd7421..99829d4 100644 --- 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 new file mode 100644 index 0000000..e660313 --- /dev/null +++ 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 new file mode 100644 index 0000000..787d302 --- /dev/null +++ b/hostname.c @@ -0,0 +1,33 @@ +/* See LICENSE file for copyright and license details. */ +#include +#include +#include +#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; +}