summaryrefslogtreecommitdiffstats
path: root/testing/par2cmdline
diff options
context:
space:
mode:
authorKalonji <lonkaji@gmail.com>2011-01-05 20:51:53 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-01-06 16:46:58 +0000
commite0ea45d11b5a05c041de8dc84d3e9c08347cbf17 (patch)
tree8b38515d772335cbd21b566032a486f0bbbf90f6 /testing/par2cmdline
parentcb424d1f4591b21f95289a1bcc2cc081076af6e5 (diff)
downloadaports-e0ea45d11b5a05c041de8dc84d3e9c08347cbf17.tar.bz2
aports-e0ea45d11b5a05c041de8dc84d3e9c08347cbf17.tar.xz
new port: par2cmdline
Diffstat (limited to 'testing/par2cmdline')
-rw-r--r--testing/par2cmdline/APKBUILD52
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-autoconf.patch22
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-cosmetic.patch106
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-gcc4.patch62
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-hardlinks.patch15
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-letype.patch219
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-offset.patch16
-rw-r--r--testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch23
8 files changed, 515 insertions, 0 deletions
diff --git a/testing/par2cmdline/APKBUILD b/testing/par2cmdline/APKBUILD
new file mode 100644
index 00000000..7c6cbb3e
--- /dev/null
+++ b/testing/par2cmdline/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: <kalonji@gmail.com>
+# Maintainer: <kalonji@gmail.com>
+pkgname=par2cmdline
+pkgver=0.4
+pkgrel=1
+pkgdesc="Providing a tool to apply the data-recovery capability concepts of RAID-like systems to the posting & recovery of multi-part archives on Usenet."
+url="http://sourceforge.net/projects/parchive/"
+license="GPL"
+depends=
+makedepends=
+install=
+source="http://downloads.sourceforge.net/sourceforge/parchive/${pkgname}-${pkgver}.tar.gz
+par2cmdline-0.4-autoconf.patch
+par2cmdline-0.4-letype.patch
+par2cmdline-0.4-cosmetic.patch
+par2cmdline-0.4-offset.patch
+par2cmdline-0.4-gcc4.patch
+par2cmdline-0.4-wildcard-fix.patch
+par2cmdline-0.4-hardlinks.patch"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ cd "$_builddir"
+ for i in "$srcdir"/*.patch; do
+ msg "Applying ${i}"
+ patch -N -i $i || return 1
+ done
+}
+
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="1551b63e57e3c232254dc62073b723a9 par2cmdline-0.4.tar.gz
+8a0fad41e3c3165e3c788d2693797557 par2cmdline-0.4-autoconf.patch
+1f7adb9308d4e972a5630eb56a42f8d5 par2cmdline-0.4-letype.patch
+986d44b0cdba449459f9cfd93322144f par2cmdline-0.4-cosmetic.patch
+cd54801b5107f03982c2b01ead21f02a par2cmdline-0.4-offset.patch
+d52515669d3bc43f19c545fd6405dacc par2cmdline-0.4-gcc4.patch
+c823d25f8862531e6e435ce0c76f8384 par2cmdline-0.4-wildcard-fix.patch
+8683d237bc11e9d5581d14b4697d1f8b par2cmdline-0.4-hardlinks.patch"
diff --git a/testing/par2cmdline/par2cmdline-0.4-autoconf.patch b/testing/par2cmdline/par2cmdline-0.4-autoconf.patch
new file mode 100644
index 00000000..a0f2fbb5
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-autoconf.patch
@@ -0,0 +1,22 @@
+--- ../orig/par2cmdline-0.4/par2cmdline.h 2004-04-15 15:30:02.000000000 +0200
++++ ./par2cmdline.h 2007-03-24 13:25:43.000000000 +0100
+@@ -132,6 +132,10 @@
+ typedef unsigned long long u64;
+ #endif
+
++// FIXME: this is not done right w/ autoconf
++#include <sys/ioctl.h>
++#include <sys/mount.h>
++
+ #if HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+@@ -179,6 +183,8 @@
+ #include <ctype.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/ioctl.h>
++#include <sys/mount.h>
+ #include <dirent.h>
+ #include <assert.h>
+
diff --git a/testing/par2cmdline/par2cmdline-0.4-cosmetic.patch b/testing/par2cmdline/par2cmdline-0.4-cosmetic.patch
new file mode 100644
index 00000000..0d5df216
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-cosmetic.patch
@@ -0,0 +1,106 @@
+--- verificationhashtable.h 2003-06-03 13:48:52.000000000 +0200
++++ verificationhashtable.h.new 2010-02-10 20:48:50.425580166 +0100
+@@ -66,11 +66,11 @@ public:
+ // Comparison operators for searching
+ bool operator <(const VerificationHashEntry &r) const
+ {
+- return crc < r.crc || crc == r.crc && hash < r.hash;
++ return crc < r.crc || ( crc == r.crc && hash < r.hash );
+ }
+ bool operator >(const VerificationHashEntry &r) const
+ {
+- return crc > r.crc || crc == r.crc && hash > r.hash;
++ return crc > r.crc || ( crc == r.crc && hash > r.hash );
+ }
+ bool operator ==(const VerificationHashEntry &r) const
+ {
+@@ -183,11 +183,11 @@ inline const VerificationHashEntry* Veri
+
+ while (entry)
+ {
+- if (entry->crc < crc || entry->crc == crc && entry->hash < hash)
++ if (entry->crc < crc || ( entry->crc == crc && entry->hash < hash ) )
+ {
+ entry = entry->right;
+ }
+- else if (entry->crc > crc || entry->crc == crc && entry->hash > hash)
++ else if (entry->crc > crc || ( entry->crc == crc && entry->hash > hash ) )
+ {
+ entry = entry->left;
+ }
+@@ -402,14 +402,14 @@ inline const VerificationHashEntry* Veri
+ // have already been matched, or ones that are the wrong length
+ while (currententry && (currententry->SourceFile() != sourcefile ||
+ currententry->IsSet() ||
+- checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength()
++ ( checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength() )
+ )
+ )
+ {
+ // If we found an unused entry (which was presumably for the wrong
+ // source file) remember it (providing it is the correct length).
+- if (0 == nextentry && !(currententry->IsSet() ||
+- checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength()
++ if ( ( ( 0 == nextentry && !(currententry->IsSet() ) ) ||
++ ( checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength() )
+ )
+ )
+ {
+@@ -425,8 +425,8 @@ inline const VerificationHashEntry* Veri
+ }
+
+ // Check for an unused entry which is the correct length
+- while (nextentry && (nextentry->IsSet() ||
+- checksummer.ShortBlock() && checksummer.BlockLength() != nextentry->GetDataBlock()->GetLength()
++ while ( ( ( nextentry && (nextentry->IsSet() ) ) ||
++ ( checksummer.ShortBlock() && checksummer.BlockLength() != nextentry->GetDataBlock()->GetLength() )
+ )
+ )
+ {
+--- par1repairer.cpp 2004-04-15 15:40:48.000000000 +0200
++++ par1repairer.cpp.new 2010-02-10 21:04:43.288702325 +0100
+@@ -324,7 +324,7 @@ bool Par1Repairer::LoadRecoveryFile(stri
+ ||
+ (fileheader.datasize && (fileheader.dataoffset < sizeof(fileheader) || fileheader.dataoffset + fileheader.datasize > filesize))
+ ||
+- (fileheader.datasize && (fileheader.filelistoffset <= fileheader.dataoffset && fileheader.dataoffset < fileheader.filelistoffset+fileheader.filelistsize || fileheader.dataoffset <= fileheader.filelistoffset && fileheader.filelistoffset < fileheader.dataoffset + fileheader.datasize)))
++ (fileheader.datasize && ( ( fileheader.filelistoffset <= fileheader.dataoffset && fileheader.dataoffset < fileheader.filelistoffset+fileheader.filelistsize ) || ( fileheader.dataoffset <= fileheader.filelistoffset && fileheader.filelistoffset < fileheader.dataoffset + fileheader.datasize ) )))
+ break;
+
+ // Check the size of the file list
+@@ -518,9 +518,9 @@ bool Par1Repairer::LoadOtherRecoveryFile
+ // Check the the file extension is the correct form
+ if ((tail[0] == 'P' || tail[0] == 'p') &&
+ (
+- (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r')
++ ( (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') )
+ ||
+- isdigit(tail[1]) && isdigit(tail[2])
++ ( isdigit(tail[1]) && isdigit(tail[2]) )
+ ))
+ {
+ LoadRecoveryFile(filename);
+@@ -549,9 +549,9 @@ bool Par1Repairer::LoadExtraRecoveryFile
+ // Check the the file extension is the correct form
+ if ((tail[0] == 'P' || tail[0] == 'p') &&
+ (
+- (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r')
++ ( (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') )
+ ||
+- isdigit(tail[1]) && isdigit(tail[2])
++ ( isdigit(tail[1]) && isdigit(tail[2]) )
+ ))
+ {
+ LoadRecoveryFile(filename);
+@@ -652,9 +652,9 @@ bool Par1Repairer::VerifyExtraFiles(cons
+ // Check the the file extension is the correct form
+ if ((tail[0] == 'P' || tail[0] == 'p') &&
+ (
+- (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r')
++ ( (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') )
+ ||
+- isdigit(tail[1]) && isdigit(tail[2])
++ ( isdigit(tail[1]) && isdigit(tail[2]) )
+ ))
+ {
+ skip = true;
diff --git a/testing/par2cmdline/par2cmdline-0.4-gcc4.patch b/testing/par2cmdline/par2cmdline-0.4-gcc4.patch
new file mode 100644
index 00000000..c6da2678
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-gcc4.patch
@@ -0,0 +1,62 @@
+Fix compilation with gcc-4.
+
+Patch by Dirk-Jan Heijs.
+
+http://bugs.gentoo.org/102391
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=287904
+
+--- par2cmdline-0.4/reedsolomon.cpp
++++ par2cmdline-0.4/reedsolomon.cpp
+@@ -51,7 +51,7 @@
+ }
+ }
+
+-bool ReedSolomon<Galois8>::SetInput(const vector<bool> &present)
++template <> bool ReedSolomon<Galois8>::SetInput(const vector<bool> &present)
+ {
+ inputcount = (u32)present.size();
+
+@@ -80,7 +80,7 @@
+ return true;
+ }
+
+-bool ReedSolomon<Galois8>::SetInput(u32 count)
++template <> bool ReedSolomon<Galois8>::SetInput(u32 count)
+ {
+ inputcount = count;
+
+@@ -101,7 +101,7 @@
+ return true;
+ }
+
+-bool ReedSolomon<Galois8>::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer)
++template <> bool ReedSolomon<Galois8>::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer)
+ {
+ // Look up the appropriate element in the RS matrix
+ Galois8 factor = leftmatrix[outputindex * (datapresent + datamissing) + inputindex];
+@@ -189,7 +189,7 @@
+
+ // Set which of the source files are present and which are missing
+ // and compute the base values to use for the vandermonde matrix.
+-bool ReedSolomon<Galois16>::SetInput(const vector<bool> &present)
++template <> bool ReedSolomon<Galois16>::SetInput(const vector<bool> &present)
+ {
+ inputcount = (u32)present.size();
+
+@@ -233,7 +233,7 @@
+
+ // Record that the specified number of source files are all present
+ // and compute the base values to use for the vandermonde matrix.
+-bool ReedSolomon<Galois16>::SetInput(u32 count)
++template <> bool ReedSolomon<Galois16>::SetInput(u32 count)
+ {
+ inputcount = count;
+
+@@ -267,7 +267,7 @@
+ return true;
+ }
+
+-bool ReedSolomon<Galois16>::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer)
++template <> bool ReedSolomon<Galois16>::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer)
+ {
+ // Look up the appropriate element in the RS matrix
diff --git a/testing/par2cmdline/par2cmdline-0.4-hardlinks.patch b/testing/par2cmdline/par2cmdline-0.4-hardlinks.patch
new file mode 100644
index 00000000..0d815f09
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-hardlinks.patch
@@ -0,0 +1,15 @@
+--- Makefile.in 2004-04-12 18:44:18.000000000 +0200
++++ Makefile.in.new 2010-02-10 21:08:17.799145528 +0100
+@@ -716,9 +716,9 @@ uninstall-am: uninstall-binPROGRAMS unin
+
+
+ install-exec-hook :
+- ln -f $(DESTDIR)$(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2create$(EXEEXT)
+- ln -f $(DESTDIR)$(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2verify$(EXEEXT)
+- ln -f $(DESTDIR)$(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2repair$(EXEEXT)
++ ln -sf $(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2create$(EXEEXT)
++ ln -sf $(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2verify$(EXEEXT)
++ ln -sf $(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2repair$(EXEEXT)
+
+ uninstall-hook :
+ rm -f $(DESTDIR)$(bindir)/par2create$(EXEEXT)
diff --git a/testing/par2cmdline/par2cmdline-0.4-letype.patch b/testing/par2cmdline/par2cmdline-0.4-letype.patch
new file mode 100644
index 00000000..e0c8d6c5
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-letype.patch
@@ -0,0 +1,219 @@
+diff -ur par2cmdline-0.4-orig/letype.h par2cmdline-0.4/letype.h
+--- par2cmdline-0.4-orig/letype.h 2003-05-26 20:01:17.000000000 +0200
++++ par2cmdline-0.4/letype.h 2006-05-09 10:47:29.000000000 +0200
+@@ -28,44 +28,15 @@
+
+ #else
+
+-class leu16
++struct leu16
+ {
+-public:
+- leu16(void);
+-
+- leu16(const leu16 &other);
+- leu16& operator=(const leu16 &other);
+-
+- leu16(const u16 &other);
+ leu16& operator=(const u16 &other);
+
+ operator u16(void) const;
+
+-protected:
+ u16 value;
+ };
+
+-inline leu16::leu16(void)
+-{
+-}
+-
+-inline leu16::leu16(const leu16 &other)
+-: value(other.value)
+-{
+-}
+-
+-inline leu16& leu16::operator =(const leu16 &other)
+-{
+- value = other.value;
+- return *this;
+-}
+-
+-inline leu16::leu16(const u16 &other)
+-{
+- ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
+- ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff);
+-}
+-
+ inline leu16& leu16::operator=(const u16 &other)
+ {
+ ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
+@@ -81,46 +52,15 @@
+ }
+
+
+-class leu32
++struct leu32
+ {
+-public:
+- leu32(void);
+-
+- leu32(const leu32 &other);
+- leu32& operator=(const leu32 &other);
+-
+- leu32(const u32 &other);
+ leu32& operator=(const u32 &other);
+
+ operator u32(void) const;
+
+-protected:
+ u32 value;
+ };
+
+-inline leu32::leu32(void)
+-{
+-}
+-
+-inline leu32::leu32(const leu32 &other)
+-: value(other.value)
+-{
+-}
+-
+-inline leu32& leu32::operator =(const leu32 &other)
+-{
+- value = other.value;
+- return *this;
+-}
+-
+-inline leu32::leu32(const u32 &other)
+-{
+- ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
+- ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff);
+- ((unsigned char*)&value)[2] = (unsigned char)((other >> 16) & 0xff);
+- ((unsigned char*)&value)[3] = (unsigned char)((other >> 24) & 0xff);
+-}
+-
+ inline leu32& leu32::operator=(const u32 &other)
+ {
+ ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
+@@ -140,50 +80,15 @@
+ }
+
+
+-class leu64
++struct leu64
+ {
+-public:
+- leu64(void);
+-
+- leu64(const leu64 &other);
+- leu64& operator=(const leu64 &other);
+-
+- leu64(const u64 &other);
+ leu64& operator=(const u64 &other);
+
+ operator u64(void) const;
+
+-protected:
+ u64 value;
+ };
+
+-inline leu64::leu64(void)
+-{
+-}
+-
+-inline leu64::leu64(const leu64 &other)
+-: value(other.value)
+-{
+-}
+-
+-inline leu64& leu64::operator =(const leu64 &other)
+-{
+- value = other.value;
+- return *this;
+-}
+-
+-inline leu64::leu64(const u64 &other)
+-{
+- ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
+- ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff);
+- ((unsigned char*)&value)[2] = (unsigned char)((other >> 16) & 0xff);
+- ((unsigned char*)&value)[3] = (unsigned char)((other >> 24) & 0xff);
+- ((unsigned char*)&value)[4] = (unsigned char)((other >> 32) & 0xff);
+- ((unsigned char*)&value)[5] = (unsigned char)((other >> 40) & 0xff);
+- ((unsigned char*)&value)[6] = (unsigned char)((other >> 48) & 0xff);
+- ((unsigned char*)&value)[7] = (unsigned char)((other >> 56) & 0xff);
+-}
+-
+ inline leu64& leu64::operator=(const u64 &other)
+ {
+ ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
+diff -ur par2cmdline-0.4-orig/md5.h par2cmdline-0.4/md5.h
+--- par2cmdline-0.4-orig/md5.h 2003-08-02 01:41:04.000000000 +0200
++++ par2cmdline-0.4/md5.h 2006-05-09 10:47:29.000000000 +0200
+@@ -20,6 +20,13 @@
+ #ifndef __MD5_H__
+ #define __MD5_H__
+
++#ifdef WIN32
++#pragma pack(push, 1)
++#define PACKED
++#else
++#define PACKED __attribute__ ((packed))
++#endif
++
+ // This file defines the MD5Hash and MD5Context objects which are used
+ // to compute and manipulate the MD5 Hash values for a block of data.
+
+@@ -35,12 +42,11 @@
+
+ // MD5 Hash value
+
+-class MD5Hash
+-{
+-public:
+- // Constructor does not initialise the value
+- MD5Hash(void) {};
++struct MD5Hash;
++ostream& operator<<(ostream &s, const MD5Hash &hash);
+
++struct MD5Hash
++{
+ // Comparison operators
+ bool operator==(const MD5Hash &other) const;
+ bool operator!=(const MD5Hash &other) const;
+@@ -54,13 +60,8 @@
+ friend ostream& operator<<(ostream &s, const MD5Hash &hash);
+ string print(void) const;
+
+- // Copy and assignment
+- MD5Hash(const MD5Hash &other);
+- MD5Hash& operator=(const MD5Hash &other);
+-
+-public:
+ u8 hash[16]; // 16 byte MD5 Hash value
+-};
++} PACKED;
+
+ // Intermediate computation state
+
+@@ -144,16 +145,9 @@
+ return !other.operator<(*this);
+ }
+
+-inline MD5Hash::MD5Hash(const MD5Hash &other)
+-{
+- memcpy(&hash, &other.hash, sizeof(hash));
+-}
+-
+-inline MD5Hash& MD5Hash::operator=(const MD5Hash &other)
+-{
+- memcpy(&hash, &other.hash, sizeof(hash));
+-
+- return *this;
+-}
++#ifdef WIN32
++#pragma pack(pop)
++#endif
++#undef PACKED
+
+ #endif // __MD5_H__
diff --git a/testing/par2cmdline/par2cmdline-0.4-offset.patch b/testing/par2cmdline/par2cmdline-0.4-offset.patch
new file mode 100644
index 00000000..65392806
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-offset.patch
@@ -0,0 +1,16 @@
+--- par2cmdline-0.4.orig/par2creatorsourcefile.cpp 2004-04-15 14:45:23.000000000 +0100
++++ par2cmdline-0.4/par2creatorsourcefile.cpp 2005-09-29 02:27:43.000000000 +0100
+@@ -213,11 +213,12 @@
+ }
+ }
+
++ offset += want;
++
+ if (noiselevel > CommandLine::nlQuiet)
+ {
+ // Display progress
+ u32 oldfraction = (u32)(1000 * offset / filesize);
+- offset += want;
+ u32 newfraction = (u32)(1000 * offset / filesize);
+ if (oldfraction != newfraction)
+ {
diff --git a/testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch b/testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch
new file mode 100644
index 00000000..d5f43c79
--- /dev/null
+++ b/testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch
@@ -0,0 +1,23 @@
+--- commandline.cpp.orig 2006-04-06 21:41:27.000000000 -0700
++++ commandline.cpp 2006-04-07 00:12:29.000000000 -0700
+@@ -550,6 +550,20 @@
+ }
+ else
+ {
++ //start of shell expanded * patch. -- Michael Evans
++ //The shell might expaned * so, if we have our name and we're creating, then filter for files...
++ if ((parfilename.length() != 0) && (operation == opCreate))
++ {
++ struct stat st;
++ if (!(stat(argv[0], &st) == 0 && S_ISREG(st.st_mode)))
++ {
++ cerr << "Skipping non-regular file: " << argv[0] << endl;
++ argc--;
++ argv++;
++ options = false;
++ continue;
++ }
++ }//end of shell expanded * patch. -- Michael Evans
+ filenames = new list<string>;
+ filenames->push_back(argv[0]);
+ }