aboutsummaryrefslogtreecommitdiff
path: root/sysutils/safecopy
diff options
context:
space:
mode:
authorKirill Ponomarev <krion@FreeBSD.org>2017-02-07 20:31:32 +0000
committerKirill Ponomarev <krion@FreeBSD.org>2017-02-07 20:31:32 +0000
commit86ea462e43d878873f2e2ac14cf08d397b167b34 (patch)
treecb8287d03b58790262d71304de7166316075ba07 /sysutils/safecopy
parent13760db9987328159e449df70c8b40a24d5982e9 (diff)
downloadports-86ea462e43d878873f2e2ac14cf08d397b167b34.tar.gz
ports-86ea462e43d878873f2e2ac14cf08d397b167b34.zip
New port: sysutils/safecopy
Safecopy is a data recovery tool which tries to extract as much data as possible from a problematic (i.e. damaged sectors) source - like floppy drives, hard disk partitions, CDs, tape devices etc, ... , where other tools like dd would fail due to I/O errors. Safecopy includes a low level IO layer to read CDROM disks in raw mode, and issue device resets and other helpful low level operations on a number of other device classes. The project also includes a device simulator which can be used to simulate bad media for testing and benchmarking safecopy as well as other data rescue tools. WWW: http://safecopy.sourceforge.net/ PR: 216892 Submitted by: anastasios@mageirias.com Approved by: mat (mentor) Differential Revision: https://reviews.freebsd.org/D9479
Notes
Notes: svn path=/head/; revision=433587
Diffstat (limited to 'sysutils/safecopy')
-rw-r--r--sysutils/safecopy/Makefile20
-rw-r--r--sysutils/safecopy/distinfo3
-rw-r--r--sysutils/safecopy/files/patch-src_safecopy.c29
-rw-r--r--sysutils/safecopy/pkg-descr11
4 files changed, 63 insertions, 0 deletions
diff --git a/sysutils/safecopy/Makefile b/sysutils/safecopy/Makefile
new file mode 100644
index 000000000000..251cf578ab92
--- /dev/null
+++ b/sysutils/safecopy/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+PORTNAME= safecopy
+PORTVERSION= 1.7
+CATEGORIES= sysutils
+MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION}/
+
+MAINTAINER= anastasios@mageirias.com
+COMMENT= Safe copying of files and partition
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+USES= gmake
+GNU_CONFIGURE= yes
+
+PLIST_FILES= bin/safecopy \
+ man/man1/safecopy.1.gz
+
+.include <bsd.port.mk>
diff --git a/sysutils/safecopy/distinfo b/sysutils/safecopy/distinfo
new file mode 100644
index 000000000000..0ad0951a5fc0
--- /dev/null
+++ b/sysutils/safecopy/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1486492944
+SHA256 (safecopy-1.7.tar.gz) = 42fbed5d4764020eb0f34d95e97a0e14e62d801c3ef80f89bd497d94d39cc4fd
+SIZE (safecopy-1.7.tar.gz) = 398465
diff --git a/sysutils/safecopy/files/patch-src_safecopy.c b/sysutils/safecopy/files/patch-src_safecopy.c
new file mode 100644
index 000000000000..c83e84b39351
--- /dev/null
+++ b/sysutils/safecopy/files/patch-src_safecopy.c
@@ -0,0 +1,29 @@
+--- src/safecopy.c.orig 2017-02-07 19:49:05 UTC
++++ src/safecopy.c
+@@ -900,7 +900,7 @@ int main(int argc, char ** argv) {
+ fprintf(stdout, "File size: %llu\n", (long long) statusvars->filesize );
+ } else {
+ fprintf(stderr, "Filesize not reported by stat(), trying seek().\n");
+- statusvars->source = open(configvars->sourcefile, O_RDONLY | O_RSYNC);
++ statusvars->source = open(configvars->sourcefile, O_RDONLY | O_SYNC);
+ if (statusvars->source) {
+ statusvars->filesize = lseek(statusvars->source, 0, SEEK_END);
+ close(statusvars->source);
+@@ -1691,7 +1691,7 @@ int main(int argc, char ** argv) {
+ for ( statusvars->cseeks = 0; statusvars->cseeks < statusvars->seeks ; statusvars->cseeks ++) {
+ debug(DEBUG_SEEK, "debug: forced head realignment\n");
+ // note. must use O_RSYNC since with O_DIRECT / raw devices, lseek to end of file might not work
+- statusvars->source = open(configvars->sourcefile, O_RDONLY | O_NONBLOCK | O_RSYNC );
++ statusvars->source = open(configvars->sourcefile, O_RDONLY | O_NONBLOCK | O_SYNC );
+ if (statusvars->source) {
+ lseek(statusvars->source, 0, SEEK_SET);
+ select_for_reading(statusvars->source, configvars, statusvars);
+@@ -1699,7 +1699,7 @@ int main(int argc, char ** argv) {
+ read(statusvars->source, statusvars->databuffer , statusvars->blocksize );
+ close(statusvars->source);
+ }
+- statusvars->source = open(configvars->sourcefile, O_RDONLY | O_NONBLOCK | O_RSYNC );
++ statusvars->source = open(configvars->sourcefile, O_RDONLY | O_NONBLOCK | O_SYNC );
+ if (statusvars->source) {
+ lseek(statusvars->source,- statusvars->blocksize , SEEK_END);
+ select_for_reading(statusvars->source, configvars, statusvars);
diff --git a/sysutils/safecopy/pkg-descr b/sysutils/safecopy/pkg-descr
new file mode 100644
index 000000000000..809b8e508efc
--- /dev/null
+++ b/sysutils/safecopy/pkg-descr
@@ -0,0 +1,11 @@
+Safecopy is a data recovery tool which tries to extract as much data as
+possible from a problematic (i.e. damaged sectors) source - like floppy drives,
+hard disk partitions, CDs, tape devices etc, ... , where other tools like dd
+would fail due to I/O errors.
+Safecopy includes a low level IO layer to read CDROM disks in raw mode, and
+issue device resets and other helpful low level operations on a number of other
+device classes.
+The project also includes a device simulator which can be used to simulate bad
+media for testing and benchmarking safecopy as well as other data rescue tools.
+
+WWW: http://safecopy.sourceforge.net/