Package: dar
Version: 2.3.9-1
Severity: normal
Tags: patch
When running dar in --merge mode with the --exclude-from-file option, dar exits
with the error message:
Parse error on command line (or included files): Mask_list's prefix must be an
absolute path
The attached patch fixes this. Also posted to the dar-support mailing list:
http://sourceforge.net/mailarchive/forum.php?thread_name=4A6055E4.5080802%40vanbest.org&forum_name=dar-support
Cheers
Jan-Pascal
-- System Information:
Debian Release: 5.0.2
APT prefers stable
APT policy: (990, 'stable'), (400, 'testing'), (200, 'unstable'), (101,
'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.26-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages dar depends on:
ii libattr1 1:2.4.43-2 Extended attribute shared library
ii libbz2-1.0 1.0.5-1 high-quality block-sorting file co
ii libc6 2.9-12 GNU C Library: Shared libraries
ii libdar64-4 2.3.8-3 Disk ARchive: Shared library
ii libgcc1 1:4.4.0-5 GCC support library
ii libssl0.9.8 0.9.8g-15+lenny1 SSL shared libraries
ii libstdc++6 4.4.0-5 The GNU Standard C++ Library v3
ii zlib1g 1:1.2.3.3.dfsg-12 compression library - runtime
dar recommends no packages.
Versions of packages dar suggests:
ii dar-docs 2.3.9-1 Disk ARchive: Backup directory tre
ii par2 0.4-10 Parity Archive Volume Set, for che
-- no debconf information
--- dar-2.3.9.orig/src/libdar/mask_list.cpp
+++ dar-2.3.9/src/libdar/mask_list.cpp
@@ -147,7 +147,7 @@
delete [] buffer;
// completing relative paths of the list
- if(prefix.is_relative())
+ if(prefix.is_relative() && !prefix.is_subdir_of("<ROOT>", true))
throw Erange("mask_list::mask_list", gettext("Mask_list's prefix must be an absolute path"));
else
{
--- dar-2.3.9.orig/src/libdar/mask_list.hpp
+++ dar-2.3.9/src/libdar/mask_list.hpp
@@ -56,7 +56,9 @@
/// \param[in] filename_list_st is the path to the file listing the
/// filename to select for the operation
/// \param[in] case_sensit whether comparison is case sensitive or not
- /// \param[in] prefix add this (absolute) prefix to relative paths of the list
+ /// \param[in] prefix add this prefix to relative paths of the list. The
+ /// prefix should be either absolute, or <ROOT> (in case of operations
+ /// on an existing archive)
/// \param[in] include whether the mask_list is used for file inclusion or file exclusion
mask_list(const std::string & filename_list_st, bool case_sensit, const path & prefix, bool include);