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-curr...@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) {
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to