mk: mute build of test resources
[dpdk.git] / lib / librte_kvargs / rte_kvargs.c
index 1291084..8d56abd 100644 (file)
@@ -48,7 +48,9 @@ static int
 rte_kvargs_tokenize(struct rte_kvargs *kvlist, const char *params)
 {
        unsigned i;
-       char *str, *ctx1, *ctx2;
+       char *str;
+       char *ctx1 = NULL;
+       char *ctx2 = NULL;
 
        /* Copy the const char *params to a modifiable string
         * to pass to rte_strsplit
@@ -94,9 +96,10 @@ is_valid_key(const char *valid[], const char *key_match)
 {
        const char **valid_ptr;
 
-       for (valid_ptr = valid; *valid_ptr != NULL; valid_ptr++)
-               if (strstr(key_match, *valid_ptr) != NULL)
+       for (valid_ptr = valid; *valid_ptr != NULL; valid_ptr++) {
+               if (strcmp(key_match, *valid_ptr) == 0)
                        return 1;
+       }
        return 0;
 }
 
@@ -138,7 +141,7 @@ rte_kvargs_count(const struct rte_kvargs *kvlist, const char *key_match)
        ret = 0;
        for (i = 0; i < kvlist->count; i++) {
                pair = &kvlist->pairs[i];
-               if (strcmp(pair->key, key_match) == 0)
+               if (key_match == NULL || strcmp(pair->key, key_match) == 0)
                        ret++;
        }
 
@@ -159,8 +162,8 @@ rte_kvargs_process(const struct rte_kvargs *kvlist,
 
        for (i = 0; i < kvlist->count; i++) {
                pair = &kvlist->pairs[i];
-               if (strstr(pair->key, key_match) != NULL) {
-                       if ((*handler)(pair->value, opaque_arg) < 0)
+               if (key_match == NULL || strcmp(pair->key, key_match) == 0) {
+                       if ((*handler)(pair->key, pair->value, opaque_arg) < 0)
                                return -1;
                }
        }
@@ -171,8 +174,10 @@ rte_kvargs_process(const struct rte_kvargs *kvlist,
 void
 rte_kvargs_free(struct rte_kvargs *kvlist)
 {
-       if (kvlist->str != NULL)
-               free(kvlist->str);
+       if (!kvlist)
+               return;
+
+       free(kvlist->str);
        free(kvlist);
 }