1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

refactor: use strtok_r() instead of strtok()

This commit is contained in:
Steffen Vogel 2019-02-18 01:09:33 +01:00
parent 82954a2853
commit 5b553f2496
6 changed files with 33 additions and 32 deletions

View file

@ -32,14 +32,14 @@
int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *nodes)
{
char *cpy, *node, *type, *field, *end;
char *cpy, *node, *type, *field, *end, *lasts;
cpy = strdup(str);
if (!cpy)
return -1;
if (nodes) {
node = strtok(cpy, ".");
node = strtok_r(cpy, ".", &lasts);
if (!node) {
warning("Missing node name");
goto invalid_format;
@ -51,14 +51,14 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
goto invalid_format;
}
type = strtok(NULL, ".[");
type = strtok_r(NULL, ".[", &lasts);
if (!type)
type = "data";
}
else {
me->node = NULL;
type = strtok(cpy, ".[");
type = strtok_r(cpy, ".[", &lasts);
if (!type)
goto invalid_format;
}
@ -67,11 +67,11 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
me->type = MAPPING_TYPE_STATS;
me->length = 1;
char *metric = strtok(NULL, ".");
char *metric = strtok_r(NULL, ".", &lasts);
if (!metric)
goto invalid_format;
type = strtok(NULL, ".");
type = strtok_r(NULL, ".", &lasts);
if (!type)
goto invalid_format;
@ -87,7 +87,7 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
me->type = MAPPING_TYPE_HEADER;
me->length = 1;
field = strtok(NULL, ".");
field = strtok_r(NULL, ".", &lasts);
if (!field) {
warning("Missing header type");
goto invalid_format;
@ -106,7 +106,7 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
me->type = MAPPING_TYPE_TIMESTAMP;
me->length = 2;
field = strtok(NULL, ".");
field = strtok_r(NULL, ".", &lasts);
if (!field) {
warning("Missing timestamp type");
goto invalid_format;
@ -127,7 +127,7 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
me->type = MAPPING_TYPE_DATA;
first_str = strtok(NULL, "-]");
first_str = strtok_r(NULL, "-]", &lasts);
if (first_str) {
if (me->node)
first = vlist_lookup_index(&me->node->in.signals, first_str);
@ -148,7 +148,7 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
goto end;
}
last_str = strtok(NULL, "]");
last_str = strtok_r(NULL, "]", &lasts);
if (last_str) {
if (me->node)
last = vlist_lookup_index(&me->node->in.signals, last_str);
@ -175,7 +175,7 @@ int mapping_parse_str(struct mapping_entry *me, const char *str, struct vlist *n
goto invalid_format;
end: /* Check that there is no garbage at the end */
end = strtok(NULL, "");
end = strtok_r(NULL, "", &lasts);
if (end)
goto invalid_format;

View file

@ -174,8 +174,7 @@ int ib_parse(struct node *n, json_t *cfg)
struct infiniband *ib = (struct infiniband *) n->_vd;
int ret;
char *local = NULL;
char *remote = NULL;
char *local = NULL, *remote = NULL, *lasts;
const char *transport_mode = "RC";
int timeout = 1000;
int recv_cq_size = 128;
@ -255,8 +254,8 @@ int ib_parse(struct node *n, json_t *cfg)
debug(LOG_IB | 4, "Set buffer subtraction to %i in node %s", buffer_subtraction, node_name(n));
// Translate IP:PORT to a struct addrinfo
char* ip_adr = strtok(local, ":");
char* port = strtok(NULL, ":");
char* ip_adr = strtok_r(local, ":", &lasts);
char* port = strtok_r(NULL, ":", &lasts);
ret = getaddrinfo(ip_adr, port, NULL, &ib->conn.src_addr);
if (ret)
@ -327,8 +326,8 @@ int ib_parse(struct node *n, json_t *cfg)
// If node will send data, set remote address
if (ib->is_source) {
// Translate address info
char* ip_adr = strtok(remote, ":");
char* port = strtok(NULL, ":");
char *ip_adr = strtok_r(remote, ":", &lasts);
char *port = strtok_r(NULL, ":", &lasts);
ret = getaddrinfo(ip_adr, port, NULL, &ib->conn.dst_addr);
if (ret)

View file

@ -40,7 +40,7 @@ int influxdb_parse(struct node *n, json_t *json)
json_error_t err;
int ret;
char *tmp, *host, *port;
char *tmp, *host, *port, *lasts;
const char *server, *key;
ret = json_unpack_ex(json, &err, 0, "{ s: s, s: s, s?: o }",
@ -52,8 +52,8 @@ int influxdb_parse(struct node *n, json_t *json)
tmp = strdup(server);
host = strtok(tmp, ":");
port = strtok(NULL, "");
host = strtok_r(tmp, ":", &lasts);
port = strtok_r(NULL, "", &lasts);
i->key = strdup(key);
i->host = strdup(host);

View file

@ -626,9 +626,10 @@ int socket_parse_address(const char *addr, struct sockaddr *saddr, enum socket_l
#ifdef WITH_SOCKET_LAYER_ETH
else if (layer == SOCKET_LAYER_ETH) { /* Format: "ab:cd:ef:12:34:56%ifname:protocol" */
/* Split string */
char *node = strtok(copy, "%");
char *ifname = strtok(NULL, ":");
char *proto = strtok(NULL, "\0");
char *lasts;
char *node = strtok_r(copy, "%", &lasts);
char *ifname = strtok_r(NULL, ":", &lasts);
char *proto = strtok_r(NULL, "\0", &lasts);
/* Parse link layer (MAC) address */
struct ether_addr *mac = ether_aton(node);
@ -659,8 +660,9 @@ int socket_parse_address(const char *addr, struct sockaddr *saddr, enum socket_l
};
/* Split string */
char *node = strtok(copy, ":");
char *service = strtok(NULL, "\0");
char *lasts;
char *node = strtok_r(copy, ":", &lasts);
char *service = strtok_r(NULL, "\0", &lasts);
if (node && !strcmp(node, "*"))
node = NULL;

View file

@ -51,7 +51,7 @@ int stats_node_signal_parse(struct stats_node_signal *s, json_t *cfg)
int ret;
const char *stats;
char *metric, *type, *node, *cpy;
char *metric, *type, *node, *cpy, *lasts;
ret = json_unpack_ex(cfg, &err, 0, "{ s: s }",
"stats", &stats
@ -61,15 +61,15 @@ int stats_node_signal_parse(struct stats_node_signal *s, json_t *cfg)
cpy = strdup(stats);
node = strtok(cpy, ".");
node = strtok_r(cpy, ".", &lasts);
if (!node)
goto invalid_format;
metric = strtok(NULL, ".");
metric = strtok_r(NULL, ".", &lasts);
if (!metric)
goto invalid_format;
type = strtok(NULL, ".");
type = strtok_r(NULL, ".", &lasts);
if (!type)
goto invalid_format;

View file

@ -203,7 +203,7 @@ int websocket_protocol_cb(struct lws *wsi, enum lws_callback_reasons reason, voi
*/
/* Get path of incoming request */
char *node, *format;
char *node, *format, *lasts;
char uri[64];
lws_hdr_copy(wsi, uri, sizeof(uri), WSI_TOKEN_GET_URI); /* The path component of the*/
@ -213,14 +213,14 @@ int websocket_protocol_cb(struct lws *wsi, enum lws_callback_reasons reason, voi
return -1;
}
node = strtok(uri, "/.");
node = strtok_r(uri, "/.", &lasts);
if (!node) {
websocket_connection_close(c, wsi, LWS_CLOSE_STATUS_POLICY_VIOLATION, "Unknown node");
warning("Failed to tokenize request URI");
return -1;
}
format = strtok(NULL, "");
format = strtok_r(NULL, "", &lasts);
if (!format)
format = "villas.web";