Hello community,

here is the log from the commit of package avfs for openSUSE:Factory checked in 
at 2020-08-17 12:09:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/avfs (Old)
 and      /work/SRC/openSUSE:Factory/.avfs.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "avfs"

Mon Aug 17 12:09:10 2020 rev:8 rq:827265 version:1.1.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/avfs/avfs.changes        2020-04-02 
17:45:41.345553540 +0200
+++ /work/SRC/openSUSE:Factory/.avfs.new.3399/avfs.changes      2020-08-17 
12:10:41.390871796 +0200
@@ -1,0 +2,11 @@
+Sun Aug 16 22:30:05 UTC 2020 - Dirk Mueller <[email protected]>
+
+- update to 1.1.3:
+  - fix compilation problem on MacOS
+  - fix encoding problem in ulha extfs module
+  - add support for rar 5.0 files
+  - fix memleak in zstd support
+  - small fix for extfs udar module
+  - updated internal bzlib to 1.0.8 to fix security bug
+
+-------------------------------------------------------------------

Old:
----
  avfs-1.1.0.tar.bz2
  avfs-1.1.0.tar.bz2.asc

New:
----
  avfs-1.1.3.tar.bz2
  avfs-1.1.3.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ avfs.spec ++++++
--- /var/tmp/diff_new_pack.Q6geqW/_old  2020-08-17 12:10:45.558874119 +0200
+++ /var/tmp/diff_new_pack.Q6geqW/_new  2020-08-17 12:10:45.562874120 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           avfs
-Version:        1.1.0
+Version:        1.1.3
 Release:        0
 Summary:        AVFS - an archive look-inside filesystem
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later
@@ -122,6 +122,7 @@
 %{_includedir}/avfs.h
 %{_includedir}/virtual.h
 %{_libdir}/libavfs.so
+%{_libdir}/pkgconfig/avfs.pc
 
 %files -n libavfs0
 %{_libdir}/libavfs.so.0

++++++ avfs-1.1.0.tar.bz2 -> avfs-1.1.3.tar.bz2 ++++++
++++ 1923 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/ChangeLog new/avfs-1.1.3/ChangeLog
--- old/avfs-1.1.0/ChangeLog    2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/ChangeLog    2020-08-12 22:18:21.000000000 +0200
@@ -1,3 +1,37 @@
+2020-08-12  Ralf Hoffmann <[email protected]>
+
+       * bump version to 1.1.3
+
+2020-07-05  Ralf Hoffmann <[email protected]>
+
+       * urar: fix missing include for PATH_MAX
+
+2020-05-02  Ralf Hoffmann <[email protected]>
+
+       * ulha: run in C locale to avoid encoding problems
+
+2020-04-27  Ralf Hoffmann <[email protected]>
+
+       * bump version to 1.1.2
+
+2020-04-21  Ralf Hoffmann <[email protected]>
+       * zstd: fix memory leak
+
+2020-02-22  Ralf Hoffmann <[email protected]>
+       * urar.c: add basic support for rar 5.0 files
+
+2019-08-09  Ralf Hoffmann <[email protected]>
+
+       * bump version to 1.1.1
+
+2019-08-09  Ralf Hoffmann <[email protected]>
+
+       * add pkgconfig file
+
+2019-07-21  Ralf Hoffmann <[email protected]>
+
+       * updated internal bzlib to 1.0.8 to fix security bug
+
 2019-06-21  Ralf Hoffmann <[email protected]>
 
        * bump version to 1.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/Makefile.am new/avfs-1.1.3/Makefile.am
--- old/avfs-1.1.0/Makefile.am  2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/Makefile.am  2020-08-12 22:18:21.000000000 +0200
@@ -17,7 +17,8 @@
        macros   \
        extfs    \
        doc     \
-       fuse
+       fuse \
+       pkgconfig
 
 EXTRA_DIST =                 \
        glassfs/Makefile     \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/NEWS new/avfs-1.1.3/NEWS
--- old/avfs-1.1.0/NEWS 2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/NEWS 2020-08-12 22:18:21.000000000 +0200
@@ -1,3 +1,16 @@
+Changes from 1.1.2 to 1.1.3 (2020-08-12)
+  - fix compilation problem on MacOS
+  - fix encoding problem in ulha extfs module
+
+Changes from 1.1.1 to 1.1.2 (2020-04-27)
+  - add support for rar 5.0 files
+  - fix memleak in zstd support
+  - small fix for extfs udar module
+
+Changes from 1.1.0 to 1.1.1 (2019-08-09)
+   - updated internal bzlib to 1.0.8 to fix security bug
+   - added pkgconfig file
+
 Changes from 1.0.6 to 1.1.0 (2019-06-21)
    - improved handling of single '#' to stop resolving archive handlers
      when it makes no sense to add another chain
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/blocksort.c new/avfs-1.1.3/bzlib/blocksort.c
--- old/avfs-1.1.0/bzlib/blocksort.c    2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/blocksort.c    2020-08-12 22:18:21.000000000 +0200
@@ -8,8 +8,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
@@ -202,9 +202,9 @@
       bhtab [ 0 .. 2+(nblock/32) ] destroyed
 */
 
