X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/2f098547ea2415971ac7b38d90246f53116d041f..f7632fc60d69c8dabed600ede87f0b91319a3b7f:/flist.c diff --git a/flist.c b/flist.c index f5c69b9a..664f26e4 100644 --- a/flist.c +++ b/flist.c @@ -51,6 +51,36 @@ static struct exclude_struct **local_exclude_list; static void clean_flist(struct file_list *flist, int strip_root); + +static void list_file_entry(struct file_struct *f) +{ + char perms[11] = "----------"; + char *perm_map = "rwxrwxrwx"; + int i; + + for (i=0;i<9;i++) { + if (f->mode & (1<mode)) perms[0] = 'l'; + if (S_ISDIR(f->mode)) perms[0] = 'd'; + if (S_ISBLK(f->mode)) perms[0] = 'b'; + if (S_ISCHR(f->mode)) perms[0] = 'c'; + if (S_ISSOCK(f->mode)) perms[0] = 's'; + if (S_ISFIFO(f->mode)) perms[0] = 'p'; + + if (preserve_links && S_ISLNK(f->mode)) { + rprintf(FINFO,"%s %11.0f %s %s -> %s\n", + perms, + (double)f->length, timestring(f->modtime), + f_name(f), f->link); + } else { + rprintf(FINFO,"%s %11.0f %s %s\n", + perms, + (double)f->length, timestring(f->modtime), f_name(f)); + } +} + + int link_stat(const char *Path, STRUCT_STAT *Buffer) { #if SUPPORT_LINKS @@ -699,6 +729,7 @@ struct file_list *recv_file_list(int f) struct file_list *flist; unsigned char flags; int64 start_read; + extern int list_only; if (verbose && recurse && !am_server) { rprintf(FINFO,"receiving file list ... "); @@ -765,6 +796,14 @@ struct file_list *recv_file_list(int f) io_error |= read_int(f); } + if (list_only) { + int i; + for (i=0;icount;i++) { + list_file_entry(flist->files[i]); + } + } + + if (verbose > 2) rprintf(FINFO,"recv_file_list done\n");