static char *buffer;
FUNCTION_NAME (ADD_PARAMS){  static char *buffer;  static size_t buffer_size;  static LOOKUP_TYPE resbuf;  LOOKUP_TYPE *result;  int save;#ifdef NEED_H_ERRNO  int h_errno_tmp = 0;#endif  /* Get lock.  */  __libc_lock_lock (lock);  if (buffer == NULL)    {      buffer_size = BUFLEN;      buffer = malloc (buffer_size);    }  if (buffer != NULL)    {#ifdef HANDLE_DIGITS_DOTS      /* We have to test for the use of IPv6 which can only be done by	 examining `_res'.  */      if ((_res.options & RES_INIT) == 0 && res_init () == -1)	{# ifdef NEED_H_ERRNO	  h_errno_tmp = NETDB_INTERNAL;# endif	  result = NULL;	  goto done;	}# include "digits_dots.c"#endif    }  while (buffer != NULL	 && INTERNAL (REENTRANT_NAME) (ADD_VARIABLES, &resbuf, buffer,				       buffer_size, &result H_ERRNO_VAR) != 0#ifdef NEED_H_ERRNO	 && h_errno_tmp == NETDB_INTERNAL#endif	 && errno == ERANGE)    {      char *new_buf;      buffer_size += BUFLEN;      new_buf = realloc (buffer, buffer_size);      if (new_buf == NULL)	{	  /* We are out of memory.  Free the current buffer so that the	     process gets a chance for a normal termination.  */	  save = errno;	  free (buffer);	  __set_errno (save);	}      buffer = new_buf;    }  if (buffer == NULL)    result = NULL;#ifdef HANDLE_DIGITS_DOTSdone:#endif  /* Release lock.  Preserve error value.  */  save = errno;  __libc_lock_unlock (lock);  __set_errno (save);#ifdef NEED_H_ERRNO  if (h_errno_tmp != 0)    __set_h_errno (h_errno_tmp);#endif  return result;}