[arch-commits] Commit in libpar2/repos (8 files)

Bartłomiej Piotrowski bpiotrowski at archlinux.org
Sat Dec 5 20:03:44 UTC 2015


    Date: Saturday, December 5, 2015 @ 21:03:44
  Author: bpiotrowski
Revision: 148690

archrelease: copy trunk to community-staging-i686, community-staging-x86_64

Added:
  libpar2/repos/community-staging-i686/
  libpar2/repos/community-staging-i686/PKGBUILD
    (from rev 148689, libpar2/trunk/PKGBUILD)
  libpar2/repos/community-staging-i686/libpar2-0.2-bugfixes.patch
    (from rev 148689, libpar2/trunk/libpar2-0.2-bugfixes.patch)
  libpar2/repos/community-staging-i686/libpar2-0.2-cancel.patch
    (from rev 148689, libpar2/trunk/libpar2-0.2-cancel.patch)
  libpar2/repos/community-staging-x86_64/
  libpar2/repos/community-staging-x86_64/PKGBUILD
    (from rev 148689, libpar2/trunk/PKGBUILD)
  libpar2/repos/community-staging-x86_64/libpar2-0.2-bugfixes.patch
    (from rev 148689, libpar2/trunk/libpar2-0.2-bugfixes.patch)
  libpar2/repos/community-staging-x86_64/libpar2-0.2-cancel.patch
    (from rev 148689, libpar2/trunk/libpar2-0.2-cancel.patch)

-----------------------------------------------------+
 community-staging-i686/PKGBUILD                     |   41 +++
 community-staging-i686/libpar2-0.2-bugfixes.patch   |   60 ++++
 community-staging-i686/libpar2-0.2-cancel.patch     |  236 ++++++++++++++++++
 community-staging-x86_64/PKGBUILD                   |   41 +++
 community-staging-x86_64/libpar2-0.2-bugfixes.patch |   60 ++++
 community-staging-x86_64/libpar2-0.2-cancel.patch   |  236 ++++++++++++++++++
 6 files changed, 674 insertions(+)

Copied: libpar2/repos/community-staging-i686/PKGBUILD (from rev 148689, libpar2/trunk/PKGBUILD)
===================================================================
--- community-staging-i686/PKGBUILD	                        (rev 0)
+++ community-staging-i686/PKGBUILD	2015-12-05 20:03:44 UTC (rev 148690)
@@ -0,0 +1,41 @@
+# $Id$
+# Maintainer: Jaroslav Lichtblau <dragonlord at aur.archlinux.org>
+# Contributor: Paul Bredbury <brebs at sent.com>
+# Contributor: Matt McDonald <metzen at gmail.com>
+
+pkgname=libpar2
+pkgver=0.2
+pkgrel=8
+pkgdesc="Parity checking library"
+arch=('i686' 'x86_64')
+url="http://parchive.sourceforge.net/"
+license=('GPL')
+depends=('libsigc++2.0')
+makedepends=('autoconf' 'automake' 'pkgconfig' 'patch')
+source=(http://downloads.sourceforge.net/sourceforge/parchive/${pkgname}-${pkgver}.tar.gz
+        libpar2-0.2-bugfixes.patch libpar2-0.2-cancel.patch)
+sha256sums=('074fbf840f73b1e13e0405fce261078c81c8c0a4859e30a7bba10510f9199908'
+            'bcdb0cf45b97b99bc2fb05074887bd73be15745d5d2ce94d65bd0e0c248fb341'
+            'b05e08033dd2056b47c5610a5bd1d74b93dc283d2f798bfc0d3d9e3fd4f9da14')
+
+build() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+
+  patch -p2 < ${srcdir}/libpar2-0.2-bugfixes.patch
+  patch -p2 < ${srcdir}/libpar2-0.2-cancel.patch
+
+  export CXXFLAGS="$CXXFLAGS -std=gnu++11"
+  ./configure --prefix=/usr
+
+  make
+}
+
+package() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+
+  make DESTDIR=${pkgdir} install
+ 
+# Docs
+  install -d ${pkgdir}/usr/share/doc/${pkgname}
+  install -m644 -t ${pkgdir}/usr/share/doc/${pkgname}/ AUTHORS PORTING README ROADMAP
+}

