summaryrefslogtreecommitdiff
path: root/src/lib/dlt_env_ll.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dlt_env_ll.c')
-rw-r--r--src/lib/dlt_env_ll.c573
1 files changed, 235 insertions, 338 deletions
diff --git a/src/lib/dlt_env_ll.c b/src/lib/dlt_env_ll.c
index 8972747..85d2250 100644
--- a/src/lib/dlt_env_ll.c
+++ b/src/lib/dlt_env_ll.c
@@ -22,7 +22,7 @@
* License MPL-2.0: Mozilla Public License version 2.0 http://mozilla.org/MPL/2.0/.
*
* \file dlt_env_ll.c
-*/
+ */
#include "dlt_user.h"
#include <string.h>
@@ -55,33 +55,26 @@
*
* @return 0 if successful, -1 else
*/
-int dlt_env_extract_id(char ** const env, char * id)
+int dlt_env_extract_id(char **const env, char *id)
{
- int i;
- if (!env || !id)
- {
- return -1;
- }
+ int i;
- if (!(*env))
- {
- return -1;
- }
+ if (!env || !id)
+ return -1;
- memset(id, 0, 4);
+ if (!(*env))
+ return -1;
- for (i = 0; (i<4) && (**env != ':') && (**env != 0); ++i)
- {
- *id++ = *((*env)++);
- }
+ memset(id, 0, 4);
- /* the next/last character must be ':' */
- if ((0 != **env) && (':' == **env))
- {
- return 0;
- }
+ for (i = 0; (i < 4) && (**env != ':') && (**env != 0); ++i)
+ *id++ = *((*env)++);
- return -1;
+ /* the next/last character must be ':' */
+ if ((0 != **env) && (':' == **env))
+ return 0;
+
+ return -1;
}
@@ -90,112 +83,77 @@ int dlt_env_extract_id(char ** const env, char * id)
*
* Stops end of string or if ';' is detected
*/
-int dlt_env_helper_to_lower(char ** const env, char *result, int const res_len)
+int dlt_env_helper_to_lower(char **const env, char *result, int const res_len)
{
- int count = 0;
- char ch = *(*env);
+ int count = 0;
+ char ch = *(*env);
- if (!env || !result)
- {
- return -1;
- }
+ if (!env || !result)
+ return -1;
- if (!(*env))
- {
- return -1;
- }
-
- count = 0;
- ch = *(*env);
- while (ch && (count < res_len-1) && (ch != ';'))
- {
- if (ch >= 'A' && ch <= 'Z')
- {
- result[count] = ch + 'a' - 'A';
- }
- else
- {
- result[count] = ch;
+ if (!(*env))
+ return -1;
+
+ count = 0;
+ ch = *(*env);
+
+ while (ch && (count < res_len - 1) && (ch != ';')) {
+ if ((ch >= 'A') && (ch <= 'Z'))
+ result[count] = ch + 'a' - 'A';
+ else
+ result[count] = ch;
+
+ ch = *(++(*env));
+ ++count;
}
- ch = *(++(*env));
- ++count;
- }
- result[count] = 0;
- if (!ch || (ch == ';')) /* full input was parsed */
- {
- return 0;
- }
- else
- {
- return -1;
- }
+ result[count] = 0;
+
+ if (!ch || (ch == ';')) /* full input was parsed */
+ return 0;
+ else
+ return -1;
}
-int dlt_env_extract_symbolic_ll(char ** const env, int8_t * ll)
+int dlt_env_extract_symbolic_ll(char **const env, int8_t *ll)
{
- char result[strlen("verbose")+1];
- if (!env || !ll)
- {
- return -1;
- }
+ char result[strlen("verbose") + 1];
- if (!(*env))
- {
- return -1;
- }
+ if (!env || !ll)
+ return -1;
- if (dlt_env_helper_to_lower(env, &result[0], sizeof(result)) == 0)
- {
- if (strncmp("default", result, sizeof(result)) == 0)
- {
- *ll = -1;
- }
- else if (strncmp("off", result, sizeof(result)) == 0)
- {
- *ll = 0;
- }
- else if (strncmp("fatal", result, sizeof(result)) == 0)
- {
- *ll = 1;
- }
- else if (strncmp("error", result, sizeof(result)) == 0)
- {
- *ll = 2;
- }
- else if (strncmp("warning", result, sizeof(result)) == 0)
- {
- *ll = 3;
- }
- else if (strncmp("info", result, sizeof(result)) == 0)
- {
- *ll = 4;
- }
- else if (strncmp("debug", result, sizeof(result)) == 0)
- {
- *ll = 5;
- }
- else if (strncmp("verbose", result, sizeof(result)) == 0)
- {
- *ll = 6;
- }
- else
- {
- return -1;
- }
+ if (!(*env))
+ return -1;
- if (**env != 0)
- {
- (*env)++;
+ if (dlt_env_helper_to_lower(env, &result[0], sizeof(result)) == 0) {
+ if (strncmp("default", result, sizeof(result)) == 0)
+ *ll = -1;
+ else if (strncmp("off", result, sizeof(result)) == 0)
+ *ll = 0;
+ else if (strncmp("fatal", result, sizeof(result)) == 0)
+ *ll = 1;
+ else if (strncmp("error", result, sizeof(result)) == 0)
+ *ll = 2;
+ else if (strncmp("warning", result, sizeof(result)) == 0)
+ *ll = 3;
+ else if (strncmp("info", result, sizeof(result)) == 0)
+ *ll = 4;
+ else if (strncmp("debug", result, sizeof(result)) == 0)
+ *ll = 5;
+ else if (strncmp("verbose", result, sizeof(result)) == 0)
+ *ll = 6;
+ else
+ return -1;
+
+ if (**env != 0)
+ (*env)++;
+
+ return 0;
+ }
+ else {
+ return -1;
}
- return 0;
- }
- else
- {
- return -1;
- }
-
}
@@ -225,51 +183,37 @@ int dlt_env_extract_symbolic_ll(char ** const env, int8_t * ll)
*
* @return 0 if successful, -1 else
*/
-int dlt_env_extract_ll(char ** const env, int8_t * ll)
+int dlt_env_extract_ll(char **const env, int8_t *ll)
{
- if (!env || !ll)
- {
- return -1;
- }
+ if (!env || !ll)
+ return -1;
- if (!(*env))
- {
- return -1;
- }
+ if (!(*env))
+ return -1;
- /* extract number */
- if (**env == '-')
- {
- (*env)++;
- if (**env == '1')
- {
- *ll = -1;
- (*env)++;
+ /* extract number */
+ if (**env == '-') {
+ (*env)++;
+
+ if (**env == '1') {
+ *ll = -1;
+ (*env)++;
+ }
}
- }
- else
- {
- if ((**env >= '0') && (**env < '7'))
- {
- *ll = **env - '0';
- (*env)++;
+ else {
+ if ((**env >= '0') && (**env < '7')) {
+ *ll = **env - '0';
+ (*env)++;
+ }
+ else if (dlt_env_extract_symbolic_ll(env, ll) != 0)
+ return -1;
}
- else
- {
- if (dlt_env_extract_symbolic_ll(env, ll) != 0)
- {
- return -1;
- }
- }
- }
- /* check end, either next char is NULL or ';' */
- if ((**env == ';') || (**env == 0))
- {
- return 0;
- }
+ /* check end, either next char is NULL or ';' */
+ if ((**env == ';') || (**env == 0))
+ return 0;
- return -1;
+ return -1;
}
@@ -278,41 +222,35 @@ int dlt_env_extract_ll(char ** const env, int8_t * ll)
*
* @return 0 if successful, -1 else
*/
-int dlt_env_extract_ll_item(char ** const env, dlt_env_ll_item * const item)
+int dlt_env_extract_ll_item(char **const env, dlt_env_ll_item *const item)
{
- int ret = -1;
- if (!env || !item)
- {
- return -1;
- }
+ int ret = -1;
- if (!(*env))
- {
- return -1;
- }
+ if (!env || !item)
+ return -1;
- memset(item, 0, sizeof(dlt_env_ll_item));
- ret = dlt_env_extract_id(env, item->appId);
- if (ret == -1)
- {
- return -1;
- }
+ if (!(*env))
+ return -1;
- (*env)++;
- ret = dlt_env_extract_id(env, item->ctxId);
- if (ret == -1)
- {
- return -1;
- }
+ memset(item, 0, sizeof(dlt_env_ll_item));
+ ret = dlt_env_extract_id(env, item->appId);
- (*env)++;
- ret = dlt_env_extract_ll(env, &item->ll);
- if (ret == -1)
- {
- return -1;
- }
+ if (ret == -1)
+ return -1;
+
+ (*env)++;
+ ret = dlt_env_extract_id(env, item->ctxId);
+
+ if (ret == -1)
+ return -1;
+
+ (*env)++;
+ ret = dlt_env_extract_ll(env, &item->ll);
- return 0;
+ if (ret == -1)
+ return -1;
+
+ return 0;
}
@@ -324,43 +262,40 @@ int dlt_env_extract_ll_item(char ** const env, dlt_env_ll_item * const item)
* @return -1 if memory could not be allocated
* @return 0 on success
*/
-int dlt_env_init_ll_set(dlt_env_ll_set * const ll_set)
+int dlt_env_init_ll_set(dlt_env_ll_set *const ll_set)
{
- if (!ll_set)
- {
- return -1;
- }
-
- ll_set->array_size = DLT_ENV_LL_SET_INCREASE;
- ll_set->item = (dlt_env_ll_item *)malloc(sizeof(dlt_env_ll_item) * ll_set->array_size);
- if (!ll_set->item)
- {
- /* should trigger a warning: no memory left */
- ll_set->array_size = 0;
- return -1;
- }
- ll_set->num_elem = 0u;
- return 0;
+ if (!ll_set)
+ return -1;
+
+ ll_set->array_size = DLT_ENV_LL_SET_INCREASE;
+ ll_set->item = (dlt_env_ll_item *)malloc(sizeof(dlt_env_ll_item) * ll_set->array_size);
+
+ if (!ll_set->item) {
+ /* should trigger a warning: no memory left */
+ ll_set->array_size = 0;
+ return -1;
+ }
+
+ ll_set->num_elem = 0u;
+ return 0;
}
/**
* @brief release ll_set
*/
-void dlt_env_free_ll_set(dlt_env_ll_set * const ll_set)
+void dlt_env_free_ll_set(dlt_env_ll_set *const ll_set)
{
- if (!ll_set)
- {
- return;
- }
-
- if (ll_set->item != NULL)
- {
- free(ll_set->item);
- ll_set->item = NULL;
- }
- ll_set->array_size = 0u;
- ll_set->num_elem = 0u;
+ if (!ll_set)
+ return;
+
+ if (ll_set->item != NULL) {
+ free(ll_set->item);
+ ll_set->item = NULL;
+ }
+
+ ll_set->array_size = 0u;
+ ll_set->num_elem = 0u;
}
@@ -370,33 +305,30 @@ void dlt_env_free_ll_set(dlt_env_ll_set * const ll_set)
* @return -1 if memory could not be allocated
* @return 0 on success
*/
-int dlt_env_increase_ll_set(dlt_env_ll_set * const ll_set)
+int dlt_env_increase_ll_set(dlt_env_ll_set *const ll_set)
{
- dlt_env_ll_item * old_set;
- size_t old_size;
+ dlt_env_ll_item *old_set;
+ size_t old_size;
- if (!ll_set)
- {
- return -1;
- }
+ if (!ll_set)
+ return -1;
- old_set = ll_set->item;
- old_size = ll_set->array_size;
+ old_set = ll_set->item;
+ old_size = ll_set->array_size;
- ll_set->array_size += DLT_ENV_LL_SET_INCREASE;
- ll_set->item = (dlt_env_ll_item *)malloc(sizeof(dlt_env_ll_item) * ll_set->array_size);
- if (!ll_set->item)
- {
- /* should trigger a warning: no memory left */
- ll_set->array_size -= DLT_ENV_LL_SET_INCREASE;
- return -1;
- }
- else
- {
- memcpy(ll_set->item, old_set, sizeof(dlt_env_ll_item)*old_size);
- free(old_set);
- return 0;
- }
+ ll_set->array_size += DLT_ENV_LL_SET_INCREASE;
+ ll_set->item = (dlt_env_ll_item *)malloc(sizeof(dlt_env_ll_item) * ll_set->array_size);
+
+ if (!ll_set->item) {
+ /* should trigger a warning: no memory left */
+ ll_set->array_size -= DLT_ENV_LL_SET_INCREASE;
+ return -1;
+ }
+ else {
+ memcpy(ll_set->item, old_set, sizeof(dlt_env_ll_item) * old_size);
+ free(old_set);
+ return 0;
+ }
}
@@ -408,44 +340,31 @@ int dlt_env_increase_ll_set(dlt_env_ll_set * const ll_set)
*
* @return 0 if successful, -1 else
*/
-int dlt_env_extract_ll_set(char ** const env, dlt_env_ll_set * const ll_set)
+int dlt_env_extract_ll_set(char **const env, dlt_env_ll_set *const ll_set)
{
- if (!env || !ll_set)
- {
- return -1;
- }
+ if (!env || !ll_set)
+ return -1;
- if (!(*env))
- {
- return -1;
- }
+ if (!(*env))
+ return -1;
- if (dlt_env_init_ll_set(ll_set) == -1)
- {
- return -1;
- }
-
- do
- {
- if (ll_set->num_elem == ll_set->array_size)
- {
- if (dlt_env_increase_ll_set(ll_set) == -1)
- {
+ if (dlt_env_init_ll_set(ll_set) == -1)
return -1;
- }
- }
- if (dlt_env_extract_ll_item(env, &ll_set->item[ll_set->num_elem++]) == -1)
- {
- return -1;
- }
- if (**env == ';')
- {
- (*env)++;
- }
- } while (**env != 0);
+ do {
+ if (ll_set->num_elem == ll_set->array_size) {
+ if (dlt_env_increase_ll_set(ll_set) == -1)
+ return -1;
+ }
+
+ if (dlt_env_extract_ll_item(env, &ll_set->item[ll_set->num_elem++]) == -1)
+ return -1;
+
+ if (**env == ';')
+ (*env)++;
+ } while (**env != 0);
- return 0;
+ return 0;
}
@@ -454,26 +373,21 @@ int dlt_env_extract_ll_set(char ** const env, dlt_env_ll_set * const ll_set)
*
* @return 1 if matching, 0 if not
*/
-int dlt_env_ids_match(char const * const a, char const * const b)
+int dlt_env_ids_match(char const *const a, char const *const b)
{
- if (a[0] != b[0])
- {
- return 0;
- }
- if (a[1] != b[1])
- {
- return 0;
- }
- if (a[2] != b[2])
- {
- return 0;
- }
- if (a[3] != b[3])
- {
- return 0;
- }
+ if (a[0] != b[0])
+ return 0;
+
+ if (a[1] != b[1])
+ return 0;
+
+ if (a[2] != b[2])
+ return 0;
- return 1;
+ if (a[3] != b[3])
+ return 0;
+
+ return 1;
}
@@ -488,43 +402,26 @@ int dlt_env_ids_match(char const * const a, char const * const b)
*
* In case of error, -1 is returned.
*/
-int dlt_env_ll_item_get_matching_prio(dlt_env_ll_item const * const item, char const * const apid, char const * const ctid)
+int dlt_env_ll_item_get_matching_prio(dlt_env_ll_item const *const item, char const *const apid, char const *const ctid)
{
- if ((!item) || (!apid) || (!ctid))
- {
- return -1;
- }
+ if ((!item) || (!apid) || (!ctid))
+ return -1;
- if (item->appId[0] == 0)
- {
- if (item->ctxId[0] == 0)
- {
- return 1;
+ if (item->appId[0] == 0) {
+ if (item->ctxId[0] == 0) {
+ return 1;
+ }
+ else if (dlt_env_ids_match(item->ctxId, ctid))
+ return 2;
}
- else
- {
- if (dlt_env_ids_match(item->ctxId, ctid))
- {
- return 2;
- }
- }
- }
- else
- {
- if (dlt_env_ids_match(item->appId, apid))
- {
- if (item->ctxId[0] == 0)
- {
- return 3;
- }
- else if (dlt_env_ids_match(item->ctxId, ctid))
- {
- return 4;
- }
+ else if (dlt_env_ids_match(item->appId, apid)) {
+ if (item->ctxId[0] == 0)
+ return 3;
+ else if (dlt_env_ids_match(item->ctxId, ctid))
+ return 4;
}
- }
- return 0;
+ return 0;
}
@@ -537,31 +434,31 @@ int dlt_env_ll_item_get_matching_prio(dlt_env_ll_item const * const item, char c
*
* If no item matches or in case of error, the original log-level (\param ll) is returned
*/
-int dlt_env_adjust_ll_from_env(dlt_env_ll_set const * const ll_set, char const * const apid, char const * const ctid, int const ll)
+int dlt_env_adjust_ll_from_env(dlt_env_ll_set const *const ll_set,
+ char const *const apid,
+ char const *const ctid,
+ int const ll)
{
- if ((!ll_set) || (!apid) || (!ctid))
- {
- return ll;
- }
-
- int res = ll;
- int prio = 0; /* no match so far */
- size_t i;
- for (i = 0; i<ll_set->num_elem; ++i)
- {
- int p = dlt_env_ll_item_get_matching_prio(&ll_set->item[i], apid, ctid);
- if (p > prio)
- {
- prio = p;
- res = ll_set->item[i].ll;
- if (p == 4) /* maximum reached, immediate return */
- {
- return res;
- }
+ if ((!ll_set) || (!apid) || (!ctid))
+ return ll;
+
+ int res = ll;
+ int prio = 0; /* no match so far */
+ size_t i;
+
+ for (i = 0; i < ll_set->num_elem; ++i) {
+ int p = dlt_env_ll_item_get_matching_prio(&ll_set->item[i], apid, ctid);
+
+ if (p > prio) {
+ prio = p;
+ res = ll_set->item[i].ll;
+
+ if (p == 4) /* maximum reached, immediate return */
+ return res;
+ }
}
- }
- return res;
+ return res;
}