Use strtok_r rather than strtok
This commit is contained in:
@ -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",
|
||||||
|
@ -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];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user