Refer to the symlink's contents as "symlink data", not "symlink name".
[rsync/rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index 5e5fe64..061d1be 100644 (file)
--- 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;
                                }