X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_parse.c;h=b81ccda136217809c0388c08960e917f72131444;hb=f05cd5b77ca7b17440bfc7ed9f48f7c11d269767;hp=366e77b55e6667b506baf4ff6bab6f72e9155e44;hpb=34a8c3858f30b02568c87f56a827f618aba6d6be;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_parse.c b/libmemcached/memcached_parse.c index 366e77b5..b81ccda1 100644 --- a/libmemcached/memcached_parse.c +++ b/libmemcached/memcached_parse.c @@ -8,12 +8,13 @@ #include #include "common.h" -memcached_server_st *memcached_servers_parse(char *server_strings) +memcached_server_st *memcached_servers_parse(const char *server_strings) { char *string; unsigned int port; - char *begin_ptr; - char *end_ptr; + uint32_t weight; + const char *begin_ptr; + const char *end_ptr; memcached_server_st *servers= NULL; memcached_return rc; @@ -26,8 +27,9 @@ memcached_server_st *memcached_servers_parse(char *server_strings) string= index(begin_ptr, ',')) { char buffer[HUGE_STRING_LEN]; - char *ptr; + char *ptr, *ptr2; port= 0; + weight= 0; if (string) { @@ -51,10 +53,19 @@ memcached_server_st *memcached_servers_parse(char *server_strings) ptr++; - port= strtol(ptr, (char **)NULL, 10); + port= strtoul(ptr, (char **)NULL, 10); + + ptr2= index(ptr, ' '); + if (! ptr2) + ptr2= index(ptr, ':'); + if (ptr2) + { + ptr2++; + weight = strtoul(ptr2, (char **)NULL, 10); + } } - servers= memcached_server_list_append(servers, buffer, port, &rc); + servers= memcached_server_list_append_with_weight(servers, buffer, port, weight, &rc); if (isspace(*begin_ptr)) begin_ptr++;