wait_test: Makefile bsys.c
$(RMF) bsys.o
- $(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsys.c
+ $(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsys.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -L../findlib -o $@ bsys.o $(DLIB) -lbac -lbacfind -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) bsys.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsys.c
$(RMF) output.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) output.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ output.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) output.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) output.c
$(RMF) lockmgr.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) lockmgr.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ lockmgr.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) lockmgr.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) lockmgr.c
$(RMF) base64.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) base64.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ base64.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) base64.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) base64.c
$(RMF) flist.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) flist.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ flist.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) flist.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) flist.c
$(RMF) fnmatch.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) fnmatch.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ fnmatch.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) fnmatch.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) fnmatch.c
$(RMF) worker.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) worker.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ worker.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) worker.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) worker.c
$(RMF) workq.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) workq.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ workq.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) workq.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) workq.c
rwlock_test: Makefile rwlock.c
$(RMF) rwlock.o
$(CXX) -DTEST_RWLOCK $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) rwlock.c
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ rwlock.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
$(RMF) rwlock.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) rwlock.c
$(RMF) devlock.o
$(CXX) -DTEST_devlock $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) devlock.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ devlock.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) devlock.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) devlock.c
htable_test: Makefile libbac.la htable.c unittests.o
$(RMF) htable.o
$(CXX) -DTEST_SMALL_HTABLE -DTEST_NON_CHAR -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) htable.c
- $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ htable.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ htable.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) htable.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) htable.c
alist_test: Makefile alist.c unittests.o
$(RMF) alist.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) alist.c
- $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ alist.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ alist.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) alist.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) alist.c
crc32_test: Makefile crc32.c unittests.o
$(RMF) crc32.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) crc32.c
- $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ crc32.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ crc32.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) crc32.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) crc32.c
$(RMF) sellist.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sellist.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ sellist.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) sellist.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sellist.c
-xml_test: Makefile xml.o
+xml_test: Makefile libbac.la xml.c
$(RMF) xml.o
$(CXX) -DTEST_PROG $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) xml.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ xml.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) xml.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) xml.c
-md5sum: Makefile md5.o
+md5sum: Makefile libbac.la md5.c
$(RMF) md5.o
$(CXX) -DMD5_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) md5.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ md5.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) md5.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) md5.c
-sha1sum: Makefile sha1.o
+sha1sum: Makefile libbac.la sha1.c
$(RMF) sha1.o
$(CXX) -DSHA1_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ sha1.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) sha1.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c
$(RMF) sha1.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ sha1.o unittests.o $(DLIB) -lbac -lm $(LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) sha1.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c
-bsnprintf_test: Makefile bsnprintf.c unittests.o
+bsnprintf_test: Makefile libbac.la bsnprintf.c unittests.o
$(RMF) bsnprintf.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsnprintf.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ bsnprintf.o unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) bsnprintf.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsnprintf.c
$(RMF) ini.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) ini.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ ini.o unittests.o -lbaccfg -lbac $(DLIB) -lm $(LIBS) $(OPENSSL_LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) ini.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) ini.c
-bsockcore_test: Makefile bsockcore.c unittests.o
+bsockcore_test: Makefile libbac.la bsockcore.c unittests.o
$(RMF) bsockcore.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsockcore.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ bsockcore.o unittests.o $(DLIB) -lbac -lm $(LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) bsockcore.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsockcore.c
-bsock_test: Makefile bsock.c unittests.o
+bsock_test: Makefile libbac.la bsock.c unittests.o
$(RMF) bsock.o
$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsock.c
$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ bsock.o unittests.o $(DLIB) -lbac -lm $(LIBS)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $@ $(DESTDIR)$(sbindir)/
$(RMF) bsock.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsock.c
/*
Bacula(R) - The Network Backup Solution
- Copyright (C) 2000-2017 Kern Sibbald
+ Copyright (C) 2000-2018 Kern Sibbald
The original author of Bacula is Kern Sibbald, with contributions
from many others, a complete list can be found in the file AUTHORS.
Public License, v3.0 ("AGPLv3") and some additional permissions and
terms pursuant to its AGPLv3 Section 7.
- This notice must be preserved when any source code is
+ This notice must be preserved when any source code is
conveyed and/or propagated.
Bacula(R) is a registered trademark of Kern Sibbald.
if (jcr->where_bregexp) {
char *ret;
- apply_bregexps(attr->fname, jcr->where_bregexp, &ret);
+ apply_bregexps(attr->fname, &attr->statp, jcr->where_bregexp, &ret);
pm_strcpy(attr->ofname, ret);
if (attr->type == FT_LNKSAVED || attr->type == FT_LNK) {
*/
if ((attr->type == FT_LNKSAVED || jcr->prefix_links)) {
- apply_bregexps(attr->lname, jcr->where_bregexp, &ret);
+ apply_bregexps(attr->lname, &attr->statp, jcr->where_bregexp, &ret);
pm_strcpy(attr->olname, ret);
} else {
if (attr->type == FT_DELETED) { /* TODO: change this to get last seen values */
bsnprintf(buf, sizeof(buf),
- "-*DELETED*- - - - - ---------- -------- %s\n", attr->ofname);
+ "-*DELETED- - - - - ---------- -------- %s\n", attr->ofname);
Dmsg1(dbglvl, "%s", buf);
Jmsg(jcr, message_type, 1, "%s", buf);
return;
p += sprintf(p, "%-8.8s %-8.8s",
guid->uid_to_name(attr->statp.st_uid, en1, sizeof(en1)),
guid->gid_to_name(attr->statp.st_gid, en2, sizeof(en2)));
- p += sprintf(p, "%12.12s ", edit_int64(attr->statp.st_size, ec1));
+ p += sprintf(p, " %18.18s ", edit_int64(attr->statp.st_size, ec1));
p = encode_time(attr->statp.st_ctime, p);
*p++ = ' ';
*p++ = ' ';
/*
Bacula(R) - The Network Backup Solution
- Copyright (C) 2000-2016 Kern Sibbald
+ Copyright (C) 2000-2018 Kern Sibbald
The original author of Bacula is Kern Sibbald, with contributions
from many others, a complete list can be found in the file AUTHORS.
Public License, v3.0 ("AGPLv3") and some additional permissions and
terms pursuant to its AGPLv3 Section 7.
- This notice must be preserved when any source code is
+ This notice must be preserved when any source code is
conveyed and/or propagated.
Bacula(R) is a registered trademark of Kern Sibbald.
* Generic base 64 input and output routines
*
* Written by Kern E. Sibbald, March MM.
- *
- * Version $Id$
*/
* the base64_to_bin routine is compatible with what the rest of the world
* uses.
*
+ * 'dest_size' must be big enough! Giving the right size here could fail as
+ * we consider 'srclen' as an unpadded size, even if 'src' is padded
+ * we suggest to use dest_size=srclen for easiness or at least
+ * dest_size=((srclen + 3) / 4) * 3) for optimization lovers
+ *
* Returns: the number of characters stored not
* including the EOS
*/
ok(len == 6, "Checking from_base64 decoded length - encoded");
return report();
};
-#endif /* TEST_PROGRAM */
\ No newline at end of file
+#endif /* TEST_PROGRAM */
/*
Bacula(R) - The Network Backup Solution
- Copyright (C) 2000-2016 Kern Sibbald
+ Copyright (C) 2000-2018 Kern Sibbald
The original author of Bacula is Kern Sibbald, with contributions
from many others, a complete list can be found in the file AUTHORS.
Public License, v3.0 ("AGPLv3") and some additional permissions and
terms pursuant to its AGPLv3 Section 7.
- This notice must be preserved when any source code is
+ This notice must be preserved when any source code is
conveyed and/or propagated.
Bacula(R) is a registered trademark of Kern Sibbald.
}
}
+
/* Apply all regexps to fname
*/
bool apply_bregexps(const char *fname, alist *bregexps, char **result)
+{
+ return apply_bregexps(fname, NULL, bregexps, result);
+}
+
+/* Apply all regexps to fname
+ */
+bool apply_bregexps(const char *fname, struct stat *sp, alist *bregexps, char **result)
{
BREGEXP *elt;
bool ok=false;
char *ret = (char *) fname;
foreach_alist(elt, bregexps) {
- ret = elt->replace(ret);
+ ret = elt->replace(ret, sp);
ok = ok || elt->success;
}
Dmsg2(500, "bregexp: fname=%s ret=%s\n", fname, ret);
}
/* return regexp->result */
-char *BREGEXP::replace(const char *fname)
+char *BREGEXP::replace(const char *fname, struct stat *sp)
{
success = false; /* use this.success to known if it's ok */
int flen = strlen(fname);
if (len) {
result = check_pool_memory_size(result, len);
- edit_subst(fname, regs);
+ edit_subst(fname, sp, regs);
success = true;
Dmsg2(500, "bregexp: len = %i, result_len = %i\n", len, strlen(result));
}
for (p = psubst++; *p ; p = psubst++) {
+ /* match a substitution with a struct stat field */
+ if ((*p == '$') && (*psubst == 'm')) {
+ len += 50; /* Will add a integer */
+
/* match $1 \1 back references */
- if ((*p == '$' || *p == '\\') && ('0' <= *psubst && *psubst <= '9')) {
+ } else if ((*p == '$' || *p == '\\') && ('0' <= *psubst && *psubst <= '9')) {
no = *psubst++ - '0';
/* we check if the back reference exists */
return len;
}
-char *BREGEXP::edit_subst(const char *fname, regmatch_t breg[])
+char *BREGEXP::edit_subst(const char *fname, struct stat *sp, regmatch_t breg[])
{
int i;
char *p;
+ char ed[50];
char *psubst = subst;
int no;
int len;
}
/* on recopie le motif de remplacement (avec tous les $x) */
-
for (p = psubst++; *p ; p = psubst++) {
+ /* match specific % variables, coming from struct stat */
+ if ((*p == '$' && *psubst == 'm')) {
+ edit_uint64(sp?sp->st_mtime : 0, ed);
+ len = strlen(ed);
+ bstrncpy(result + i, ed, len+1);
+ i+=len;
+ psubst++; /* Eat m */
+
/* match $1 \1 back references */
- if ((*p == '$' || *p == '\\') && ('0' <= *psubst && *psubst <= '9')) {
+ } else if ((*p == '$' || *p == '\\') && ('0' <= *psubst && *psubst <= '9')) {
no = *psubst++ - '0';
/* have a back reference ? */
/*
Bacula(R) - The Network Backup Solution
- Copyright (C) 2000-2016 Kern Sibbald
+ Copyright (C) 2000-2018 Kern Sibbald
The original author of Bacula is Kern Sibbald, with contributions
from many others, a complete list can be found in the file AUTHORS.
Public License, v3.0 ("AGPLv3") and some additional permissions and
terms pursuant to its AGPLv3 Section 7.
- This notice must be preserved when any source code is
+ This notice must be preserved when any source code is
conveyed and/or propagated.
Bacula(R) is a registered trademark of Kern Sibbald.
POOLMEM *result; /* match result */
bool success; /* match is ok */
- char *replace(const char *fname); /* return this.result */
+ char *replace(const char *fname, struct stat *sp=NULL); /* return this.result */
void debug();
/* private */
char *eor; /* end of regexp in expr */
char *return_fname(const char *fname, int len); /* return fname as result */
- char *edit_subst(const char *fname, regmatch_t breg[]);
+ char *edit_subst(const char *fname, struct stat *sp, regmatch_t breg[]);
int compute_dest_len(const char *fname, regmatch_t breg[]);
bool extract_regexp(const char *motif);
};
alist *get_bregexps(const char *where);
/* apply every regexps from the alist */
+bool apply_bregexps(const char *fname, struct stat *sp, alist *bregexps, char **result);
bool apply_bregexps(const char *fname, alist *bregexps, char **result);
/* foreach_alist free RUNSCRIPT */
* Returns: false on failure
* true on success
*/
+#define display_errmsg() (!m_suppress_error_msgs && m_jcr && m_jcr->JobId != 0)
+
bool BSOCK::send(int aflags)
{
int32_t rc;
bool locked = false;
if (is_closed()) {
- if (!m_suppress_error_msgs) {
+ if (display_errmsg()) {
Qmsg0(m_jcr, M_ERROR, 0, _("Socket is closed\n"));
}
return false;
}
if (errors) {
- if (!m_suppress_error_msgs) {
+ if (display_errmsg()) {
Qmsg4(m_jcr, M_ERROR, 0, _("Socket has errors=%d on call to %s:%s:%d\n"),
- errors, m_who, m_host, m_port);
+ errors, m_who, m_host, m_port);
}
return false;
}
if (is_terminated()) {
- if (!m_suppress_error_msgs) {
+ if (display_errmsg()) {
Qmsg4(m_jcr, M_ERROR, 0, _("Bsock send while terminated=%d on call to %s:%s:%d\n"),
- is_terminated(), m_who, m_host, m_port);
+ is_terminated(), m_who, m_host, m_port);
}
return false;
}
if (msglen > 4000000) {
if (!m_suppress_error_msgs) {
Qmsg4(m_jcr, M_ERROR, 0,
- _("Socket has insane msglen=%d on call to %s:%s:%d\n"),
+ _("Write socket has insane msglen=%d on call to %s:%s:%d\n"),
msglen, m_who, m_host, m_port);
}
return false;