]> diplodocus.org Git - nmh/commitdiff
test/getcanon.c: exit(3) with 0 or 1, not -1 or symbolic error code.
authorRalph Corderoy <ralph@inputplus.co.uk>
Sat, 9 Sep 2017 21:45:54 +0000 (22:45 +0100)
committerRalph Corderoy <ralph@inputplus.co.uk>
Sat, 9 Sep 2017 21:45:54 +0000 (22:45 +0100)
gethostname(3) returns -1 on failure and that was being returned from
main;  use 1 instead.  getaddrinfo(3) returns EAI_ADDRFAMILY et al on
failure, but here they're defined as small negative integers, unsuitable
for main()'s return value;  again, use 1 instead.  Along the way, flip
the logic so the end is nigh when possible, avoiding the cognitive
overhead of tracking state when continuing to read through the source.

test/getcanon.c

index 8d7f15fdc4163b322cda795041a91d2cf7e6e324..ada6802a51f9b946d20d3c573e3d4082fc96cf39 100644 (file)
@@ -20,37 +20,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)) {
+    printf("%s\n", hostname);
+    return 1;
   }
+  printf("%s\n", res->ai_canonname);
 
-  return status;
+  return 0;
 }