From fa8f36eb6da62c4b439d7974447c598dedd19460 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 5 Jul 2005 06:20:07 +0000 Subject: [PATCH 1/1] Add support for mirroring symlinks and hardlinks. --- sbin/jscan/dump_mirror.c | 11 ++++++++++- sbin/jscan/jattr.h | 4 +++- sbin/jscan/subs.c | 4 +++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/sbin/jscan/dump_mirror.c b/sbin/jscan/dump_mirror.c index 469d67f9a1..59f1a1885a 100644 --- a/sbin/jscan/dump_mirror.c +++ b/sbin/jscan/dump_mirror.c @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sbin/jscan/dump_mirror.c,v 1.3 2005/07/05 04:08:07 dillon Exp $ + * $DragonFly: src/sbin/jscan/dump_mirror.c,v 1.4 2005/07/05 06:20:07 dillon Exp $ */ #include "jscan.h" @@ -304,6 +304,9 @@ dump_mirror_payload(int16_t rectype, struct jstream *js, off_t off, case JLEAF_ABORT: break; case JLEAF_SYMLINKDATA: + jattr->symlinkdata = dupdatastr(buf, recsize); + jattr->symlinklen = recsize; + break; case JLEAF_FILEDATA: if ((data = jattr->last_data) == NULL) { jattr->data.off = off; @@ -459,8 +462,14 @@ again: case JTYPE_MKNOD: break; case JTYPE_LINK: + if (jattr->pathref && jattr->path1) { + link(jattr->pathref, jattr->path1); + } break; case JTYPE_SYMLINK: + if (jattr->symlinkdata && jattr->path1) { + symlink(jattr->symlinkdata, jattr->path1); + } break; case JTYPE_WHITEOUT: break; diff --git a/sbin/jscan/jattr.h b/sbin/jscan/jattr.h index f824915e7c..6434f53885 100644 --- a/sbin/jscan/jattr.h +++ b/sbin/jscan/jattr.h @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sbin/jscan/jattr.h,v 1.2 2005/07/05 02:38:34 dillon Exp $ + * $DragonFly: src/sbin/jscan/jattr.h,v 1.3 2005/07/05 06:20:07 dillon Exp $ */ struct jattr { @@ -49,6 +49,8 @@ struct jattr { char *comm; char *attrname; char *pathref; + char *symlinkdata; + int symlinklen; struct jattr_data { struct jattr_data *next; off_t off; diff --git a/sbin/jscan/subs.c b/sbin/jscan/subs.c index 00fb3f6cac..48acbf6ece 100644 --- a/sbin/jscan/subs.c +++ b/sbin/jscan/subs.c @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sbin/jscan/subs.c,v 1.4 2005/07/05 02:38:34 dillon Exp $ + * $DragonFly: src/sbin/jscan/subs.c,v 1.5 2005/07/05 06:20:07 dillon Exp $ */ #include "jscan.h" @@ -250,6 +250,8 @@ jattr_reset(struct jattr *jattr) free(jattr->attrname); if (jattr->pathref) free(jattr->pathref); + if (jattr->symlinkdata) + free(jattr->symlinkdata); while ((data = jattr->data.next) != NULL) { jattr->data.next = data->next; free(data); -- 2.41.0