* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003, 2004, 2005, 2006 Wayne Davison
+ * Copyright (C) 2003-2007 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|| stdout_format_has_i > 1 || (xname && *xname)) && !read_batch) {
if (protocol_version >= 29) {
if (ndx >= 0)
- write_ndx(sock_f_out, ndx + cur_flist->ndx_start);
+ write_ndx(sock_f_out, ndx);
write_shortint(sock_f_out, iflags);
if (iflags & ITEM_BASIS_TYPE_FOLLOWS)
write_byte(sock_f_out, fnamecmp_type);
static int phase = 0;
-/* Acts on cur_flist->file's ndx'th item, whose name is fname. If a dir,
+/* Acts on the indicated item in cur_flist whose name is fname. If a dir,
* make sure it exists, and has the right permissions/timestamp info. For
* all other non-regular files (symlinks, etc.) we create them here. For
* regular files that have changed, we try to find a basis file and then
- * start sending checksums.
+ * start sending checksums. The ndx is the file's unique index value.
*
* When fname is non-null, it must point to a MAXPATHLEN buffer!
*
return;
return_with_success:
if (!dry_run)
- send_msg_int(MSG_SUCCESS, ndx + cur_flist->ndx_start);
+ send_msg_int(MSG_SUCCESS, ndx);
return;
}
if (preserve_hard_links && F_IS_HLINKED(file))
file->flags |= FLAG_FILE_SENT;
#endif
- write_ndx(f_out, ndx + cur_flist->ndx_start);
+ write_ndx(f_out, ndx);
if (itemizing) {
int iflags = ITEM_TRANSFER;
if (always_checksum > 0)
flist = cur_flist;
cur_flist = flist_for_ndx(ndx);
- ndx -= cur_flist->ndx_start;
- file = cur_flist->files[ndx];
+ file = cur_flist->files[ndx - cur_flist->ndx_start];
if (solo_file)
strlcpy(fbuf, solo_file, sizeof fbuf);
else
strlcpy(fbuf, solo_file, sizeof fbuf);
else
f_name(file, fbuf);
- recv_generator(fbuf, file, i, itemizing, code, f_out);
+ recv_generator(fbuf, file, i + cur_flist->ndx_start,
+ itemizing, code, f_out);
/* We need to ensure that any dirs we create have
* writeable permissions during the time we are putting
}
#endif
- check_for_finished_files(itemizing, code, inc_recurse);
+ check_for_finished_files(itemizing, code, 0);
if (allowed_lull && !(i % lull_mod))
maybe_send_keepalive();