X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Futilities.c;h=ce6cd925bdc76d566ca15d4a5243d71102e32a47;hb=ca065f55235fd9979ede818963780f417d70c64e;hp=5dd66f62731d871651d16eb7a5232bc39797a006;hpb=6d0bec130624e22e695dbf4038fbeed9e1c26c60;p=m6w6%2Flibmemcached diff --git a/src/utilities.c b/src/utilities.c index 5dd66f62..ce6cd925 100644 --- a/src/utilities.c +++ b/src/utilities.c @@ -1,14 +1,23 @@ #include +static char **cleanup_list= NULL; +static char cleanup_list_length= 0; + void parse_opt_servers(memcached_st *memc, - char *opt_servers) + char *server_strings) { char *string; unsigned int port; char *begin_ptr; + char *end_ptr; + + end_ptr= server_strings + strlen(server_strings); + + assert(server_strings); + assert(memc); - for (begin_ptr= opt_servers, string= index(opt_servers, ','); - begin_ptr[0]; + for (begin_ptr= server_strings, string= index(server_strings, ','); + begin_ptr == end_ptr; begin_ptr= ++string, string= index(begin_ptr, ',')) { char buffer[HUGE_STRING_LEN]; @@ -21,9 +30,9 @@ void parse_opt_servers(memcached_st *memc, } else { - size_t length= strlen(opt_servers); + size_t length= strlen(server_strings); memcpy(buffer, begin_ptr, length); - string= opt_servers+length; + string= server_strings+length; } ptr= index(buffer, ':'); @@ -45,3 +54,24 @@ void parse_opt_servers(memcached_st *memc, } } +void cleanup(void) +{ + unsigned int x; + for (x= 0; x < cleanup_list_length; x++) + free(cleanup_list[x]); + + free(cleanup_list); +} + +char *strdup_cleanup(const char *str) +{ + char *ptr; + + ptr= strdup(str); + + cleanup_list= (char **)realloc(cleanup_list, sizeof(char *) * (cleanup_list_length+1)); + cleanup_list[cleanup_list_length]= ptr; + cleanup_list_length++; + + return ptr; +}