X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_parse.c;h=b81ccda136217809c0388c08960e917f72131444;hb=95084fee7261488e27be38d9c50957f82a75f416;hp=fc6a4cb1ecb19e08892afc84a024eac263118c4d;hpb=948eeb667c78f158f769de8cc418e44e81048dc2;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_parse.c b/libmemcached/memcached_parse.c index fc6a4cb1..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) { @@ -52,9 +54,18 @@ memcached_server_st *memcached_servers_parse(char *server_strings) ptr++; 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++;