commit e2df32e9a8657c3f39a6d5279a8c8cb414858a09
Author: Oswald Buddenhagen <o...@users.sf.net>
Date:   Mon Jan 6 17:30:32 2020 +0100

    *** de-dupe

 src/sync.c | 46 ++++++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 22 deletions(-)

diff --git a/src/sync.c b/src/sync.c
index a6844c4..ea91719 100644
--- a/src/sync.c
+++ b/src/sync.c
@@ -254,6 +254,23 @@ jFprintf( sync_vars_t *svars, const char *msg, ... )
                exit( 100 );
 }
 
+static void
+assign_uid_raw( sync_rec_t *srec, uint uid, sync_vars_t *svars, int t )
+{
+       srec->uid[t] = uid;
+       if (uid == svars->newmaxuid[t] + 1)
+               svars->newmaxuid[t] = uid;
+       srec->status &= ~S_PENDING;
+       srec->tuid[0] = 0;
+}
+
+static void
+assign_uid( sync_rec_t *srec, uint uid, sync_vars_t *svars, int t )
+{
+       jFprintf( svars, "%c %u %u %u\n", "<>"[t], srec->uid[M], srec->uid[S], 
uid );
+       assign_uid_raw( srec, uid, svars, t );
+}
+
 static void
 match_tuids( sync_vars_t *svars, int t, message_t *msgs )
 {
@@ -291,15 +308,10 @@ match_tuids( sync_vars_t *svars, int t, message_t *msgs )
                        continue;
                  mfound:
                        debug( "  -> new UID %u %s\n", tmsg->uid, diag );
-                       jFprintf( svars, "%c %u %u %u\n", "<>"[t], 
srec->uid[M], srec->uid[S], tmsg->uid );
                        tmsg->srec = srec;
                        srec->msg[t] = tmsg;
                        ntmsg = tmsg->next;
-                       srec->uid[t] = tmsg->uid;
-                       if (tmsg->uid == svars->newmaxuid[t] + 1)
-                               svars->newmaxuid[t] = tmsg->uid;
-                       srec->status = 0;
-                       srec->tuid[0] = 0;
+                       assign_uid( srec, tmsg->uid, svars, t );
                }
        }
        if (num_lost)
@@ -973,18 +985,13 @@ load_state( sync_vars_t *svars )
                                                srec->tuid[0] = 0;
                                                break;
                                        case '<':
-                                               tn = M;
-                                         assuid:
-                                               debug( "%s now %u\n", 
str_ms[tn], t3 );
-                                               srec->uid[tn] = t3;
-                                               if (t3 == svars->newmaxuid[tn] 
+ 1)
-                                                       svars->newmaxuid[tn] = 
t3;
-                                               srec->status &= ~S_PENDING;
-                                               srec->tuid[0] = 0;
+                                               debug( "master now %u\n", t3 );
+                                               assign_uid_raw( srec, t3, 
svars, M );
                                                break;
                                        case '>':
-                                               tn = S;
-                                               goto assuid;
+                                               debug( "slave now %u\n", t3 );
+                                               assign_uid_raw( srec, t3, 
svars, S );
+                                               break;
                                        case '*':
                                                debug( "flags now %u\n", t3 );
                                                srec->flags = (uchar)t3;
@@ -1885,12 +1892,7 @@ msg_copied( int sts, uint uid, copy_vars_t *vars )
                        svars->state[t] |= ST_FIND_NEW;
                } else {
                        debug( "  -> new UID %u on %s\n", uid, str_ms[t] );
-                       jFprintf( svars, "%c %u %u %u\n", "<>"[t], 
srec->uid[M], srec->uid[S], uid );
-                       srec->uid[t] = uid;
-                       if (uid == svars->newmaxuid[t] + 1)
-                               svars->newmaxuid[t] = uid;
-                       srec->status &= ~S_PENDING;
-                       srec->tuid[0] = 0;
+                       assign_uid( srec, uid, svars, t );
                }
                break;
        case SYNC_NOGOOD:


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

Reply via email to