* Stat either a symlink or its referent, depending on the settings of
* copy_links, copy_unsafe_links, etc.
*
- * @return -1 on error; or 0. If a symlink, then @p Linkbuf (of size
+ * @retval -1 on error
+ *
+ * @retval 0 for success
+ *
+ * @post If @p path is a symlink, then @p linkbuf (of size @c
* MAXPATHLEN) contains the symlink target.
+ *
+ * @post @p buffer contains information about the link or the
+ * referrent as appropriate, if they exist.
**/
int readlink_stat(const char *path, STRUCT_STAT * buffer, char *linkbuf)
{
return;
}
+ io_write_phase = "send_file_entry";
+
fname = f_name(file);
flags = base_flags;
strlcpy(lastname, fname, MAXPATHLEN);
lastname[MAXPATHLEN - 1] = 0;
+
+ io_write_phase = "unknown";
}
(flags & SAME_GID) ? last_gid : (gid_t) read_int(f);
if (preserve_devices && IS_DEVICE(file->mode))
file->rdev =
- (flags & SAME_RDEV) ? last_rdev : (dev_t) read_int(f);
+ (flags & SAME_RDEV) ? last_rdev : (DEV64_T) read_int(f);
if (preserve_links && S_ISLNK(file->mode)) {
int l = read_int(f);
}
-/*
+/**
*
- * I *think* f==-1 means that the list should just be built in memory
- * and not transmitted. But who can tell? -- mbp
- */
+ * I <b>think</b> f==-1 means that the list should just be built in
+ * memory and not transmitted. But who can tell? -- mbp
+ **/
struct file_list *send_file_list(int f, int argc, char *argv[])
{
int i, l;
{
int low = 0, high = flist->count - 1;
- if (flist->count <= 0)
+ while (high >= 0 && !flist->files[high]->basename) high--;
+
+ if (high < 0)
return -1;
while (low != high) {