This is an automated email from the ASF dual-hosted git repository.

vipulrahane pushed a commit to branch vipul/log_trailer_fix
in repository https://gitbox.apache.org/repos/asf/mynewt-mcumgr.git

commit a69530ec9d59c232ae3c32ebb1d0a1c8f4eaa73b
Author: Vipul Rahane <[email protected]>
AuthorDate: Fri Jul 25 12:59:09 2025 -0700

    cmd/log_mgmt: Subtract trailer length on log read
    
    - trailer_length and size of the trailer should be subtracted
      from the log entry being read to get only the log entry data
---
 cmd/log_mgmt/port/mynewt/src/mynewt_log_mgmt.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/cmd/log_mgmt/port/mynewt/src/mynewt_log_mgmt.c 
b/cmd/log_mgmt/port/mynewt/src/mynewt_log_mgmt.c
index 8f7e50f..a4208b3 100644
--- a/cmd/log_mgmt/port/mynewt/src/mynewt_log_mgmt.c
+++ b/cmd/log_mgmt/port/mynewt/src/mynewt_log_mgmt.c
@@ -161,6 +161,7 @@ mynewt_log_mgmt_walk_cb(struct log *log, struct log_offset 
*log_offset,
 {
     struct mynewt_log_mgmt_walk_arg *mynewt_log_mgmt_walk_arg;
     struct log_mgmt_entry entry;
+    uint16_t trailer_len = 0;
     int read_len;
     int offset;
     int rc;
@@ -168,6 +169,8 @@ mynewt_log_mgmt_walk_cb(struct log *log, struct log_offset 
*log_offset,
     rc = 0;
     mynewt_log_mgmt_walk_arg = log_offset->lo_arg;
 
+    (void)trailer_len;
+
     /* If specified timestamp is nonzero, it is the primary criterion, and the
      * specified index is the secondary criterion.  If specified timetsamp is
      * zero, specified index is the only criterion.
@@ -199,6 +202,16 @@ mynewt_log_mgmt_walk_cb(struct log *log, struct log_offset 
*log_offset,
     entry.len = len;
     entry.data = mynewt_log_mgmt_walk_arg->chunk;
 
+#if MYNEWT_VAL(LOG_FLAGS_TRAILER)
+    trailer_len -= log_read_trailer_len(log, dptr);
+    if (trailer_len) {
+        /* If trailer is present, so is the length of the trailer */
+        trailer_len += LOG_TRAILER_LEN_SIZE;
+    }
+
+    len -= trailer_len;
+#endif
+
     for (offset = 0; offset < len; offset += LOG_MGMT_CHUNK_LEN) {
         if (len - offset < LOG_MGMT_CHUNK_LEN) {
             read_len = len - offset;

Reply via email to