util: eliminate dead store in hostutil_GetHostByName
[openafs.git] / src / util / hostparse.c
index e090323..d0a181a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
 #include <afsconfig.h>
 #include <afs/param.h>
 
+#include <roken.h>
 
-#include <stdio.h>
-#include <sys/types.h>
-#include <stdlib.h>
 #ifdef AFS_NT40_ENV
-#include <winsock2.h>
 #include <direct.h>
 #else
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netdb.h>
 #include <ctype.h>
 #endif
-#include <string.h>
-#include <errno.h>
-#include "afsutil.h"
 
+#include "afsutil.h"
 
 /* also parse a.b.c.d addresses */
 struct hostent *
-hostutil_GetHostByName(register char *ahost)
+hostutil_GetHostByName(char *ahost)
 {
-    register int tc;
+    int tc;
     static struct hostent thostent;
     static char *addrp[2];
     static char addr[4];
-    register char *ptr = ahost;
+    char *ptr = ahost;
     afs_uint32 tval, numeric = 0;
     int dots = 0;
 
@@ -62,7 +53,6 @@ hostutil_GetHostByName(register char *ahost)
        }
     }
     if (numeric) {
-       tc = *ahost;            /* look at the first char */
        /* decimal address, return fake hostent with only hostaddr field good */
        tval = 0;
        dots = 0;
@@ -126,10 +116,10 @@ hostutil_GetNameByINet(afs_uint32 addr)
     return tbuffer;
 }
 
-/* the parameter is a pointer to a buffer containing a string of 
-** bytes of the form 
+/* the parameter is a pointer to a buffer containing a string of
+** bytes of the form
 ** w.x.y.z     # machineName
-** returns the network interface in network byte order 
+** returns the network interface in network byte order
 */
 afs_uint32
 extractAddr(char *line, int maxSize)
@@ -253,11 +243,11 @@ gettmpdir(void)
 
     if (saveTmpDir == NULL) {
        /* initialize global temporary directory string */
-       char *dirp = (char *)malloc(MAX_PATH);
+       char *dirp = malloc(MAX_PATH+1);
        int freeDirp = 1;
 
        if (dirp != NULL) {
-           DWORD pathLen = GetTempPath(MAX_PATH, dirp);
+           DWORD pathLen = GetTempPath(MAX_PATH+1, dirp);
 
            if (pathLen == 0 || pathLen > MAX_PATH) {
                /* can't get tmp path; get cur work dir */
@@ -279,7 +269,7 @@ gettmpdir(void)
                }
            }
        }
-       /* dirp != NULL */
+
        if (dirp != NULL) {
            FilepathNormalize(dirp);
        } else {
@@ -288,28 +278,12 @@ gettmpdir(void)
            freeDirp = 0;
        }
 
-       /* atomically initialize shared buffer pointer IF still null */
-
-#if 0
-       if (InterlockedCompareExchange(&saveTmpDir, dirp, NULL) != NULL) {
-           /* shared buffer pointer already initialized by another thread */
-           if (freeDirp) {
-               free(dirp);
-           }
-       }                       /* interlock xchng */
-#endif
-
-       /* Above is what we really want to do, but Windows 95 does not have
-        * InterlockedCompareExchange().  So we just atomically swap
-        * the buffer pointer values but we do NOT deallocate the
-        * previously installed buffer, if any, in case it is in use.
-        */
-#ifdef _WIN64
-       InterlockedExchange64((LONGLONG)(INT_PTR)&saveTmpDir, (LONGLONG) dirp);
-#else
-       InterlockedExchange((LONG) & saveTmpDir, (LONG) dirp);
-#endif
-
+        /* atomically initialize shared buffer pointer IF still null */
+        if (InterlockedCompareExchangePointer(&saveTmpDir, dirp, NULL) != NULL) {
+            /* shared buffer pointer already initialized by another thread */
+            if (freeDirp)
+                free(dirp);
+        }
     }
     /* if (!saveTmpDir) */
     tmpdirp = saveTmpDir;