ret=gethostbyname((char *)name);
ret=gethostbyname( #ifndef CONST_STRICT (char *) #endif name);
struct hostent *BIO_gethostbyname(const char *name)	{	struct hostent *ret;	int i,lowi=0,j;	unsigned long low= (unsigned long)-1;/*	return(gethostbyname(name)); */#if 0 /* It doesn't make sense to use locking here: The function interface	   * is not thread-safe, because threads can never be sure when	   * some other thread destroys the data they were given a pointer to.	   */	CRYPTO_w_lock(CRYPTO_LOCK_GETHOSTBYNAME);#endif	j=strlen(name);	if (j < 128)		{		for (i=0; i<GHBN_NUM; i++)			{			if (low > ghbn_cache[i].order)				{				low=ghbn_cache[i].order;				lowi=i;				}			if (ghbn_cache[i].order > 0)				{				if (strncmp(name,ghbn_cache[i].name,128) == 0)					break;				}			}		}	else		i=GHBN_NUM;	if (i == GHBN_NUM) /* no hit*/		{		BIO_ghbn_miss++;		/* Note: under VMS with SOCKETSHR, it seems like the first		 * parameter is 'char *', instead of 'const char *'		 */		ret=gethostbyname((char *)name);		if (ret == NULL)			goto end;		if (j > 128) /* too big to cache */			{#if 0 /* If we were trying to make this function thread-safe (which	   * is bound to fail), we'd have to give up in this case	   * (or allocate more memory). */			ret = NULL;#endif			goto end;			}		/* else add to cache */		if (ghbn_cache[lowi].ent != NULL)			ghbn_free(ghbn_cache[lowi].ent); /* XXX not thread-safe */		ghbn_cache[lowi].name[0] = '\0';		if((ret=ghbn_cache[lowi].ent=ghbn_dup(ret)) == NULL)			{			BIOerr(BIO_F_BIO_GETHOSTBYNAME,ERR_R_MALLOC_FAILURE);			goto end;			}		strncpy(ghbn_cache[lowi].name,name,128);		ghbn_cache[lowi].order=BIO_ghbn_miss+BIO_ghbn_hits;		}	else		{		BIO_ghbn_hits++;		ret= ghbn_cache[i].ent;		ghbn_cache[i].order=BIO_ghbn_miss+BIO_ghbn_hits;		}end:#if 0	CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME);#endif	return(ret);	}