if (elt->seen) {
Dmsg2(dbglvl, "base file fname=%s seen=%i\n", elt->fname, elt->seen);
/* TODO: skip the decode and use directly the lstat field */
- decode_stat(elt->lstat, &statc, &LinkFIc); /* decode catalog stat */
+ decode_stat(elt->lstat, &statc, sizeof(statc), &LinkFIc); /* decode catalog stat */
ff_pkt->fname = elt->fname;
ff_pkt->statp = statc;
encode_and_send_attributes(jcr, ff_pkt, stream);
}
Dmsg2(dbglvl, "deleted fname=%s seen=%i\n", elt->fname, elt->seen);
/* TODO: skip the decode and use directly the lstat field */
- decode_stat(elt->lstat, &statc, &LinkFIc); /* decode catalog stat */
+ decode_stat(elt->lstat, &statc, sizeof(statc), &LinkFIc); /* decode catalog stat */
ff_pkt->fname = elt->fname;
ff_pkt->statp.st_mtime = statc.st_mtime;
ff_pkt->statp.st_ctime = statc.st_ctime;
bool ret = true;
CurFile *item;
- /* we store CurFile, fname and ctime/mtime in the same chunk */
- item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+len);
+ /* we store CurFile, fname and ctime/mtime in the same chunk
+ * we need one extra byte to handle an empty chksum
+ */
+ item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+len+3);
item->seen = 0;
/* TODO: see if we can optimize this part with memcpy instead of strcpy */
CurFile elt;
ff_pkt->delta_seq = 0;
+ ff_pkt->accurate_found = false;
if (!jcr->accurate && !jcr->rerunning) {
return true;
goto bail_out;
}
+ ff_pkt->accurate_found = true;
ff_pkt->delta_seq = elt.delta_seq;
- if (elt.seen) { /* file has been seen ? */
- Dmsg1(dbglvl, "accurate %s (already seen)\n", fname);
- goto bail_out;
- }
-
- decode_stat(elt.lstat, &statc, &LinkFIc); /* decode catalog stat */
+ decode_stat(elt.lstat, &statc, sizeof(statc), &LinkFIc); /* decode catalog stat */
if (!jcr->rerunning && (jcr->getJobLevel() == L_FULL)) {
opts = ff_pkt->BaseJobOpts;
stat = true;
}
break;
-
+ case 'A': /* Always backup a file */
+ stat = true;
+ break;
/* TODO: cleanup and factorise this function with verify.c */
case '5': /* compare MD5 */
case '1': /* compare SHA1 */
bin_to_base64(digest_buf, BASE64_SIZE(size), md, size, true);
if (strcmp(digest_buf, elt.chksum)) {
- Dmsg3(dbglvl-1, "%s chksum diff. Cat: %s File: %s\n",
+ Dmsg4(dbglvl,"%s %s chksum diff. Cat: %s File: %s\n",
fname,
+ digest_name,
elt.chksum,
digest_buf);
stat = true;