commit c902f69c6fe0814f9f536a3e84d3f186ddef91d1
Author: Oswald Buddenhagen <o...@users.sf.net>
Date:   Sun Dec 12 14:51:30 2021 +0100

    format message flags in the sync debug output
    
    now that we can do it cheaply, make copious use of it.

 src/driver.c     | 14 ++++++++++++++
 src/driver.h     |  1 +
 src/sync.c       | 10 +++++++---
 src/sync_state.c |  7 ++++---
 4 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/src/driver.c b/src/driver.c
index 2df6948d..feddaa5a 100644
--- a/src/driver.c
+++ b/src/driver.c
@@ -41,6 +41,20 @@ fmt_flags( uchar flags )
        return buf;
 }
 
+flag_str_t
+fmt_lone_flags( uchar flags )
+{
+       flag_str_t buf;
+
+       if (!flags) {
+               buf.str[0] = '-';
+               buf.str[1] = 0;
+       } else {
+               make_flags( flags, buf.str );
+       }
+       return buf;
+}
+
 uint
 count_generic_messages( message_t *msgs )
 {
diff --git a/src/driver.h b/src/driver.h
index 929e095a..93b860a7 100644
--- a/src/driver.h
+++ b/src/driver.h
@@ -48,6 +48,7 @@ BIT_ENUM(
 extern const char MsgFlags[F__NUM_BITS];
 typedef struct { char str[F__NUM_BITS + 1]; } flag_str_t;
 flag_str_t ATTR_OPTIMIZE /* force RVO */ fmt_flags( uchar flags );
+flag_str_t ATTR_OPTIMIZE /* force RVO */ fmt_lone_flags( uchar flags );
 
 /* For message->status */
 BIT_ENUM(
diff --git a/src/sync.c b/src/sync.c
index 3d12aea4..1efa9606 100644
--- a/src/sync.c
+++ b/src/sync.c
@@ -1035,7 +1035,9 @@ box_loaded( int sts, message_t *msgs, int total_msgs, int 
recent_msgs, void *aux
                                        srec->pflags = ((srec->msg[t]->flags & 
~(F_SEEN|F_FLAGGED)) | srec->aflags[t]) & ~srec->dflags[t];
                                        // Consequently, the srec's flags are 
committed right away as well.
                                        srec->flags = (srec->flags | 
srec->aflags[t]) & ~srec->dflags[t];
-                                       JLOG( "^ %u %u %u %u", (srec->uid[F], 
srec->uid[N], srec->pflags, srec->flags), "upgrading placeholder" );
+                                       JLOG( "^ %u %u %u %u", (srec->uid[F], 
srec->uid[N], srec->pflags, srec->flags),
+                                             "upgrading placeholder, dummy's 
flags %s, srec flags %s",
+                                             (fmt_lone_flags( srec->pflags 
).str, fmt_lone_flags( srec->flags ).str) );
                                        nsrec = upgrade_srec( svars, srec );
                                }
                        }
@@ -1360,7 +1362,8 @@ msg_copied( int sts, uint uid, copy_vars_t *vars )
        case SYNC_OK:
                if (!(srec->status & S_UPGRADE) && vars->msg->flags != 
srec->flags) {
                        srec->flags = vars->msg->flags;
-                       JLOG( "* %u %u %u", (srec->uid[F], srec->uid[N], 
srec->flags), "%sed with flags", str_hl[t] );
+                       JLOG( "* %u %u %u", (srec->uid[F], srec->uid[N], 
srec->flags),
+                             "%sed with flags %s", (str_hl[t], fmt_lone_flags( 
srec->flags ).str) );
                }
                if (!uid)  // Stored to a non-UIDPLUS mailbox
                        svars->state[t] |= ST_FIND_NEW;
@@ -1494,7 +1497,8 @@ flags_set_p2( sync_vars_t *svars, sync_rec_t *srec, int t 
)
        } else {
                uchar nflags = (srec->flags | srec->aflags[t]) & 
~srec->dflags[t];
                if (srec->flags != nflags) {
-                       JLOG( "* %u %u %u", (srec->uid[F], srec->uid[N], 
nflags), "%sed flags; were %u", (str_hl[t], srec->flags) );
+                       JLOG( "* %u %u %u", (srec->uid[F], srec->uid[N], 
nflags), "%sed flags %s; were %s",
+                             (str_hl[t], fmt_lone_flags( nflags ).str, 
fmt_lone_flags( srec->flags ).str) );
                        srec->flags = nflags;
                }
                if (t == N) {
diff --git a/src/sync_state.c b/src/sync_state.c
index b35054bc..7fbb76bd 100644
--- a/src/sync_state.c
+++ b/src/sync_state.c
@@ -208,7 +208,7 @@ load_state( sync_vars_t *svars )
                                srec->status = S_SKIPPED;
                        }
                        srec->flags = parse_flags( s );
-                       debug( "  entry (%u,%u,%u,%s%s)\n", srec->uid[F], 
srec->uid[N], srec->flags,
+                       debug( "  entry (%u,%u,%s,%s%s)\n", srec->uid[F], 
srec->uid[N], fmt_flags( srec->flags ).str,
                               (srec->status & S_SKIPPED) ? "SKIP" : 
(srec->status & S_EXPIRED) ? "XPIRE" : "",
                               (srec->status & S_DUMMY(F)) ? ",F-DUMMY" : 
(srec->status & S_DUMMY(N)) ? ",N-DUMMY" : "" );
                        *svars->srecadd = srec;
@@ -372,8 +372,8 @@ load_state( sync_vars_t *svars )
                                                assign_uid( svars, srec, N, t3 
);
                                                break;
                                        case '*':
-                                               debug( "flags now %u\n", t3 );
                                                srec->flags = (uchar)t3;
+                                               debug( "flags now %s\n", 
fmt_lone_flags( t3 ).str );
                                                break;
                                        case 'P':
                                                debug( "deleted dummy\n" );
@@ -391,9 +391,10 @@ load_state( sync_vars_t *svars )
                                                srec->status = S_PENDING | 
(!srec->uid[F] ? S_DUMMY(F) : S_DUMMY(N));
                                                break;
                                        case '^':
-                                               debug( "is being upgraded, 
flags %u, srec flags %u\n", t3, t4 );
                                                srec->pflags = (uchar)t3;
                                                srec->flags = (uchar)t4;
+                                               debug( "is being upgraded, 
dummy's flags %s, srec flags %s\n",
+                                                      fmt_lone_flags( t3 
).str, fmt_lone_flags( t4 ).str );
                                                srec = upgrade_srec( svars, 
srec );
                                                break;
                                        default:


_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to