On Sat, 1 Aug 2020, Christian Weisgerber wrote:

Public service announcement: The original BSD repository can be
browsed here (converted from SCCS):
https://svnweb.freebsd.org/csrg/

Wanna know what those hippies at Berkeley really did?
You can look it up.

Thanks for the nice repo with the commentaries!

Here is the code for cp:

https://svnweb.freebsd.org/csrg/bin/cp/cp.c?revision=69112&view=markup
https://svnweb.freebsd.org/csrg/bin/cp/utils.c?revision=66606&view=markup

A challenge: where does the code distinguish src from src/ ?

Indeed it behaves like rsync, but we read in the source something
that seems to contradict it:

/*
  * Cp has two distinct cases:
  *
  * cp [-R] source target
  * cp [-R] source1 ... sourceN directory
  *
  * In both cases, source can be either a file or a directory.
  *
  * In (1), the target becomes a copy of the source. That is, if the
  * source is a file, the target will be a file, and likewise for
  * directories.
  *
  * In (2), the real target is not directory, but "directory/source".
  */

Was it a bug?

BTW, I do not remember this behaviour in SunOS, but also not in
FreeBSD when I used it many years ago, although it was there.

Rodrigo

Reply via email to