]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
More Enterprise backports + changes to the backporting
authorKern Sibbald <kern@sibbald.com>
Sun, 11 Nov 2018 11:33:33 +0000 (12:33 +0100)
committerKern Sibbald <kern@sibbald.com>
Sun, 11 Nov 2018 11:33:33 +0000 (12:33 +0100)
bacula/src/lib/Makefile.in
bacula/src/lib/attr.c
bacula/src/lib/base64.c
bacula/src/lib/breg.c
bacula/src/lib/breg.h
bacula/src/lib/bsock.c

index b0aef3b26f0f6ad6c1cc122bd577dcabdd59fef5..8c4796ea178c966e1b9cc7deee18cb832368f58d 100644 (file)
@@ -120,8 +120,9 @@ Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
 
 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
 
@@ -129,6 +130,7 @@ output_test: Makefile output.c unittests.o
        $(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
 
@@ -136,6 +138,7 @@ lockmgr_test: Makefile libbac.la lockmgr.c unittests.o
        $(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
 
@@ -143,6 +146,7 @@ base64_test: Makefile base64.c unittests.o
        $(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
 
@@ -150,6 +154,7 @@ flist_test: Makefile flist.c unittests.o
        $(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
 
@@ -157,6 +162,7 @@ fnmatch_test: Makefile fnmatch.c unittests.o
        $(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
 
@@ -164,6 +170,7 @@ worker_test: Makefile worker.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
 
@@ -171,12 +178,14 @@ workq_test: Makefile workq.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
@@ -185,27 +194,31 @@ devlock_test: Makefile
        $(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
 
@@ -213,27 +226,31 @@ sellist_test: Makefile libbac.la sellist.c unittests.o
        $(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
 
@@ -241,13 +258,15 @@ sha1_test: Makefile libbac.la sha1.c unittests.o
        $(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
 
@@ -255,20 +274,23 @@ ini_test: Makefile libbac.la ini.c unittests.o
        $(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
 
index f6868b4dd6482bc0dc94080559c10e4da7c54ccd..497939aac3db49305d1011759d5cffbab36ff54d 100644 (file)
@@ -1,7 +1,7 @@
 /*
    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.
@@ -11,7 +11,7 @@
    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.
@@ -167,7 +167,7 @@ void build_attr_output_fnames(JCR *jcr, ATTR *attr)
 
    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) {
@@ -176,7 +176,7 @@ void build_attr_output_fnames(JCR *jcr, ATTR *attr)
           */
 
          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 {
@@ -262,7 +262,7 @@ void print_ls_output(JCR *jcr, ATTR *attr, int message_type /* M_RESTORED */)
 
    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;
@@ -277,7 +277,7 @@ void print_ls_output(JCR *jcr, ATTR *attr, int message_type /* M_RESTORED */)
    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++ = ' ';
index 7f61bea72c08ae675784e048fc1b86d207e2ea47..28d0ce10a8ec250727fdab53e0919c2fb48926b6 100644 (file)
@@ -1,7 +1,7 @@
 /*
    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.
@@ -11,7 +11,7 @@
    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.
@@ -20,8 +20,6 @@
  *   Generic base 64 input and output routines
  *
  *    Written by Kern E. Sibbald, March MM.
- *
- *   Version $Id$
  */
 
 
@@ -184,6 +182,11 @@ bin_to_base64(char *buf, int buflen, char *bin, int binlen, int compatible)
  * 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
  */
@@ -439,4 +442,4 @@ int main()
    ok(len == 6, "Checking from_base64 decoded length - encoded");
    return report();
 };
-#endif /* TEST_PROGRAM */
\ No newline at end of file
+#endif /* TEST_PROGRAM */
index 2e1a532e820429c6764c0dc2ff036108e1df3128..fbb713838f8fcd522a1f30280a95c5e98907a92e 100644 (file)
@@ -1,7 +1,7 @@
 /*
    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.
@@ -11,7 +11,7 @@
    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.
@@ -79,16 +79,24 @@ void free_bregexps(alist *bregexps)
    }
 }
 
+
 /* 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);
@@ -214,7 +222,7 @@ bool BREGEXP::extract_regexp(const char *motif)
 }
 
 /* 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);
@@ -229,7 +237,7 @@ char *BREGEXP::replace(const char *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));
 
@@ -265,8 +273,12 @@ int BREGEXP::compute_dest_len(const char *fname, regmatch_t breg[])
    }
 
    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 */
@@ -288,10 +300,11 @@ int BREGEXP::compute_dest_len(const char *fname, regmatch_t breg[])
    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;
@@ -305,10 +318,17 @@ char *BREGEXP::edit_subst(const char *fname, regmatch_t breg[])
    }
 
    /* 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 ? */
index e21ffef51bb6b7600b2978af9c681477497ee46a..e2d9da09f919e7f1bff6bb0da27fdba3b7e396ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
    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.
@@ -11,7 +11,7 @@
    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.
@@ -54,7 +54,7 @@ public:
    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 */
@@ -65,7 +65,7 @@ public:
    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);
 };
@@ -83,6 +83,7 @@ void free_bregexp(BREGEXP *script);
 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 */
index cca265241262e1200c509eda483ddf88e8c3cce9..c21b293a9f413bcbf0af90d791a557249ccc948d 100644 (file)
@@ -244,6 +244,8 @@ bail_out:
  * 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;
@@ -258,22 +260,22 @@ bool BSOCK::send(int aflags)
    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;
    }
@@ -281,7 +283,7 @@ bool BSOCK::send(int aflags)
    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;