static uint32 rdev_major;
static uid_t uid;
static gid_t gid;
- static char *user_name, *group_name;
+ static const char *user_name, *group_name;
static char lastname[MAXPATHLEN];
char fname[MAXPATHLEN];
int first_hlink_ndx = -1;
/* Initialize starting value of xflags. */
if (protocol_version >= 30 && S_ISDIR(file->mode)) {
+ dir_count++;
if (file->flags & FLAG_CONTENT_DIR)
xflags = file->flags & FLAG_TOP_DIR;
else if (file->flags & FLAG_IMPLIED_DIR)
flist_expand(flist, 1);
flist->files[flist->used++] = file;
if (f >= 0) {
- if (S_ISDIR(file->mode))
- dir_count++;
send_file_entry(f, file, flist->used - 1, flist->ndx_start);
#ifdef SUPPORT_ACLS
if (preserve_acls && !S_ISLNK(file->mode)) {
} else if (!len || fbuf[len - 1] == '/') {
if (len == 2 && fbuf[0] == '.') {
/* Turn "./" into just "." rather than "./." */
- fbuf[1] = '\0';
+ fbuf[--len] = '\0';
} else {
if (len + 1 >= MAXPATHLEN)
overflow_exit("send_file_list");
file = send_file_name(f, flist, fbuf, &st,
top_flags, ALL_FILTERS);
if (inc_recurse) {
- if (name_type == DOT_NAME) {
+ if (name_type == DOT_NAME && file) {
if (send_dir_depth < 0) {
send_dir_depth = 0;
change_local_filter_dir(fbuf, len, send_dir_depth);