FreeBSD Bugzilla – Attachment 75278 Details for
Bug 108766
New port: sysutils/ffs2recov ufs2 recovery utility
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
file.shar
file.shar (text/plain), 6.57 KB, created by
sten
on 2007-02-04 18:00:34 UTC
(
hide
)
Description:
file.shar
Filename:
MIME Type:
Creator:
sten
Created:
2007-02-04 18:00:34 UTC
Size:
6.57 KB
patch
obsolete
># This is a shell archive. Save it in a file, remove anything before ># this line, and then unpack it by entering "sh file". Note, it may ># create directories; files and directories will be owned by you and ># have default permissions. ># ># This archive contains: ># ># ffs2recov ># ffs2recov/files ># ffs2recov/files/patch-cleanup ># ffs2recov/Makefile ># ffs2recov/distinfo ># ffs2recov/pkg-descr ># >echo c - ffs2recov >mkdir -p ffs2recov > /dev/null 2>&1 >echo c - ffs2recov/files >mkdir -p ffs2recov/files > /dev/null 2>&1 >echo x - ffs2recov/files/patch-cleanup >sed 's/^X//' >ffs2recov/files/patch-cleanup << 'END-of-ffs2recov/files/patch-cleanup' >X--- Makefile.orig Mon Sep 19 05:47:56 2005 >X+++ Makefile Sun Feb 4 04:55:45 2007 >X@@ -1,39 +1,12 @@ >X-PREFIX?= /usr/local >X+# $FreeBSD$ >X >X-BINDIR = $(PREFIX)/bin >X-BINOWN?= root >X-BINGRP?= wheel >X+PROG= ffs2recov >X+SRCS= main.c block.c inode.c io.c super.c >X+MAN= ffs2recov.8 >X >X-PROG = ffsrecov >X+DPADD= ${LIBUFS} >X+LDADD= -lufs >X >X-DEBUG = -g >X+WARNS?= 2 >X >X-CFLAGS+= $(DEBUG) -Wall >X- >X-SRCS = main.c block.c inode.c io.c super.c >X-OBJS = main.o block.o inode.o io.o super.o >X- >X-#XXX - install-man only handles one file in MAN8 >X-MAN8 = ffsrecov.8 >X-MANDIR = $(PREFIX)/man/man >X-MANOWN? = man >X-MANGRP? = man >X- >X-all: $(PROG) >X- >X-$(PROG): $(OBJS) >X- $(CC) -g -o $@ $(OBJS) -lufs >X- >X-install: $(PROG) install-man >X- cp $(PROG) $(BINDIR) >X- strip $(BINDIR)/$(PROG) >X- chmod 555 $(BINDIR)/$(PROG) >X- -chown $(BINOWN):$(BINGRP) $(BINDIR)/$(PROG) >X- >X-install-man: >X- cp $(MAN8) $(MANDIR)8 >X- chmod 444 $(MANDIR)8/$(MAN8) >X- -chown $(MANOWN):$(MANGRP) $(MANDIR)8/$(MAN8) >X- >X-clean: >X- rm -f $(PROG) $(OBJS) cscope.out >X+.include <bsd.prog.mk> >X--- main.c.orig Sun Feb 4 03:00:36 2007 >X+++ main.c Sun Feb 4 04:55:23 2007 >X@@ -64,7 +64,7 @@ >X int verbose; >X int debug; >X >X-void >X+static void >X ufserr(const char *name) >X { >X if (ufs_disk != NULL && ufs_disk->d_error != NULL) >X@@ -73,8 +73,8 @@ >X warn("%s", name); >X } >X >X-void >X-usage() >X+static void >X+usage(void) >X { >X printf("usage: ffsrecover [-adps] [-b blk] [-c ino -n name | -f ino | -i ino ] [-o blk] [-r name] [-t blk] file\n"); >X printf("\n"); >X@@ -102,8 +102,6 @@ >X int argc, >X char *argv[]) >X { >X- extern char *optarg; >X- extern int optind; >X char *file; >X int ch, findsb, printbsb, recoverfile, printalldirs; >X ufs2_daddr_t blk; >X@@ -371,7 +369,7 @@ >X blk = ino_to_fsba(&disk->d_fs, i); >X if (verbose) >X fprintf(stderr, "Inode %d blk %llu\r", i, (unsigned long long)blk); >X- if ((len = bread(disk, blk, inode, ilen)) < sizeof(struct ufs2_dinode)) { >X+ if ((len = bread(disk, blk, inode, ilen)) < (ssize_t) sizeof(struct ufs2_dinode)) { >X if (verbose > 1) >X fprintf(stderr, >X "\n%s: short read (%d) on inode %d blk %llu, skipping\n", >X@@ -379,8 +377,6 @@ >X continue; >X } >X if (i == 2 || (inode->di_mode & IFMT) == IFDIR) { >X- int len; >X- >X len = (inode->di_size + disk->d_fs.fs_fsize - 1) & >X disk->d_fs.fs_fmask; >X if ((dir = malloc(len)) == NULL) { >X@@ -473,7 +469,7 @@ >X inode = malloc(ilen); >X blk = ino_to_fsba(&disk->d_fs, num); >X DPRINTF((stderr, "%s: ino %d blk %llu\n", __FUNCTION__, num, (unsigned long long)blk)); >X- if (bread(disk, blk, inode, ilen) < sizeof(struct ufs2_dinode)) { >X+ if (bread(disk, blk, inode, ilen) < (ssize_t) sizeof(struct ufs2_dinode)) { >X fprintf(stderr, "short read on inode %d, skipping\n", num); >X free(inode); >X return; >X@@ -498,7 +494,7 @@ >X blk = ino_to_fsba(&disk->d_fs, i); >X if (verbose) >X fprintf(stderr, "Inode %d blk %llu\r", i, (unsigned long long)blk); >X- if (bread(disk, blk, inode, ilen) < sizeof(struct ufs2_dinode)) { >X+ if (bread(disk, blk, inode, ilen) < (ssize_t) sizeof(struct ufs2_dinode)) { >X fprintf(stderr, "short read on inode %d, skipping\n", i); >X continue; >X } >X@@ -537,7 +533,7 @@ >X ilen = roundup2(sizeof(struct ufs2_dinode), disk->d_bsize); >X inode = malloc(ilen); >X blk = ino_to_fsba(&disk->d_fs, inum); >X- if (bread(disk, blk, inode, ilen) < sizeof(struct ufs2_dinode)) { >X+ if (bread(disk, blk, inode, ilen) < (ssize_t) sizeof(struct ufs2_dinode)) { >X fprintf(stderr, "short read on inode %d, skipping\n", inum); >X free(inode); >X return; >END-of-ffs2recov/files/patch-cleanup >echo x - ffs2recov/Makefile >sed 's/^X//' >ffs2recov/Makefile << 'END-of-ffs2recov/Makefile' >X# New ports collection makefile for: ffs2recov >X# Date created: 20070204 >X# Whom: sten@blinkenlights.nl >X# >X# $FreeBSD$ >X# >X >XPORTNAME= ffs2recov >XPORTVERSION= 2007.02.04 >XCATEGORIES= sysutils >XMASTER_SITES= http://www.exit.com/Archives/FreeBSD/ >XDISTNAME= ffs2recov >X >XMAINTAINER= sten@blinkenlights.nl >XCOMMENT= A utility to recover UFS2 filesystems >X >XUSE_BZIP2= yes >X >XMAN8= ffs2recov.8 >XPLIST_FILES= sbin/ffs2recov >X >Xdo-install: >X ${INSTALL_PROGRAM} ${WRKSRC}/ffs2recov ${PREFIX}/sbin/. >X ${INSTALL_MAN} ${WRKSRC}/ffs2recov.8 ${MAN8PREFIX}/man/man8/. >X >X.include <bsd.port.mk> >END-of-ffs2recov/Makefile >echo x - ffs2recov/distinfo >sed 's/^X//' >ffs2recov/distinfo << 'END-of-ffs2recov/distinfo' >XSHA256 (ffs2recov.tar.bz2) = 5abdb2691ef9e4d30f67918fb51ff39e54aeec3045cc8cb073a2ec620875c693 >XMD5 (ffs2recov.tar.bz2) = 6034e3697c840a2599cde865f99b4c82 >XSIZE (ffs2recov.tar.bz2) = 14864 >END-of-ffs2recov/distinfo >echo x - ffs2recov/pkg-descr >sed 's/^X//' >ffs2recov/pkg-descr << 'END-of-ffs2recov/pkg-descr' >XThis is the UFS2 version of ffsrecov, heavily (and I do mean _heavily_) based >Xon John-Mark Gurney's program of the same name. It does basically the same >Xthing, only it's a little more resistant to crashes caused by bad pointers, >Xoffsets and the like, and it does a little more than his did. Don't contact >Xhim for problems with this program, it's definitely _my_ fault if it breaks. >X >XThis program is not ready for prime time. It has some shortfalls, it has a >Xbunch of new options that are mostly undocumented and the manpage could >Xstand to be rewritten. One _good_ thing is that it now uses the libufs >Xlibrary and is therefore not as dependent on carrying around low-level code. >X >XOn the other hand, it worked for me. Using this tool, I was able to recover >Xalmost all of a several-hundred-gigabyte file system that had been stomped >Xby a misconfigured RAID controller. (That's why I wrote the thing in the >Xfirst place, in fact.) With the right knowledge and a lot of patience, >Xit is possible to recover most or all of a trashed file system, at least if >Xit's not _too_ trashed. >X >XI'm releasing it under the Berkeley two-clause license in the hope that >Xsomeone with more time will pick it up, polish it and make something >Xa little more useful out of it. >X >XFrank Mayhar >Xfrank@exit.com >END-of-ffs2recov/pkg-descr >exit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 108766
: 75278