Hit this today while doing some tests. symlink_read() needs to use just the filename and not the full path because fts_read(3) does chdir internally.
Without this I got: openrsync: error: ./obj/openrsync.1: readlink: No such file or directory openrsync: error: symlink_read openrsync: error: flist_gen_dirent openrsync: error: flist_gen openrsync: error: rsync_sender -- :wq Claudio Index: flist.c =================================================================== RCS file: /cvs/src/usr.bin/rsync/flist.c,v retrieving revision 1.32 diff -u -p -r1.32 flist.c --- flist.c 30 Jun 2021 13:10:04 -0000 1.32 +++ flist.c 2 Jul 2021 13:14:01 -0000 @@ -972,7 +972,7 @@ flist_gen_dirent(struct sess *sess, char /* Optionally copy link information. */ if (S_ISLNK(ent->fts_statp->st_mode)) { - f->link = symlink_read(f->path); + f->link = symlink_read(ent->fts_name); if (f->link == NULL) { ERRX1("symlink_read"); goto out;