Andrew Tridgell [Sun, 10 May 1998 13:45:03 +0000 (13:45 +0000)]
changed the name of the temporary filename to include a leading . so
that it appears hidden while being transferred. This should be useful
when using rsync for mirroring so users accessing via ftp don't get
confused by the temporary files.
Andrew Tridgell [Sat, 9 May 1998 14:00:55 +0000 (14:00 +0000)]
configuration parsing and loading code for rsyncd. This is based
on the Samba config code, so you'll find that the config files will
be eerily familiar if you have ever worked with Samba.
Andrew Tridgell [Tue, 5 May 1998 11:23:51 +0000 (11:23 +0000)]
a leading / in a pattern now means "use a absolute path match". This
allows you to exclude root directories without excluding
subdirectories of the same name.
Andrew Tridgell [Fri, 17 Apr 1998 06:07:23 +0000 (06:07 +0000)]
revamped the -delete code. The last few bugs with it revealed that it
had a fundamental flaw in the way it detected duplicate deletion
scanning (which is very important when -R is used). I now store
inode/device numbers and use those to do the detection. This should be
a much less fragile method.
Andrew Tridgell [Thu, 9 Apr 1998 00:38:40 +0000 (00:38 +0000)]
fixed a bug in handling the -c option and non-regular files. It hadn't
turned up before because Linux had a bug in the handling of NULL
pointers to read()/write() on pipes, so I never noticed the bug in my
testing.
Andrew Tridgell [Wed, 1 Apr 1998 05:20:19 +0000 (05:20 +0000)]
fixed a string termination bug in the uidlist handling code. I've also
added a read_sbuf() routine that fixes this kind of bug generically to
avoid similar problems in future.
Andrew Tridgell [Thu, 26 Mar 1998 04:18:47 +0000 (04:18 +0000)]
- added an internal io_error flag. Whenever an io error occurs (such
as not being able to open a directory) this flag is set and propogated
to the other end. When this flag is set the --delete code is
disabled. This prevents the problem that io or permission errors could
cause files to be incorrectly deleted on the destination.
- added a --timeout option. This allows you to set an IO timeout in
seconds. If no io occurs in that time then rsync exits with a timeout
error.
Andrew Tridgell [Thu, 26 Mar 1998 00:32:51 +0000 (00:32 +0000)]
if rsync fails to update the group of a file but nothing else then
don't report a problem. On most OSes non-root users can't change the
group of a file.
Andrew Tridgell [Thu, 26 Mar 1998 00:11:50 +0000 (00:11 +0000)]
when using -x to stop at filesystem boundaries, include the mount
points but not their contents.
I did this by calling stat() on the directory above the current
directory and checking to see if it has the correct st_dev. Hopefully
this will work for most systems.
Note that the permissions and ownership on the mount point cannot be
copied correctly as they are unavailable while the filesystem is
mounted. Instead rsync will set the permissions and ownership to those
of the root directory of the mounted filesystem (ie. the apparent
permissions/ownership of the directory)
Andrew Tridgell [Wed, 25 Mar 1998 11:08:32 +0000 (11:08 +0000)]
- on systems (such as intel linux) where off_t is 32 bits but "long long"
is 64 bits use long long to get the totals right when transferring
more than 2^32 bytes of data.
- use inline on flist_up if the compiler supports it
Andrew Tridgell [Wed, 25 Mar 1998 06:05:47 +0000 (06:05 +0000)]
added a --force option.
This options tells rsync to delete directories even if they are not
empty. This applies to both the --delete option and to cases where
rsync tries to copy a normal file but the destination contains a
directory of the same name. Normally rsync will refuse to do a
recursive directory deletion in such cases, by using --force the
recursive deletion will be done.
Andrew Tridgell [Mon, 23 Mar 1998 12:52:57 +0000 (12:52 +0000)]
finished 64 bit file offset support. Hopefully rsync can now transfer
files up to 2^64 bytes in size. Now I just need to find enough disk
space to test this :-)
The 64 bit offset code only works if off_t is 64 bits (or bigger!) on
both ends of the link. If one end tries to send a file greater than
2^31 in size and the other end doesn't support it then rsync will
abort.
This commit also cleans up some static declarations so they are in a
unitinitialised segment to save load time.
Andrew Tridgell [Mon, 23 Mar 1998 03:45:02 +0000 (03:45 +0000)]
a large change to make rsync much more memory efficient. This is done
in 3 ways:
1) the realloc is done on a list of pointers, not a list of structures
2) only the basename of the file is now kept in the file struct an a
util function f_name() is now used to access the full name when
required.
3) pointers to directory names are re-used
hopefully I haven't broken anything. This will need lots of testing.