summaryrefslogtreecommitdiff
path: root/src/shared/dlt_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/dlt_common.c')
-rw-r--r--src/shared/dlt_common.c620
1 files changed, 475 insertions, 145 deletions
diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c
index c8fdfc3..f07e906 100644
--- a/src/shared/dlt_common.c
+++ b/src/shared/dlt_common.c
@@ -35,6 +35,15 @@
#include <stdarg.h>
#include <err.h>
+#ifdef EXTENDED_FILTERING
+ # if defined(__linux__) || defined(__ANDROID_API__)
+ # include <json-c/json.h> /* for json filter parsing on Linux and Android */
+ # endif
+ # ifdef __QNX__
+ # include <sys/json.h> /* for json filter parsing on QNX */
+ # endif
+#endif
+
#include <errno.h>
#include <sys/stat.h> /* for mkdir() */
#include <sys/wait.h>
@@ -170,15 +179,16 @@ DltReturnValue dlt_print_mixed_string(char *text, int textlength, uint8_t *ptr,
(DLT_COMMON_HEX_LINELEN + (2 * DLT_COMMON_HEX_CHARS + (DLT_COMMON_HEX_CHARS - 1)) + DLT_COMMON_CHARLEN +
DLT_COMMON_HEX_CHARS + DLT_COMMON_CHARLEN) *
((size / DLT_COMMON_HEX_CHARS) + 1);
- /* Example: (8 chars line number + (2*16 chars + 15 spaces) + space + 16 ascii chars + CR) *
- * ((size/16) lines + extra line for the rest) */
+ /* Example: (8 chars line number + (2*16 chars + 15 spaces) + space + 16 ascii chars + CR) *
+ * ((size/16) lines + extra line for the rest) */
else
required_size =
(DLT_COMMON_HEX_LINELEN + (2 * DLT_COMMON_HEX_CHARS + (DLT_COMMON_HEX_CHARS - 1)) + DLT_COMMON_CHARLEN +
DLT_COMMON_HEX_CHARS + 4 * DLT_COMMON_CHARLEN) *
((size / DLT_COMMON_HEX_CHARS) + 1);
- /* Example: (8 chars line number + (2*16 chars + 15 spaces) + space + 16 ascii chars + 4 [HTML CR: <BR>]) *
- * ((size/16) lines + extra line for the rest) */
+
+ /* Example: (8 chars line number + (2*16 chars + 15 spaces) + space + 16 ascii chars + 4 [HTML CR: <BR>]) *
+ * ((size/16) lines + extra line for the rest) */
if (textlength < required_size) {
dlt_vlog(LOG_WARNING,
@@ -444,20 +454,206 @@ DltReturnValue dlt_filter_load(DltFilter *filter, const char *filename, int verb
else
dlt_set_id(ctid, str1);
- if (filter->counter < DLT_FILTER_MAX) {
- dlt_filter_add(filter, apid, ctid, verbose);
- }
- else {
+ if (filter->counter < DLT_FILTER_MAX)
+ dlt_filter_add(filter, apid, ctid, 0, 0, INT32_MAX, verbose);
+ else
dlt_vlog(LOG_WARNING,
"Maximum number (%d) of allowed filters reached, ignoring rest of filters!\n",
DLT_FILTER_MAX);
+ }
+
+ fclose(handle);
+
+ return DLT_RETURN_OK;
+}
+
+#ifdef EXTENDED_FILTERING /* EXTENDED_FILTERING */
+# if defined(__linux__) || defined(__ANDROID_API__)
+DltReturnValue dlt_json_filter_load(DltFilter *filter, const char *filename, int verbose)
+{
+ if ((filter == NULL) || (filename == NULL))
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ FILE *handle;
+ char buffer[1024];
+ long file_size;
+ struct json_object *j_parsed_json;
+ struct json_object *j_app_id;
+ struct json_object *j_context_id;
+ struct json_object *j_log_level;
+ struct json_object *j_payload_min;
+ struct json_object *j_payload_max;
+ enum json_tokener_error jerr;
+
+ char app_id[DLT_ID_SIZE] = "";
+ char context_id[DLT_ID_SIZE] = "";
+ int32_t log_level = 0;
+ int32_t payload_max = INT32_MAX;
+ int32_t payload_min = 0;
+
+ PRINT_FUNCTION_VERBOSE(verbose);
+
+ handle = fopen(filename, "r");
+
+ if (handle == NULL) {
+ dlt_vlog(LOG_WARNING, "Filter file %s cannot be opened!\n", filename);
+ return DLT_RETURN_ERROR;
+ }
+
+ fread(buffer, sizeof(buffer), 1, handle);
+
+ j_parsed_json = json_tokener_parse_verbose(buffer, &jerr);
+
+ if (jerr != json_tokener_success) {
+ dlt_vlog(LOG_WARNING, "Faild to parse given filter %s: %s\n", filename, json_tokener_error_desc(jerr));
+ return DLT_RETURN_ERROR;
+ }
+
+ printf("The following filter(s) are applied: \n");
+ dlt_vlog(LOG_DEBUG, "The following filter(s) are applied: \n");
+ int iterator = 0;
+ json_object_object_foreach(j_parsed_json, key, val)
+ {
+ if (iterator >= DLT_FILTER_MAX) {
+ dlt_vlog(LOG_WARNING,
+ "Maximum number (%d) of allowed filters reached, ignoring rest of filters!\n",
+ DLT_FILTER_MAX);
+ break;
}
+
+ printf("%s:\n", key);
+ dlt_vlog(LOG_DEBUG, "%s:\n", key);
+
+ if (json_object_object_get_ex(val, "AppId", &j_app_id))
+ strncpy(app_id, json_object_get_string(j_app_id), DLT_ID_SIZE);
+ else
+ dlt_set_id(app_id, "");
+
+ if (json_object_object_get_ex(val, "ContextId", &j_context_id))
+ strncpy(context_id, json_object_get_string(j_context_id), DLT_ID_SIZE);
+ else
+ dlt_set_id(context_id, "");
+
+ if (json_object_object_get_ex(val, "LogLevel", &j_log_level))
+ log_level = json_object_get_int(j_log_level);
+ else
+ log_level = 0;
+
+ if (json_object_object_get_ex(val, "PayloadMin", &j_payload_min))
+ payload_min = json_object_get_int(j_payload_min);
+ else
+ payload_min = 0;
+
+ if (json_object_object_get_ex(val, "PayloadMax", &j_payload_max))
+ payload_max = json_object_get_int(j_payload_max);
+ else
+ payload_max = INT32_MAX;
+
+ dlt_filter_add(filter, app_id, context_id, log_level, payload_min, payload_max, verbose);
+
+ printf("\tAppId: %.*s\n", DLT_ID_SIZE, app_id);
+ dlt_vlog(LOG_DEBUG, "\tAppId: %.*s\n", DLT_ID_SIZE, app_id);
+ printf("\tConextId: %.*s\n", DLT_ID_SIZE, context_id);
+ dlt_vlog(LOG_DEBUG, "\tConextId: %.*s\n", DLT_ID_SIZE, context_id);
+ printf("\tLogLevel: %i\n", log_level);
+ dlt_vlog(LOG_DEBUG, "\tLogLevel: %i\n", log_level);
+ printf("\tPayloadMin: %i\n", payload_min);
+ dlt_vlog(LOG_DEBUG, "\tPayloadMin: %i\n", payload_min);
+ printf("\tPayloadMax: %i\n", payload_max);
+ dlt_vlog(LOG_DEBUG, "\tPayloadMax: %i\n", payload_max);
+
+ iterator++;
}
fclose(handle);
return DLT_RETURN_OK;
}
+# endif /* __Linux__ */
+
+# ifdef __QNX__
+DltReturnValue dlt_json_filter_load(DltFilter *filter, const char *filename, int verbose)
+{
+ if ((filter == NULL) || (filename == NULL))
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ json_decoder_t *j_decoder = json_decoder_create();
+
+ const char *s_app_id;
+ const char *s_context_id;
+ int32_t log_level = 0;
+ int32_t payload_max = INT32_MAX;
+ int32_t payload_min = 0;
+
+ PRINT_FUNCTION_VERBOSE(verbose);
+
+ json_decoder_error_t ret = json_decoder_parse_file(j_decoder, filename);
+
+ if (ret != JSON_DECODER_OK) {
+ dlt_vlog(LOG_WARNING, "Faild to parse given filter %s: json_decoder_error_t is %i\n", filename, ret);
+ return DLT_RETURN_ERROR;
+ }
+
+ json_decoder_push_object(j_decoder, NULL, true);
+
+ int iterator = 0;
+ bool end_of_json = false;
+
+ while (!end_of_json) {
+ if (iterator >= DLT_FILTER_MAX) {
+ dlt_vlog(LOG_WARNING,
+ "Maximum number (%d) of allowed filters reached, ignoring rest of filters!\n",
+ DLT_FILTER_MAX);
+ break;
+ }
+
+ if (json_decoder_next(j_decoder) == JSON_DECODER_NOT_FOUND)
+ end_of_json = true;
+
+ json_decoder_previous(j_decoder);
+
+ printf("%s:\n", json_decoder_name(j_decoder));
+ json_decoder_push_object(j_decoder, NULL, true);
+
+ if (json_decoder_get_string(j_decoder, "AppId", &s_app_id, true) != JSON_DECODER_OK)
+ s_app_id = "";
+
+ if (json_decoder_get_string(j_decoder, "ContextId", &s_context_id, true) != JSON_DECODER_OK)
+ s_context_id = "";
+
+ if (json_decoder_get_int(j_decoder, "LogLevel", &log_level, true) != JSON_DECODER_OK)
+ log_level = 0;
+
+ if (json_decoder_get_int(j_decoder, "PayloadMin", &payload_min, true) != JSON_DECODER_OK)
+ payload_min = 0;
+
+ if (json_decoder_get_int(j_decoder, "PayloadMax", &payload_max, true) != JSON_DECODER_OK)
+ payload_max = INT32_MAX;
+
+ char app_id[DLT_ID_SIZE];
+ char context_id[DLT_ID_SIZE];
+ strncpy(app_id, s_app_id, DLT_ID_SIZE);
+ strncpy(context_id, s_context_id, DLT_ID_SIZE);
+
+ dlt_filter_add(filter, app_id, context_id, log_level, payload_min, payload_max, verbose);
+
+ printf("\tAppId: %.*s\n", DLT_ID_SIZE, app_id);
+ printf("\tConextId: %.*s\n", DLT_ID_SIZE, context_id);
+ printf("\tLogLevel: %i\n", log_level);
+ printf("\tPayloadMin: %i\n", payload_min);
+ printf("\tPayloadMax: %i\n", payload_max);
+
+ json_decoder_pop(j_decoder);
+
+ iterator++;
+ }
+
+ json_decoder_destroy(j_decoder);
+
+ return DLT_RETURN_OK;
+}
+# endif /* __QNX__ */
+#endif /* EXTENDED_FILTERING */
DltReturnValue dlt_filter_save(DltFilter *filter, const char *filename, int verbose)
{
@@ -500,7 +696,104 @@ DltReturnValue dlt_filter_save(DltFilter *filter, const char *filename, int verb
return DLT_RETURN_OK;
}
-int dlt_filter_find(DltFilter *filter, const char *apid, const char *ctid, int verbose)
+#ifdef EXTENDED_FILTERING /* EXTENDED_FILTERING */
+# if defined(__linux__) || defined(__ANDROID_API__)
+DltReturnValue dlt_json_filter_save(DltFilter *filter, const char *filename, int verbose)
+{
+ if ((filter == NULL) || (filename == NULL))
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ PRINT_FUNCTION_VERBOSE(verbose);
+
+ struct json_object *json_filter_obj = json_object_new_object();
+
+ for (int num = 0; num < filter->counter; num++) {
+ struct json_object *tmp_json_obj = json_object_new_object();
+ char filter_name[JSON_FILTER_NAME_SIZE];
+ sprintf(filter_name, "filter%i", num);
+
+ if (filter->apid[num][DLT_ID_SIZE - 1] != 0)
+ json_object_object_add(tmp_json_obj, "AppId", json_object_new_string_len(filter->apid[num], DLT_ID_SIZE));
+ else
+ json_object_object_add(tmp_json_obj, "AppId", json_object_new_string(filter->apid[num]));
+
+ if (filter->ctid[num][DLT_ID_SIZE - 1] != 0)
+ json_object_object_add(tmp_json_obj, "ContextId",
+ json_object_new_string_len(filter->ctid[num], DLT_ID_SIZE));
+ else
+ json_object_object_add(tmp_json_obj, "ContextId", json_object_new_string(filter->ctid[num]));
+
+ json_object_object_add(tmp_json_obj, "LogLevel", json_object_new_int(filter->log_level[num]));
+ json_object_object_add(tmp_json_obj, "PayloadMin", json_object_new_int(filter->payload_min[num]));
+ json_object_object_add(tmp_json_obj, "PayloadMax", json_object_new_int(filter->payload_max[num]));
+
+ json_object_object_add(json_filter_obj, filter_name, tmp_json_obj);
+ }
+
+ printf("Saving current filter into '%s'\n", filename);
+ json_object_to_file(filename, json_filter_obj);
+
+ return DLT_RETURN_OK;
+}
+# endif /* __Linux__ */
+
+# ifdef __QNX__
+DltReturnValue dlt_json_filter_save(DltFilter *filter, const char *filename, int verbose)
+{
+ if ((filter == NULL) || (filename == NULL))
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ PRINT_FUNCTION_VERBOSE(verbose);
+
+ char s_app_id[DLT_ID_SIZE + 1];
+ char s_context_id[DLT_ID_SIZE + 1];
+
+ json_encoder_t *j_encoder = json_encoder_create();
+ json_encoder_start_object(j_encoder, NULL);
+
+ for (int num = 0; num < filter->counter; num++) {
+ char filter_name[JSON_FILTER_NAME_SIZE];
+ sprintf(filter_name, "filter%i", num);
+ json_encoder_start_object(j_encoder, filter_name);
+
+ strncpy(s_app_id, filter->apid[num], DLT_ID_SIZE);
+
+ if (filter->apid[num][DLT_ID_SIZE - 1] != 0)
+ s_app_id[DLT_ID_SIZE] = '\0';
+
+ strncpy(s_context_id, filter->ctid[num], DLT_ID_SIZE);
+
+ if (filter->ctid[num][DLT_ID_SIZE - 1] != 0)
+ s_context_id[DLT_ID_SIZE] = '\0';
+
+ json_encoder_add_string(j_encoder, "AppId", s_app_id);
+ json_encoder_add_string(j_encoder, "ContextId", s_context_id);
+ json_encoder_add_int(j_encoder, "LogLevel", filter->log_level[num]);
+ json_encoder_add_int(j_encoder, "PayloadMin", filter->payload_min[num]);
+ json_encoder_add_int(j_encoder, "PayloadMax", filter->payload_max[num]);
+
+ json_encoder_end_object(j_encoder);
+ }
+
+ json_encoder_end_object(j_encoder);
+
+ printf("Saving current filter into '%s'\n", filename);
+ FILE *handle = fopen(filename, "w");
+ int filter_buffer_size = 100 * (filter->counter);
+ char filter_buffer[filter_buffer_size];
+ snprintf(filter_buffer, filter_buffer_size, json_encoder_buffer(j_encoder));
+ fprintf(handle, filter_buffer);
+
+ fclose(handle);
+ json_encoder_destroy(j_encoder);
+
+ return DLT_RETURN_OK;
+}
+# endif /* __QNX__ */
+#endif /* EXTENDED_FILTERING */
+
+int dlt_filter_find(DltFilter *filter, const char *apid, const char *ctid, const int log_level,
+ const int32_t payload_min, const int32_t payload_max, int verbose)
{
int num;
@@ -518,16 +811,25 @@ int dlt_filter_find(DltFilter *filter, const char *apid, const char *ctid, int v
char empty_ctid[DLT_ID_SIZE] = "";
if (memcmp(filter->ctid[num], empty_ctid, DLT_ID_SIZE) == 0)
- return num;
+ if ((filter->log_level[num] == log_level) || (filter->log_level[num] == 0))
+ if (filter->payload_min[num] <= payload_min)
+ if (filter->payload_max[num] >= payload_max)
+ return num;
}
else if (memcmp(filter->ctid[num], ctid, DLT_ID_SIZE) == 0)
- return num;
+ {
+ if ((filter->log_level[num] == log_level) || (filter->log_level[num] == 0))
+ if (filter->payload_min[num] <= payload_min)
+ if (filter->payload_max[num] >= payload_max)
+ return num;
+ }
}
return -1; /* Not found */
}
-DltReturnValue dlt_filter_add(DltFilter *filter, const char *apid, const char *ctid, int verbose)
+DltReturnValue dlt_filter_add(DltFilter *filter, const char *apid, const char *ctid, const int log_level,
+ const int32_t payload_min, const int32_t payload_max, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
@@ -541,23 +843,25 @@ DltReturnValue dlt_filter_add(DltFilter *filter, const char *apid, const char *c
return DLT_RETURN_ERROR;
}
- /* add each filter (apid, ctid) only once to filter array */
- if (dlt_filter_find(filter, apid, ctid, verbose) < 0) {
+ /* add each filter (apid, ctid, log_level, payload_min, payload_max) only once to filter array */
+ if (dlt_filter_find(filter, apid, ctid, log_level, payload_min, payload_max, verbose) < 0) {
/* filter not found, so add it to filter array */
- if (filter->counter < DLT_FILTER_MAX) {
- dlt_set_id(filter->apid[filter->counter], apid);
- dlt_set_id(filter->ctid[filter->counter], (ctid ? ctid : ""));
+ dlt_set_id(filter->apid[filter->counter], apid);
+ dlt_set_id(filter->ctid[filter->counter], (ctid ? ctid : ""));
+ filter->log_level[filter->counter] = log_level;
+ filter->payload_min[filter->counter] = payload_min;
+ filter->payload_max[filter->counter] = payload_max;
- filter->counter++;
+ filter->counter++;
- return DLT_RETURN_OK;
- }
+ return DLT_RETURN_OK;
}
return DLT_RETURN_ERROR;
}
-DltReturnValue dlt_filter_delete(DltFilter *filter, const char *apid, const char *ctid, int verbose)
+DltReturnValue dlt_filter_delete(DltFilter *filter, const char *apid, const char *ctid, const int log_level,
+ const int32_t payload_min, const int32_t payload_max, int verbose)
{
int j, k;
int found = 0;
@@ -571,24 +875,31 @@ DltReturnValue dlt_filter_delete(DltFilter *filter, const char *apid, const char
/* Get first occurence of apid and ctid in filter array */
for (j = 0; j < filter->counter; j++)
if ((memcmp(filter->apid[j], apid, DLT_ID_SIZE) == 0) &&
- (memcmp(filter->ctid[j], ctid, DLT_ID_SIZE) == 0)
+ (memcmp(filter->ctid[j], ctid, DLT_ID_SIZE) == 0) &&
+ ((filter->log_level[j] == log_level) || (filter->log_level[j] == 0)) &&
+ (filter->payload_min[j] == payload_min) &&
+ (filter->payload_max[j] == payload_max)
) {
found = 1;
break;
}
-
-
if (found) {
/* j is index */
/* Copy from j+1 til end to j til end-1 */
dlt_set_id(filter->apid[j], "");
dlt_set_id(filter->ctid[j], "");
+ filter->log_level[j] = 0;
+ filter->payload_min[j] = 0;
+ filter->payload_max[j] = INT32_MAX;
for (k = j; k < (filter->counter - 1); k++) {
dlt_set_id(filter->apid[k], filter->apid[k + 1]);
dlt_set_id(filter->ctid[k], filter->ctid[k + 1]);
+ filter->log_level[k] = filter->log_level[k + 1];
+ filter->payload_min[k] = filter->payload_min[k + 1];
+ filter->payload_max[k] = filter->payload_max[k + 1];
}
filter->counter--;
@@ -803,17 +1114,17 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
/* print payload only as hex */
if (type == DLT_OUTPUT_HEX)
- return dlt_print_hex_string(text, (int) textlength, msg->databuffer, (int) msg->datasize);
+ return dlt_print_hex_string(text, (int)textlength, msg->databuffer, (int)msg->datasize);
/* print payload as mixed */
if (type == DLT_OUTPUT_MIXED_FOR_PLAIN)
- return dlt_print_mixed_string(text, (int) textlength, msg->databuffer, (int) msg->datasize, 0);
+ return dlt_print_mixed_string(text, (int)textlength, msg->databuffer, (int)msg->datasize, 0);
if (type == DLT_OUTPUT_MIXED_FOR_HTML)
- return dlt_print_mixed_string(text, (int) textlength, msg->databuffer, (int) msg->datasize, 1);
+ return dlt_print_mixed_string(text, (int)textlength, msg->databuffer, (int)msg->datasize, 1);
ptr = msg->databuffer;
- datalength = (int32_t) msg->datasize;
+ datalength = (int32_t)msg->datasize;
/* Pointer to ptr and datalength */
pptr = &ptr;
@@ -827,7 +1138,7 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
DLT_MSG_READ_VALUE(id_tmp, ptr, datalength, uint32_t);
id = DLT_ENDIAN_GET_32(msg->standardheader->htyp, id_tmp);
- if (textlength < (( (unsigned int) datalength * 3) + 20)) {
+ if (textlength < (((unsigned int)datalength * 3) + 20)) {
dlt_vlog(LOG_WARNING,
"String does not fit binary data (available=%d, required=%d) !\n",
(int) textlength, (datalength * 3) + 20);
@@ -836,10 +1147,9 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
/* process message id / service id */
if (DLT_MSG_IS_CONTROL(msg)) {
- if ((id > 0) && (id < DLT_SERVICE_ID_LAST_ENTRY)) {
+ if ((id > 0) && (id < DLT_SERVICE_ID_LAST_ENTRY))
snprintf(text + strlen(text), textlength - strlen(text), "%s",
service_id_name[id]); /* service id */
- }
else if (!(DLT_MSG_IS_CONTROL_TIME(msg)))
snprintf(text + strlen(text), textlength - strlen(text), "service(%u)", id); /* service id */
@@ -867,8 +1177,8 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
if (type == DLT_OUTPUT_ASCII_LIMITED) {
ret = dlt_print_hex_string(text + strlen(text),
- (int) (textlength - strlen(
- text)),
+ (int)(textlength - strlen(
+ text)),
ptr,
(datalength >
DLT_COMMON_ASCII_LIMIT_MAX_CHARS ? DLT_COMMON_ASCII_LIMIT_MAX_CHARS : datalength));
@@ -878,7 +1188,7 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
snprintf(text + strlen(text), textlength - strlen(text), " ...");
}
else {
- ret = dlt_print_hex_string(text + strlen(text),(int) (textlength - strlen(text)), ptr, datalength);
+ ret = dlt_print_hex_string(text + strlen(text), (int)(textlength - strlen(text)), ptr, datalength);
}
return ret;
@@ -893,7 +1203,7 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
for (num = 0; num < (int)(msg->extendedheader->noar); num++) {
if (num != 0) {
text_offset = (int)strlen(text);
- snprintf(text + text_offset, textlength - (size_t) text_offset, " ");
+ snprintf(text + text_offset, textlength - (size_t)text_offset, " ");
}
/* first read the type info of the argument */
@@ -902,8 +1212,10 @@ DltReturnValue dlt_message_payload(DltMessage *msg, char *text, size_t textlengt
/* print out argument */
text_offset = (int)strlen(text);
+
if (dlt_message_argument_print(msg, type_info, pptr, pdatalength,
- (text + text_offset), (textlength - (size_t) text_offset), -1, 0) == DLT_RETURN_ERROR)
+ (text + text_offset), (textlength - (size_t)text_offset), -1,
+ 0) == DLT_RETURN_ERROR)
return DLT_RETURN_ERROR;
}
@@ -929,7 +1241,11 @@ DltReturnValue dlt_message_filter_check(DltMessage *msg, DltFilter *filter, int
/* check each filter if it matches */
if ((DLT_IS_HTYP_UEH(msg->standardheader->htyp)) &&
((filter->apid[num][0] == 0) || (memcmp(filter->apid[num], msg->extendedheader->apid, DLT_ID_SIZE) == 0)) &&
- ((filter->ctid[num][0] == 0) || (memcmp(filter->ctid[num], msg->extendedheader->ctid, DLT_ID_SIZE) == 0))) {
+ ((filter->ctid[num][0] == 0) || (memcmp(filter->ctid[num], msg->extendedheader->ctid, DLT_ID_SIZE) == 0)) &&
+ ((filter->log_level[num] == 0) ||
+ (filter->log_level[num] == DLT_GET_MSIN_MTIN(msg->extendedheader->msin))) &&
+ ((filter->payload_min[num] == 0) || (filter->payload_min[num] <= msg->datasize)) &&
+ ((filter->payload_max[num] == 0) || (filter->payload_max[num] >= msg->datasize))) {
found = DLT_RETURN_TRUE;
break;
}
@@ -958,7 +1274,7 @@ int dlt_message_read(DltMessage *msg, uint8_t *buffer, unsigned int length, int
/* serial header found */
msg->found_serialheader = 1;
buffer += sizeof(dltSerialHeader);
- length -= (unsigned int) sizeof(dltSerialHeader);
+ length -= (unsigned int)sizeof(dltSerialHeader);
}
else {
/* serial header not found */
@@ -973,18 +1289,18 @@ int dlt_message_read(DltMessage *msg, uint8_t *buffer, unsigned int length, int
/* serial header found */
msg->found_serialheader = 1;
buffer += sizeof(dltSerialHeader);
- length -= (unsigned int) sizeof(dltSerialHeader);
+ length -= (unsigned int)sizeof(dltSerialHeader);
break;
}
msg->resync_offset++;
- } while ( (sizeof(dltSerialHeader) + (size_t) msg->resync_offset) <= length);
+ } while ((sizeof(dltSerialHeader) + (size_t)msg->resync_offset) <= length);
/* Set new start offset */
if (msg->resync_offset > 0) {
/* Resyncing connection */
buffer += msg->resync_offset;
- length -= (unsigned int) msg->resync_offset;
+ length -= (unsigned int)msg->resync_offset;
}
}
}
@@ -1033,7 +1349,7 @@ int dlt_message_read(DltMessage *msg, uint8_t *buffer, unsigned int length, int
return DLT_MESSAGE_ERROR_SIZE;
memcpy(msg->headerbuffer + sizeof(DltStorageHeader) + sizeof(DltStandardHeader),
- buffer + sizeof(DltStandardHeader), (size_t) extra_size);
+ buffer + sizeof(DltStandardHeader), (size_t)extra_size);
/* set extended header ptr and get standard header extra parameters */
if (DLT_IS_HTYP_UEH(msg->standardheader->htyp))
@@ -1193,7 +1509,6 @@ DltReturnValue dlt_file_read_header(DltFile *file, int verbose)
else
dlt_log(LOG_DEBUG, "Reached end of file\n");
-
return DLT_RETURN_ERROR;
}
@@ -1291,7 +1606,9 @@ DltReturnValue dlt_file_read_header_raw(DltFile *file, int resync, int verbose)
else
/* go back to last file position */
if (0 != fseek(file->handle, file->file_position, SEEK_SET))
+ {
return DLT_RETURN_ERROR;
+ }
}
/* load header from file */
@@ -1463,10 +1780,9 @@ DltReturnValue dlt_file_open(DltFile *file, const char *filename, int verbose)
return DLT_RETURN_ERROR;
}
- if (verbose) {
+ if (verbose)
/* print file length */
dlt_vlog(LOG_DEBUG, "File is %lu bytes long\n", file->file_length);
- }
return DLT_RETURN_OK;
}
@@ -1479,9 +1795,8 @@ DltReturnValue dlt_file_read(DltFile *file, int verbose)
if (file == NULL)
return DLT_RETURN_WRONG_PARAMETER;
- if (verbose) {
+ if (verbose)
dlt_vlog(LOG_DEBUG, "%s: Message %d:\n", __func__, file->counter_total);
- }
/* allocate new memory for index if number of messages exceeds a multiple of DLT_COMMON_INDEX_ALLOC (e.g.: 1000) */
if (file->counter % DLT_COMMON_INDEX_ALLOC == 0) {
@@ -1491,7 +1806,7 @@ DltReturnValue dlt_file_read(DltFile *file, int verbose)
return DLT_RETURN_ERROR;
if (file->index) {
- memcpy(ptr, file->index, (size_t) (file->counter) * sizeof(long));
+ memcpy(ptr, file->index, (size_t)(file->counter) * sizeof(long));
free(file->index);
}
@@ -1506,9 +1821,8 @@ DltReturnValue dlt_file_read(DltFile *file, int verbose)
}
/* get file position at start of DLT message */
- if (verbose) {
+ if (verbose)
dlt_vlog(LOG_INFO, "Position in file: %ld\n", file->file_position);
- }
/* read header */
if (dlt_file_read_header(file, verbose) < DLT_RETURN_OK) {
@@ -1521,9 +1835,8 @@ DltReturnValue dlt_file_read(DltFile *file, int verbose)
/* read the extended header if filter is enabled and extended header exists */
if (dlt_file_read_header_extended(file, verbose) < DLT_RETURN_OK) {
/* go back to last position in file */
- if (0 != fseek(file->handle, file->file_position, SEEK_SET)) {
+ if (0 != fseek(file->handle, file->file_position, SEEK_SET))
dlt_vlog(LOG_WARNING, "Seek to last file pos failed!\n");
- }
return DLT_RETURN_ERROR;
}
@@ -1546,9 +1859,8 @@ DltReturnValue dlt_file_read(DltFile *file, int verbose)
"Seek failed to skip payload data of size %d!\n",
file->msg.datasize);
- if (0 != fseek(file->handle, file->file_position, SEEK_SET)) {
+ if (0 != fseek(file->handle, file->file_position, SEEK_SET))
dlt_log(LOG_WARNING, "Seek back also failed!\n");
- }
return DLT_RETURN_ERROR;
}
@@ -1566,9 +1878,8 @@ DltReturnValue dlt_file_read(DltFile *file, int verbose)
(int32_t)sizeof(DltStandardHeader) + file->msg.datasize);
/* go back to last position in file */
- if (fseek(file->handle, file->file_position, SEEK_SET)) {
+ if (fseek(file->handle, file->file_position, SEEK_SET))
dlt_log(LOG_WARNING, "Seek back also failed!\n");
- }
return DLT_RETURN_ERROR;
}
@@ -1595,9 +1906,8 @@ DltReturnValue dlt_file_read_raw(DltFile *file, int resync, int verbose)
int found = DLT_RETURN_OK;
long *ptr;
- if (verbose) {
+ if (verbose)
dlt_vlog(LOG_DEBUG, "%s: Message %d:\n", __func__, file->counter_total);
- }
if (file == NULL)
return DLT_RETURN_WRONG_PARAMETER;
@@ -1610,7 +1920,7 @@ DltReturnValue dlt_file_read_raw(DltFile *file, int resync, int verbose)
return DLT_RETURN_ERROR;
if (file->index) {
- memcpy(ptr, file->index, (size_t) (file->counter) * sizeof(long));
+ memcpy(ptr, file->index, (size_t)(file->counter) * sizeof(long));
free(file->index);
}
@@ -1622,16 +1932,14 @@ DltReturnValue dlt_file_read_raw(DltFile *file, int resync, int verbose)
return DLT_RETURN_ERROR;
/* get file position at start of DLT message */
- if (verbose) {
+ if (verbose)
dlt_vlog(LOG_DEBUG, "Position in file: %ld\n", file->file_position);
- }
/* read header */
if (dlt_file_read_header_raw(file, resync, verbose) < DLT_RETURN_OK) {
/* go back to last position in file */
- if (0 != fseek(file->handle, file->file_position, SEEK_SET)) {
+ if (0 != fseek(file->handle, file->file_position, SEEK_SET))
dlt_log(LOG_WARNING, "dlt_file_read_raw, fseek failed 1\n");
- }
return DLT_RETURN_ERROR;
}
@@ -1639,18 +1947,16 @@ DltReturnValue dlt_file_read_raw(DltFile *file, int resync, int verbose)
/* read the extended header if filter is enabled and extended header exists */
if (dlt_file_read_header_extended(file, verbose) < DLT_RETURN_OK) {
/* go back to last position in file */
- if (0 != fseek(file->handle, file->file_position, SEEK_SET)) {
+ if (0 != fseek(file->handle, file->file_position, SEEK_SET))
dlt_log(LOG_WARNING, "dlt_file_read_raw, fseek failed 2\n");
- }
return DLT_RETURN_ERROR;
}
if (dlt_file_read_data(file, verbose) < DLT_RETURN_OK) {
/* go back to last position in file */
- if (0 != fseek(file->handle, file->file_position, SEEK_SET)) {
+ if (0 != fseek(file->handle, file->file_position, SEEK_SET))
dlt_log(LOG_WARNING, "dlt_file_read_raw, fseek failed 3\n");
- }
return DLT_RETURN_ERROR;
}
@@ -1778,7 +2084,7 @@ void dlt_log_set_fifo_basedir(const char *pipe_dir)
#endif
#ifdef DLT_SHM_ENABLE
-void dlt_log_set_shm_name(const char * env_shm_name)
+void dlt_log_set_shm_name(const char *env_shm_name)
{
strncpy(dltShmName, env_shm_name, NAME_MAX);
dltShmName[NAME_MAX] = 0;
@@ -1822,18 +2128,20 @@ int dlt_user_printf(const char *format, ...)
va_start(args, format);
int ret = 0;
+
switch (logging_mode) {
- case DLT_LOG_TO_CONSOLE:
- case DLT_LOG_TO_SYSLOG:
- case DLT_LOG_TO_FILE:
- case DLT_LOG_DROPPED:
- default:
- ret = vfprintf(stdout, format, args);
- break;
- case DLT_LOG_TO_STDERR:
- ret = vfprintf(stderr, format, args);
- break;
+ case DLT_LOG_TO_CONSOLE:
+ case DLT_LOG_TO_SYSLOG:
+ case DLT_LOG_TO_FILE:
+ case DLT_LOG_DROPPED:
+ default:
+ ret = vfprintf(stdout, format, args);
+ break;
+ case DLT_LOG_TO_STDERR:
+ ret = vfprintf(stderr, format, args);
+ break;
}
+
va_end(args);
return ret;
@@ -1863,21 +2171,21 @@ DltReturnValue dlt_log(int prio, char *s)
case DLT_LOG_TO_CONSOLE:
/* log to stdout */
fprintf(stdout, sFormatString,
- (unsigned int)sTimeSpec.tv_sec,
- (unsigned int)(sTimeSpec.tv_nsec / 1000),
- getpid(),
- asSeverity[prio],
- s);
+ (unsigned int)sTimeSpec.tv_sec,
+ (unsigned int)(sTimeSpec.tv_nsec / 1000),
+ getpid(),
+ asSeverity[prio],
+ s);
fflush(stdout);
break;
case DLT_LOG_TO_STDERR:
/* log to stderr */
fprintf(stderr, sFormatString,
- (unsigned int)sTimeSpec.tv_sec,
- (unsigned int)(sTimeSpec.tv_nsec / 1000),
- getpid(),
- asSeverity[prio],
- s);
+ (unsigned int)sTimeSpec.tv_sec,
+ (unsigned int)(sTimeSpec.tv_nsec / 1000),
+ getpid(),
+ asSeverity[prio],
+ s);
break;
case DLT_LOG_TO_SYSLOG:
/* log to syslog */
@@ -1981,8 +2289,8 @@ DltReturnValue dlt_receiver_init(DltReceiver *receiver, int fd, DltReceiverType
receiver->totalBytesRcvd = 0;
receiver->buf = NULL;
receiver->backup_buf = NULL;
- receiver->buffer = (char *)calloc(1, (size_t) buffersize);
- receiver->buffersize = (uint32_t) buffersize;
+ receiver->buffer = (char *)calloc(1, (size_t)buffersize);
+ receiver->buffersize = (uint32_t)buffersize;
}
if (NULL == receiver->buffer) {
@@ -2073,7 +2381,7 @@ int dlt_receiver_receive(DltReceiver *receiver)
receiver->lastBytesRcvd = receiver->bytesRcvd;
if ((receiver->lastBytesRcvd) && (receiver->backup_buf != NULL)) {
- memcpy(receiver->buf, receiver->backup_buf, (size_t) receiver->lastBytesRcvd);
+ memcpy(receiver->buf, receiver->backup_buf, (size_t)receiver->lastBytesRcvd);
free(receiver->backup_buf);
receiver->backup_buf = NULL;
}
@@ -2141,14 +2449,14 @@ DltReturnValue dlt_receiver_move_to_begin(DltReceiver *receiver)
return DLT_RETURN_ERROR;
if ((receiver->buffer != receiver->buf) && (receiver->bytesRcvd != 0)) {
- receiver->backup_buf = calloc((size_t) (receiver->bytesRcvd + 1), sizeof(char));
+ receiver->backup_buf = calloc((size_t)(receiver->bytesRcvd + 1), sizeof(char));
if (receiver->backup_buf == NULL)
dlt_vlog(LOG_WARNING,
"Can't allocate memory for backup buf, there will be atleast"
"one corrupted message for fd[%d] \n", receiver->fd);
else
- memcpy(receiver->backup_buf, receiver->buf, (size_t) receiver->bytesRcvd);
+ memcpy(receiver->backup_buf, receiver->buf, (size_t)receiver->bytesRcvd);
}
return DLT_RETURN_OK;
@@ -2159,7 +2467,7 @@ int dlt_receiver_check_and_get(DltReceiver *receiver,
unsigned int to_get,
unsigned int flags)
{
- size_t min_size = (size_t) to_get;
+ size_t min_size = (size_t)to_get;
uint8_t *src = NULL;
if (flags & DLT_RCV_SKIP_HEADER)
@@ -2179,7 +2487,7 @@ int dlt_receiver_check_and_get(DltReceiver *receiver,
memcpy(dest, src, to_get);
if (flags & DLT_RCV_REMOVE) {
- if (dlt_receiver_remove(receiver, (int) min_size) != DLT_RETURN_OK) {
+ if (dlt_receiver_remove(receiver, (int)min_size) != DLT_RETURN_OK) {
dlt_log(LOG_WARNING, "Can't remove bytes from receiver\n");
return DLT_RETURN_ERROR;
}
@@ -2231,6 +2539,7 @@ DltReturnValue dlt_check_rcv_data_size(int received, int required)
dlt_vlog(LOG_WARNING, "%s: Received data not complete\n", __func__);
_ret = DLT_RETURN_ERROR;
}
+
return _ret;
}
@@ -2301,7 +2610,7 @@ DltReturnValue dlt_buffer_init_static_client(DltBuffer *buf, const unsigned char
/* Init pointers */
buf->mem = (unsigned char *)(buf->shm + sizeof(DltBufferHead));
- buf->size = (uint32_t) (buf->min_size - sizeof(DltBufferHead));
+ buf->size = (uint32_t)(buf->min_size - sizeof(DltBufferHead));
dlt_vlog(LOG_DEBUG,
"%s: Buffer: Size %d, Start address %lX\n",
@@ -2365,7 +2674,7 @@ DltReturnValue dlt_buffer_init_dynamic(DltBuffer *buf, uint32_t min_size, uint32
__func__, buf->size, (unsigned long)buf->mem);
/* clear memory */
- memset(buf->mem, 0, (size_t) buf->size);
+ memset(buf->mem, 0, (size_t)buf->size);
return DLT_RETURN_OK; /* OK */
}
@@ -2436,18 +2745,19 @@ void dlt_buffer_read_block(DltBuffer *buf, int *read, unsigned char *data, unsig
{
/* catch nullpointer */
if ((buf != NULL) && (read != NULL) && (data != NULL)) {
- if (((unsigned int) (*read) + size) <= buf->size) {
+ if (((unsigned int)(*read) + size) <= buf->size) {
/* read one block */
memcpy(data, buf->mem + *read, size);
- *read +=(int) size;
+ *read += (int)size;
}
else {
- if(buf->size > (unsigned int) (*read)) {
- /* read two blocks */
- memcpy(data, buf->mem + *read, buf->size - (unsigned int) (*read));
- memcpy(data + buf->size - *read, buf->mem, size - buf->size + (unsigned int) (*read));
+ if (buf->size > (unsigned int)(*read)) {
+ /* read two blocks */
+ memcpy(data, buf->mem + *read, buf->size - (unsigned int)(*read));
+ memcpy(data + buf->size - *read, buf->mem, size - buf->size + (unsigned int)(*read));
}
- *read += (int) (size - buf->size);
+
+ *read += (int)(size - buf->size);
}
}
else {
@@ -2502,16 +2812,16 @@ int dlt_buffer_increase_size(DltBuffer *buf)
new_head = (DltBufferHead *)new_ptr;
if (head->read < head->write) {
- memcpy(new_ptr + sizeof(DltBufferHead), buf->mem + head->read, (size_t) (head->write - head->read));
+ memcpy(new_ptr + sizeof(DltBufferHead), buf->mem + head->read, (size_t)(head->write - head->read));
new_head->read = 0;
new_head->write = head->write - head->read;
new_head->count = head->count;
}
else {
- memcpy(new_ptr + sizeof(DltBufferHead), buf->mem + head->read, buf->size - (uint32_t) (head->read));
- memcpy(new_ptr + sizeof(DltBufferHead) + buf->size - head->read, buf->mem, (size_t) head->write);
+ memcpy(new_ptr + sizeof(DltBufferHead), buf->mem + head->read, buf->size - (uint32_t)(head->read));
+ memcpy(new_ptr + sizeof(DltBufferHead) + buf->size - head->read, buf->mem, (size_t)head->write);
new_head->read = 0;
- new_head->write = (int) (buf->size) + head->write - head->read;
+ new_head->write = (int)(buf->size) + head->write - head->read;
new_head->count = head->count;
}
@@ -2562,7 +2872,7 @@ int dlt_buffer_minimize_size(DltBuffer *buf)
/* update data */
buf->shm = new_ptr;
buf->mem = new_ptr + sizeof(DltBufferHead);
- buf->size = (uint32_t) (buf->min_size - sizeof(DltBufferHead));
+ buf->size = (uint32_t)(buf->min_size - sizeof(DltBufferHead));
/* reset pointers and counters */
((int *)(buf->shm))[0] = 0; /* pointer to write memory */
@@ -2635,7 +2945,7 @@ int dlt_buffer_push3(DltBuffer *buf,
count = ((int *)(buf->shm))[2];
/* check pointers */
- if (((unsigned int) read > buf->size) || ((unsigned int) write > buf->size)) {
+ if (((unsigned int)read > buf->size) || ((unsigned int)write > buf->size)) {
dlt_vlog(LOG_ERR,
"%s: Buffer: Pointer out of range. Read: %d, Write: %d, Size: %d\n",
__func__, read, write, buf->size);
@@ -2649,7 +2959,7 @@ int dlt_buffer_push3(DltBuffer *buf,
else if (count && (write == read))
free_size = 0;
else
- free_size = (int) buf->size - write + read;
+ free_size = (int)buf->size - write + read;
/* check size */
while (free_size < (int) (sizeof(DltBufferBlockHead) + size1 + size2 + size3)) {
@@ -2677,7 +2987,7 @@ int dlt_buffer_push3(DltBuffer *buf,
strncpy(head.head, DLT_BUFFER_HEAD, 4);
head.head[3] = 0;
head.status = 2;
- head.size = (int) (size1 + size2 + size3);
+ head.size = (int)(size1 + size2 + size3);
/* write data */
dlt_buffer_write_block(buf, &write, (unsigned char *)&head, sizeof(DltBufferBlockHead));
@@ -2722,7 +3032,7 @@ int dlt_buffer_get(DltBuffer *buf, unsigned char *data, int max_size, int delete
count = ((int *)(buf->shm))[2];
/* check pointers */
- if (((unsigned int) read > buf->size) || ((unsigned int) write > buf->size) || (count < 0)) {
+ if (((unsigned int)read > buf->size) || ((unsigned int)write > buf->size) || (count < 0)) {
dlt_vlog(LOG_ERR,
"%s: Buffer: Pointer out of range. Read: %d, Write: %d, Count: %d, Size: %d\n",
__func__, read, write, count, buf->size);
@@ -2746,7 +3056,7 @@ int dlt_buffer_get(DltBuffer *buf, unsigned char *data, int max_size, int delete
if (write > read)
used_size = write - read;
else
- used_size = (int) buf->size - read + write;
+ used_size = (int)buf->size - read + write;
/* first check size */
if (used_size < (int)(sizeof(DltBufferBlockHead))) {
@@ -2774,7 +3084,7 @@ int dlt_buffer_get(DltBuffer *buf, unsigned char *data, int max_size, int delete
}
/* second check size */
- if (used_size < ((int) sizeof(DltBufferBlockHead) + head.size)) {
+ if (used_size < ((int)sizeof(DltBufferBlockHead) + head.size)) {
dlt_vlog(LOG_ERR,
"%s: Buffer: Used size is smaller than buffer block header size And read header size. Used size: %d\n",
__func__, used_size);
@@ -2787,22 +3097,24 @@ int dlt_buffer_get(DltBuffer *buf, unsigned char *data, int max_size, int delete
dlt_vlog(LOG_WARNING,
"%s: Buffer: Max size is smaller than read header size. Max size: %d\n",
__func__, max_size);
- /* nothing to do but data does not fit provided buffer */
+ /* nothing to do but data does not fit provided buffer */
if ((data != NULL) && max_size) {
/* read data */
- dlt_buffer_read_block(buf, &read, data, (unsigned int) head.size);
+ dlt_buffer_read_block(buf, &read, data, (unsigned int)head.size);
if (delete)
/* update buffer pointers */
((int *)(buf->shm))[1] = read; /* set new read pointer */
+
}
- else if (delete) {
- if ((unsigned int) (read + head.size) <= buf->size)
+ else if (delete)
+ {
+ if ((unsigned int)(read + head.size) <= buf->size)
((int *)(buf->shm))[1] = read + head.size; /* set new read pointer */
else
- ((int *)(buf->shm))[1] = read + head.size - (int) buf->size; /* set new read pointer */
+ ((int *)(buf->shm))[1] = read + head.size - (int)buf->size; /* set new read pointer */
}
@@ -2899,7 +3211,7 @@ int dlt_buffer_get_used_size(DltBuffer *buf)
if (write > read)
return write - read;
- return (int) buf->size - read + write;
+ return (int)buf->size - read + write;
}
int dlt_buffer_get_message_count(DltBuffer *buf)
@@ -3214,7 +3526,7 @@ uint32_t dlt_uptime(void)
struct timespec ts;
if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
- return (uint32_t)ts.tv_sec * 10000 + (uint32_t)ts.tv_nsec / 100000;/* in 0.1 ms = 100 us */
+ return (uint32_t)ts.tv_sec * 10000 + (uint32_t)ts.tv_nsec / 100000; /* in 0.1 ms = 100 us */
else
return 0;
@@ -3964,14 +4276,15 @@ void dlt_check_envvar()
dlt_log_set_fifo_basedir(env_pipe_dir);
else
dlt_log_set_fifo_basedir(DLT_USER_IPC_PATH);
+
#endif
#ifdef DLT_SHM_ENABLE
- char* env_shm_name = getenv("DLT_SHM_NAME");
+ char *env_shm_name = getenv("DLT_SHM_NAME");
+
if (env_shm_name != NULL)
- {
dlt_log_set_shm_name(env_shm_name);
- }
+
#endif
}
@@ -4012,8 +4325,8 @@ int16_t dlt_getloginfo_conv_ascii_to_uint16_t(char *rp, int *rp_count)
return -1;
/* ------------------------------------------------------
- * from: [89 13 ] -> to: ['+0x'1389\0] -> to num
- * ------------------------------------------------------ */
+ * from: [89 13 ] -> to: ['+0x'1389\0] -> to num
+ * ------------------------------------------------------ */
num_work[0] = *(rp + *rp_count + 3);
num_work[1] = *(rp + *rp_count + 4);
num_work[2] = *(rp + *rp_count + 0);
@@ -4033,8 +4346,8 @@ int16_t dlt_getloginfo_conv_ascii_to_int16_t(char *rp, int *rp_count)
return -1;
/* ------------------------------------------------------
- * from: [89 ] -> to: ['0x'89\0] -> to num
- * ------------------------------------------------------ */
+ * from: [89 ] -> to: ['0x'89\0] -> to num
+ * ------------------------------------------------------ */
num_work[0] = *(rp + *rp_count + 0);
num_work[1] = *(rp + *rp_count + 1);
num_work[2] = 0;
@@ -4045,7 +4358,7 @@ int16_t dlt_getloginfo_conv_ascii_to_int16_t(char *rp, int *rp_count)
void dlt_getloginfo_conv_ascii_to_id(char *rp, int *rp_count, char *wp, int len)
{
- char number16[3] = {0};
+ char number16[3] = { 0 };
char *endptr;
int count;
@@ -4053,8 +4366,8 @@ void dlt_getloginfo_conv_ascii_to_id(char *rp, int *rp_count, char *wp, int len)
return;
/* ------------------------------------------------------
- * from: [72 65 6d 6f ] -> to: [0x72,0x65,0x6d,0x6f,0x00]
- * ------------------------------------------------------ */
+ * from: [72 65 6d 6f ] -> to: [0x72,0x65,0x6d,0x6f,0x00]
+ * ------------------------------------------------------ */
for (count = 0; count < len; count++) {
number16[0] = *(rp + *rp_count + 0);
number16[1] = *(rp + *rp_count + 1);
@@ -4117,56 +4430,62 @@ void dlt_hex_ascii_to_binary(const char *ptr, uint8_t *binary, int *size)
}
DltReturnValue dlt_file_quick_parsing(DltFile *file, const char *filename,
- int type, int verbose)
+ int type, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
int ret = DLT_RETURN_OK;
char text[DLT_CONVERT_TEXTBUFSIZE] = { 0 };
- if (file == NULL || filename == NULL)
+ if ((file == NULL) || (filename == NULL))
return DLT_RETURN_WRONG_PARAMETER;
FILE *output = fopen(filename, "w+");
+
if (output == NULL) {
dlt_vlog(LOG_ERR, "Cannot open output file %s for parsing\n", filename);
return DLT_RETURN_ERROR;
}
- while(ret >= DLT_RETURN_OK && file->file_position < file->file_length) {
+ while (ret >= DLT_RETURN_OK && file->file_position < file->file_length) {
/* get file position at start of DLT message */
- if (verbose) {
+ if (verbose)
dlt_vlog(LOG_DEBUG, "Position in file: %ld\n", file->file_position);
- }
/* read all header and payload */
ret = dlt_file_read_header(file, verbose);
+
if (ret < DLT_RETURN_OK)
break;
ret = dlt_file_read_header_extended(file, verbose);
+
if (ret < DLT_RETURN_OK)
break;
ret = dlt_file_read_data(file, verbose);
+
if (ret < DLT_RETURN_OK)
break;
if (file->filter) {
/* check the filters if message is used */
ret = dlt_message_filter_check(&(file->msg), file->filter, verbose);
+
if (ret != DLT_RETURN_TRUE)
continue;
}
ret = dlt_message_header(&(file->msg), text,
- DLT_CONVERT_TEXTBUFSIZE, verbose);
+ DLT_CONVERT_TEXTBUFSIZE, verbose);
+
if (ret < DLT_RETURN_OK)
break;
fprintf(output, "%s", text);
ret = dlt_message_payload(&(file->msg), text,
- DLT_CONVERT_TEXTBUFSIZE, type, verbose);
+ DLT_CONVERT_TEXTBUFSIZE, type, verbose);
+
if (ret < DLT_RETURN_OK)
break;
@@ -4179,17 +4498,18 @@ DltReturnValue dlt_file_quick_parsing(DltFile *file, const char *filename,
file->counter_total++;
/* store position to next message */
file->file_position = ftell(file->handle);
- } // while()
+ } /* while() */
fclose(output);
return ret;
}
-int dlt_execute_command(char *filename, char *command, ...){
+int dlt_execute_command(char *filename, char *command, ...)
+{
va_list val;
int argc;
- char ** args = NULL;
+ char **args = NULL;
int ret = 0;
if (command == NULL)
@@ -4197,7 +4517,9 @@ int dlt_execute_command(char *filename, char *command, ...){
/* Determine number of variadic arguments */
va_start(val, command);
- for (argc = 2; va_arg(val, char *) != NULL; argc++);
+
+ for (argc = 2; va_arg(val, char *) != NULL; argc++);
+
va_end(val);
/* Allocate args, put references to command */
@@ -4205,17 +4527,21 @@ int dlt_execute_command(char *filename, char *command, ...){
args[0] = command;
va_start(val, command);
+
for (int i = 0; args[i] != NULL; i++)
- args[i+1] = va_arg(val, char *);
+ args[i + 1] = va_arg(val, char *);
+
va_end(val);
/* Run command in child process */
pid_t pid = fork();
+
if (pid == 0) { /* child process */
/* Redirect output if required */
if (filename != NULL) {
int fd = open(filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+
if (fd < 0)
err(-1, "%s failed on open()", __func__);
@@ -4223,6 +4549,7 @@ int dlt_execute_command(char *filename, char *command, ...){
close(fd);
err(-1, "%s failed on dup2()", __func__);
}
+
close(fd);
}
@@ -4230,9 +4557,12 @@ int dlt_execute_command(char *filename, char *command, ...){
execvp(command, (char **)args);
}
else if (pid == -1) /* error in fork */
+ {
ret = -1;
- else /* parent */
+ }
+ else { /* parent */
wait(&ret);
+ }
free(args);
return ret;