Fixed the test to ensure that we don't send a flag-byte of 0 to the
[rsync/rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index c4459b1..eaa1b2d 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -441,19 +441,19 @@ void send_file_entry(struct file_struct *file, int f, unsigned short base_flags)
        if (l2 > 255)
                flags |= XMIT_LONG_NAME;
 
-       /* We must make sure we don't send a zero flagbyte or
+       /* We must make sure we don't send a zero flag-byte or
         * the other end will terminate the flist transfer. */
-       if (flags == 0 && !S_ISDIR(mode))
+       if (!(flags & 0xFF) && !S_ISDIR(mode))
                flags |= XMIT_TOP_DIR; /* NOTE: no meaning for non-dir */
        if (protocol_version >= 28) {
-               if ((flags & 0xFF00) || flags == 0) {
+               if ((flags & 0xFF00) || !(flags & 0xFF)) {
                        flags |= XMIT_EXTENDED_FLAGS;
                        write_byte(f, flags);
                        write_byte(f, flags >> 8);
                } else
                        write_byte(f, flags);
        } else {
-               if (flags == 0)
+               if (!(flags & 0xFF))
                        flags |= XMIT_LONG_NAME;
                write_byte(f, flags);
        }
@@ -725,7 +725,7 @@ struct file_struct *make_file(char *fname, struct string_area **ap,
        char sum[SUM_LENGTH];
        char *p;
        char thisname[MAXPATHLEN];
-       char linkbuf[MAXPATHLEN];
+       char linkname[MAXPATHLEN];
        unsigned short flags = 0;
 
        if (strlcpy(thisname, fname, sizeof thisname)
@@ -739,7 +739,7 @@ struct file_struct *make_file(char *fname, struct string_area **ap,
 
        memset(sum, 0, SUM_LENGTH);
 
-       if (readlink_stat(thisname, &st, linkbuf) != 0) {
+       if (readlink_stat(thisname, &st, linkname) != 0) {
                int save_errno = errno;
                if (errno == ENOENT && exclude_level != NO_EXCLUDES) {
                        /* either symlink pointing nowhere or file that
@@ -829,7 +829,7 @@ struct file_struct *make_file(char *fname, struct string_area **ap,
 
 #if SUPPORT_LINKS
        if (S_ISLNK(st.st_mode))
-               file->u.link = STRDUP(ap, linkbuf);
+               file->u.link = STRDUP(ap, linkname);
 #endif
 
        if (always_checksum && S_ISREG(st.st_mode)) {