diff -u -r --new-file --exclude=CVS rsync-2.3.0/cleanup.c rsync-2.3.1/cleanup.c --- rsync-2.3.0/cleanup.c Thu Nov 26 03:24:39 1998 +++ rsync-2.3.1/cleanup.c Wed Apr 7 01:04:16 1999 @@ -30,10 +30,13 @@ static int cleanup_fd1, cleanup_fd2; static struct map_struct *cleanup_buf; static int cleanup_pid = 0; +extern int io_error; void _exit_cleanup(int code, const char *file, int line) { extern int keep_partial; + + if (code == 0 && io_error) code = RERR_FILEIO; signal(SIGUSR1, SIG_IGN); diff -u -r --new-file --exclude=CVS rsync-2.3.0/clientserver.c rsync-2.3.1/clientserver.c --- rsync-2.3.0/clientserver.c Tue Mar 16 08:23:11 1999 +++ rsync-2.3.1/clientserver.c Wed Apr 7 01:04:16 1999 @@ -417,6 +417,7 @@ int daemon_main(void) { extern char *config_file; + extern int orig_umask; char *pid_file; if (is_a_socket(STDIN_FILENO)) { @@ -447,16 +448,19 @@ rprintf(FINFO,"rsyncd version %s starting\n",VERSION); if (((pid_file = lp_pid_file()) != NULL) && (*pid_file != '\0')) { - FILE *f; + char pidbuf[16]; + int fd; int pid = (int) getpid(); cleanup_set_pid(pid); - if ((f = fopen(lp_pid_file(), "w")) == NULL) { + if ((fd = do_open(lp_pid_file(), O_WRONLY|O_CREAT|O_TRUNC, + 0666 & ~orig_umask)) == -1) { cleanup_set_pid(0); fprintf(stderr,"failed to create pid file %s\n", pid_file); exit_cleanup(RERR_FILEIO); } - fprintf(f, "%d\n", pid); - fclose(f); + slprintf(pidbuf, sizeof(pidbuf), "%d\n", pid); + write(fd, pidbuf, strlen(pidbuf)); + close(fd); } start_accept_loop(rsync_port, start_daemon); diff -u -r --new-file --exclude=CVS rsync-2.3.0/cvs.log rsync-2.3.1/cvs.log --- rsync-2.3.0/cvs.log Tue Mar 16 08:23:36 1999 +++ rsync-2.3.1/cvs.log Wed Apr 7 01:09:36 1999 @@ -9213,3 +9213,261 @@ Log Message: preparing for release of 2.3.0 + +**************************************** +Date: Wednesday March 24, 1999 @ 9:20 +Author: dwd + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv6765 + +Modified Files: + receiver.c +Log Message: +Fix bug with --compare-dest option where missing parent directories in the +target destination were not getting created. There was a case in +receiver.c to do that but it was only getting invoked when the -R option is +specified, although I don't know why it was limited to that. + +It's too bad I didn't get a chance to more fully test the use of +--compare-dest by my nsbd program before releasing rsync 2.3.0. I'll +probably need to put a workaround in nsbd too until the next release +of rsync. + + + +**************************************** +Date: Thursday March 25, 1999 @ 3:39 +Author: dwd + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv4244 + +Modified Files: + clientserver.c +Log Message: +The "pid file" was getting created mode 666, not applying the umask +because at that point in the program the umask is set to 0. Now creating +the file with mode (666 & ~orig_umask). + + + +**************************************** +Date: Thursday March 25, 1999 @ 6:28 +Author: dwd + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv19895 + +Modified Files: + receiver.c +Log Message: +Backed out the change to create missing parent directories when using +--compare-dest. It was due to an incomplete analysis of the problem, +sorry. I left a comment in its place indicating that normally the +parent directories should already have been created. + +It turned out to actually be a bug in nsbd in which it was not always +including all the parent directories in the include list like it was +supposed to. The files themselves were still being sent but that was only +because my exclude_the_rest optimization was kicking in; if it weren't, +excluding the parent directories would have had the side effect of +excluding the files too. So it really had nothing to do with the +--compare-dest option after all, just with the requirement that if you use +--exclude '*' you need to explicitly include all parent directories of +files you include. + + + +**************************************** +Date: Saturday April 3, 1999 @ 4:24 +Author: dwd + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv10325 + +Modified Files: + generator.c +Log Message: +Small bug fix for the --compare-dest option: when a file's contents +hadn't changed but its permissions had, the file wasn't copied but +its permissions were attempted to be set anyway. Made a change to +skip setting the permissions in that case. + + + +**************************************** +Date: Tuesday April 6, 1999 @ 20:27 +Author: tridge + +Update of /data/cvs/rsync/packaging/redhat/5.0 +In directory samba:/tmp/cvs-serv14971 + +Modified Files: + rsync.spec.tmpl +Log Message: +quote RPM_OPT_FLAGS +patch from racke@linuxia.de + + + +**************************************** +Date: Tuesday April 6, 1999 @ 20:56 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv25211 + +Modified Files: + receiver.c +Log Message: +fixed a nasty bug in the handling of "local_name" when setting the +permissions on directories after a transfer. + + + + + +**************************************** +Date: Tuesday April 6, 1999 @ 21:34 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv20997 + +Modified Files: + rsyncd.conf.5 rsyncd.conf.yo +Log Message: +fix the man page to reflect the fact that exclude options in +rsyncd.conf are not passed to the client and thus only affect the file +lists on the server. + + + + + +**************************************** +Date: Tuesday April 6, 1999 @ 21:52 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv24211 + +Modified Files: + rsync.yo +Log Message: +note in the man page that: + +1) rsync won't copy directories at all if recursion isn't selected +2) --delete won't do anything if recursion isn't selected + + + +**************************************** +Date: Tuesday April 6, 1999 @ 21:55 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv4022 + +Modified Files: + rsync.1 +Log Message: +rebuilt man page + + + +**************************************** +Date: Tuesday April 6, 1999 @ 22:28 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv8865 + +Modified Files: + main.c +Log Message: +don't abort the server side if the file list is empty (perhaps because +all files have been excluded). + + + + +**************************************** +Date: Tuesday April 6, 1999 @ 22:30 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv7473 + +Modified Files: + main.c +Log Message: +handle the case of an empty file list in get_local_name + + + + + +**************************************** +Date: Wednesday April 7, 1999 @ 0:17 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv10175 + +Removed Files: + md4.c md4.h +Log Message: +these aren't used any more + + + + + + +**************************************** +Date: Wednesday April 7, 1999 @ 0:52 +Author: tridge + +Update of /data/cvs/rsync +In directory samba:/tmp/cvs-serv4421 + +Modified Files: + cleanup.c +Log Message: +set the exit code to RERR_FILEIO is io_error is set when we exit. This +catches most sorts of io errors and ensures we report a error in our +exit status. + + + + + + + +**************************************** +Date: Wednesday April 7, 1999 @ 1:09 +Author: rsync-bu + +Update of /data/cvs/rsync +In directory samba:/data/people/rsync-bugs/rsync + +Modified Files: + version.h +Log Message: +preparing for release of 2.3.1 + + +**************************************** +Date: Wednesday April 7, 1999 @ 1:09 +Author: rsync-bu + +Update of /data/cvs/rsync/packaging/redhat/5.0 +In directory samba:/data/people/rsync-bugs/rsync/packaging/redhat/5.0 + +Modified Files: + rsync.spec +Log Message: +preparing for release of 2.3.1 + diff -u -r --new-file --exclude=CVS rsync-2.3.0/generator.c rsync-2.3.1/generator.c --- rsync-2.3.0/generator.c Tue Mar 16 08:23:11 1999 +++ rsync-2.3.1/generator.c Wed Apr 7 01:04:16 1999 @@ -317,7 +317,8 @@ } if (skip_file(fname, file, &st)) { - set_perms(fname,file,&st,1); + if (fnamecmp == fname) + set_perms(fname,file,&st,1); return; } diff -u -r --new-file --exclude=CVS rsync-2.3.0/main.c rsync-2.3.1/main.c --- rsync-2.3.0/main.c Tue Mar 16 08:23:11 1999 +++ rsync-2.3.1/main.c Wed Apr 7 01:04:16 1999 @@ -208,7 +208,7 @@ return name; } - if (flist->count == 1) + if (flist->count <= 1) return name; if (do_mkdir(name,0777 & ~orig_umask) != 0) { @@ -355,8 +355,8 @@ recv_exclude_list(f_in); flist = recv_file_list(f_in); - if (!flist || flist->count == 0) { - rprintf(FERROR,"server_recv: nothing to do\n"); + if (!flist) { + rprintf(FERROR,"server_recv: recv_file_list error\n"); exit_cleanup(RERR_FILESELECT); } diff -u -r --new-file --exclude=CVS rsync-2.3.0/md4.c rsync-2.3.1/md4.c --- rsync-2.3.0/md4.c Wed Nov 4 09:00:45 1998 +++ rsync-2.3.1/md4.c Thu Jan 1 10:00:00 1970 @@ -1,263 +0,0 @@ -/* - This code is from rfc1186. - - It has been modified to use the SIVAL() macro to make it - byte order and length independent, so we don't need the LOWBYTEFIRST define -*/ - - /* - ** ******************************************************************** - ** md4.c -- Implementation of MD4 Message Digest Algorithm ** - ** Updated: 2/16/90 by Ronald L. Rivest ** - ** (C) 1990 RSA Data Security, Inc. ** - ** ******************************************************************** - */ - - /* - ** To use MD4: - ** -- Include md4.h in your program - ** -- Declare an MDstruct MD to hold the state of the digest - ** computation. - ** -- Initialize MD using MDbegin(&MD) - ** -- For each full block (64 bytes) X you wish to process, call - ** MDupdate(&MD,X,512) - ** (512 is the number of bits in a full block.) - ** -- For the last block (less than 64 bytes) you wish to process, - ** MDupdate(&MD,X,n) - ** where n is the number of bits in the partial block. A partial - ** block terminates the computation, so every MD computation - ** should terminate by processing a partial block, even if it - ** has n = 0. - ** -- The message digest is available in MD.buffer[0] ... - ** MD.buffer[3]. (Least-significant byte of each word - ** should be output first.) - ** -- You can print out the digest using MDprint(&MD) - */ - -#define TRUE 1 -#define FALSE 0 - - /* Compile-time includes - */ - -#include "rsync.h" - - /* Compile-time declarations of MD4 "magic constants". - */ -#define I0 0x67452301 /* Initial values for MD buffer */ -#define I1 0xefcdab89 -#define I2 0x98badcfe -#define I3 0x10325476 -#define C2 013240474631 /* round 2 constant = sqrt(2) in octal */ -#define C3 015666365641 /* round 3 constant = sqrt(3) in octal */ - /* C2 and C3 are from Knuth, The Art of Programming, Volume 2 - ** (Seminumerical Algorithms), Second Edition (1981), Addison-Wesley. - ** Table 2, page 660. - */ - -#define fs1 3 /* round 1 shift amounts */ -#define fs2 7 -#define fs3 11 -#define fs4 19 -#define gs1 3 /* round 2 shift amounts */ -#define gs2 5 -#define gs3 9 -#define gs4 13 -#define hs1 3 /* round 3 shift amounts */ -#define hs2 9 -#define hs3 11 -#define hs4 15 - - /* Compile-time macro declarations for MD4. - ** Note: The "rot" operator uses the variable "tmp". - ** It assumes tmp is declared as unsigned int, so that the >> - ** operator will shift in zeros rather than extending the sign bit. - */ -#define f(X,Y,Z) ((X&Y) | ((~X)&Z)) -#define g(X,Y,Z) ((X&Y) | (X&Z) | (Y&Z)) -#define h(X,Y,Z) (X^Y^Z) -#define rot(X,S) (tmp=X,(tmp<>(32-S))) -#define ff(A,B,C,D,i,s) A = rot((A + f(B,C,D) + X[i]),s) -#define gg(A,B,C,D,i,s) A = rot((A + g(B,C,D) + X[i] + C2),s) -#define hh(A,B,C,D,i,s) A = rot((A + h(B,C,D) + X[i] + C3),s) - - /* MDbegin(MDp) - ** Initialize message digest buffer MDp. - ** This is a user-callable routine. - */ - void - MDbegin(MDp) - MDptr MDp; - { int i; - MDp->buffer[0] = I0; - MDp->buffer[1] = I1; - MDp->buffer[2] = I2; - MDp->buffer[3] = I3; - for (i=0;i<8;i++) MDp->count[i] = 0; - MDp->done = 0; - } - - /* MDreverse(X) - ** Reverse the byte-ordering of every int in X. - ** Assumes X is an array of 16 ints. - ** The macro revx reverses the byte-ordering of the next word of X. - */ -static void MDreverse(X) - unsigned int32 *X; - { register unsigned int32 t; - register unsigned int i; - - for(i = 0; i < 16; i++) { - t = X[i]; - SIVAL(X,i*4,t); - } - } - - /* MDblock(MDp,X) - ** Update message digest buffer MDp->buffer using 16-word data block X. - ** Assumes all 16 words of X are full of data. - ** Does not update MDp->count. - ** This routine is not user-callable. - */ - static void - MDblock(MDp,X) - MDptr MDp; - unsigned int32 *X; - { - register unsigned int32 tmp, A, B, C, D; - MDreverse(X); - A = MDp->buffer[0]; - B = MDp->buffer[1]; - C = MDp->buffer[2]; - D = MDp->buffer[3]; - /* Update the message digest buffer */ - ff(A , B , C , D , 0 , fs1); /* Round 1 */ - ff(D , A , B , C , 1 , fs2); - ff(C , D , A , B , 2 , fs3); - ff(B , C , D , A , 3 , fs4); - ff(A , B , C , D , 4 , fs1); - ff(D , A , B , C , 5 , fs2); - ff(C , D , A , B , 6 , fs3); - ff(B , C , D , A , 7 , fs4); - ff(A , B , C , D , 8 , fs1); - ff(D , A , B , C , 9 , fs2); - ff(C , D , A , B , 10 , fs3); - ff(B , C , D , A , 11 , fs4); - ff(A , B , C , D , 12 , fs1); - ff(D , A , B , C , 13 , fs2); - ff(C , D , A , B , 14 , fs3); - ff(B , C , D , A , 15 , fs4); - gg(A , B , C , D , 0 , gs1); /* Round 2 */ - gg(D , A , B , C , 4 , gs2); - gg(C , D , A , B , 8 , gs3); - gg(B , C , D , A , 12 , gs4); - gg(A , B , C , D , 1 , gs1); - gg(D , A , B , C , 5 , gs2); - gg(C , D , A , B , 9 , gs3); - gg(B , C , D , A , 13 , gs4); - gg(A , B , C , D , 2 , gs1); - gg(D , A , B , C , 6 , gs2); - gg(C , D , A , B , 10 , gs3); - gg(B , C , D , A , 14 , gs4); - gg(A , B , C , D , 3 , gs1); - gg(D , A , B , C , 7 , gs2); - gg(C , D , A , B , 11 , gs3); - gg(B , C , D , A , 15 , gs4); - hh(A , B , C , D , 0 , hs1); /* Round 3 */ - hh(D , A , B , C , 8 , hs2); - hh(C , D , A , B , 4 , hs3); - hh(B , C , D , A , 12 , hs4); - hh(A , B , C , D , 2 , hs1); - hh(D , A , B , C , 10 , hs2); - hh(C , D , A , B , 6 , hs3); - hh(B , C , D , A , 14 , hs4); - hh(A , B , C , D , 1 , hs1); - hh(D , A , B , C , 9 , hs2); - hh(C , D , A , B , 5 , hs3); - hh(B , C , D , A , 13 , hs4); - hh(A , B , C , D , 3 , hs1); - hh(D , A , B , C , 11 , hs2); - hh(C , D , A , B , 7 , hs3); - hh(B , C , D , A , 15 , hs4); - MDp->buffer[0] += A; - MDp->buffer[1] += B; - MDp->buffer[2] += C; - MDp->buffer[3] += D; - } - - /* MDupdate(MDp,X,count) - ** Input: MDp -- an MDptr - ** X -- a pointer to an array of unsigned characters. - ** count -- the number of bits of X to use. - ** (if not a multiple of 8, uses high bits of last byte.) - ** Update MDp using the number of bits of X given by count. - ** This is the basic input routine for an MD4 user. - ** The routine completes the MD computation when count < 512, so - ** every MD computation should end with one call to MDupdate with a - ** count less than 512. A call with count 0 will be ignored if the - ** MD has already been terminated (done != 0), so an extra call with - ** count 0 can be given as a "courtesy close" to force termination - ** if desired. - */ - void - MDupdate(MDp,X,count) - MDptr MDp; - unsigned char *X; - unsigned int count; - { unsigned int32 i, tmp, bit, byte, mask; - unsigned char XX[64]; - unsigned char *p; - /* return with no error if this is a courtesy close with count - ** zero and MDp->done is true. - */ - if (count == 0 && MDp->done) return; - /* check to see if MD is already done and report error */ - if (MDp->done) - { rprintf(FERROR,"\nError: MDupdate MD already done."); return; } - /* Add count to MDp->count */ - tmp = count; - p = MDp->count; - while (tmp) - { tmp += *p; - *p++ = tmp; - tmp = tmp >> 8; - } - /* Process data */ - if (count == 512) - { /* Full block of data to handle */ - MDblock(MDp,(unsigned int32 *)X); - } - else if (count > 512) /* Check for count too large */ - { rprintf(FERROR,"\nError: MDupdate called with illegal count value %d." - ,count); - return; - } - else /* partial block -- must be last block so finish up */ - { /* Find out how many bytes and residual bits there are */ - byte = count >> 3; - bit = count & 7; - /* Copy X into XX since we need to modify it */ - for (i=0;i<=byte;i++) XX[i] = X[i]; - for (i=byte+1;i<64;i++) XX[i] = 0; - /* Add padding '1' bit and low-order zeros in last byte */ - mask = 1 << (7 - bit); - XX[byte] = (XX[byte] | mask) & ~( mask - 1); - /* If room for bit count, finish up with this block */ - if (byte <= 55) - { for (i=0;i<8;i++) XX[56+i] = MDp->count[i]; - MDblock(MDp,(unsigned int32 *)XX); - } - else /* need to do two blocks to finish up */ - { MDblock(MDp,(unsigned int32 *)XX); - for (i=0;i<56;i++) XX[i] = 0; - for (i=0;i<8;i++) XX[56+i] = MDp->count[i]; - MDblock(MDp,(unsigned int32 *)XX); - } - /* Set flag saying we're done with MD computation */ - MDp->done = 1; - } - } - - /* - ** End of md4.c - */ diff -u -r --new-file --exclude=CVS rsync-2.3.0/md4.h rsync-2.3.1/md4.h --- rsync-2.3.0/md4.h Sat Jun 22 15:04:21 1996 +++ rsync-2.3.1/md4.h Thu Jan 1 10:00:00 1970 @@ -1,49 +0,0 @@ -/* - This code is from rfc1186. -*/ - - /* - ** ******************************************************************** - ** md4.h -- Header file for implementation of ** - ** MD4 Message Digest Algorithm ** - ** Updated: 2/13/90 by Ronald L. Rivest ** - ** (C) 1990 RSA Data Security, Inc. ** - ** ******************************************************************** - */ - - /* MDstruct is the data structure for a message digest computation. - */ - typedef struct { - unsigned int32 buffer[4]; /* Holds 4-word result of MD computation */ - unsigned char count[8]; /* Number of bits processed so far */ - unsigned int done; /* Nonzero means MD computation finished */ - } MDstruct, *MDptr; - - /* MDbegin(MD) - - - - ** Input: MD -- an MDptr - ** Initialize the MDstruct prepatory to doing a message digest - ** computation. - */ - extern void MDbegin(); - - /* MDupdate(MD,X,count) - ** Input: MD -- an MDptr - ** X -- a pointer to an array of unsigned characters. - ** count -- the number of bits of X to use (an unsigned int). - ** Updates MD using the first "count" bits of X. - ** The array pointed to by X is not modified. - ** If count is not a multiple of 8, MDupdate uses high bits of - ** last byte. - ** This is the basic input routine for a user. - ** The routine terminates the MD computation when count < 512, so - ** every MD computation should end with one call to MDupdate with a - ** count less than 512. Zero is OK for a count. - */ - extern void MDupdate(); - - /* - ** End of md4.h - */ diff -u -r --new-file --exclude=CVS rsync-2.3.0/packaging/redhat/5.0/rsync.spec rsync-2.3.1/packaging/redhat/5.0/rsync.spec --- rsync-2.3.0/packaging/redhat/5.0/rsync.spec Tue Mar 16 08:23:21 1999 +++ rsync-2.3.1/packaging/redhat/5.0/rsync.spec Wed Apr 7 01:09:26 1999 @@ -1,10 +1,10 @@ Summary: Program for efficient remote updates of files. Name: rsync -Version: 2.3.0 +Version: 2.3.1 Release: 1 Copyright: GPL Group: Applications/Networking -Source: ftp://samba.anu.edu.au/pub/rsync/rsync-2.3.0.tar.gz +Source: ftp://samba.anu.edu.au/pub/rsync/rsync-2.3.1.tar.gz URL: http://samba.anu.edu.au/rsync/ Packager: Andrew Tridgell BuildRoot: /tmp/rsync @@ -21,6 +21,8 @@ this package. %changelog +* Mon Jan 25 1999 Stefan Hornburg + quoted RPM_OPT_FLAGS for the sake of robustness * Mon May 18 1998 Andrew Tridgell reworked for auto-building when I release rsync (tridge@samba.anu.edu.au) @@ -58,7 +60,7 @@ %build ./configure --prefix=/usr -make CFLAGS=$RPM_OPT_FLAGS +make CFLAGS="$RPM_OPT_FLAGS" strip rsync %install diff -u -r --new-file --exclude=CVS rsync-2.3.0/packaging/redhat/5.0/rsync.spec.tmpl rsync-2.3.1/packaging/redhat/5.0/rsync.spec.tmpl --- rsync-2.3.0/packaging/redhat/5.0/rsync.spec.tmpl Mon May 18 01:10:21 1998 +++ rsync-2.3.1/packaging/redhat/5.0/rsync.spec.tmpl Wed Apr 7 01:04:17 1999 @@ -21,6 +21,8 @@ this package. %changelog +* Mon Jan 25 1999 Stefan Hornburg + quoted RPM_OPT_FLAGS for the sake of robustness * Mon May 18 1998 Andrew Tridgell reworked for auto-building when I release rsync (tridge@samba.anu.edu.au) @@ -58,7 +60,7 @@ %build ./configure --prefix=/usr -make CFLAGS=$RPM_OPT_FLAGS +make CFLAGS="$RPM_OPT_FLAGS" strip rsync %install diff -u -r --new-file --exclude=CVS rsync-2.3.0/receiver.c rsync-2.3.1/receiver.c --- rsync-2.3.0/receiver.c Tue Mar 16 08:23:11 1999 +++ rsync-2.3.1/receiver.c Wed Apr 7 01:04:16 1999 @@ -417,6 +417,9 @@ fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL, file->mode & INITACCESSPERMS); + /* in most cases parent directories will already exist + because their information should have been previously + transferred, but that may not be the case with -R */ if (fd2 == -1 && relative_paths && errno == ENOENT && create_directory_path(fnametmp) == 0) { fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL, @@ -474,7 +477,7 @@ for (i = 0; i < flist->count; i++) { file = flist->files[i]; if (!file->basename || !S_ISDIR(file->mode)) continue; - recv_generator(f_name(file),flist,i,-1); + recv_generator(local_name?local_name:f_name(file),flist,i,-1); } if (verbose > 2) diff -u -r --new-file --exclude=CVS rsync-2.3.0/rsync.1 rsync-2.3.1/rsync.1 --- rsync-2.3.0/rsync.1 Tue Mar 16 08:23:11 1999 +++ rsync-2.3.1/rsync.1 Wed Apr 7 01:04:16 1999 @@ -365,7 +365,9 @@ uid) and -D (preserve devices) options are also implied\&. .IP .IP "\fB-r, --recursive\fP" -This tells rsync to copy directories recursively\&. +This tells rsync to copy directories +recursively\&. If you don\'t specify this then rsync won\'t copy +directories at all\&. .IP .IP "\fB-R, --relative\fP" Use relative paths\&. This means that the full path @@ -505,6 +507,8 @@ This tells rsync to delete any files on the receiving side that aren\'t on the sending side\&. Files that are excluded from transfer are excluded from being deleted unless you use --delete-excluded\&. +.IP +This option has no effect if directory recursion is not selected\&. .IP This option can be dangerous if used incorrectly! It is a very good idea to run first using the dry run option (-n) to see what files would be diff -u -r --new-file --exclude=CVS rsync-2.3.0/rsync.yo rsync-2.3.1/rsync.yo --- rsync-2.3.0/rsync.yo Tue Mar 16 08:23:12 1999 +++ rsync-2.3.1/rsync.yo Wed Apr 7 01:04:17 1999 @@ -325,7 +325,9 @@ Note: if the user launching rsync is root then the -o (preserve uid) and -D (preserve devices) options are also implied. -dit(bf(-r, --recursive)) This tells rsync to copy directories recursively. +dit(bf(-r, --recursive)) This tells rsync to copy directories +recursively. If you don't specify this then rsync won't copy +directories at all. dit(bf(-R, --relative)) Use relative paths. This means that the full path names specified on the command line are sent to the server rather than @@ -433,6 +435,8 @@ dit(bf(--delete)) This tells rsync to delete any files on the receiving side that aren't on the sending side. Files that are excluded from transfer are excluded from being deleted unless you use --delete-excluded. + +This option has no effect if directory recursion is not selected. This option can be dangerous if used incorrectly! It is a very good idea to run first using the dry run option (-n) to see what files would be diff -u -r --new-file --exclude=CVS rsync-2.3.0/rsyncd.conf.5 rsync-2.3.1/rsyncd.conf.5 --- rsync-2.3.0/rsyncd.conf.5 Tue Mar 16 08:23:12 1999 +++ rsync-2.3.1/rsyncd.conf.5 Wed Apr 7 01:04:17 1999 @@ -178,10 +178,12 @@ .IP .IP "\fBexclude\fP" The "exclude" option allows you to specify a space -separated list of patterns to add to the exclude list\&. This is equivalent -to the client specifying these patterns with the --exclude option\&. Only -one "exclude" option may be specified, but you can use "-" and "+" before -patterns to specify exclude/include\&. +separated list of patterns to add to the exclude list\&. This is +equivalent to the client specifying these patterns with the --exclude +option except that the exclude list is not passed to the client and +thus only apply on the server\&. Only one "exclude" option may be +specified, but you can use "-" and "+" before patterns to specify +exclude/include\&. .IP Note that this option is not designed with strong security in mind, it is quite possible that a client may find a way to bypass this @@ -193,8 +195,9 @@ The "exclude from" option specifies a filename on the server that contains exclude patterns, one per line\&. This is equivalent to the client specifying the --exclude-from option with a -equivalent file\&. See also the note about security for the exclude -option above\&. +equivalent file except that the resulting exclude patterns are not +passed to the client and thus only apply on the server\&. See also the +note about security for the exclude option above\&. .IP .IP "\fBinclude\fP" The "include" option allows you to specify a space diff -u -r --new-file --exclude=CVS rsync-2.3.0/rsyncd.conf.yo rsync-2.3.1/rsyncd.conf.yo --- rsync-2.3.0/rsyncd.conf.yo Tue Mar 16 08:23:12 1999 +++ rsync-2.3.1/rsyncd.conf.yo Wed Apr 7 01:04:17 1999 @@ -163,10 +163,12 @@ group "nobody". dit(bf(exclude)) The "exclude" option allows you to specify a space -separated list of patterns to add to the exclude list. This is equivalent -to the client specifying these patterns with the --exclude option. Only -one "exclude" option may be specified, but you can use "-" and "+" before -patterns to specify exclude/include. +separated list of patterns to add to the exclude list. This is +equivalent to the client specifying these patterns with the --exclude +option except that the exclude list is not passed to the client and +thus only apply on the server. Only one "exclude" option may be +specified, but you can use "-" and "+" before patterns to specify +exclude/include. Note that this option is not designed with strong security in mind, it is quite possible that a client may find a way to bypass this @@ -177,8 +179,9 @@ dit(bf(exclude from)) The "exclude from" option specifies a filename on the server that contains exclude patterns, one per line. This is equivalent to the client specifying the --exclude-from option with a -equivalent file. See also the note about security for the exclude -option above. +equivalent file except that the resulting exclude patterns are not +passed to the client and thus only apply on the server. See also the +note about security for the exclude option above. dit(bf(include)) The "include" option allows you to specify a space separated list of patterns which rsync should not exclude. This is diff -u -r --new-file --exclude=CVS rsync-2.3.0/version.h rsync-2.3.1/version.h --- rsync-2.3.0/version.h Tue Mar 16 08:23:18 1999 +++ rsync-2.3.1/version.h Wed Apr 7 01:09:25 1999 @@ -1 +1 @@ -#define VERSION "2.3.0" +#define VERSION "2.3.1"