cpdup - Multiple additions, fixes, and one removal
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 3 Dec 2009 20:55:24 +0000 (12:55 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 3 Dec 2009 20:55:24 +0000 (12:55 -0800)
commit293141b7083f343cbec98a068441d2af3a93bb89
tree1bdeaa1eed4b8bde9b25dc20c2a49120e2546412
parenta89ea3ef9d42ca2644f2676d6b335e360a252cb9
cpdup - Multiple additions, fixes, and one removal

* Make -x/-X (cpignore) work with remote sources.

* Add Makefile hack for _ST_FLAGS_PRESENT_ on FreeBSD.

* Suppress "Handshaked with <host>" and "Not running as root"
  messages when the -q option was specified.

* Mount points are now skipped completely.  (Before this,
  the directories and .cpignore inside them were still read.)

* Extract scanning directories (src and dst) from DoCopy() into
  a function ScanDir(), and use ScanDir() for both src and dst.

* Remove threads support.  It never worked very well and is
  getting in the way of new development.  The intention is to
  develop a more efficient pipelined algorithm in the future
  which does not require threading the program.

* Use getopt(3) instead of non-standard parser, making sure
  that all options still work exactly as documented in the
  manual page.

* Use fnmatch(3) instead of WildCmp(), adding support for
  bracket expressions (e.g. [xyz0-9]) and escaping (e.g. foo\*).
  I also suspect that fnmatch() is more efficient.

* Use the same syntax for remote paths as scp(1), so local paths
  that contain colons can be specified (e.g. "./foo:bar");
  extract that code into its own function SplitRemote().

* Add protocol commands hc_geteuid() and hc_getgroups().
  Use them to properly check permissions for various operations
  that would require root privileges on the target machine.

* Bugfix:  If a symlink already existed on the target but the
  owner/group didn't match, cpdup missed to update it.
  Added a call to hc_lchown() to fix that, if privileges allow.

* Bugfix:  The dispatch[] array wasn't initialized, so the slave
  crashed upon an unknown command instead of calling rc_badop().

* Bump protocol version to 3 in order to be able to maintain
  backwards compatibility with older clients.

* Bump utility version to 1.16.

* Make the source compile with WARNS=6.
  It still doesn't pass -ansi -pedantic, though.  :-)

* Document -j0, -k and -K in usage message (misc.c).

* Update the manual page, fix mdoc markup and various details.

* Add "ssh security tips" section to the BACKUPS text file.

Submitted-by: Oliver Fromme <olli@fromme.com>
bin/cpdup/BACKUPS
bin/cpdup/Makefile
bin/cpdup/PORTING
bin/cpdup/cpdup.1
bin/cpdup/cpdup.c
bin/cpdup/cpdup.h
bin/cpdup/hclink.c
bin/cpdup/hclink.h
bin/cpdup/hcproto.c
bin/cpdup/hcproto.h
bin/cpdup/misc.c