-#define       SET_BH(zz)  bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
-#define     CLEAR_BH(zz)  bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
-#define     ISSET_BH(zz)  (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
+#define       SET_BH(zz)  bhtab[(zz) >> 5] |= ((UInt32)1 << ((zz) & 31))
+#define     CLEAR_BH(zz)  bhtab[(zz) >> 5] &= ~((UInt32)1 << ((zz) & 31))
+#define     ISSET_BH(zz)  (bhtab[(zz) >> 5] & ((UInt32)1 << ((zz) & 31)))
 #define      WORD_BH(zz)  bhtab[(zz) >> 5]
 #define UNALIGNED_BH(zz)  ((zz) & 0x01f)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/bzlib.c new/avfs-1.1.3/bzlib/bzlib.c
--- old/avfs-1.1.0/bzlib/bzlib.c        2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/bzlib.c        2020-08-12 22:18:21.000000000 +0200
@@ -16,8 +16,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
@@ -51,12 +51,12 @@
    fprintf(stderr, 
       "\n\nbzip2/libbzip2: internal error number %d.\n"
       "This is a bug in bzip2/libbzip2, %s.\n"
-      "Please report it to me at: [email protected].  If this happened\n"
+      "Please report it to: [email protected].  If this happened\n"
       "when you were using some program which uses libbzip2 as a\n"
       "component, you should also report this bug to the author(s)\n"
       "of that program.  Please make an effort to report this bug;\n"
       "timely and accurate bug reports eventually lead to higher\n"
-      "quality software.  Thanks.  Julian Seward, 10 December 2007.\n\n",
+      "quality software.  Thanks.\n\n",
       errcode,
       BZ2_bzlibVersion()
    );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/bzlib.h new/avfs-1.1.3/bzlib/bzlib.h
--- old/avfs-1.1.0/bzlib/bzlib.h        2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/bzlib.h        2020-08-12 22:18:21.000000000 +0200
@@ -16,8 +16,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/bzlib_private.h new/avfs-1.1.3/bzlib/bzlib_private.h
--- old/avfs-1.1.0/bzlib/bzlib_private.h        2019-06-21 23:38:26.000000000 
+0200
+++ new/avfs-1.1.3/bzlib/bzlib_private.h        2020-08-12 22:18:21.000000000 
+0200
@@ -16,8 +16,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
@@ -44,7 +44,7 @@
 
 /*-- General stuff. --*/
 
-#define BZ_VERSION  "1.0.6, 6-Sept-2010"
+#define BZ_VERSION  "1.0.8, 13-Jul-2019"
 
 typedef char            Char;
 typedef unsigned char   Bool;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/compress.c new/avfs-1.1.3/bzlib/compress.c
--- old/avfs-1.1.0/bzlib/compress.c     2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/compress.c     2020-08-12 22:18:21.000000000 +0200
@@ -8,8 +8,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
@@ -454,7 +454,7 @@
 
    AssertH( nGroups < 8, 3002 );
    AssertH( nSelectors < 32768 &&
-            nSelectors <= (2 + (900000 / BZ_G_SIZE)),
+            nSelectors <= BZ_MAX_SELECTORS,
             3003 );
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/crctable.c new/avfs-1.1.3/bzlib/crctable.c
--- old/avfs-1.1.0/bzlib/crctable.c     2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/crctable.c     2020-08-12 22:18:21.000000000 +0200
@@ -8,8 +8,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/decompress.c new/avfs-1.1.3/bzlib/decompress.c
--- old/avfs-1.1.0/bzlib/decompress.c   2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/decompress.c   2020-08-12 22:18:21.000000000 +0200
@@ -8,8 +8,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
@@ -285,7 +285,7 @@
 
       /*--- Now the selectors ---*/
       GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
-      if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
+      if (nGroups < 2 || nGroups > BZ_N_GROUPS) RETURN(BZ_DATA_ERROR);
       GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
       if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
       for (i = 0; i < nSelectors; i++) {
@@ -296,8 +296,14 @@
             j++;
             if (j >= nGroups) RETURN(BZ_DATA_ERROR);
          }
-         s->selectorMtf[i] = j;
+         /* Having more than BZ_MAX_SELECTORS doesn't make much sense
+            since they will never be used, but some implementations might
+            "round up" the number of selectors, so just ignore those. */
+         if (i < BZ_MAX_SELECTORS)
+           s->selectorMtf[i] = j;
       }