Copied: libpar2/repos/community-staging-i686/libpar2-0.2-bugfixes.patch (from rev 148689, libpar2/trunk/libpar2-0.2-bugfixes.patch)
===================================================================
--- community-staging-i686/libpar2-0.2-bugfixes.patch	                        (rev 0)
+++ community-staging-i686/libpar2-0.2-bugfixes.patch	2015-12-05 20:03:44 UTC (rev 148690)
@@ -0,0 +1,60 @@
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
+--- ../libpar2-0.2-original/par2repairer.cpp	2006-01-20 18:25:20.000000000 +0100
++++ ../libpar2-0.2/par2repairer.cpp	2012-11-30 14:23:31.000000000 +0100
+@@ -76,10 +76,11 @@
+     ++sf;
+   }
+ 
+   delete mainpacket;
+   delete creatorpacket;
++  delete headers;
+ }
+ 
+ 
+ Result Par2Repairer::PreProcess(const CommandLine &commandline)
+ {
+@@ -1259,11 +1260,11 @@
+         string path;
+         string name;
+         DiskFile::SplitFilename(filename, path, name);
+ 
+         cout << "Target: \"" << name << "\" - missing." << endl;
+-	sig_done.emit(name, 0, sourcefile->GetVerificationPacket()->BlockCount());
++	sig_done.emit(name, 0, sourcefile->GetVerificationPacket() ? sourcefile->GetVerificationPacket()->BlockCount() : 0);
+       }
+     }
+ 
+     ++sf;
+   }
+@@ -1802,11 +1803,11 @@
+              << "\" - no data found." 
+              << endl;
+       }
+     }
+   }
+-  sig_done.emit(name,count,sourcefile->GetVerificationPacket()->BlockCount()); 
++  sig_done.emit(name,count, count>0 && sourcefile->GetVerificationPacket() ? sourcefile->GetVerificationPacket()->BlockCount() : 0); 
+   sig_progress.emit(1000.0);
+   return true;
+ }
+ 
+ // Find out how much data we have found
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.h ../libpar2-0.2/par2repairer.h
+--- ../libpar2-0.2-original/par2repairer.h	2006-01-20 00:38:27.000000000 +0100
++++ ../libpar2-0.2/par2repairer.h	2012-11-30 14:24:46.000000000 +0100
+@@ -34,10 +34,15 @@
+   sigc::signal<void, std::string> sig_filename;
+   sigc::signal<void, double> sig_progress;
+   sigc::signal<void, ParHeaders*> sig_headers;
+   sigc::signal<void, std::string, int, int> sig_done;
+ 
++  // This method allows to determine whether libpar2 includes the patches
++  // ("libpar2-0.2-bugfixes.patch") submitted to libpar2 project.
++  // Use the method in configure scripts for detection.
++  void BugfixesPatchVersion2() { }
++
+ protected:
+   // Steps in verifying and repairing files:
+ 
+   // Load packets from the specified file
+   bool LoadPacketsFromFile(string filename);

