]> git.sur5r.net Git - bacula/bacula/commitdiff
Start adding DeltaSeq
authorKern Sibbald <kern@sibbald.com>
Wed, 17 Nov 2010 19:30:14 +0000 (20:30 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 18 Nov 2010 17:46:34 +0000 (18:46 +0100)
bacula/src/cats/cats.h
bacula/src/dird/catreq.c

index f0767ea5076018f20e002e38c7a102f2d921eabb..5d7eb720a047a51258c91cd9b6da7920d90320f7 100644 (file)
@@ -926,6 +926,7 @@ struct ATTR_DBR {
    uint32_t FileIndex;
    uint32_t Stream;
    uint32_t FileType;
+   uint32_t DeltaSeq;
    JobId_t  JobId;
    DBId_t ClientId;
    DBId_t PathId;
index 910cc57d5ef81034cc64435d054b2863ae8c94f4..db195635deeb7a14bda673fbc4c5437f83ada8bc 100644 (file)
@@ -418,6 +418,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
     *   Encoded attributes
     *   Link name (if type==FT_LNK or FT_LNKSAVED)
     *   Encoded extended-attributes (for Win32)
+    *   Delta sequence number (32 bit int)
     *
     * Restore Object
     *   File_index
@@ -447,14 +448,26 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       jcr->attr = check_pool_memory_size(jcr->attr, msglen);
       memcpy(jcr->attr, msg, msglen);
       p = jcr->attr - msg + p;    /* point p into jcr->attr */
-      skip_nonspaces(&p);             /* skip FileIndex */
+      skip_nonspaces(&p);         /* skip FileIndex */
       skip_spaces(&p);
       ar->FileType = str_to_int32(p); 
-      skip_nonspaces(&p);             /* skip FileType */
+      skip_nonspaces(&p);         /* skip FileType */
       skip_spaces(&p);
       fname = p;
       len = strlen(fname);        /* length before attributes */
       attr = &fname[len+1];
+      ar->DeltaSeq = 0;
+      if (ar->FileType == FT_REG) {
+         p = attr + strlen(attr) + 1;  /* point to link */
+         p = p + strlen(p) + 1;        /* point to extended attributes */
+         p = p + strlen(p) + 1;        /* point to delta sequence */
+         /*
+          * Older FDs don't have a delta sequence, so check if it is there 
+          */
+         if (p - jcr->attr < msglen) {
+            ar->DeltaSeq = str_to_int32(p);
+         }
+      }
 
       Dmsg2(400, "dird<stored: stream=%d %s\n", Stream, fname);
       Dmsg1(400, "dird<stored: attr=%s\n", attr);