+      if (nSelectors > BZ_MAX_SELECTORS)
+        nSelectors = BZ_MAX_SELECTORS;
 
       /*--- Undo the MTF values for the selectors. ---*/
       {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/huffman.c new/avfs-1.1.3/bzlib/huffman.c
--- old/avfs-1.1.0/bzlib/huffman.c      2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/huffman.c      2020-08-12 22:18:21.000000000 +0200
@@ -8,8 +8,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/bzlib/randtable.c new/avfs-1.1.3/bzlib/randtable.c
--- old/avfs-1.1.0/bzlib/randtable.c    2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/bzlib/randtable.c    2020-08-12 22:18:21.000000000 +0200
@@ -8,8 +8,8 @@
    This file is part of bzip2/libbzip2, a program and library for
    lossless, block-sorting data compression.
 
-   bzip2/libbzip2 version 1.0.6 of 6 September 2010
-   Copyright (C) 1996-2010 Julian Seward <[email protected]>
+   bzip2/libbzip2 version 1.0.8 of 13 July 2019
+   Copyright (C) 1996-2019 Julian Seward <[email protected]>
 
    Please read the WARNING, DISCLAIMER and PATENTS sections in the 
    README file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/configure.ac new/avfs-1.1.3/configure.ac
--- old/avfs-1.1.0/configure.ac 2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/configure.ac 2020-08-12 22:18:21.000000000 +0200
@@ -2,7 +2,7 @@
 
 define(AVFS_MAJOR,[1])
 define(AVFS_MINOR,[1])
-define(AVFS_PATCH,[0])
+define(AVFS_PATCH,[3])
 define(AVFS_COMMENT,[])
 
 define(AVFS_VERSION,AVFS_MAJOR[.]AVFS_MINOR[.]AVFS_PATCH[]AVFS_COMMENT)
@@ -131,6 +131,12 @@
 AC_SUBST(LIBBZ2)
 AC_SUBST(BZLIB_INCLUDE)
 
+AC_ARG_WITH(pkgconfigdir,
+            AC_HELP_STRING([--with-pkgconfigdir=DIR],[pkgconfig file in DIR 
@<:@LIBDIR/pkgconfig@:>@]),
+            [pkgconfigdir=$withval],
+            [pkgconfigdir='${libdir}/pkgconfig'])
+AC_SUBST(pkgconfigdir)
+
 dnl Checks for programs.
 cflags="$CFLAGS"
 AC_PROG_CC
@@ -388,6 +394,8 @@
 AC_SUBST(install_scriptcomps)
 AC_SUBST(shared_build)
 
+AC_CONFIG_FILES([pkgconfig/avfs.pc])
+
 AC_OUTPUT([
 Makefile
 src/Makefile
@@ -404,6 +412,7 @@
 patch/Makefile
 doc/Makefile
 fuse/Makefile
+pkgconfig/Makefile
 
 scripts/avfs-config
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/extfs/udar new/avfs-1.1.3/extfs/udar
--- old/avfs-1.1.0/extfs/udar   2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/extfs/udar   2020-08-12 22:18:21.000000000 +0200
@@ -26,7 +26,7 @@
 
 mcdarfs_list ()
 {
-$DAR -l "$BASENAME" -N -Q -as 2>/dev/null | gawk -v uuid=$(id -ru) '
+$DAR -l "$BASENAME" -N -Q -as -ay 2>/dev/null | gawk -v uuid=$(id -ru) '
 BEGIN { flag=0 }
 /^-------/ { flag++; if (flag > 1) exit 0; next }
 /^$/ { next }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/extfs/ulha.in new/avfs-1.1.3/extfs/ulha.in
--- old/avfs-1.1.0/extfs/ulha.in        2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/extfs/ulha.in        2020-08-12 22:18:21.000000000 +0200
@@ -30,6 +30,8 @@
 # Caveat emptor.
 # Learn Latin.
 
+export LC_ALL=C
+
 # Define your awk
 AWK=@AWK@
 
@@ -53,8 +55,10 @@
          # Invent a generic permission
          $1 = (filename ~ /\/$/) ? "drwxr-xr-x":"-rwxr--r--";
          # Print it
-         printf "%s 1 %-8s %-8s %-8d %s %s %s %s\n",
-                 $1, uid, gid, $2, $4, $5, $6, filename;
+         if (length(filename) > 0) {
+            printf "%s 1 %-8s %-8s %-8d %s %s %s %s\n",
+                    $1, uid, gid, $2, $4, $5, $6, filename;
+         }
          # Get the next line of the list
          next;
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/modules/urar.c new/avfs-1.1.3/modules/urar.c
--- old/avfs-1.1.0/modules/urar.c       2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/modules/urar.c       2020-08-12 22:18:21.000000000 +0200
@@ -17,9 +17,14 @@
 
 #include <fcntl.h>
 #include <unistd.h>
+#include <limits.h>
 
 #define DOS_DIR_SEP_CHAR  '\\'
 
+enum rar_format { RAR,
+                  RAR50
+};
+
 static avbyte good_marker_head[] = 
 { 0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00 };
 
@@ -36,6 +41,10 @@
 #define DBYTE(ptr) ((avushort)(BI(ptr,0) | (BI(ptr,1)<<8)))
 #define QBYTE(ptr) ((avuint)(BI(ptr,0) | (BI(ptr,1)<<8) | \
                    (BI(ptr,2)<<16) | (BI(ptr,3)<<24)))
+#define QQBYTE(ptr) ((avuquad)((avuquad)BI(ptr,0) | ((avuquad)BI(ptr,1)<<8) | \
+                               ((avuquad)BI(ptr,2)<<16) | 
((avuquad)BI(ptr,3)<<24) | \
+                               ((avuquad)BI(ptr,4)<<32) | 
((avuquad)BI(ptr,5)<<40) | \
+                               ((avuquad)BI(ptr,6)<<48) | 
((avuquad)BI(ptr,7)<<56)))
 
 #define bh_CRC(bh)      DBYTE(bh     )
 #define bh_type(bh)     BYTE (bh +  2)
