Hello community, here is the log from the commit of package fsvs for openSUSE:Factory checked in at 2020-08-18 15:12:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fsvs (Old) and /work/SRC/openSUSE:Factory/.fsvs.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fsvs" Tue Aug 18 15:12:35 2020 rev:13 rq:827572 version:1.2.9 Changes: -------- --- /work/SRC/openSUSE:Factory/fsvs/fsvs.changes 2017-06-15 11:25:48.930883432 +0200 +++ /work/SRC/openSUSE:Factory/.fsvs.new.3399/fsvs.changes 2020-08-18 15:12:50.236085044 +0200 @@ -1,0 +2,8 @@ +Mon Aug 17 12:44:42 UTC 2020 - Dirk Mueller <[email protected]> + +- update to 1.2.9: + - Various small fixes that got visible with new compiler versions and/or LLVM. + - Fixed URI canonicalization (UTF8) +- refreshed patches fsvs-1.2.5-linking.patch, fsvs-destdir.patch + +------------------------------------------------------------------- Old: ---- fsvs-1.2.7.tar.bz2 New: ---- fsvs-1.2.9.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fsvs.spec ++++++ --- /var/tmp/diff_new_pack.xAQbU0/_old 2020-08-18 15:12:51.396085524 +0200 +++ /var/tmp/diff_new_pack.xAQbU0/_new 2020-08-18 15:12:51.400085525 +0200 @@ -1,7 +1,7 @@ # # spec file for package fsvs # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,17 +12,17 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: fsvs -Version: 1.2.7 +Version: 1.2.9 Release: 0 -Url: http://fsvs.tigris.org/ Summary: Backup/Restore/Versioning of large Data Sets with Meta-Data -License: GPL-3.0+ +License: GPL-3.0-or-later Group: Productivity/Archiving/Backup +URL: http://fsvs.tigris.org/ Source: https://download.fsvs-software.org/fsvs-%{version}.tar.bz2 Patch1: fsvs-destdir.patch Patch2: fsvs-1.2.5-linking.patch @@ -47,7 +47,6 @@ BuildRequires: pkgconfig BuildRequires: subversion-devel BuildRequires: zlib-devel -BuildRoot: %{_tmppath}/%{name}-%{version}-build %description FSVS is the abbreviation for “Fast System VerSioning”, and is pronounced @@ -58,13 +57,6 @@ You may think of it as some kind of tar or rsync with versioned storage. - - - -Author: -------- - Philipp Marek <[email protected]> - %prep %setup -q %patch1 @@ -75,24 +67,24 @@ export CFLAGS="%{optflags} $(pkg-config --includes apr-1)" export CFLAGS="$CFLAGS -fno-strict-aliasing -fgnu89-inline" %configure --disable-silent-rules -%__make %{?jobs:-j%{jobs}} +%make_build %install -%makeinstall +%make_install -%__rm -rf doc/develop +rm -rf doc/develop echo -n >manfiles.lst for p in doc/*.{1,5}; do f="${p##*/}" m="${f##*.}" - %__install -D -m0644 "$p" "%{buildroot}%{_mandir}/man${m}/${f}" - %__rm "$p" + install -D -m0644 "$p" "%{buildroot}%{_mandir}/man${m}/${f}" + rm "$p" echo "%doc %{_mandir}/man${m}/${f}"'*' >>manfiles.lst done %files -f manfiles.lst -%defattr(-,root,root) -%doc doc CHANGES LICENSE README +%license LICENSE +%doc doc CHANGES README %{_bindir}/fsvs %changelog ++++++ fsvs-1.2.5-linking.patch ++++++ --- /var/tmp/diff_new_pack.xAQbU0/_old 2020-08-18 15:12:51.420085534 +0200 +++ /var/tmp/diff_new_pack.xAQbU0/_new 2020-08-18 15:12:51.424085535 +0200 @@ -16,16 +16,16 @@ =================================================================== --- src/Makefile.in.orig +++ src/Makefile.in -@@ -16,7 +16,7 @@ HEADREV := "$Revision: 2478 $" +@@ -16,7 +16,7 @@ HEADREV := "$Revision: 2506 $" VERSION = $(shell perl -e '($$r) = (q( $(HEADREV) ) =~ m:(\d+):); $$t= q( $(HEADURL) ) =~ m:/tags/([^/]+): ? $$1 : "trunk"; print "$$t:$$r\n";' ) CFLAGS := @CFLAGS@ --CFLAGS += -Wall -funsigned-char -Os -DFSVS_VERSION='"$(VERSION)"' -+CFLAGS += -Wall -funsigned-char -DFSVS_VERSION='"$(VERSION)"' +-CFLAGS += -Wall -funsigned-char -Os -DFSVS_VERSION='"$(VERSION)"' -Wno-deprecated-declarations ++CFLAGS += -Wall -funsigned-char -DFSVS_VERSION='"$(VERSION)"' -Wno-deprecated-declarations LDFLAGS := @LDFLAGS@ FSVS_LDFLAGS = $(LDFLAGS) -lsvn_subr-1 -lsvn_delta-1 -lsvn_ra-1 -lpcre -lgdbm -ldl EXTRALIBS := @EXTRALIBS@ -@@ -146,13 +146,13 @@ docs: $(MANDEST)/fsvs-howto-backup.5 $(M +@@ -148,13 +148,13 @@ docs: $(MANDEST)/fsvs-howto-backup.5 $(M ################################ Rules ###################################### %.o: %.c @echo " CC $<" @@ -41,7 +41,7 @@ ifeq (@ENABLE_RELEASE@, 1) -strip $@ endif -@@ -169,7 +169,7 @@ endif +@@ -171,7 +171,7 @@ endif deps: $(D_FILES) .%.d: %.c @echo " deps for $<" ++++++ fsvs-1.2.7.tar.bz2 -> fsvs-1.2.9.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/CHANGES new/fsvs-1.2.9/CHANGES --- old/fsvs-1.2.7/CHANGES 2015-12-30 12:28:55.000000000 +0100 +++ new/fsvs-1.2.9/CHANGES 2018-06-06 15:49:01.000000000 +0200 @@ -1,3 +1,9 @@ +Changes in 1.2.9 +- Various small fixes that got visible with new compiler versions and/or LLVM. + +Changes in 1.2.8 +- Fixed URI canonicalization (UTF8) + Changes in 1.2.7 - Updates for Clang - Fixed some compiler warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/Makefile new/fsvs-1.2.9/Makefile --- old/fsvs-1.2.7/Makefile 2008-05-20 12:33:22.000000000 +0200 +++ new/fsvs-1.2.9/Makefile 2018-06-05 16:20:43.000000000 +0200 @@ -21,3 +21,6 @@ rm -f config.cache config.log config.status 2> /dev/null || true rm -f src/Makefile src/tags tests/Makefile 2> /dev/null || true rm -f src/config.h src/*.[os] src/.*.d src/fsvs 2> /dev/null || true + +test-shell: src/fsvs + @$(MAKE) BINARY=$(CURDIR)/$< --no-print-directory -C tests shell diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/autom4te.cache/output.0 new/fsvs-1.2.9/autom4te.cache/output.0 --- old/fsvs-1.2.7/autom4te.cache/output.0 2015-12-30 12:30:17.000000000 +0100 +++ new/fsvs-1.2.9/autom4te.cache/output.0 2018-06-07 10:35:33.000000000 +0200 @@ -6334,6 +6334,8 @@ if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/autom4te.cache/requests new/fsvs-1.2.9/autom4te.cache/requests --- old/fsvs-1.2.7/autom4te.cache/requests 2015-12-30 12:30:17.000000000 +0100 +++ new/fsvs-1.2.9/autom4te.cache/requests 2018-06-07 10:35:33.000000000 +0200 @@ -1,4 +1,4 @@ -# This file was generated by Autom4te Sat Aug 22 17:39:33 UTC 2015. +# This file was generated by Autom4te Sun Aug 20 18:29:13 UTC 2017. # It contains the lists of macros which have been traced. # It can be safely removed. @@ -14,63 +14,63 @@ 'configure.in' ], { - 'AM_PROG_CXX_C_O' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AC_INIT' => 1, - 'AM_CONDITIONAL' => 1, - 'AH_OUTPUT' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'm4_sinclude' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AC_CONFIG_FILES' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_FC_SRCEXT' => 1, - 'AC_SUBST' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AM_PROG_MOC' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - '_AM_SUBST_NOTMAKE' => 1, - '_m4_warn' => 1, - '_AM_COND_IF' => 1, 'AM_POT_TOOLS' => 1, - 'AM_SILENT_RULES' => 1, - 'sinclude' => 1, - 'm4_pattern_forbid' => 1, - 'AC_CONFIG_SUBDIRS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, '_AM_COND_ELSE' => 1, - 'AC_FC_FREEFORM' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, 'AM_ENABLE_MULTILIB' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'm4_include' => 1, + 'AH_OUTPUT' => 1, + '_AM_COND_IF' => 1, + 'AM_PROG_MOC' => 1, + 'LT_INIT' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_XGETTEXT_OPTION' => 1, 'AC_CANONICAL_TARGET' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AC_SUBST_TRACE' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'include' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'sinclude' => 1, 'AC_CANONICAL_SYSTEM' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AC_SUBST_TRACE' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_FC_SRCEXT' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'm4_sinclude' => 1, 'AM_GNU_GETTEXT' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_LIBSOURCE' => 1, + 'AM_PATH_GUILE' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_CANONICAL_BUILD' => 1, + '_m4_warn' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AM_PROG_FC_C_O' => 1, 'm4_pattern_allow' => 1, - 'AC_FC_PP_DEFINE' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_SUBST' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'm4_include' => 1, 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_INIT' => 1, '_AM_COND_ENDIF' => 1, - 'AM_NLS' => 1, - 'LT_INIT' => 1, + 'AM_SILENT_RULES' => 1, 'AM_PROG_F77_C_O' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'include' => 1, - 'AC_CANONICAL_BUILD' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AM_NLS' => 1, + 'm4_pattern_forbid' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AC_CONFIG_FILES' => 1, 'AM_PROG_AR' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_LIBSOURCE' => 1, - 'AM_AUTOMAKE_VERSION' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + '_LT_AC_TAGCONFIG' => 1, 'AC_FC_PP_SRCEXT' => 1, + 'AM_MAINTAINER_MODE' => 1, 'AM_PROG_CC_C_O' => 1 } ], 'Autom4te::Request' ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/configure new/fsvs-1.2.9/configure --- old/fsvs-1.2.7/configure 2015-12-30 12:30:17.000000000 +0100 +++ new/fsvs-1.2.9/configure 2018-06-07 10:35:33.000000000 +0200 @@ -6334,6 +6334,8 @@ if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/Makefile.in new/fsvs-1.2.9/src/Makefile.in --- old/fsvs-1.2.7/src/Makefile.in 2015-12-28 12:46:54.000000000 +0100 +++ new/fsvs-1.2.9/src/Makefile.in 2018-06-06 15:48:52.000000000 +0200 @@ -11,12 +11,12 @@ ################################ Definitions ################################ DIR := /usr/share/doc -HEADURL := "$URL: http://fsvs.tigris.org/svn/fsvs/tags/fsvs-1.2.7/fsvs/src/Makefile.in $" -HEADREV := "$Revision: 2478 $" +HEADURL := "$URL: http://fsvs.tigris.org/svn/fsvs/tags/fsvs-1.2.9/fsvs/src/Makefile.in $" +HEADREV := "$Revision: 2506 $" VERSION = $(shell perl -e '($$r) = (q( $(HEADREV) ) =~ m:(\d+):); $$t= q( $(HEADURL) ) =~ m:/tags/([^/]+): ? $$1 : "trunk"; print "$$t:$$r\n";' ) CFLAGS := @CFLAGS@ -CFLAGS += -Wall -funsigned-char -Os -DFSVS_VERSION='"$(VERSION)"' +CFLAGS += -Wall -funsigned-char -Os -DFSVS_VERSION='"$(VERSION)"' -Wno-deprecated-declarations LDFLAGS := @LDFLAGS@ FSVS_LDFLAGS = $(LDFLAGS) -lsvn_subr-1 -lsvn_delta-1 -lsvn_ra-1 -lpcre -lgdbm -ldl EXTRALIBS := @EXTRALIBS@ @@ -27,6 +27,8 @@ endif ifeq (@ENABLE_DEBUG@, 1) + # The component tests need all local variables, ie. no optimization. + CFLAGS += -O0 CFLAGS += -DDEBUG -g LDFLAGS += -g ifeq (@ENABLE_GCOV@, 1) @@ -217,7 +219,7 @@ ################################ Testing #################################### run-tests: $(DEST) - WAA_CHARS=$(WAA_CHARS) $(MAKE) -C ../tests BINARY=$(shell pwd)/$(DEST) $(TESTS) + WAA_CHARS=$(WAA_CHARS) $(MAKE) -C ../tests BINARY=$(shell pwd)/$(DEST) VERBOSE=$(VERBOSE) $(TESTS) ifeq (@ENABLE_GCOV@, 1) # I don't know why, but gcov wants to open the .gcda and .gcno # files Read-Write. I filed a bug report for this. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/cache.c new/fsvs-1.2.9/src/cache.c --- old/fsvs-1.2.7/src/cache.c 2015-02-12 12:04:13.000000000 +0100 +++ new/fsvs-1.2.9/src/cache.c 2018-06-04 19:55:58.000000000 +0200 @@ -8,6 +8,7 @@ #include <stdlib.h> #include <unistd.h> +#include <errno.h> #include "global.h" @@ -96,7 +97,7 @@ /** -. * Can return \c ENOENT if not found. */ -inline int cch__find(struct cache_t *cache, cache_value_t id, +int cch__find(struct cache_t *cache, cache_value_t id, int *index, char **data, int *len) { int i; @@ -209,7 +210,7 @@ * Copies the significant bits ' ' .. 'Z' (or, really, \\x20 .. \\x60) of * at most 6 bytes of \a stg into a packed bitfield, so that 30bits are * used. */ -inline cache_value_t cch___string_to_cv(const char *stg) +cache_value_t cch___string_to_cv(const char *stg) { union { cache_value_t cv; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/checksum.c new/fsvs-1.2.9/src/checksum.c --- old/fsvs-1.2.7/src/checksum.c 2010-02-08 20:29:52.000000000 +0100 +++ new/fsvs-1.2.9/src/checksum.c 2018-06-04 19:55:58.000000000 +0200 @@ -116,7 +116,7 @@ /** Hex-character to ascii. * Faster than sscanf(). * Returns -1 on error. */ -inline static int cs__hex2val(char ch) +static int cs__hex2val(char ch) { /* I thought a bit whether I should store the values+1, ie. keep most of * the array as 0 - but that doesn't save any memory, it only takes more diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/cp_mv.c new/fsvs-1.2.9/src/cp_mv.c --- old/fsvs-1.2.7/src/cp_mv.c 2012-10-29 17:53:10.000000000 +0100 +++ new/fsvs-1.2.9/src/cp_mv.c 2018-06-04 19:55:58.000000000 +0200 @@ -646,10 +646,14 @@ char* cm___output_pct(struct cm___match_t *match, struct cm___candidate_t *cand) { - static char buffer[8]; + static char buffer[16]; BUG_ON(cand->match_count > 1000 || cand->match_count < 0); + /* GCC notes + * ‘sprintf’ output between 6 and 16 bytes into a destination of size 8 + * which isn't correct (see the BUG_ON above), + * but it can be 1+4+1+1+1 == 8 characters. */ sprintf(buffer, "=%d.%1d%%", cand->match_count/10, cand->match_count % 10); @@ -1085,7 +1089,7 @@ * If that isn't possible (because \a path is not below \c wc_path), * \c EINVAL is returned. * The case \c path==wc_path is not allowed, either. */ -inline int cm___not_below_wcpath(char *path, char **out) +int cm___not_below_wcpath(char *path, char **out) { if (strncmp(path, wc_path, wc_path_len) != 0 || path[wc_path_len] != PATH_SEPARATOR) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/diff.c new/fsvs-1.2.9/src/diff.c --- old/fsvs-1.2.7/src/diff.c 2015-12-28 12:48:09.000000000 +0100 +++ new/fsvs-1.2.9/src/diff.c 2018-06-06 10:02:30.000000000 +0200 @@ -12,6 +12,7 @@ #include <alloca.h> #include <time.h> #include <fcntl.h> +#include <apr_hash.h> #include "global.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/direnum.c new/fsvs-1.2.9/src/direnum.c --- old/fsvs-1.2.7/src/direnum.c 2009-02-17 11:53:23.000000000 +0100 +++ new/fsvs-1.2.9/src/direnum.c 2018-06-04 19:55:58.000000000 +0200 @@ -80,7 +80,7 @@ /** Starts enumeration of the given \a path. The directory handle is returned * in \a *dirp. * \return 0 for success, or an error code. */ -inline int dir__start_enum(dir__handle *dh, char *path) +int dir__start_enum(dir__handle *dh, char *path) { int status; @@ -100,7 +100,7 @@ * \param count The maximum number of bytes in \a dirp. * * \return The number of bytes used in \a dirp. */ -inline int dir__enum(dir__handle dh, fsvs_dirent *dirp, unsigned int count) +int dir__enum(dir__handle dh, fsvs_dirent *dirp, unsigned int count) { return syscall(__NR_getdents64, dh, dirp, count); } @@ -108,7 +108,7 @@ /** Simply closes the handle \a dh. * */ -inline int dir__close(dir__handle dh) +int dir__close(dir__handle dh) { int status; @@ -123,7 +123,7 @@ /** How to get the length of a directory (in bytes), from a handle \a dh, * into \a st->size. */ -inline int dir__get_dir_size(dir__handle dh, struct sstat_t *st) +int dir__get_dir_size(dir__handle dh, struct sstat_t *st) { int status; @@ -151,7 +151,7 @@ typedef DIR* dir__handle; -inline int dir__start_enum(dir__handle *dh, char *path) +int dir__start_enum(dir__handle *dh, char *path) { int status; @@ -164,7 +164,7 @@ /* Impedance matching .. don't like it. */ -inline int dir__enum(dir__handle dh, fsvs_dirent *dirp, unsigned int count) +int dir__enum(dir__handle dh, fsvs_dirent *dirp, unsigned int count) { struct dirent *de; @@ -181,7 +181,7 @@ } -inline int dir__close(dir__handle dh) +int dir__close(dir__handle dh) { int status; @@ -193,7 +193,7 @@ } -inline int dir__get_dir_size(dir__handle dh, struct sstat_t *st) +int dir__get_dir_size(dir__handle dh, struct sstat_t *st) { int status; @@ -259,7 +259,7 @@ * Used for type checking cleanliness. * 'C' as for 'Const'. * \return +2, +1, 0, -1, -2, suitable for \a qsort(). */ -inline int dir___f_sort_by_nameCC(const void *a, const void *b) +int dir___f_sort_by_nameCC(const void *a, const void *b) { return strcoll(a,b); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/est_ops.c new/fsvs-1.2.9/src/est_ops.c --- old/fsvs-1.2.7/src/est_ops.c 2015-12-28 12:48:09.000000000 +0100 +++ new/fsvs-1.2.9/src/est_ops.c 2018-06-06 13:08:05.000000000 +0200 @@ -501,6 +501,7 @@ }; int is_dir, is_dev, status; int intnum; + svn_revnum_t revision; #if 0 @@ -524,10 +525,12 @@ STOPIF( ops__apply_group(sts, NULL, NULL), NULL); - if (sts->url) + revision = sts->repos_rev; + if (sts->url) { intnum=sts->url->internal_number; - else - { + if (revision == SET_REVNUM) + revision = sts->url->current_rev; + } else { /* A non-root entry has no url. May happen with _build_list, when * there are no urls. */ if (sts->parent) @@ -543,7 +546,7 @@ ( is_dev ? ops__dev_to_waa_string(sts) : "nd" ), ( is_dir ? "x" : cs__md5tohex_buffered(sts->md5) ), (t_ull)sts->st.size, - sts->repos_rev == SET_REVNUM ? sts->url->current_rev : sts->repos_rev, + revision, intnum, (t_ul)sts->st.dev, (t_ull)sts->st.ino, @@ -1346,7 +1349,7 @@ if (sts->parent) if (sts->parent->entry_status & FS_REMOVED) { - goto removed; + goto removed_memset; } /* Check for current status */ @@ -1362,9 +1365,9 @@ if (abs(status) != ENOENT) STOPIF(status, "cannot lstat(%s)", fullpath); -removed: /* Re-set the values, if needed */ if (st.mode) +removed_memset: memset(&st, 0, sizeof(st)); sts->entry_status=FS_REMOVED; @@ -1422,7 +1425,7 @@ /** Set the estat::do_* bits, depending on the parent. * Should not be called for the root. * */ -inline void ops___set_todo_bits(struct estat *sts) +void ops___set_todo_bits(struct estat *sts) { /* For recursive operation: If we should do the parent completely, we do * the sub-entries, too. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/global.h new/fsvs-1.2.9/src/global.h --- old/fsvs-1.2.7/src/global.h 2015-12-28 12:48:09.000000000 +0100 +++ new/fsvs-1.2.9/src/global.h 2018-06-06 13:08:05.000000000 +0200 @@ -805,7 +805,7 @@ /** Makes the program abort. * If the configure had --enable-debug and \c gdb is in the path, try * to use \c gdb to debug this problem (only if STDIN and STDOUT are ttys). */ -#define BUG(...) do { fflush(NULL); debuglevel=1; DEBUGP(__VA_ARGS__); *(int*)42=__LINE__; } while (0) +#define BUG(...) do { fflush(NULL); debuglevel=1; DEBUGP(__VA_ARGS__); *(int*)42=__LINE__; while(1) sleep(1); } while (0) /** The same as BUG(), but conditionalized. * \code * BUG_ON(a == b, "HELP") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/hash_ops.c new/fsvs-1.2.9/src/hash_ops.c --- old/fsvs-1.2.7/src/hash_ops.c 2008-11-12 11:11:41.000000000 +0100 +++ new/fsvs-1.2.9/src/hash_ops.c 2018-06-05 16:21:37.000000000 +0200 @@ -7,6 +7,7 @@ ************************************************************************/ #include <fcntl.h> +#include <string.h> #include "global.h" #include "waa.h" @@ -195,6 +196,8 @@ if (gdbm_mode == HASH_TEMPORARY) { + /* Replace our own constant with a public available value. */ + gdbm_mode = GDBM_NEWDB; cp=waa_tmp_path; /* Use this bit, so that the open filehandle says what it was. */ eos=waa_tmp_fn; @@ -205,7 +208,7 @@ | waa__get_gwd_flag(name)), NULL); strcpy(eos, name); - if (gdbm_mode == GDBM_NEWDB || gdbm_mode == HASH_TEMPORARY) + if (gdbm_mode == GDBM_NEWDB) { /* libgdbm3=1.8.3-3 has a bug - with GDBM_NEWDB an existing database is * not truncated. Only the O_CREAT, not the O_TRUNC flag is used. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/helper.c new/fsvs-1.2.9/src/helper.c --- old/fsvs-1.2.7/src/helper.c 2015-12-28 12:48:09.000000000 +0100 +++ new/fsvs-1.2.9/src/helper.c 2018-06-07 10:35:01.000000000 +0200 @@ -1426,8 +1426,9 @@ } /* We allow to specify only "m" for "libm.so". */ } - STOPIF_CODE_ERR( hdl == NULL, errno, - "Cannot load library %s", libs); + /* errno is typically 0. */ + STOPIF_CODE_ERR( hdl == NULL, EINVAL, + "Cannot load library %s: dlerror says %s", libs, dlerror()); libs=strtok(NULL, delim); } @@ -1476,7 +1477,7 @@ * If \a value_len is not \c NULL, it get set to the length of the path in * the environment variable. * */ -inline int hlp___is_valid_env(char *env, +int hlp___is_valid_env(char *env, char *path2cmp, int p2c_len, char **value, int *value_len) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/ignore.c new/fsvs-1.2.9/src/ignore.c --- old/fsvs-1.2.7/src/ignore.c 2012-10-29 17:53:10.000000000 +0100 +++ new/fsvs-1.2.9/src/ignore.c 2018-06-06 13:08:05.000000000 +0200 @@ -1394,7 +1394,7 @@ * \a ign. * Does the less-than, greater-than and/or equal comparision. * */ -inline int ign___compare_dev(struct sstat_t *st, struct ignore_t *ign) +int ign___compare_dev(struct sstat_t *st, struct ignore_t *ign) { #ifdef DEVICE_NODES_DISABLED DEVICE_NODES_DISABLED(); @@ -2015,6 +2015,7 @@ int i; struct ignore_t *ign; + status = 0; STOPIF_CODE_EPIPE( fprintf(output, "\nGrouping statistics (" "tested, matched, groupname, pattern):\n\n"), NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/options.c new/fsvs-1.2.9/src/options.c --- old/fsvs-1.2.7/src/options.c 2011-04-29 14:20:18.000000000 +0200 +++ new/fsvs-1.2.9/src/options.c 2018-06-04 19:55:58.000000000 +0200 @@ -381,7 +381,7 @@ /** Find an integer value by comparing with predefined strings. */ -inline int opt___find_string(const struct opt___val_str_t *list, +int opt___find_string(const struct opt___val_str_t *list, const char *string, int *result) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/racallback.c new/fsvs-1.2.9/src/racallback.c --- old/fsvs-1.2.7/src/racallback.c 2015-12-29 11:42:04.000000000 +0100 +++ new/fsvs-1.2.9/src/racallback.c 2018-06-06 09:09:48.000000000 +0200 @@ -830,7 +830,7 @@ int cb__remove_from_url(struct estat *root, struct url_t *to_remove, int *was_changed) { - struct url_t *nevermind; + struct url_t *nevermind = NULL; int status; *was_changed=0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/revert.c new/fsvs-1.2.9/src/revert.c --- old/fsvs-1.2.7/src/revert.c 2015-12-28 12:48:09.000000000 +0100 +++ new/fsvs-1.2.9/src/revert.c 2018-06-06 13:08:05.000000000 +0200 @@ -430,6 +430,8 @@ BUG_ON(!pool); + filename_tmp = NULL; + url = NULL; STOPIF( ops__build_path(&filename, sts), NULL); @@ -567,7 +569,7 @@ ex: /* On error remove the temporary file. */ /* Return the original error. */ - if (status) + if (status && filename_tmp) unlink(filename_tmp); return status; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/status.c new/fsvs-1.2.9/src/status.c --- old/fsvs-1.2.7/src/status.c 2015-12-29 11:43:57.000000000 +0100 +++ new/fsvs-1.2.9/src/status.c 2018-06-04 19:55:58.000000000 +0200 @@ -654,7 +654,7 @@ } -inline volatile char* st__flags_string_fromint(int mask) +volatile char* st__flags_string_fromint(int mask) { const struct st___bit_info flags[]={ BIT_INFO( RF_ADD, "add"), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/update.c new/fsvs-1.2.9/src/update.c --- old/fsvs-1.2.7/src/update.c 2015-12-29 11:43:29.000000000 +0100 +++ new/fsvs-1.2.9/src/update.c 2018-06-06 13:29:58.000000000 +0200 @@ -188,14 +188,18 @@ /* if an invalid utf8_value is detected, we'd better ignore it. * who knows which Pandora's box we'd open ... */ - if (0 == strcmp(utf8_name, propname_special) && - 0 == strcmp(utf8_value->data, propval_special)) + if (0 == strcmp(utf8_name, propname_special)) { if (!utf8_value) { sts->st.mode = (sts->st.mode & ~S_IFMT) | S_IFREG; DEBUGP("no longer special"); + goto ex; } - else if (TEST_PACKED(S_ISANYSPECIAL, sts->new_rev_mode_packed)) + + if (strcmp(utf8_value->data, propval_special)) + goto ex; + + if (TEST_PACKED(S_ISANYSPECIAL, sts->new_rev_mode_packed)) { DEBUGP("already marked as special"); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/src/url.c new/fsvs-1.2.9/src/url.c --- old/fsvs-1.2.7/src/url.c 2015-12-29 11:42:21.000000000 +0100 +++ new/fsvs-1.2.9/src/url.c 2018-06-04 20:01:01.000000000 +0200 @@ -11,6 +11,7 @@ #include <unistd.h> #include <ctype.h> #include <sys/select.h> +#include <subversion-1/svn_dirent_uri.h> #include "url.h" @@ -1093,13 +1094,16 @@ if (current_url->session) goto ex; - /* We wouldn't need to allocate this memory if the URL was ok; but we - * don't know that here, and it doesn't hurt that much. */ - STOPIF( hlp__strnalloc(current_url->urllen, - &buffer, current_url->url), NULL); - cp=buffer+current_url->urllen; + /* We wouldn't need to allocate this memory if the URL was ok; but we + * don't know that here, and it doesn't hurt that much. + * Furthermore, only SVN knows what characters should be escaped - so + * lets get it done there. */ + buffer = (char*)svn_uri_canonicalize(current_url->url, global_pool); + BUG_ON(!buffer); + cp=buffer+strlen(buffer); BUG_ON(*cp); + STOPIF_SVNERR_TEXT( svn_ra_open, (& current_url->session, buffer, &cb__cb_table, NULL, /* cbtable, cbbaton, */ @@ -1133,7 +1137,7 @@ while (cp > buffer+4 && *cp != '/') cp--; /* If we're before the hostname, signified by a "//", we abort. */ - STOPIF_CODE_EPIPE(cp[-1] == '/', EINVAL, + STOPIF_CODE_ERR( cp[-1] == '/', EINVAL, "!Unsuccessfull svn_ra_stat() on every try for URL \"%s\".", current_url->url); @@ -1152,7 +1156,6 @@ if (buffer + current_url->urllen == cp) { *missing_dirs=NULL; - IF_FREE(buffer); } else { @@ -1169,7 +1172,6 @@ *missing_dirs=buffer; } } - else IF_FREE(buffer); if (session) @@ -1432,7 +1434,7 @@ * Writes the given URLs into the WAA. */ int url__work(struct estat *root UNUSED, int argc, char *argv[]) { - int status, fh, l, i, had_it; + int status, l, i, had_it; char *dir; char *cp; int have_space; @@ -1443,7 +1445,6 @@ dir=NULL; - fh=-1; STOPIF( waa__given_or_current_wd(NULL, &dir), NULL ); /* The current directory is the WC root. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/tests/063_chroot new/fsvs-1.2.9/tests/063_chroot --- old/fsvs-1.2.7/tests/063_chroot 2008-11-20 08:18:03.000000000 +0100 +++ new/fsvs-1.2.9/tests/063_chroot 2018-06-06 15:48:22.000000000 +0200 @@ -12,7 +12,7 @@ then export FSVS_CHROOT_CWD=17 export FSVS_CHROOT_ROOT=84 - export FSVS_CHROOT_LIBS=m + export FSVS_CHROOT_LIBS=libm.so.6 mkdir dir echo gurgle > empty-file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/tests/067_readonly_repo new/fsvs-1.2.9/tests/067_readonly_repo --- old/fsvs-1.2.7/tests/067_readonly_repo 2013-06-28 12:43:41.000000000 +0200 +++ new/fsvs-1.2.9/tests/067_readonly_repo 2018-06-06 15:47:15.000000000 +0200 @@ -5,6 +5,13 @@ $INCLUDE_FUNCS cd $WC +if [[ $UID -eq 0 && + "$REPURL" == "file://"* ]] +then + echo "The root user may always access local files." + exit 0 +fi + TMP=$LOGDIR/067.msg date > blabla @@ -21,7 +28,7 @@ else echo "Got an error:" cat $TMP - if grep -F "$msg" $TMP + if egrep "$msg" $TMP then $SUCCESS "correct message." else @@ -34,11 +41,12 @@ $INFO "ci to inaccessible dir" # chmod goes top-down, which doesn't work with removing rights. find $REP -depth | xargs chmod 000 -ER "Couldn't open a repository (180001)" $BINq ci -m "RO" +ER "Couldn't open a repository \(180001\)|Can't create session \(170013\)" $BINq ci -m "RO" + $INFO "ci to readonly dir" chmod -R 555 $REP -ER "Permission denied (13)" $BINq ci -m "RO" +ER "Permission denied \(13\)" $BINq ci -m "RO" chmod -R 777 $REP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fsvs-1.2.7/tests/Makefile.in new/fsvs-1.2.9/tests/Makefile.in --- old/fsvs-1.2.7/tests/Makefile.in 2009-09-24 07:40:08.000000000 +0200 +++ new/fsvs-1.2.9/tests/Makefile.in 2018-06-05 16:22:47.000000000 +0200 @@ -169,7 +169,7 @@ prepare_empty: @echo Preparing clean repository ... - test -d $(REP) && rm -rf $(REP) || true + test -d $(REP) && (chmod u+rwx $(REP) && rm -rf $(REP)) || true rm -rf $(FSVS_CONF) $(FSVS_WAA) || true $(MAKE) $(FSVS_CONF) $(FSVS_WAA) || true test -d $(LOGDIR) || mkdir $(LOGDIR) @@ -212,3 +212,6 @@ @echo '' > $(FSVS_CONF)/config @$(TEST_PROG_DIR)/run-tests +shell: + @echo Opening shell. + @cd $(TESTBASE) && env PATH=$(dir $(BIN_FULLPATH)):$(PATH) bash -i ++++++ fsvs-destdir.patch ++++++ --- /var/tmp/diff_new_pack.xAQbU0/_old 2020-08-18 15:12:51.832085704 +0200 +++ /var/tmp/diff_new_pack.xAQbU0/_new 2020-08-18 15:12:51.836085706 +0200 @@ -1,6 +1,8 @@ ---- src/Makefile.in.orig 2010-03-13 02:58:08.000000000 +0100 -+++ src/Makefile.in 2010-03-13 02:58:42.000000000 +0100 -@@ -88,7 +88,7 @@ +Index: src/Makefile.in +=================================================================== +--- src/Makefile.in.orig ++++ src/Makefile.in +@@ -90,7 +90,7 @@ exec_prefix= @exec_prefix@ prefix = @prefix@ mandir = @mandir@ install:
