]> diplodocus.org Git - nmh/blobdiff - test/getcanon.c
getpass.c: Move interface to own file.
[nmh] / test / getcanon.c
index 8d7f15fdc4163b322cda795041a91d2cf7e6e324..27077dc6e7131f43cf0429b52736b9794c571bbc 100644 (file)
@@ -1,17 +1,16 @@
-/*
- * getcanon.c - Print the canonical name of a host, default to localhost.
+/* getcanon.c - Print the canonical name of a host, default to localhost.
  *
  * This code is Copyright (c) 2012, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
  */
 
-#include <netdb.h>   /* for getaddrinfo */
+#include <netdb.h>
 #include <sys/socket.h>
 #include <sys/types.h>
-#include <unistd.h>  /* for gethostname */
-#include <limits.h>  /* for _POSIX_HOST_NAME_MAX */
-#include <string.h>  /* for memset */
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
 #include <stdio.h>
 #include <errno.h>
 
@@ -20,37 +19,36 @@ int
 main(int argc, char *argv[])
 {
   char buf[_POSIX_HOST_NAME_MAX + 1];
-  const char *hostname = buf;
+  const char *hostname;
   struct addrinfo hints, *res;
-  int status = 0;
 
   /* Borrowed the important code below from LocalName() in sbr/mts.c. */
 
-  if (argc < 2) {
-    /* First get our local name. */
-    status = gethostname(buf, sizeof buf);
-  } else if (argc == 2) {
-    hostname = argv[1];
-  } else if (argc > 2) {
+  if (argc > 2) {
     fprintf(stderr, "usage: %s [hostname]\n", argv[0]);
     return 1;
   }
-
-  if (status == 0) {
-    /* Now fully qualify the hostname. */
-    memset(&hints, 0, sizeof hints);
-    hints.ai_flags = AI_CANONNAME;
-    hints.ai_family = AF_UNSPEC;
-
-    if ((status = getaddrinfo(hostname, NULL, &hints, &res)) == 0) {
-      printf("%s\n", res->ai_canonname);
-      freeaddrinfo(res);
-    } else {
-      printf("%s\n", hostname);
+  if (argc == 2)
+    hostname = argv[1];
+  else {
+    /* First get our local name. */
+    if (gethostname(buf, sizeof buf)) {
+        fprintf(stderr, "gethostname() failed: %s\n", strerror(errno));
+        return 1;
     }
-  } else {
-    fprintf(stderr, "gethostname() failed: %s\n", strerror(errno));
+    hostname = buf;
+  }
+
+  /* Now fully qualify the hostname. */
+  memset(&hints, 0, sizeof hints);
+  hints.ai_flags = AI_CANONNAME;
+  hints.ai_family = AF_UNSPEC;
+
+  if (getaddrinfo(hostname, NULL, &hints, &res)) {
+    puts(hostname);
+    return 1;
   }
+  puts(res->ai_canonname);
 
-  return status;
+  return 0;
 }