Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Aug 2009 09:34:00 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r196305 - head/cddl/contrib/opensolaris/lib/libzfs/common
Message-ID:  <200908170934.n7H9Y0SV057325@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pjd
Date: Mon Aug 17 09:34:00 2009
New Revision: 196305
URL: http://svn.freebsd.org/changeset/base/196305

Log:
  Fix receive when dataset has no / in its name.
  
  Submitted by:	James R. Van Artsdalen <james-freebsd-current@jrv.org>
  Approved by:	re (kib)

Modified:
  head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c

Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c	Mon Aug 17 09:30:31 2009	(r196304)
+++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c	Mon Aug 17 09:34:00 2009	(r196305)
@@ -1126,7 +1126,7 @@ again:
 		uint64_t originguid = 0;
 		uint64_t stream_originguid = 0;
 		uint64_t parent_fromsnap_guid, stream_parent_fromsnap_guid;
-		char *fsname, *stream_fsname;
+		char *fsname, *stream_fsname, *p1, *p2;
 
 		nextfselem = nvlist_next_nvpair(local_nv, fselem);
 
@@ -1295,10 +1295,11 @@ again:
 		    "parentfromsnap", &stream_parent_fromsnap_guid));
 
 		/* check for rename */
+		p1 = strrchr(fsname, '/');
+		p2 = strrchr(stream_fsname, '/');
 		if ((stream_parent_fromsnap_guid != 0 &&
 		    stream_parent_fromsnap_guid != parent_fromsnap_guid) ||
-		    strcmp(strrchr(fsname, '/'),
-		    strrchr(stream_fsname, '/')) != 0) {
+		    (p1 != NULL && p2 != NULL && strcmp (p1, p2) != 0)) {
 			nvlist_t *parent;
 			char tryname[ZFS_MAXNAMELEN];
 
@@ -1317,7 +1318,7 @@ again:
 				VERIFY(0 == nvlist_lookup_string(parent, "name",
 				    &pname));
 				(void) snprintf(tryname, sizeof (tryname),
-				    "%s%s", pname, strrchr(stream_fsname, '/'));
+				    "%s%s", pname, p2 != NULL ? p2 : "");
 			} else {
 				tryname[0] = '\0';
 				if (flags.verbose) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908170934.n7H9Y0SV057325>