@@ -106,6 +115,26 @@
 #define CRC_TABLESIZE 256
 static avuint CRC_table[CRC_TABLESIZE];
 
+/* some rar 5 header values (not complete, just what is necessary for
+   the features */
+enum { RAR5_HEADER_TYPE_MAIN_ARCHIVE_HEADER = 1,
+       RAR5_HEADER_TYPE_FILE_HEADER = 2,
+       RAR5_HEADER_TYPE_END_OF_ARCHIVE = 5 };
+enum { RAR5_HEADER_FLAGS_EXTRA_PRESENT = 1,
+       RAR5_HEADER_FLAGS_DATA_PRESENT = 2 };
+enum { RAR5_HEADER_FILE_HEADER_FILE_FLAGS_DIRECTORY_OBJECT = 1,
+       RAR5_HEADER_FILE_HEADER_FILE_FLAGS_UNIX_TIME_PRESENT = 2,
+       RAR5_HEADER_FILE_HEADER_FILE_FLAGS_CRC_PRESENT = 4,
+       RAR5_HEADER_FILE_HEADER_FILE_FLAGS_UNPACKED_SIZE_UNKNOWN = 8 };
+enum { RAR5_HEADER_FILE_HEADER_HOST_OS_WINDOWS = 0,
+       RAR5_HEADER_FILE_HEADER_HOST_OS_UNIX = 1 };
+enum { RAR5_HEADER_FILE_HEADER_EXTRA_TYPE_FILE_TIME = 3 };
+enum { RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_UNIX_TIME = 0x01,
+       RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_MTIME_PRESENT = 0x02,
+       RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_CTIME_PRESENT = 0x04,
+       RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_ATIME_PRESENT = 0x08,
+       RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_NSEC_PRECISION = 0x10 };
+
 struct rarnode {
     avushort flags;
     avbyte hostos;
@@ -122,6 +151,17 @@
     file_header fh;
 };
 
+struct rar5_entinfo {
+    char *name;
+    char *linkname;
+    avbyte is_dir;
+    avoff_t size;
+    avtimestruc_t mtime;
+    avtimestruc_t atime;
+    avtimestruc_t ctime;
+    avmode_t mode;
+};
+
 struct rarfile {
     char *tmpfile;
     int fd;
@@ -182,7 +222,7 @@
     return size;
 }
 
-static int read_marker_block(vfile *vf)
+static int read_marker_block(vfile *vf, enum rar_format *format)
 {
     int res;
     avbyte buf[MARKER_HEAD_SIZE], *pos = buf;
@@ -195,7 +235,30 @@
         if(res < 0)
             return res;
 
-        if (memcmp(buf, good_marker_head, MARKER_HEAD_SIZE) == 0) return 0;
+        if (memcmp(buf, good_marker_head, MARKER_HEAD_SIZE - 1) == 0) {
+            if (buf[6] == 0) {
+                // rar format 1.5
+                *format = RAR;
+                return 0;
+            } else if (buf[6] == 1) {
+                // rar format 5.0
+                *format = RAR50;
+
+                // rar 5.0 uses one additional byte
+                res = av_read_all(vf, (char*)buf, 1);
+                if(res < 0)
+                    return res;
+
+                if (buf[0] != 0) {
+                    return -EINVAL;
+                }
+
+                return 0;
+            } else if (buf[6] == 2) {
+                // rar future format
+                return -ENOTSUP;
+            }
+        }
 
         pos = memchr(buf + 1, good_marker_head[0], MARKER_HEAD_SIZE-1);
         if (pos == NULL) readsize = MARKER_HEAD_SIZE;
@@ -354,6 +417,52 @@
     av_unref_obj(ent);
 }
 
