The code can now set cur_flist to NULL sooner than it used to, so the
[rsync/rsync.git] / rsync.c
diff --git a/rsync.c b/rsync.c
index a789ebd..cba5441 100644 (file)
--- a/rsync.c
+++ b/rsync.c
@@ -45,13 +45,12 @@ extern int allow_8bit_chars;
 extern int protocol_version;
 extern int preserve_uid;
 extern int preserve_gid;
-extern int incremental;
+extern int inc_recurse;
 extern int inplace;
 extern int flist_eof;
 extern int keep_dirlinks;
 extern int make_backups;
 extern mode_t orig_umask;
-extern struct stats stats;
 extern struct file_list *cur_flist, *first_flist, *dir_flist;
 extern struct chmod_mode_struct *daemon_chmod_modes;
 
@@ -105,13 +104,13 @@ int read_ndx_and_attrs(int f_in, int f_out, int *iflag_ptr,
 
   read_loop:
        while (1) {
-               ndx = read_int(f_in);
+               ndx = read_ndx(f_in);
 
                if (ndx >= 0)
                        break;
                if (ndx == NDX_DONE)
                        return ndx;
-               if (!incremental || am_sender)
+               if (!inc_recurse || am_sender)
                        goto invalid_ndx;
                if (ndx == NDX_FLIST_EOF) {
                        flist_eof = 1;
@@ -408,7 +407,7 @@ struct file_list *flist_for_ndx(int ndx)
 {
        struct file_list *flist = cur_flist;
 
-       if (!flist)
+       if (!flist && !(flist = first_flist))
                return NULL;
 
        while (ndx < flist->ndx_start) {