Index: head/sysutils/ufs_copy/Makefile =================================================================== --- head/sysutils/ufs_copy/Makefile (revision 446561) +++ head/sysutils/ufs_copy/Makefile (revision 446562) @@ -1,26 +1,28 @@ # Created by: MANTANI Nobutaka # $FreeBSD$ PORTNAME= ufs_copy PORTVERSION= 20060921 PORTREVISION= 2 CATEGORIES= sysutils -MASTER_SITES= http://people.freebsd.org/~simokawa/ufs/ +MASTER_SITES= https://people.freebsd.org/~simokawa/ufs/ DISTNAME= ufs-${PORTVERSION} MAINTAINER= nobutaka@FreeBSD.org COMMENT= Fast copy utility for UFS filesystem +LICENSE= BSD4CLAUSE + USES= uidfix WRKSRC= ${WRKDIR}/ufs MAKE_ARGS= BINDIR=${PREFIX}/sbin -PORTDOCS= README +PORTDOCS= README -OPTIONS_DEFINE= DOCS +OPTIONS_DEFINE= DOCS -post-install: - ${MKDIR} ${STAGEDIR}${DOCSDIR} +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/${PORTDOCS} ${STAGEDIR}${DOCSDIR} .include Index: head/sysutils/ufs_copy/files/patch-ufs_copy.c =================================================================== --- head/sysutils/ufs_copy/files/patch-ufs_copy.c (revision 446561) +++ head/sysutils/ufs_copy/files/patch-ufs_copy.c (revision 446562) @@ -1,70 +1,68 @@ ---- ufs_copy.c.orig 2006-09-21 15:28:09.000000000 +0900 -+++ ufs_copy.c 2015-08-17 11:45:07.797947000 +0900 -@@ -111,9 +111,11 @@ +--- ufs_copy.c.orig 2006-09-21 06:28:09 UTC ++++ ufs_copy.c +@@ -111,9 +111,11 @@ int main(int argc, char *argv[]) { struct fstab *fs; - int ch, eval=0; + int ch, eval=0, md; char *snapshot = NULL; - char *src, *dst; + char *src, *dst, *snap = NULL; + char mddev[256]; + FILE *readp; #ifdef USEMMAP while ((ch = getopt(argc, argv, "aBb:ceMms:v")) != -1) -@@ -174,6 +176,21 @@ +@@ -174,6 +176,21 @@ main(int argc, char *argv[]) eval = system(buf); if (eval) errx(eval, "mksnap_ffs failed"); + + snprintf(buf, sizeof(buf), + "/sbin/mdconfig -a -n -t vnode -f %s", src); + fprintf(stderr, "%s\n", buf); + readp = popen(buf, "r"); + if (readp == NULL) + errx(eval, "mdconfig failed"); + eval = fscanf(readp, "%d", &md); + if (eval != 1) + errx(eval, "mdconfig failed"); + pclose(readp); + snprintf(mddev, sizeof(mddev), "/dev/md%d", md); + snap = src; + src = mddev; + fprintf(stderr, "attached %s as memory disk %s\n", snap, mddev); } if ((fs = getfsfile(src)) == NULL) { -@@ -188,9 +205,19 @@ +@@ -188,9 +205,19 @@ main(int argc, char *argv[]) } if (snapshot) { - fprintf(stderr, "removing snapshot file %s ... ", src); + char buf[1024]; + + snprintf(buf, sizeof(buf), + "/sbin/mdconfig -d -u %d", md); + fprintf(stderr, "%s\n", buf); + eval = system(buf); + if (eval) + errx(eval, "mdconfig failed"); + fprintf(stderr, "detached memory disk %s\n", mddev); + + fprintf(stderr, "removing snapshot file %s ... ", snap); fflush(stderr); - if (unlink(src) == 0) + if (unlink(snap) == 0) fprintf(stderr, "done\n"); else fprintf(stderr, "failed\n"); -@@ -262,6 +289,9 @@ +@@ -262,6 +289,7 @@ copy_ufs(const char *src_path, const cha } } bcopy(&src, &dst, sizeof(dst)); -+#if __FreeBSD_version >= 900011 + dst.d_sbcsum = NULL; -+#endif dst.d_name = dst_path; dst.d_fd = open(dst_path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR ); if (dst.d_fd < 0) { Index: head/sysutils/ufs_copy/pkg-descr =================================================================== --- head/sysutils/ufs_copy/pkg-descr (revision 446561) +++ head/sysutils/ufs_copy/pkg-descr (revision 446562) @@ -1,5 +1,5 @@ The ufs_copy copies a UFS filesystem image like dd(1). It doesn't copy free blocks for speed and it generates a sparse destination file for saving space. -WWW: http://people.freebsd.org/~simokawa/ufs/ +WWW: https://people.freebsd.org/~simokawa/ufs/