X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/6e5b682273436decb233e1ce83a923364c7eb25d..e34ad4e925293ff222bb4fe47b010153fa9f30ab:/flist.c diff --git a/flist.c b/flist.c index 5e5fe64e..061d1be6 100644 --- a/flist.c +++ b/flist.c @@ -65,6 +65,7 @@ extern int protocol_version; extern int sanitize_paths; extern int munge_symlinks; extern int need_unsorted_flist; +extern int sender_symlink_iconv; extern int output_needs_newline; extern int sender_keeps_checksum; extern int unsort_ndx; @@ -838,9 +839,9 @@ static struct file_struct *recv_file_entry(struct file_list *flist, } #ifdef ICONV_OPTION /* We don't know how much extra room we need to convert - * the as-yet-unread symlink name when converting it, + * the as-yet-unread symlink data when converting it, * so let's hope that a double-size buffer is plenty. */ - if (ic_recv != (iconv_t)-1) + if (sender_symlink_iconv) linkname_len = linkname_len * 2 + 1; #endif if (munge_symlinks) @@ -984,13 +985,13 @@ static struct file_struct *recv_file_entry(struct file_list *flist, linkname_len -= SYMLINK_PREFIX_LEN; } #ifdef ICONV_OPTION - if (ic_recv != (iconv_t)-1) { + if (sender_symlink_iconv) { xbuf outbuf, inbuf; alloc_len = linkname_len; linkname_len /= 2; /* (linkname_len-1) / 2 for odd values. */ - /* Read the symlink name into the end of our double-sized + /* Read the symlink data into the end of our double-sized * buffer and then convert it into the right spot. */ INIT_XBUF(inbuf, bp + alloc_len - linkname_len, linkname_len - 1, (size_t)-1); @@ -1000,7 +1001,7 @@ static struct file_struct *recv_file_entry(struct file_list *flist, if (iconvbufs(ic_recv, &inbuf, &outbuf, 0) < 0) { io_error |= IOERR_GENERAL; rprintf(FERROR_XFER, - "[%s] cannot convert symlink name for: %s (%s)\n", + "[%s] cannot convert symlink data for: %s (%s)\n", who_am_i(), full_fname(thisname), strerror(errno)); bp = (char*)file->basename; *bp++ = '\0'; @@ -1422,14 +1423,14 @@ static struct file_struct *send_file_name(int f, struct file_list *flist, fbuf[outbuf.len] = '\0'; #ifdef SUPPORT_LINKS - if (symlink_len) { + if (symlink_len && sender_symlink_iconv) { INIT_XBUF(inbuf, (char*)symlink_name, symlink_len, (size_t)-1); INIT_CONST_XBUF(outbuf, symlink_buf); if (iconvbufs(ic_send, &inbuf, &outbuf, 0) < 0) { io_error |= IOERR_GENERAL; f_name(file, fbuf); rprintf(FERROR_XFER, - "[%s] cannot convert symlink name for: %s (%s)\n", + "[%s] cannot convert symlink data for: %s (%s)\n", who_am_i(), full_fname(fbuf), strerror(errno)); return NULL; }