+static void fill_rar5entry(struct archive *arch, struct entry *ent,
+                           struct rar5_entinfo *ei)
+{
+    struct rarnode *info;
+    struct archnode *nod;
+
+    nod = av_arch_new_node(arch, ent, ei->is_dir);
+
+    nod->st.mode = ei->mode;
+    nod->st.mtime = ei->mtime;
+    nod->st.atime = ei->atime;
+    nod->st.ctime = ei->ctime;
+    nod->st.size = ei->size;
+    nod->st.blocks = AV_BLOCKS(nod->st.size);
+    nod->st.blksize = 512;
+
+    nod->offset = 0;
+    nod->realsize = 0;
+
+    nod->linkname = NULL;
+
+    AV_NEW_OBJ(info, rarnode_delete);
+    nod->data = info;
+
+    info->flags = 0;
+    info->hostos = 0;
+    info->packer_version = 0;
+    info->method = 0;
+    info->path = av_strdup(ei->name);
+}
+
+static void insert_rar5entry(struct archive *arch, struct rar5_entinfo *ei)
+{
+    struct entry *ent;
+    int entflags = 0;
+    char *path = ei->name;
+
+    ent = av_arch_create(arch, path, entflags);
+    if(ent == NULL) {
+        return;
+    }
+
+    fill_rar5entry(arch, ent, ei);
+    av_unref_obj(ent);
+}
+
 static int crc_additional_header(vfile *vf, struct rar_entinfo *ei, int 
bytes_crcd, avuint *crc)
 {
     /* In the header there are some optional entries (e.g. salt, exttime; see 
arcread.ccp::ReadHeader
@@ -443,47 +552,479 @@
     return 0;
 }
 
-static int read_rarfile(vfile *vf, struct archive *arch)
+// up to 10 bytes, 7 bits of data per byte, bit 7 == 1 indicates
+// continuation. Encoding is in little endian
+static int read_vint(vfile *vf, avuquad *result, avuint *crc)
+{
+    int read_res;
+    int count = 0;
+    avbyte buf[1];
+    avuquad res = 0;
+
+    for (count = 0; count < 10; count++) {
+        read_res = av_read_all(vf, (char*)buf, 1);
+        if (read_res < 0) {
+            av_log(AVLOG_ERROR, "URAR: out of data during vint parsing");
+            return read_res;
+        }
+        *crc = CRC_byte(*crc, buf[0]);
+
+        res |= (buf[0] & 0x7f) << (7 * count);
+        if ((buf[0] & 0x80) == 0) {
+            *result = res;
+            return 0;
+        }
+    }
+
+    av_log(AVLOG_ERROR, "URAR: invalid vint");
+    
+    return -EINVAL;
+}
+
+static int read_uint32(vfile *vf, avuint *result, avuint *crc)
 {
-    avoff_t headstart;
+    avbyte buf[4];
     int res;
 
-    res = read_marker_block(vf);
-    if(res < 0)
+    res = av_read_all(vf, (char*)buf, 4);
+    if (res < 0) {
         return res;
+    }
 
-    res = read_archive_header(vf);
-    if(res < 0)
+    *result = QBYTE(buf);
+
+    if (crc) {
+        *crc = CRC_string(*crc, buf, 4);
+    }
+
+    return 0;
+}
+
+static int read_uint64(vfile *vf, avuquad *result, avuint *crc)
+{
+    avbyte buf[8];
+    int res;
+
+    res = av_read_all(vf, (char*)buf, 8);
+    if (res < 0) {
+        return res;
+    }
+
+    *result = QQBYTE(buf);
+
+    if (crc) {
+        *crc = CRC_string(*crc, buf, 8);
+    }
+
+    return 0;
+}
+
+static int skip_data(vfile *vf, size_t size, avuint *crc)
+{
+    while (size > 0) {
+        avbyte buf[1];
+        int res = av_read_all(vf, (char*)buf, 1);
+        if (res < 0) {
+            av_log(AVLOG_ERROR, "URAR: out of data during skipping data");
+            return res;
+        }
+        *crc = CRC_byte(*crc, buf[0]);
+        size--;
+    }
+
+    return 0;
+}
+
+#define READ_VINT(vf, target, crc) {                                    \
+        int res = read_vint((vf), (target), (crc));                     \
+        if (res < 0) {                                                  \
+            return res;                                                 \
+        }                                                               \
+    }
+
+#define READ_UINT32(vf, target, crc) {                                  \
+        int res = read_uint32((vf), (target), (crc));                   \
+        if (res < 0) {                                                  \
+            return res;                                                 \
+        }                                                               \
+    }
+
+#define READ_UINT64(vf, target, crc) {                                  \
+        int res = read_uint64((vf), (target), (crc));                   \
+        if (res < 0) {                                                  \
+            return res;                                                 \
+        }                                                               \
+    }
+
+static void convert_windows_timestamp(avuquad timestamp,
+                                      avtimestruc_t *ts)
+{
+    // windows timestamps are in 100ns from year 1600something
+    timestamp *= 100;
+    timestamp -= 11644473600000000000ULL;
+
+    ts->sec = timestamp / 1000000000;
+    ts->nsec = timestamp % 1000000000;
+}
+
+static int parse_rar5_time_header(vfile *vf,
+                                  struct rar5_entinfo *ei,
+                                  avuint *crc)
+{
+    // file time
+    avuquad flags;
+    int is_unix;
+
+    READ_VINT(vf, &flags, crc);
+
+    if (flags & RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_UNIX_TIME) {
+        is_unix = 1;
+    } else {
+        is_unix = 0;
+    }
+
+    if (flags & RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_MTIME_PRESENT) {
+        if (is_unix) {
+            avuint mtime;
+            READ_UINT32(vf, &mtime, crc);
+            ei->mtime.sec = mtime;
+        } else {
+            avuquad mtime;
+            READ_UINT64(vf, &mtime, crc);
+            convert_windows_timestamp(mtime, &ei->mtime);
+        }
+    }
+
+    if (flags & RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_CTIME_PRESENT) {
+        if (is_unix) {
+            avuint ctime;
+            READ_UINT32(vf, &ctime, crc);
+            ei->ctime.sec = ctime;
+        } else {
+            avuquad ctime;
+            READ_UINT64(vf, &ctime, crc);
+            convert_windows_timestamp(ctime, &ei->ctime);
+        }
+    }
+
+    if (flags & RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_ATIME_PRESENT) {
+        if (is_unix) {
+            avuint atime;
+            READ_UINT32(vf, &atime, crc);
+            ei->atime.sec = atime;
+        } else {
+            avuquad atime;
+            READ_UINT64(vf, &atime, crc);
+            convert_windows_timestamp(atime, &ei->atime);
+        }
+    }
+
+    if (is_unix && (flags & 
RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_NSEC_PRECISION)) {
+        if (flags & 
RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_MTIME_PRESENT) {
+            avuint t;
+            READ_UINT32(vf, &t, crc);
+            ei->mtime.nsec = t;
+        }
+        if (flags & 
RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_CTIME_PRESENT) {
+            avuint t;
+            READ_UINT32(vf, &t, crc);
+            ei->ctime.nsec = t;
+        }
+        if (flags & 
RAR5_HEADER_FILE_HEADER_EXTRA_FILE_TIME_FLAGS_ATIME_PRESENT) {
+            avuint t;
+            READ_UINT32(vf, &t, crc);
+            ei->atime.nsec = t;
+        }
+    }
+
+    return 0;
+}
+
+static int parse_rar5_extra_header(vfile *vf,
+                                   avuquad extra_header_bytes,
+                                   struct rar5_entinfo *ei,
+                                   avuint *crc)
+{
+    avoff_t start_pos = vf->ptr;
+
+    while (vf->ptr - start_pos < extra_header_bytes) {
+        avuquad size;
+        avuquad type;
+        avoff_t extra_header_pos;
+        int res;
+
+        READ_VINT(vf, &size, crc);
+
+        extra_header_pos = vf->ptr;
+
+        READ_VINT(vf, &type, crc);
+
+        if (type == RAR5_HEADER_FILE_HEADER_EXTRA_TYPE_FILE_TIME) {
+            res = parse_rar5_time_header(vf, ei, crc);
+            if (res < 0) {
+                return res;
+            }
+        }
+
+        if (vf->ptr - extra_header_pos > size ||
+            extra_header_pos - start_pos + size > extra_header_bytes) {
+            av_log(AVLOG_ERROR, "URAR: invalid extra header");
+            return -EINVAL;
+        }
+
+        res = skip_data(vf, size - (vf->ptr - extra_header_pos), crc);
+        if (res < 0) {
+            return res;
+        }
+    }
+
+    return 0;
+}
+
+static int parse_rar5_file_header(vfile *vf, struct archive *arch,
+                                  avuquad remaining_header_bytes,
+                                  avuint *crc)
+{
+    avoff_t start_pos = vf->ptr;
+    avuquad file_flags;
+    avuquad unpacked_size;
+    avuquad attributes;
+    avuint data_crc = 0;
+    avuquad compression_information;
+    avuquad host_os;
+    avuquad name_length;
+    int res;
+    char *name = NULL;
+    struct rar5_entinfo ei = { NULL, };
+
+    READ_VINT(vf, &file_flags, crc);
+    READ_VINT(vf, &unpacked_size, crc );
+
+    if (file_flags & RAR5_HEADER_FILE_HEADER_FILE_FLAGS_UNPACKED_SIZE_UNKNOWN) 
{
+        unpacked_size = 0;
+    }
+
+    READ_VINT(vf, &attributes, crc);
+
+    /* uint32? mtime */
+    if (file_flags & RAR5_HEADER_FILE_HEADER_FILE_FLAGS_UNIX_TIME_PRESENT) {
+        avuint mtime;
+        READ_UINT32(vf, &mtime, crc);
+
+        ei.mtime.sec = mtime;
+        ei.ctime = ei.mtime;
+        ei.atime = ei.mtime;
+    }
+
+    /* uint32? data_crc */
+    if (file_flags & RAR5_HEADER_FILE_HEADER_FILE_FLAGS_CRC_PRESENT) {
+        READ_UINT32(vf, &data_crc, crc);
+    }
+
+    READ_VINT(vf, &compression_information, crc);
+    READ_VINT(vf, &host_os, crc);
+    READ_VINT(vf, &name_length, crc);
+
+    if (name_length <= PATH_MAX) {
+        name = av_malloc(name_length + 1);
+
+        res = av_read_all(vf, name, name_length);
+        if (res < 0) {
+            av_free(name);
+            return res;
+        }
+        name[name_length] = '\0';
+        *crc = CRC_string(*crc, (avbyte*)name, name_length);
+    }
+
+    res = parse_rar5_extra_header(vf, remaining_header_bytes - (vf->ptr - 
start_pos), &ei, crc);
+    if (res < 0) {
+        av_free(name);
         return res;
+    }
 
+    if (vf->ptr - start_pos > remaining_header_bytes) {
+        av_log(AVLOG_ERROR, "URAR: invalid header");
+        av_free(name);
+        return -EINVAL;
+    }
+
+    res = skip_data(vf, remaining_header_bytes - (vf->ptr - start_pos), crc);
+    if (res < 0) {
+        av_free(name);
+        return res;
+    }
+
+    /* convert file attribute */
+    if (host_os == RAR5_HEADER_FILE_HEADER_HOST_OS_UNIX) {
+        ei.mode = attributes;
+    } else {
+        // handle windows (host_os==0) and unknown identically
+        if (file_flags & RAR5_HEADER_FILE_HEADER_FILE_FLAGS_DIRECTORY_OBJECT) {
+            ei.mode = AV_IFDIR | 0700;
+        } else {
+            ei.mode = AV_IFREG | 0600;
+        }
+    }
+
+    /* add entry to archive */
+    if (name != NULL) {
+        ei.name = name;
+        ei.linkname = NULL;
+        ei.is_dir = file_flags & 
RAR5_HEADER_FILE_HEADER_FILE_FLAGS_DIRECTORY_OBJECT;
+        ei.size = unpacked_size;
+
+        insert_rar5entry(arch, &ei);
+
+        av_free(ei.name);
+        av_free(ei.linkname);
+    }
+
+    return 0;
+}
+
+/**
+ * parse a block, return <= 0 for errors, > 0 for block type
+ */
+static int parse_rar5_block(vfile *vf, struct archive *arch)
+{
+    int res;
+    avuquad header_size;
+    avuquad header_type;
+    avuquad header_flags;
+    avuquad extra_area_size;
+    avuquad data_size;
+    avuint crc = CRC_START;
+    avuint header_crc;
+    avoff_t headstart;
+
+    READ_UINT32(vf, &header_crc, NULL);
+    READ_VINT(vf, &header_size, &crc);
+
+    /* store current file offset since header flags define visible
+       fields, most of them are variable size. To skip all header
+       bytes including the unknown, we need to know much bytes we
+       already read */
     headstart = vf->ptr;
-    while(1) {
-        struct rar_entinfo ei;
-    
-        res = read_block_header(vf, ei.bh, 0);
-        if(res < 0)
+
+    READ_VINT(vf, &header_type, &crc);
+
+    if (header_type < RAR5_HEADER_TYPE_MAIN_ARCHIVE_HEADER ||
+        header_type > RAR5_HEADER_TYPE_END_OF_ARCHIVE) {
+        av_log(AVLOG_ERROR, "URAR: invalid header type");
+        return -EINVAL;
+    }
+
+    READ_VINT(vf, &header_flags, &crc);
+
+    /* vint? extra_area_size */
+    if (header_flags & RAR5_HEADER_FLAGS_EXTRA_PRESENT) {
+        READ_VINT(vf, &extra_area_size, &crc);
+    } else {
+        extra_area_size = 0;
+    }
+
+    /* vint? data_size */
+    if (header_flags & RAR5_HEADER_FLAGS_DATA_PRESENT) {
+        READ_VINT(vf, &data_size, &crc);
+    } else {
+        data_size = 0;
+    }
+
+    /* now we basically have all important fields, parse interesting block or 
skip the rest */
+    if (vf->ptr - headstart > header_size) {
+        av_log(AVLOG_ERROR, "URAR: invalid header size");
+        return -EINVAL;
+    }
+
+    if (header_type == RAR5_HEADER_TYPE_FILE_HEADER) {
+        res = parse_rar5_file_header(vf, arch, header_size - (vf->ptr - 
headstart), &crc);
+        if (res < 0) {
             return res;
-        if(res == 0)
+        }
+    } else {
+        res = skip_data(vf, header_size - (vf->ptr - headstart), &crc);
+        if (res < 0) {
+            return res;
+        }
+    }
+
+    /* check header CRC */
+    if (~crc != header_crc) {
+        av_log(AVLOG_ERROR, "URAR: invalid crc");
+        return -EINVAL;
+    }
+
+    /* skip the data area as well, but it is not part of the CRC */
+    if (header_flags & RAR5_HEADER_FLAGS_DATA_PRESENT) {
+        av_lseek(vf, data_size, AVSEEK_CUR);
+    }
+
+    return header_type;
+}
+
+static int read_rar5file(vfile *vf, struct archive *arch)
+{
+    while (1) {
+        int res = parse_rar5_block(vf, arch);
+        if (res < 0) {
+            return res;
+        } else if (res == 0) {
+            return -EINVAL;
+        } else if (res == RAR5_HEADER_TYPE_END_OF_ARCHIVE) {
             break;
+        }
+    }
+
+    return 0;
+}
+
+static int read_rarfile(vfile *vf, struct archive *arch)
+{
+    avoff_t headstart;
+    int res;
+    enum rar_format format;
 
-        if (bh_type(ei.bh) == B_FILE) {
-            ei.name = NULL;
-            ei.linkname = NULL;
+    res = read_marker_block(vf, &format);
+    if(res < 0)
+        return res;
 
-            res = read_rarentry(vf, &ei);
-            if(res < 0) {
+    if (format == RAR) {
+        res = read_archive_header(vf);
+        if(res < 0)
+            return res;
+
+        headstart = vf->ptr;
+        while(1) {
+            struct rar_entinfo ei;
+    
+            res = read_block_header(vf, ei.bh, 0);
+            if(res < 0)
+                return res;
+            if(res == 0)
+                break;
+
+            if (bh_type(ei.bh) == B_FILE) {
+                ei.name = NULL;
+                ei.linkname = NULL;
+
+                res = read_rarentry(vf, &ei);
+                if(res < 0) {
+                    av_free(ei.name);
+                    av_free(ei.linkname);
+                    return res;
+                }
+                ei.datastart = vf->ptr;
+
+                insert_rarentry(arch, &ei);
                 av_free(ei.name);
                 av_free(ei.linkname);
-                return res;
             }
-            ei.datastart = vf->ptr;
-
-            insert_rarentry(arch, &ei);
-            av_free(ei.name);
-            av_free(ei.linkname);
+            av_lseek(vf, headstart + bh_size(ei.bh), AVSEEK_SET);
+            headstart = vf->ptr;
         }
-        av_lseek(vf, headstart + bh_size(ei.bh), AVSEEK_SET);
-        headstart = vf->ptr;
+    } else if (format == RAR50) {
+        return read_rar5file(vf, arch);
     }
 
     return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/pkgconfig/Makefile.am new/avfs-1.1.3/pkgconfig/Makefile.am
--- old/avfs-1.1.0/pkgconfig/Makefile.am        1970-01-01 01:00:00.000000000 
+0100
+++ new/avfs-1.1.3/pkgconfig/Makefile.am        2020-08-12 22:18:21.000000000 
+0200
@@ -0,0 +1,4 @@
+EXTRA_DIST = avfs.pc.in
+
+pkgconfigdir = @pkgconfigdir@
+pkgconfig_DATA = avfs.pc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/pkgconfig/avfs.pc.in new/avfs-1.1.3/pkgconfig/avfs.pc.in
--- old/avfs-1.1.0/pkgconfig/avfs.pc.in 1970-01-01 01:00:00.000000000 +0100
+++ new/avfs-1.1.3/pkgconfig/avfs.pc.in 2020-08-12 22:18:21.000000000 +0200
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: avfs
+Description: AVFS virtual file system
+Version: @VERSION@
+Libs: -L${libdir} -lavfs
+Libs.private: @LIBS@
+Cflags: -I${includedir} @CPPFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/avfs-1.1.0/src/zstdread.c new/avfs-1.1.3/src/zstdread.c
--- old/avfs-1.1.0/src/zstdread.c       2019-06-21 23:38:26.000000000 +0200
+++ new/avfs-1.1.3/src/zstdread.c       2020-08-12 22:18:21.000000000 +0200
@@ -317,6 +317,7 @@
 static void zstdfile_destroy(struct zstdfile *fil)
 {
     AV_LOCK(zstdread_lock);
+    zstd_delete_stream(fil->s);
     AV_UNLOCK(zstdread_lock);
 }
 



Reply via email to