@MCOMMON@
srcdir = .
+libdir = ../lib
VPATH = .
.PATH: .
# inference rules
.c.o:
@echo "Compiling $<"
- $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+ $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) -I$(libdir) $(CFLAGS) $<
#-------------------------------------------------------------------------
all: Makefile @WIN32@ bacula-fd @STATIC_FD@
@echo "==== Make of filed is good ===="
(cd win32; $(MAKE) DESTDIR=$(DESTDIR))
@rm -f bacula-fd.exe
-bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@
+bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a ../lib/libtokyocabinet.a @WIN32@
@echo "Linking $@ ..."
$(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \
- $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \
+ $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyocabinet -lm $(PYTHON_LIBS) $(LIBS) \
$(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
static-bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@
$(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \
- $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \
+ $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyodbm -lm $(PYTHON_LIBS) $(LIBS) \
$(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
strip $@
@$(MV) Makefile Makefile.bak
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
@$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
- @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.c >> Makefile
+ @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) -I$(libdir) *.c >> Makefile
@if test -f Makefile ; then \
$(RMF) Makefile.bak; \
else \
static int dbglvl=200;
typedef struct PrivateCurFile {
-#ifndef USE_TCADB
- hlink link;
-#endif
char *fname; /* not stored with tchdb mode */
time_t ctime;
time_t mtime;
bool seen;
} CurFile;
-#ifdef USE_TCADB
static void realfree(void *p); /* used by tokyo code */
/*
return true;
}
-#else /* HTABLE mode */
-
-static bool accurate_mark_file_as_seen(JCR *jcr, CurFile *elt)
-{
- CurFile *temp = (CurFile *)jcr->file_list->lookup(elt->fname);
- temp->seen = 1; /* records are in memory */
- return true;
-}
-
-static bool accurate_lookup(JCR *jcr, char *fname, CurFile *ret)
-{
- bool found=false;
- ret->seen = 0;
-
- CurFile *temp = (CurFile *)jcr->file_list->lookup(fname);
- if (temp) {
- memcpy(ret, temp, sizeof(CurFile));
- found=true;
-// Dmsg1(dbglvl, "lookup <%s> ok\n", fname);
- }
-
- return found;
-}
-
-static bool accurate_init(JCR *jcr, int nbfile)
-{
- CurFile *elt=NULL;
- jcr->file_list = (htable *)malloc(sizeof(htable));
- jcr->file_list->init(elt, &elt->link, nbfile);
- return true;
-}
-
-/* This function is called at the end of backup
- * We walk over all hash disk element, and we check
- * for elt.seen.
- */
-bool accurate_send_deleted_list(JCR *jcr)
-{
- CurFile *elt;
- FF_PKT *ff_pkt;
- int stream = STREAM_UNIX_ATTRIBUTES;
-
- if (!jcr->accurate || jcr->JobLevel == L_FULL) {
- goto bail_out;
- }
-
- if (jcr->file_list == NULL) {
- goto bail_out;
- }
-
- ff_pkt = init_find_files();
- ff_pkt->type = FT_DELETED;
-
- foreach_htable (elt, jcr->file_list) {
- if (!elt->seen) { /* already seen */
- Dmsg2(dbglvl, "deleted fname=%s seen=%i\n", elt->fname, elt->seen);
- ff_pkt->fname = elt->fname;
- ff_pkt->statp.st_mtime = elt->mtime;
- ff_pkt->statp.st_ctime = elt->ctime;
- encode_and_send_attributes(jcr, ff_pkt, stream);
- }
-// free(elt->fname);
- }
-
- term_find_files(ff_pkt);
-bail_out:
- /* TODO: clean htable when this function is not reached ? */
- if (jcr->file_list) {
- jcr->file_list->destroy();
- free(jcr->file_list);
- jcr->file_list = NULL;
- }
- return true;
-}
-
-#endif /* common code */
-
static bool accurate_add_file(JCR *jcr, char *fname, char *lstat)
{
bool ret = true;
elt.mtime = statp.st_mtime;
elt.seen = 0;
-#ifdef USE_TCADB
if (!tcadbput(jcr->file_list,
fname, strlen(fname)+1,
&elt, sizeof(CurFile)))
Jmsg(jcr, M_ERROR, 1, _("Can't update accurate hash disk ERR=%s\n"));
ret = false;
}
-#else /* HTABLE */
- CurFile *item;
- /* we store CurFile, fname and ctime/mtime in the same chunk */
- item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+strlen(fname)+1);
- memcpy(item, &elt, sizeof(CurFile));
- item->fname = (char *)item+sizeof(CurFile);
- strcpy(item->fname, fname);
- jcr->file_list->insert(item->fname, item);
-#endif
// Dmsg2(dbglvl, "add fname=<%s> lstat=%s\n", fname, lstat);
return ret;
return true;
}
-#ifdef USE_TCADB
-
/*
* Tokyo Cabinet library doesn't use smartalloc by default
* results need to be released with real free()
free(p);
}
-#endif