Package: par2
Version: 0.6.11-1
Severity: normal

Dear Maintainer,

Here is how to reproduce the problem:

$ mkdir -p dir1/subdir
$ echo My Precious >dir1/subdir/file
$ par2create -R -r100 recovery dir1
[...]
Done
$ rm -rf dir1
# Whoops I lost my precious
$ par2repair recovery.par2 
[...]
Target: "dir1/subdir/file" - missing.

Scanning extra files:

Repair is required.
1 file(s) are missing.
You have 0 out of 3 data blocks available.
You have 3 recovery blocks available.
Repair is possible.
3 recovery blocks will be used to repair.

Could not create: ./dir1/subdir/file


I've checked this out and as far as I can tell DiskFile::Create() is getting 
called with
'./dir1/subdir/file' as the path and then calls mkdir('./dir1/subdir/', 0755) 
which
fails. Obviously this mkdir() call would work much better if 'dir1' had been 
created
first!

So the fix is to modify the lines below in diskfile.cpp to create intermediate
directories.

    if (! (stat(path.c_str(), &st) == 0 && S_ISDIR(st.st_mode)))
    {
      mkdir(path.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
    }
 

And the workaround is to manually create intermediate directories before calling
par2repair.

-- System Information:
Debian Release: 8.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages par2 depends on:
ii  libc6       2.19-15
ii  libgcc1     1:4.9.2-10
ii  libstdc++6  4.9.2-10

par2 recommends no packages.

par2 suggests no packages.

-- no debconf information


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to