Copied: libpar2/repos/community-staging-i686/libpar2-0.2-cancel.patch (from rev 148689, libpar2/trunk/libpar2-0.2-cancel.patch)
===================================================================
--- community-staging-i686/libpar2-0.2-cancel.patch	                        (rev 0)
+++ community-staging-i686/libpar2-0.2-cancel.patch	2015-12-05 20:03:44 UTC (rev 148690)
@@ -0,0 +1,236 @@
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
+--- ../libpar2-0.2-original/par2repairer.cpp	2012-12-03 10:47:04.000000000 +0100
++++ ../libpar2-0.2/par2repairer.cpp	2012-12-03 10:48:13.000000000 +0100
+@@ -50,10 +50,12 @@
+   outputbuffer = 0;
+ 
+   noiselevel = CommandLine::nlNormal;
+   headers = new ParHeaders;
+   alreadyloaded = false;
++
++  cancelled = false;
+ }
+ 
+ Par2Repairer::~Par2Repairer(void)
+ {
+   delete [] (u8*)inputbuffer;
+@@ -404,10 +406,14 @@
+         {
+           cout << "Loading: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+           progress = offset;
+ 	sig_progress.emit(newfraction);
+ 
++          if (cancelled)
++          {
++            break;
++          }
+         }
+       }
+ 
+       // Attempt to read the next packet header
+       PACKET_HEADER header;
+@@ -582,10 +588,15 @@
+     if (noiselevel > CommandLine::nlQuiet)
+       cout << "No new packets found" << endl;
+     delete diskfile;
+   }
+   
++  if (cancelled)
++  {
++    return false;
++  }
++
+   return true;
+ }
+ 
+ // Finish loading a recovery packet
+ bool Par2Repairer::LoadRecoveryPacket(DiskFile *diskfile, u64 offset, PACKET_HEADER &header)
+@@ -831,26 +842,42 @@
+ 
+     // Load packets from each file that was found
+     for (list<string>::const_iterator s=files->begin(); s!=files->end(); ++s)
+     {
+       LoadPacketsFromFile(*s);
++      if (cancelled)
++      {
++        break;
++      }
+     }
+ 
+     delete files;
++    if (cancelled)
++    {
++      return false;
++    }
+   }
+ 
+   {
+     string wildcard = name.empty() ? "*.PAR2" : name + ".*.PAR2";
+     list<string> *files = DiskFile::FindFiles(path, wildcard);
+ 
+     // Load packets from each file that was found
+     for (list<string>::const_iterator s=files->begin(); s!=files->end(); ++s)
+     {
+       LoadPacketsFromFile(*s);
++      if (cancelled)
++      {
++        break;
++      }
+     }
+ 
+     delete files;
++    if (cancelled)
++    {
++      return false;
++    }
+   }
+ 
+   return true;
+ }
+ 
+@@ -864,13 +891,22 @@
+     // If the filename contains ".par2" anywhere
+     if (string::npos != filename.find(".par2") ||
+         string::npos != filename.find(".PAR2"))
+     {
+       LoadPacketsFromFile(filename);
++      if (cancelled)
++      {
++        break;
++      }
+     }
+   }
+ 
++  if (cancelled)
++  {
++    return false;
++  }
++
+   return true;
+ }
+ 
+ // Check that the packets are consistent and discard any that are not
+ bool Par2Repairer::CheckPacketConsistency(void)
+@@ -1208,10 +1244,15 @@
+ 
+   // Start verifying the files
+   sf = sortedfiles.begin();
+   while (sf != sortedfiles.end())
+   {
++    if (cancelled)
++    {
++      return false;
++    }
++
+     // Do we have a source file
+     Par2RepairerSourceFile *sourcefile = *sf;
+ 
+     // What filename does the file use
+     string filename = sourcefile->TargetFileName();
+@@ -1560,10 +1601,14 @@
+       if (oldfraction != newfraction)
+       {
+         cout << "Scanning: \"" << shortname << "\": " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+ 	sig_progress.emit(newfraction);
+ 
++        if (cancelled)
++        {
++          break;
++        }
+       }
+     }
+ 
+     // If we fail to find a match, it might be because it was a duplicate of a block
+     // that we have already found.
+@@ -1649,10 +1694,15 @@
+           return false;
+       }
+     }
+   }
+ 
++  if (cancelled)
++  {
++    return false;
++  }
++
+   // Get the Full and 16k hash values of the file
+   filechecksummer.GetFileHashes(hashfull, hash16k);
+ 
+   // Did we make any matches at all
+   if (count > 0)
+@@ -2289,14 +2339,23 @@
+           if (oldfraction != newfraction)
+           {
+             cout << "Repairing: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+ 	    sig_progress.emit(newfraction);
+ 
++            if (cancelled)
++            {
++              break;
++            }
+           }
+         }
+       }
+ 
++      if (cancelled)
++      {
++        break;
++      }
++
+       ++inputblock;
+       ++inputindex;
+     }
+   }
+   else
+@@ -2346,13 +2405,22 @@
+         if (oldfraction != newfraction)
+         {
+           cout << "Processing: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+ 	sig_progress.emit(newfraction);
+ 
++          if (cancelled)
++          {
++            break;
++          }
+         }
+       }
+ 
++      if (cancelled)
++      {
++        break;
++      }
++
+       ++copyblock;
+       ++inputblock;
+     }
+   }
+ 
+@@ -2360,10 +2428,15 @@
+   if (lastopenfile != NULL)
+   {
+     lastopenfile->Close();
+   }
+ 
++  if (cancelled)
++  {
++    return false;
++  }
++
+   if (noiselevel > CommandLine::nlQuiet)
+     cout << "Writing recovered data\r";
+ 
+   // For each output block that has been recomputed
+   vector<DataBlock*>::iterator outputblock = outputblocks.begin();
+diff -aud -U 5 ../libpar2-0.2-with-bugfixes-patch/par2repairer.h ../libpar2-0.2/par2repairer.h
+--- ../libpar2-0.2-original/par2repairer.h	2012-12-03 10:47:04.000000000 +0100
++++ ../libpar2-0.2/par2repairer.h	2012-12-03 10:48:13.000000000 +0100
+@@ -186,8 +186,9 @@
+ 
+   u64                       progress;                // How much data has been processed.
+   u64                       totaldata;               // Total amount of data to be processed.
+   u64                       totalsize;               // Total data size
+ 
++  bool                      cancelled;               // repair cancelled
+ };
+ 
+ #endif // __PAR2REPAIRER_H__

