Use strtok_r rather than strtok

This commit is contained in:
Mark Riddoch
2014-12-03 09:33:55 +00:00
parent d7c98a7cb5
commit 1e5bc37780
2 changed files with 27 additions and 31 deletions

View File

@ -590,11 +590,12 @@ int error_count = 0;
} }
if (obj->element && options) if (obj->element && options)
{ {
char *s = strtok(options, ","); char *lasts;
char *s = strtok_r(options, ",", &lasts);
while (s) while (s)
{ {
filterAddOption(obj->element, s); filterAddOption(obj->element, s);
s = strtok(NULL, ","); s = strtok_r(NULL, ",", &lasts);
} }
} }
if (obj->element) if (obj->element)
@ -640,7 +641,8 @@ int error_count = 0;
router = config_get_value(obj->parameters, "router"); router = config_get_value(obj->parameters, "router");
if (servers && obj->element) if (servers && obj->element)
{ {
char *s = strtok(servers, ","); char *lasts;
char *s = strtok_r(servers, ",", &lasts);
while (s) while (s)
{ {
CONFIG_CONTEXT *obj1 = context; CONFIG_CONTEXT *obj1 = context;
@ -667,7 +669,7 @@ int error_count = 0;
"service '%s'.", "service '%s'.",
s, obj->object))); s, obj->object)));
} }
s = strtok(NULL, ","); s = strtok_r(NULL, ",", &lasts);
} }
} }
else if (servers == NULL && internalService(router) == 0) else if (servers == NULL && internalService(router) == 0)
@ -681,11 +683,12 @@ int error_count = 0;
} }
if (roptions && obj->element) if (roptions && obj->element)
{ {
char *s = strtok(roptions, ","); char *lasts;
char *s = strtok_r(roptions, ",", &lasts);
while (s) while (s)
{ {
serviceAddRouterOption(obj->element, s); serviceAddRouterOption(obj->element, s);
s = strtok(NULL, ","); s = strtok_r(NULL, ",", &lasts);
} }
} }
if (filters && obj->element) if (filters && obj->element)
@ -818,7 +821,7 @@ int error_count = 0;
obj->element = monitor_alloc(obj->object, module); obj->element = monitor_alloc(obj->object, module);
if (servers && obj->element) if (servers && obj->element)
{ {
char *s; char *s, *lasts;
/* if id is not set, compute it now with pid only */ /* if id is not set, compute it now with pid only */
if (gateway.id == 0) { if (gateway.id == 0) {
@ -853,7 +856,7 @@ int error_count = 0;
monitorSetNetworkTimeout(obj->element, MONITOR_WRITE_TIMEOUT, write_timeout); monitorSetNetworkTimeout(obj->element, MONITOR_WRITE_TIMEOUT, write_timeout);
/* get the servers to monitor */ /* get the servers to monitor */
s = strtok(servers, ","); s = strtok_r(servers, ",", &lasts);
while (s) while (s)
{ {
CONFIG_CONTEXT *obj1 = context; CONFIG_CONTEXT *obj1 = context;
@ -880,7 +883,7 @@ int error_count = 0;
"monitor '%s'.", "monitor '%s'.",
s, obj->object))); s, obj->object)));
s = strtok(NULL, ","); s = strtok_r(NULL, ",", &lasts);
} }
} }
if (obj->element && user && passwd) if (obj->element && user && passwd)
@ -1529,7 +1532,8 @@ SERVER *server;
filters = config_get_value(obj->parameters, "filters"); filters = config_get_value(obj->parameters, "filters");
if (servers && obj->element) if (servers && obj->element)
{ {
char *s = strtok(servers, ","); char *lasts;
char *s = strtok_r(servers, ",", &lasts);
while (s) while (s)
{ {
CONFIG_CONTEXT *obj1 = context; CONFIG_CONTEXT *obj1 = context;
@ -1559,17 +1563,18 @@ SERVER *server;
"service '%s'.", "service '%s'.",
s, obj->object))); s, obj->object)));
} }
s = strtok(NULL, ","); s = strtok_r(NULL, ",", &lasts);
} }
} }
if (roptions && obj->element) if (roptions && obj->element)
{ {
char *s = strtok(roptions, ","); char *lasts;
char *s = strtok_r(roptions, ",", &lasts);
serviceClearRouterOptions(obj->element); serviceClearRouterOptions(obj->element);
while (s) while (s)
{ {
serviceAddRouterOption(obj->element, s); serviceAddRouterOption(obj->element, s);
s = strtok(NULL, ","); s = strtok_r(NULL, ",", &lasts);
} }
} }
if (filters && obj->element) if (filters && obj->element)
@ -1667,17 +1672,6 @@ static char *service_params[] =
NULL NULL
}; };
static char *server_params[] =
{
"type",
"address",
"port",
"protocol",
"monitorpw",
"monitoruser",
NULL
};
static char *listener_params[] = static char *listener_params[] =
{ {
"type", "type",

View File

@ -423,8 +423,8 @@ init_conn(MQ_INSTANCE *my_instance)
*/ */
char** parse_optstr(char* str, char* tok, int* szstore) char** parse_optstr(char* str, char* tok, int* szstore)
{ {
char* tk = str; char *lasts, *tk = str;
char** arr; char **arr;
int i = 0, size = 1; int i = 0, size = 1;
while((tk = strpbrk(tk + 1,tok))){ while((tk = strpbrk(tk + 1,tok))){
size++; size++;
@ -440,10 +440,10 @@ char** parse_optstr(char* str, char* tok, int* szstore)
} }
*szstore = size; *szstore = size;
tk = strtok(str,tok); tk = strtok_r(str,tok, &lasts);
while(tk && i < size){ while(tk && i < size){
arr[i++] = strdup(tk); arr[i++] = strdup(tk);
tk = strtok(NULL,tok); tk = strtok_r(NULL,tok,&lasts);
} }
return arr; return arr;
} }
@ -1052,7 +1052,8 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue)
for(z = 0;z<tbsz;z++){ for(z = 0;z<tbsz;z++){
if((tmp = strchr(tblnames[z],'.')) != NULL){ if((tmp = strchr(tblnames[z],'.')) != NULL){
tmp = strtok(tblnames[z],"."); char *lasts;
tmp = strtok_r(tblnames[z],".",&lasts);
for(i = 0; i<my_instance->shm_trg->size; i++){ for(i = 0; i<my_instance->shm_trg->size; i++){
if(strcmp(tmp,my_instance->shm_trg->objects[i]) == 0){ if(strcmp(tmp,my_instance->shm_trg->objects[i]) == 0){
@ -1103,8 +1104,9 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue)
char* tbnm = NULL; char* tbnm = NULL;
if((strchr(sesstbls[j],'.')) != NULL){ if((strchr(sesstbls[j],'.')) != NULL){
tbnm = strtok(sesstbls[j],"."); char *lasts;
tbnm = strtok(NULL,"."); tbnm = strtok_r(sesstbls[j],".",&lasts);
tbnm = strtok_r(NULL,".",&lasts);
}else{ }else{
tbnm = sesstbls[j]; tbnm = sesstbls[j];
} }