+#include "common.h"
+
+memcached_return memcached_server_add(memcached_st *ptr, char *hostname, unsigned int port)
+{
+ memcached_server_st *new_host_list;
+ char *new_hostname;
+ LIBMEMCACHED_MEMCACHED_SERVER_ADD_START();
+
+ if (!port)
+ port= MEMCACHED_DEFAULT_PORT;
+
+ if (!hostname)
+ hostname= "localhost";
+
+
+ new_host_list= (memcached_server_st *)realloc(ptr->hosts, sizeof(memcached_server_st) * (ptr->number_of_hosts+1));
+ if (!new_host_list)
+ return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
+ memset(&new_host_list[ptr->number_of_hosts], 0, sizeof(memcached_server_st));
+
+ if (!new_host_list)
+ return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
+
+ ptr->hosts= new_host_list;
+
+ new_hostname=
+ (char *)malloc(sizeof(char) * (strlen(hostname)+1));
+ if (!new_hostname)
+ return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
+
+ memset(new_hostname, 0, strlen(hostname)+1);
+ memcpy(new_hostname, hostname, strlen(hostname));
+ ptr->hosts[ptr->number_of_hosts].hostname= new_hostname;
+ ptr->hosts[ptr->number_of_hosts].port= port;
+ ptr->hosts[ptr->number_of_hosts].fd= -1;
+ ptr->number_of_hosts++;
+
+ LIBMEMCACHED_MEMCACHED_SERVER_ADD_END();
+
+ return MEMCACHED_SUCCESS;
+}