diff options
Diffstat (limited to 'newlib/libc/sys/linux/gethostname.c')
-rw-r--r-- | newlib/libc/sys/linux/gethostname.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/newlib/libc/sys/linux/gethostname.c b/newlib/libc/sys/linux/gethostname.c new file mode 100644 index 000000000..d5ebe58a2 --- /dev/null +++ b/newlib/libc/sys/linux/gethostname.c @@ -0,0 +1,30 @@ +/* Copyright 2002, Red Hat Inc. */ + +#include <errno.h> +#include <string.h> +#include <unistd.h> +#include <sys/utsname.h> + +int +gethostname (char *name, size_t len) +{ + struct utsname nodebuf; + size_t nodelen; + + if (uname (&nodebuf)) + return -1; + + nodelen = strlen (nodebuf.nodename) + 1; + if (len < nodelen) + memcpy (name, nodebuf.nodename, len); + else + memcpy (name, nodebuf.nodename, nodelen); + + if (nodelen > len) + { + errno = ENAMETOOLONG; + return -1; + } + return 0; +} + |