Copied: libpar2/repos/community-staging-x86_64/PKGBUILD (from rev 148689, libpar2/trunk/PKGBUILD)
===================================================================
--- community-staging-x86_64/PKGBUILD	                        (rev 0)
+++ community-staging-x86_64/PKGBUILD	2015-12-05 20:03:44 UTC (rev 148690)
@@ -0,0 +1,41 @@
+# $Id$
+# Maintainer: Jaroslav Lichtblau <dragonlord at aur.archlinux.org>
+# Contributor: Paul Bredbury <brebs at sent.com>
+# Contributor: Matt McDonald <metzen at gmail.com>
+
+pkgname=libpar2
+pkgver=0.2
+pkgrel=8
+pkgdesc="Parity checking library"
+arch=('i686' 'x86_64')
+url="http://parchive.sourceforge.net/"
+license=('GPL')
+depends=('libsigc++2.0')
+makedepends=('autoconf' 'automake' 'pkgconfig' 'patch')
+source=(http://downloads.sourceforge.net/sourceforge/parchive/${pkgname}-${pkgver}.tar.gz
+        libpar2-0.2-bugfixes.patch libpar2-0.2-cancel.patch)
+sha256sums=('074fbf840f73b1e13e0405fce261078c81c8c0a4859e30a7bba10510f9199908'
+            'bcdb0cf45b97b99bc2fb05074887bd73be15745d5d2ce94d65bd0e0c248fb341'
+            'b05e08033dd2056b47c5610a5bd1d74b93dc283d2f798bfc0d3d9e3fd4f9da14')
+
+build() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+
+  patch -p2 < ${srcdir}/libpar2-0.2-bugfixes.patch
+  patch -p2 < ${srcdir}/libpar2-0.2-cancel.patch
+
+  export CXXFLAGS="$CXXFLAGS -std=gnu++11"
+  ./configure --prefix=/usr
+
+  make
+}
+
+package() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+
+  make DESTDIR=${pkgdir} install
+ 
+# Docs
+  install -d ${pkgdir}/usr/share/doc/${pkgname}
+  install -m644 -t ${pkgdir}/usr/share/doc/${pkgname}/ AUTHORS PORTING README ROADMAP
+}

