rsync typically configures and compiles very cleanly. This is an FYI for anyone that may like to tidy up any valid issues before the release of 3.0.0. FreeBSD RELENG_4 untar 3.0.0pre10 ./configure yields these arguments gcc -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt -c <.c> -o <.o> make rsync.c: In function `read_ndx_and_attrs': rsync.c:213: warning: `flist' might be used uninitialized in this function rsync.c: In function `set_file_attrs': rsync.c:343: warning: unused parameter `fnamecmp' generator.c: In function `delete_item': generator.c:212: warning: `desc' might be used uninitialized in this function generator.c: In function `unchanged_attrs': generator.c:555: warning: unused parameter `fname' generator.c: In function `itemize': generator.c:597: warning: unused parameter `fnamecmp' generator.c: In function `try_dests_non': generator.c:1021: warning: `type' might be used uninitialized in this function sender.c: In function `write_ndx_and_attrs': sender.c:150: warning: unused parameter `fname' sender.c:150: warning: unused parameter `file' io.c: In function `mplex_write': io.c:468: warning: unused parameter `convert' uidlist.c: In function `match_uid': uidlist.c:210: warning: comparison between signed and unsigned uidlist.c: In function `match_gid': uidlist.c:222: warning: comparison between signed and unsigned uidlist.c:226: warning: comparison between signed and unsigned uidlist.c: In function `add_uid': uidlist.c:249: warning: comparison between signed and unsigned uidlist.c: In function `add_gid': uidlist.c:267: warning: comparison between signed and unsigned
The "might be used uninitialized" warnings are because your gcc is not understanding that exit_cleanup() does not return. If your gcc is <= 2, then the NORETURN modifier won't be defined, and you'd see those warnings. If you want to verify this, it might help to tweak the following define in rsync.h to add an exit(42) call at the end (separated by a comma, not a semicolon): #define exit_cleanup(code) _exit_cleanup(code, __FILE__, __LINE__), exit(42) The unused parameter warnings are because you don't have ACL and xattr support enabled. I'm not inclined to try to silence those at the moment. (I might do so eventually.) The "comparison between signed and unsigned" warnings have already been fixed in the dev version (in the git repository and nighty tar files). Thanks for testing!
As I alluded to in my prior comment, I did some work to silence the "unused parameter" warnings. They should be gone on any compiler that supports the -Wno-unused-parameter option (i.e. modern gcc versions). That flag is added anytime one of the larger features is disabled (ACLs, xattrs, iconv), but is not added when doing a fullly-enabled build. So, the only remaining warnings should be the "might be used uninitialized" warnings, and those would also go away with a more modern gcc.