1 Index: src/filed/Makefile.in
2 ===================================================================
3 --- src/filed/Makefile.in (révision 6991)
4 +++ src/filed/Makefile.in (copie de travail)
17 - $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
18 + $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) -I$(libdir) $(CFLAGS) $<
19 #-------------------------------------------------------------------------
20 all: Makefile @WIN32@ bacula-fd @STATIC_FD@
21 @echo "==== Make of filed is good ===="
23 (cd win32; $(MAKE) DESTDIR=$(DESTDIR))
26 -bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@
27 +bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a ../lib/libtokyocabinet.a @WIN32@
28 @echo "Linking $@ ..."
29 $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \
30 - $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \
31 + $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyocabinet -lm $(PYTHON_LIBS) $(LIBS) \
32 $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
34 static-bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@
35 $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \
36 - $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \
37 + $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyodbm -lm $(PYTHON_LIBS) $(LIBS) \
38 $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
42 @$(MV) Makefile Makefile.bak
43 @$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
44 @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
45 - @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.c >> Makefile
46 + @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) -I$(libdir) *.c >> Makefile
47 @if test -f Makefile ; then \
48 $(RMF) Makefile.bak; \
50 Index: src/filed/accurate.c
51 ===================================================================
52 --- src/filed/accurate.c (révision 6991)
53 +++ src/filed/accurate.c (copie de travail)
55 static int dbglvl=200;
57 typedef struct PrivateCurFile {
61 char *fname; /* not stored with tchdb mode */
68 static void realfree(void *p); /* used by tokyo code */
75 -#else /* HTABLE mode */
77 -static bool accurate_mark_file_as_seen(JCR *jcr, CurFile *elt)
79 - CurFile *temp = (CurFile *)jcr->file_list->lookup(elt->fname);
80 - temp->seen = 1; /* records are in memory */
84 -static bool accurate_lookup(JCR *jcr, char *fname, CurFile *ret)
89 - CurFile *temp = (CurFile *)jcr->file_list->lookup(fname);
91 - memcpy(ret, temp, sizeof(CurFile));
93 -// Dmsg1(dbglvl, "lookup <%s> ok\n", fname);
99 -static bool accurate_init(JCR *jcr, int nbfile)
102 - jcr->file_list = (htable *)malloc(sizeof(htable));
103 - jcr->file_list->init(elt, &elt->link, nbfile);
107 -/* This function is called at the end of backup
108 - * We walk over all hash disk element, and we check
111 -bool accurate_send_deleted_list(JCR *jcr)
115 - int stream = STREAM_UNIX_ATTRIBUTES;
117 - if (!jcr->accurate || jcr->JobLevel == L_FULL) {
121 - if (jcr->file_list == NULL) {
125 - ff_pkt = init_find_files();
126 - ff_pkt->type = FT_DELETED;
128 - foreach_htable (elt, jcr->file_list) {
129 - if (!elt->seen) { /* already seen */
130 - Dmsg2(dbglvl, "deleted fname=%s seen=%i\n", elt->fname, elt->seen);
131 - ff_pkt->fname = elt->fname;
132 - ff_pkt->statp.st_mtime = elt->mtime;
133 - ff_pkt->statp.st_ctime = elt->ctime;
134 - encode_and_send_attributes(jcr, ff_pkt, stream);
136 -// free(elt->fname);
139 - term_find_files(ff_pkt);
141 - /* TODO: clean htable when this function is not reached ? */
142 - if (jcr->file_list) {
143 - jcr->file_list->destroy();
144 - free(jcr->file_list);
145 - jcr->file_list = NULL;
150 -#endif /* common code */
152 static bool accurate_add_file(JCR *jcr, char *fname, char *lstat)
156 elt.mtime = statp.st_mtime;
160 if (!tcadbput(jcr->file_list,
161 fname, strlen(fname)+1,
162 &elt, sizeof(CurFile)))
164 Jmsg(jcr, M_ERROR, 1, _("Can't update accurate hash disk ERR=%s\n"));
169 - /* we store CurFile, fname and ctime/mtime in the same chunk */
170 - item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+strlen(fname)+1);
171 - memcpy(item, &elt, sizeof(CurFile));
172 - item->fname = (char *)item+sizeof(CurFile);
173 - strcpy(item->fname, fname);
174 - jcr->file_list->insert(item->fname, item);
177 // Dmsg2(dbglvl, "add fname=<%s> lstat=%s\n", fname, lstat);
186 * Tokyo Cabinet library doesn't use smartalloc by default
187 * results need to be released with real free()
193 Index: src/filed/filed.h
194 ===================================================================
195 --- src/filed/filed.h (révision 6991)
196 +++ src/filed/filed.h (copie de travail)
200 #define FILE_DAEMON 1
201 -#ifdef USE_TCADB /* hash disk based */
204 -# include "lib/htable.h"
206 +#include "lib/tcadb.h"
207 #include "filed_conf.h"
208 #include "fd_plugins.h"
209 #include "findlib/find.h"
211 ===================================================================
212 --- src/jcr.h (révision 6991)
213 +++ src/jcr.h (copie de travail)
215 CRYPTO_CTX crypto; /* Crypto ctx */
216 DIRRES* director; /* Director resource */
217 bool VSS; /* VSS used by FD */
219 TCADB *file_list; /* Previous file list (accurate mode) */
222 - htable *file_list; /* Previous file list (accurate mode) */
224 #endif /* FILE_DAEMON */
227 Index: src/lib/Makefile.in
228 ===================================================================
229 --- src/lib/Makefile.in (révision 6993)
230 +++ src/lib/Makefile.in (copie de travail)
233 EXTRAOBJS = @OBJLIST@
236 .SUFFIXES: .c .o .ch .dvi .pdf .tex .view .w .1
240 $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
242 #-------------------------------------------------------------------------
243 -all: Makefile libbac.a
244 +all: Makefile libbac.a libtokyocabinet.a
245 @echo "==== Make of lib is good ===="
249 + @(cd tokyocabinet ; echo "==>Entering directory `pwd`"; \
250 + $(MAKE) $@ || (echo ""; echo ""; echo " ====== Error in `pwd` ======"; \
251 + echo ""; echo "";));
252 + @cp tokyocabinet/tcadb.h tokyocabinet/tcbdb.h tokyocabinet/tchdb.h .
253 + @cp tokyocabinet/libtokyocabinet.a .
256 @echo "Making $@ ..."
257 $(AR) rc $@ $(LIBOBJS)
260 $(NO_ECHO)$(CXX) -fPIC $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
269 $(RMF) *.a core a.out *.o *.bak *.tex *.pdf *~ *.intpro *.extpro 1 2 3
270 $(RMF) rwlock_test md5sum sha1sum
271 + (cd tokyocabinet ; make clean)