Copied: libpar2/repos/community-staging-x86_64/libpar2-0.2-bugfixes.patch (from rev 148689, libpar2/trunk/libpar2-0.2-bugfixes.patch)
===================================================================
--- community-staging-x86_64/libpar2-0.2-bugfixes.patch	                        (rev 0)
+++ community-staging-x86_64/libpar2-0.2-bugfixes.patch	2015-12-05 20:03:44 UTC (rev 148690)
@@ -0,0 +1,60 @@
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
+--- ../libpar2-0.2-original/par2repairer.cpp	2006-01-20 18:25:20.000000000 +0100
++++ ../libpar2-0.2/par2repairer.cpp	2012-11-30 14:23:31.000000000 +0100
+@@ -76,10 +76,11 @@
+     ++sf;
+   }
+ 
+   delete mainpacket;
+   delete creatorpacket;
++  delete headers;
+ }
+ 
+ 
+ Result Par2Repairer::PreProcess(const CommandLine &commandline)
+ {
+@@ -1259,11 +1260,11 @@
+         string path;
+         string name;
+         DiskFile::SplitFilename(filename, path, name);
+ 
+         cout << "Target: \"" << name << "\" - missing." << endl;
+-	sig_done.emit(name, 0, sourcefile->GetVerificationPacket()->BlockCount());
++	sig_done.emit(name, 0, sourcefile->GetVerificationPacket() ? sourcefile->GetVerificationPacket()->BlockCount() : 0);
+       }
+     }
+ 
+     ++sf;
+   }
+@@ -1802,11 +1803,11 @@
+              << "\" - no data found." 
+              << endl;
+       }
+     }
+   }
+-  sig_done.emit(name,count,sourcefile->GetVerificationPacket()->BlockCount()); 
++  sig_done.emit(name,count, count>0 && sourcefile->GetVerificationPacket() ? sourcefile->GetVerificationPacket()->BlockCount() : 0); 
+   sig_progress.emit(1000.0);
+   return true;
+ }
+ 
+ // Find out how much data we have found
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.h ../libpar2-0.2/par2repairer.h
+--- ../libpar2-0.2-original/par2repairer.h	2006-01-20 00:38:27.000000000 +0100
++++ ../libpar2-0.2/par2repairer.h	2012-11-30 14:24:46.000000000 +0100
+@@ -34,10 +34,15 @@
+   sigc::signal<void, std::string> sig_filename;
+   sigc::signal<void, double> sig_progress;
+   sigc::signal<void, ParHeaders*> sig_headers;
+   sigc::signal<void, std::string, int, int> sig_done;
+ 
++  // This method allows to determine whether libpar2 includes the patches
++  // ("libpar2-0.2-bugfixes.patch") submitted to libpar2 project.
++  // Use the method in configure scripts for detection.
++  void BugfixesPatchVersion2() { }
++
+ protected:
+   // Steps in verifying and repairing files:
+ 
+   // Load packets from the specified file
+   bool LoadPacketsFromFile(string filename);

