+static bool have_ignoredir(FF_PKT *ff_pkt)
+{
+ struct stat sb;
+ char *ignoredir;
+
+ /* Ensure that pointers are defined */
+ if (!ff_pkt->fileset || !ff_pkt->fileset->incexe) {
+ return false;
+ }
+ ignoredir = ff_pkt->fileset->incexe->ignoredir;
+
+ if (ignoredir) {
+ if (!ff_pkt->ignoredir_fname) {
+ ff_pkt->ignoredir_fname = get_pool_memory(PM_FNAME);
+ }
+ Mmsg(ff_pkt->ignoredir_fname, "%s/%s", ff_pkt->fname, ignoredir);
+ if (stat(ff_pkt->ignoredir_fname, &sb) == 0) {
+ Dmsg2(100, "Directory '%s' ignored (found %s)\n",
+ ff_pkt->fname, ignoredir);
+ return true; /* Just ignore this directory */
+ }
+ }
+ return false;
+}
+
+/*
+ * When the current file is a hardlink, the backup code can compute
+ * the checksum and store it into the link_t structure.
+ */
+void
+ff_pkt_set_link_digest(FF_PKT *ff_pkt,
+ int32_t digest_stream, const char *digest, uint32_t len)
+{
+ if (ff_pkt->linked && !ff_pkt->linked->digest) { /* is a hardlink */
+ ff_pkt->linked->digest = (char *) bmalloc(len);
+ memcpy(ff_pkt->linked->digest, digest, len);
+ ff_pkt->linked->digest_len = len;
+ ff_pkt->linked->digest_stream = digest_stream;
+ }
+}
+