From efbce07f941f163a6705bb58250c1e3977d7e685 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 14 Feb 2014 15:01:15 +0000 Subject: [PATCH] Use sysconf() instead of HOST_NAME_MAX --- hostname.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/hostname.c b/hostname.c index 5a8b2eb..4d068c8 100644 --- a/hostname.c +++ b/hostname.c @@ -15,7 +15,16 @@ usage(void) int main(int argc, char *argv[]) { - char host[HOST_NAME_MAX + 1]; + long sz; + char *host; + + sz = sysconf(_SC_HOST_NAME_MAX); + if (sz < 0) + sz = 255; + + host = malloc(sz + 1); + if (!host) + eprintf("malloc:"); ARGBEGIN { default: @@ -23,13 +32,15 @@ main(int argc, char *argv[]) } ARGEND; if (argc < 1) { - if (gethostname(host, sizeof(host)) < 0) + if (gethostname(host, sz + 1) < 0) eprintf("gethostname:"); puts(host); } else { - if (sethostname(argv[0], strlen(argv[0])) < 0) + if (sethostname(argv[0], sz + 1) < 0) eprintf("sethostname:"); } + free(host); + return EXIT_SUCCESS; }