Copied: libpar2/repos/community-staging-x86_64/libpar2-0.2-cancel.patch (from rev 148689, libpar2/trunk/libpar2-0.2-cancel.patch)
===================================================================
--- community-staging-x86_64/libpar2-0.2-cancel.patch	                        (rev 0)
+++ community-staging-x86_64/libpar2-0.2-cancel.patch	2015-12-05 20:03:44 UTC (rev 148690)
@@ -0,0 +1,236 @@
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
+--- ../libpar2-0.2-original/par2repairer.cpp	2012-12-03 10:47:04.000000000 +0100
++++ ../libpar2-0.2/par2repairer.cpp	2012-12-03 10:48:13.000000000 +0100
+@@ -50,10 +50,12 @@
+   outputbuffer = 0;
+ 
+   noiselevel = CommandLine::nlNormal;
+   headers = new ParHeaders;
+   alreadyloaded = false;
++
++  cancelled = false;
+ }
+ 
+ Par2Repairer::~Par2Repairer(void)
+ {
+   delete [] (u8*)inputbuffer;
+@@ -404,10 +406,14 @@
+         {
+           cout << "Loading: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+           progress = offset;
+ 	sig_progress.emit(newfraction);
+ 
++          if (cancelled)
++          {
++            break;
++          }
+         }
+       }
+ 
+       // Attempt to read the next packet header
+       PACKET_HEADER header;
+@@ -582,10 +588,15 @@
+     if (noiselevel > CommandLine::nlQuiet)
+       cout << "No new packets found" << endl;
+     delete diskfile;
+   }
+   
++  if (cancelled)
++  {
++    return false;
++  }
++
+   return true;
+ }
+ 
+ // Finish loading a recovery packet
+ bool Par2Repairer::LoadRecoveryPacket(DiskFile *diskfile, u64 offset, PACKET_HEADER &header)
+@@ -831,26 +842,42 @@
+ 
+     // Load packets from each file that was found
+     for (list<string>::const_iterator s=files->begin(); s!=files->end(); ++s)
+     {
+       LoadPacketsFromFile(*s);
++      if (cancelled)
++      {
++        break;
++      }
+     }
+ 
+     delete files;
++    if (cancelled)
++    {
++      return false;
++    }
+   }
+ 
+   {
+     string wildcard = name.empty() ? "*.PAR2" : name + ".*.PAR2";
+     list<string> *files = DiskFile::FindFiles(path, wildcard);
+ 
+     // Load packets from each file that was found
+     for (list<string>::const_iterator s=files->begin(); s!=files->end(); ++s)
+     {
+       LoadPacketsFromFile(*s);
++      if (cancelled)
++      {
++        break;
++      }
+     }
+ 
+     delete files;
++    if (cancelled)
++    {
++      return false;
++    }
+   }
+ 
+   return true;
+ }
+ 
+@@ -864,13 +891,22 @@
+     // If the filename contains ".par2" anywhere
+     if (string::npos != filename.find(".par2") ||
+         string::npos != filename.find(".PAR2"))
+     {
+       LoadPacketsFromFile(filename);
++      if (cancelled)
++      {
++        break;
++      }
+     }
+   }
+ 
++  if (cancelled)
++  {
++    return false;
++  }
++
+   return true;
+ }
+ 
+ // Check that the packets are consistent and discard any that are not
+ bool Par2Repairer::CheckPacketConsistency(void)
+@@ -1208,10 +1244,15 @@
+ 
+   // Start verifying the files
+   sf = sortedfiles.begin();
+   while (sf != sortedfiles.end())
+   {
++    if (cancelled)
++    {
++      return false;
++    }
++
+     // Do we have a source file
+     Par2RepairerSourceFile *sourcefile = *sf;
+ 
+     // What filename does the file use
+     string filename = sourcefile->TargetFileName();
+@@ -1560,10 +1601,14 @@
+       if (oldfraction != newfraction)
+       {
+         cout << "Scanning: \"" << shortname << "\": " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+ 	sig_progress.emit(newfraction);
+ 
++        if (cancelled)
++        {
++          break;
++        }
+       }
+     }
+ 
+     // If we fail to find a match, it might be because it was a duplicate of a block
+     // that we have already found.
+@@ -1649,10 +1694,15 @@
+           return false;
+       }
+     }
+   }
+ 
++  if (cancelled)
++  {
++    return false;
++  }
++
+   // Get the Full and 16k hash values of the file
+   filechecksummer.GetFileHashes(hashfull, hash16k);
+ 
+   // Did we make any matches at all
+   if (count > 0)
+@@ -2289,14 +2339,23 @@
+           if (oldfraction != newfraction)
+           {
+             cout << "Repairing: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+ 	    sig_progress.emit(newfraction);
+ 
++            if (cancelled)
++            {
++              break;
++            }
+           }
+         }
+       }
+ 
++      if (cancelled)
++      {
++        break;
++      }
++
+       ++inputblock;
+       ++inputindex;
+     }
+   }
+   else
+@@ -2346,13 +2405,22 @@
+         if (oldfraction != newfraction)
+         {
+           cout << "Processing: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
+ 	sig_progress.emit(newfraction);
+ 
++          if (cancelled)
++          {
++            break;
++          }
+         }
+       }
+ 
++      if (cancelled)
++      {
++        break;
++      }
++
+       ++copyblock;
+       ++inputblock;
+     }
+   }
+ 
+@@ -2360,10 +2428,15 @@
+   if (lastopenfile != NULL)
+   {
+     lastopenfile->Close();
+   }
+ 
++  if (cancelled)
++  {
++    return false;
++  }
++
+   if (noiselevel > CommandLine::nlQuiet)
+     cout << "Writing recovered data\r";
+ 
+   // For each output block that has been recomputed
+   vector<DataBlock*>::iterator outputblock = outputblocks.begin();
+diff -aud -U 5 ../libpar2-0.2-with-bugfixes-patch/par2repairer.h ../libpar2-0.2/par2repairer.h
+--- ../libpar2-0.2-original/par2repairer.h	2012-12-03 10:47:04.000000000 +0100
++++ ../libpar2-0.2/par2repairer.h	2012-12-03 10:48:13.000000000 +0100
+@@ -186,8 +186,9 @@
+ 
+   u64                       progress;                // How much data has been processed.
+   u64                       totaldata;               // Total amount of data to be processed.
+   u64                       totalsize;               // Total data size
+ 
++  bool                      cancelled;               // repair cancelled
+ };
+ 
+ #endif // __PAR2REPAIRER_H__



More information about the arch-commits mailing list