update to 1.51 [release 1.51-1mamba;Mon May 13 2013]
This commit is contained in:
parent
eeab9d76c0
commit
2a4cd36f2f
@ -1,2 +1,4 @@
|
|||||||
# fdupes
|
# fdupes
|
||||||
|
|
||||||
|
FDUPES is a program for identifying or deleting duplicate files residing within specified directories.
|
||||||
|
|
||||||
|
20
fdupes-endianness.patch
Normal file
20
fdupes-endianness.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Index: fdupes-1.40/md5/md5.c
|
||||||
|
===================================================================
|
||||||
|
--- fdupes-1.40.orig/md5/md5.c 2010-02-15 15:36:58.000000000 +0100
|
||||||
|
+++ fdupes-1.40/md5/md5.c 2010-02-15 16:01:34.350140290 +0100
|
||||||
|
@@ -41,6 +41,15 @@
|
||||||
|
#include "md5.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
+/* endianness check using glibc endian.h */
|
||||||
|
+#include <endian.h>
|
||||||
|
+
|
||||||
|
+#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
|
+# define ARCH_IS_BIG_ENDIAN 1
|
||||||
|
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
|
||||||
|
+# define ARCH_IS_BIG_ENDIAN 0
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef TEST
|
||||||
|
/*
|
||||||
|
* Compile with -DTEST to create a self-contained executable test program.
|
64
fdupes-sort-output.diff
Normal file
64
fdupes-sort-output.diff
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
--- fdupes.c
|
||||||
|
+++ fdupes.c
|
||||||
|
@@ -581,24 +581,45 @@
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* from qsort man page */
|
||||||
|
+static int
|
||||||
|
+cmpstringp(const void *p1, const void *p2)
|
||||||
|
+{
|
||||||
|
+ /* The actual arguments to this function are "pointers to
|
||||||
|
+ pointers to char", but strcmp(3) arguments are "pointers
|
||||||
|
+ to char", hence the following cast plus dereference */
|
||||||
|
+
|
||||||
|
+ return strcmp(* (char * const *) p1, * (char * const *) p2);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void printmatches(file_t *files)
|
||||||
|
{
|
||||||
|
file_t *tmpfile;
|
||||||
|
|
||||||
|
while (files != NULL) {
|
||||||
|
if (files->hasdupes) {
|
||||||
|
+ char **names = (char**)malloc(sizeof(char*)*(files->hasdupes+1));
|
||||||
|
+ int count = 0, index;
|
||||||
|
+ names[count++] = files->d_name;
|
||||||
|
+ tmpfile = files->duplicates;
|
||||||
|
+ while (tmpfile != NULL) {
|
||||||
|
+ names[count++] = tmpfile->d_name;
|
||||||
|
+ tmpfile = tmpfile->duplicates;
|
||||||
|
+ }
|
||||||
|
+ qsort(names, count, sizeof(char *), cmpstringp);
|
||||||
|
+
|
||||||
|
if (!ISFLAG(flags, F_OMITFIRST)) {
|
||||||
|
if (ISFLAG(flags, F_SHOWSIZE)) printf("%ld byte%seach:\n", files->size,
|
||||||
|
(files->size != 1) ? "s " : " ");
|
||||||
|
- if (ISFLAG(flags, F_DSAMELINE)) escapefilename("\\ ", &files->d_name);
|
||||||
|
- printf("%s%c", files->d_name, ISFLAG(flags, F_DSAMELINE)?' ':'\n');
|
||||||
|
+ if (ISFLAG(flags, F_DSAMELINE)) escapefilename("\\ ", &names[0]);
|
||||||
|
+ printf("%s%c", names[0], ISFLAG(flags, F_DSAMELINE)?' ':'\n');
|
||||||
|
}
|
||||||
|
- tmpfile = files->duplicates;
|
||||||
|
- while (tmpfile != NULL) {
|
||||||
|
- if (ISFLAG(flags, F_DSAMELINE)) escapefilename("\\ ", &tmpfile->d_name);
|
||||||
|
- printf("%s%c", tmpfile->d_name, ISFLAG(flags, F_DSAMELINE)?' ':'\n');
|
||||||
|
- tmpfile = tmpfile->duplicates;
|
||||||
|
+ for (index = 1; index < count; index++) {
|
||||||
|
+ if (ISFLAG(flags, F_DSAMELINE)) escapefilename("\\ ", &names[index]);
|
||||||
|
+ printf("%s%c", names[index], ISFLAG(flags, F_DSAMELINE)?' ':'\n');
|
||||||
|
+
|
||||||
|
}
|
||||||
|
+ free(names);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -869,7 +890,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
if (confirmmatch(file1, file2)) {
|
||||||
|
- match->hasdupes = 1;
|
||||||
|
+ match->hasdupes++;
|
||||||
|
curfile->duplicates = match->duplicates;
|
||||||
|
match->duplicates = curfile;
|
||||||
|
}
|
44
fdupes-speedup.patch
Normal file
44
fdupes-speedup.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
Index: fdupes.c
|
||||||
|
===================================================================
|
||||||
|
--- fdupes.c.orig 2010-02-15 15:36:58.000000000 +0100
|
||||||
|
+++ fdupes.c 2010-02-15 15:38:11.091108207 +0100
|
||||||
|
@@ -259,7 +259,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
while (fsize > 0) {
|
||||||
|
- toread = (fsize % CHUNK_SIZE) ? (fsize % CHUNK_SIZE) : CHUNK_SIZE;
|
||||||
|
+ toread = (fsize >= CHUNK_SIZE) ? CHUNK_SIZE : fsize;
|
||||||
|
if (fread(chunk, toread, 1, file) != 1) {
|
||||||
|
errormsg("error reading from file %s\n", filename);
|
||||||
|
return NULL;
|
||||||
|
@@ -561,22 +561,23 @@
|
||||||
|
|
||||||
|
int confirmmatch(FILE *file1, FILE *file2)
|
||||||
|
{
|
||||||
|
- unsigned char c1;
|
||||||
|
- unsigned char c2;
|
||||||
|
+ unsigned char c1[8192];
|
||||||
|
+ unsigned char c2[8192];
|
||||||
|
size_t r1;
|
||||||
|
size_t r2;
|
||||||
|
+ int res;
|
||||||
|
|
||||||
|
fseek(file1, 0, SEEK_SET);
|
||||||
|
fseek(file2, 0, SEEK_SET);
|
||||||
|
|
||||||
|
do {
|
||||||
|
- r1 = fread(&c1, sizeof(c1), 1, file1);
|
||||||
|
- r2 = fread(&c2, sizeof(c2), 1, file2);
|
||||||
|
+ r1 = fread(c1, sizeof(unsigned char), sizeof(c1), file1);
|
||||||
|
+ r2 = fread(c2, sizeof(unsigned char), sizeof(c2), file2);
|
||||||
|
|
||||||
|
- if (c1 != c2) return 0; /* file contents are different */
|
||||||
|
+ if (r1 != r2) return 0; /* file lengths are different */
|
||||||
|
+ res = memcmp(c1, c2, r1);
|
||||||
|
+ if ( 0 != res ) return 0; /* file contents are different */
|
||||||
|
} while (r1 && r2);
|
||||||
|
-
|
||||||
|
- if (r1 != r2) return 0; /* file lengths are different */
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
45
fdupes.diff
Normal file
45
fdupes.diff
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
--- Makefile
|
||||||
|
+++ Makefile
|
||||||
|
@@ -2,13 +2,13 @@
|
||||||
|
# INSTALLDIR indicates directory where program is to be installed.
|
||||||
|
# Suggested values are "/usr/local/bin" or "/usr/bin".
|
||||||
|
#
|
||||||
|
-INSTALLDIR = /usr/local/bin
|
||||||
|
+INSTALLDIR = /usr/bin
|
||||||
|
|
||||||
|
#
|
||||||
|
# MANPAGEDIR indicates directory where the fdupes man page is to be
|
||||||
|
# installed. Suggested values are "/usr/local/man" or "/usr/man".
|
||||||
|
#
|
||||||
|
-MANPAGEDIR = /usr/local/man
|
||||||
|
+MANPAGEDIR = /usr/share/man
|
||||||
|
|
||||||
|
#
|
||||||
|
# VERSION determines the program's version number.
|
||||||
|
@@ -35,7 +35,7 @@
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
fdupes: fdupes.c md5/md5.c
|
||||||
|
- gcc fdupes.c md5/md5.c -Wall -o fdupes -DVERSION=\"$(VERSION)\" $(EXTERNAL_MD5) $(EXPERIMENTAL_RBTREE)
|
||||||
|
+ gcc fdupes.c md5/md5.c $(RPM_OPT_FLAGS) -o fdupes -DVERSION=\"$(VERSION)\" $(EXTERNAL_MD5) $(EXPERIMENTAL_RBTREE)
|
||||||
|
|
||||||
|
install: fdupes
|
||||||
|
cp fdupes $(INSTALLDIR)
|
||||||
|
--- md5/md5.c
|
||||||
|
+++ md5/md5.c
|
||||||
|
@@ -39,6 +39,7 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "md5.h"
|
||||||
|
+#include <string.h>
|
||||||
|
|
||||||
|
#ifdef TEST
|
||||||
|
/*
|
||||||
|
@@ -46,7 +47,6 @@
|
||||||
|
* The test program should print out the same values as given in section
|
||||||
|
* A.5 of RFC 1321, reproduced below.
|
||||||
|
*/
|
||||||
|
-#include <string.h>
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
static const char *const test[7] = {
|
65
fdupes.spec
Normal file
65
fdupes.spec
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
Name: fdupes
|
||||||
|
Version: 1.51
|
||||||
|
Release: 1mamba
|
||||||
|
Summary: A program for identifying or deleting duplicate files residing within specified directories.identifying or deleting duplicate files
|
||||||
|
Group: Applications/File
|
||||||
|
Vendor: openmamba
|
||||||
|
Distribution: openmamba
|
||||||
|
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||||
|
URL: https://code.google.com/p/fdupes/
|
||||||
|
Source0: https://fdupes.googlecode.com/files/fdupes-%{version}.tar.gz
|
||||||
|
# from opensuse
|
||||||
|
Source1: macros.fdupes
|
||||||
|
Patch0: fdupes.diff
|
||||||
|
Patch1: fdupes-sort-output.diff
|
||||||
|
Patch2: fdupes-speedup.patch
|
||||||
|
Patch3: fdupes-endianness.patch
|
||||||
|
License: MIT
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
||||||
|
|
||||||
|
%description
|
||||||
|
FDUPES is a program for identifying or deleting duplicate files residing within specified directories.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q
|
||||||
|
#%patch0
|
||||||
|
#%patch1
|
||||||
|
#%patch2 -p0 -b .speedup
|
||||||
|
%patch3 -p1 -b .endianness
|
||||||
|
|
||||||
|
%build
|
||||||
|
%make
|
||||||
|
|
||||||
|
%check
|
||||||
|
./fdupes testdir
|
||||||
|
./fdupes --omitfirst testdir
|
||||||
|
./fdupes --recurse testdir
|
||||||
|
./fdupes --size testdir
|
||||||
|
|
||||||
|
%install
|
||||||
|
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{_sysconfdir}/rpm
|
||||||
|
mkdir -p %{buildroot}%{_bindir}
|
||||||
|
mkdir -p %{buildroot}%{_mandir}/man1
|
||||||
|
|
||||||
|
install -pm 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm/macros.fdupes
|
||||||
|
install -pm 755 fdupes %{buildroot}%{_bindir}/fdupes
|
||||||
|
install -pm 644 fdupes.1 %{buildroot}%{_mandir}/man1/
|
||||||
|
|
||||||
|
%clean
|
||||||
|
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_sysconfdir}/rpm/macros.fdupes
|
||||||
|
%{_bindir}/fdupes
|
||||||
|
%{_mandir}/man1/fdupes.1.gz
|
||||||
|
%doc CHANGES README TODO
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon May 13 2013 Automatic Build System <autodist@mambasoft.it> 1.51-1mamba
|
||||||
|
- update to 1.51
|
||||||
|
|
||||||
|
* Wed Jun 02 2010 gil <puntogil@libero.it> 1.40-1mamba
|
||||||
|
- package created by autospec
|
22
macros.fdupes
Normal file
22
macros.fdupes
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
%fdupes(s) \
|
||||||
|
_target=""; \
|
||||||
|
_symlinks=0; \
|
||||||
|
%{-s:_symlinks=1;} \
|
||||||
|
fdupes -q -n -r %1 | \
|
||||||
|
while read _file; do \
|
||||||
|
if test -z "$_target" ; then \
|
||||||
|
_target="$_file"; \
|
||||||
|
else \
|
||||||
|
if test -z "$_file" ; then \
|
||||||
|
_target=""; \
|
||||||
|
continue ; \
|
||||||
|
fi ; \
|
||||||
|
if test "$_symlinks" = 1; then \
|
||||||
|
ln -sf "${_target#%{buildroot}}" "$_file"; \
|
||||||
|
else \
|
||||||
|
ln -f "$_target" "$_file"; \
|
||||||
|
fi ;\
|
||||||
|
fi ; \
|
||||||
|
done \
|
||||||
|
%{nil}
|
Loading…
Reference in New Issue
Block a user