Compare commits

...

12 Commits

Author SHA1 Message Date
rsync-bugs
e9d736a7e8 preparing for release of 2.0.7 1998-05-16 05:38:33 +00:00
rsync-bugs
e9ace0c77a put only the ftp directory in the template file 1998-05-16 05:35:56 +00:00
rsync-bugs
1c31ffa9af added a template file for the rsync spec file to enable automatic spec
generation
1998-05-16 05:30:33 +00:00
Andrew Tridgell
d186eb1a56 - print the stats at the right place when uploading in the rsync
daemon
- update spec file
1998-05-16 05:24:40 +00:00
John H Terpstra
18baf523dc Spec file for building Red Hat RPM packages. 1998-05-16 04:23:41 +00:00
Andrew Tridgell
7b372642ec - distinguish downloads and uploads in the syslog messages
- add stats on uploads in syslog
1998-05-16 03:03:57 +00:00
rsync-bugs
4f189177dc preparing for release of 2.0.6 1998-05-16 00:57:37 +00:00
Andrew Tridgell
f72399f867 fixed handling of vsprintf on SunOS 1998-05-16 00:46:16 +00:00
rsync-bugs
d64488e169 preparing for release of 2.0.5 1998-05-15 14:12:06 +00:00
Andrew Tridgell
29110570f8 removed some debug code 1998-05-15 14:01:04 +00:00
Andrew Tridgell
3e607d2354 got rid of "EOF in map_ptr" problem. If a file shrinks mid transfer
then we supply a zero filled buffer at the end and rely on the
checksum to cause a retry. This is really the best we can do as there
is no correct semantics for copying a changing file!
1998-05-15 14:00:12 +00:00
Andrew Tridgell
a6801c3977 added a "socket options" option to rsyncd.conf. This option will
provide hours of fun for those people who like to tune their systems
to the utmost degree.
1998-05-15 13:25:19 +00:00
9 changed files with 247 additions and 67 deletions

View File

@@ -110,6 +110,8 @@ static int rsync_module(int fd, int i)
char *host = client_name(fd);
char *name = lp_name(i);
int start_glob=0;
char *request=NULL;
extern int am_sender;
if (!allow_access(addr, host, lp_hosts_allow(i), lp_hosts_deny(i))) {
rprintf(FERROR,"rsync denied on module %s from %s (%s)\n",
@@ -211,8 +213,7 @@ static int rsync_module(int fd, int i)
if (start_glob) {
if (start_glob == 1) {
rprintf(FINFO,"rsync on %s from %s (%s)\n",
p, host, addr);
request = strdup(p);
start_glob++;
}
glob_expand(name, argv, &argc, MAX_ARGS);
@@ -231,6 +232,13 @@ static int rsync_module(int fd, int i)
parse_arguments(argc, argv);
if (request) {
rprintf(FINFO,"rsync %s %s from %s (%s)\n",
am_sender?"on":"to",
request, host, addr);
free(request);
}
/* don't allow the logs to be flooded too fast */
if (verbose > 1) verbose = 1;
@@ -271,6 +279,8 @@ static int start_daemon(int fd)
}
set_socket_options(fd,"SO_KEEPALIVE");
set_socket_options(fd,lp_socket_options());
io_printf(fd,"@RSYNCD: %d\n", PROTOCOL_VERSION);

View File

@@ -101,6 +101,7 @@ typedef struct
char *lock_file;
int syslog_facility;
int max_connections;
char *socket_options;
} global;
static global Globals;
@@ -230,6 +231,7 @@ static struct parm_struct parm_table[] =
{"motd file", P_STRING, P_GLOBAL, &Globals.motd_file, NULL, 0},
{"lock file", P_STRING, P_GLOBAL, &Globals.lock_file, NULL, 0},
{"syslog facility", P_ENUM, P_GLOBAL, &Globals.syslog_facility, enum_facilities,0},
{"socket options", P_STRING, P_GLOBAL, &Globals.socket_options,NULL, 0},
{"name", P_STRING, P_LOCAL, &sDefault.name, NULL, 0},
{"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, 0},
@@ -294,8 +296,10 @@ static void init_locals(void)
FN_GLOBAL_STRING(lp_motd_file, &Globals.motd_file)
FN_GLOBAL_STRING(lp_lock_file, &Globals.lock_file)
FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options)
FN_GLOBAL_INTEGER(lp_max_connections, &Globals.max_connections)
FN_GLOBAL_INTEGER(lp_syslog_facility, &Globals.syslog_facility)
FN_LOCAL_STRING(lp_name, name)
FN_LOCAL_STRING(lp_comment, comment)
FN_LOCAL_STRING(lp_path, path)

43
main.c
View File

@@ -34,14 +34,15 @@ static void report(int f)
extern int am_sender;
extern int am_daemon;
if (!verbose) return;
if (am_daemon) {
rprintf(FINFO, "wrote %.0f bytes read %.0f bytes total size %.0f\n",
(double)write_total(),(double)read_total(),
(double)total_size);
if (f == -1 || !am_sender) return;
}
if (!verbose) return;
if (am_server && am_sender) {
write_longint(f,read_total());
write_longint(f,write_total());
@@ -225,32 +226,32 @@ static void do_server_sender(int f_in, int f_out, int argc,char *argv[])
static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
{
int pid;
int status=0;
int recv_pipe[2];
extern int preserve_hard_links;
int pid;
int status=0;
int recv_pipe[2];
extern int preserve_hard_links;
extern int am_daemon;
if (preserve_hard_links)
init_hard_links(flist);
if (preserve_hard_links)
init_hard_links(flist);
if (pipe(recv_pipe) < 0) {
rprintf(FERROR,"pipe failed in do_recv\n");
exit(1);
}
if (pipe(recv_pipe) < 0) {
rprintf(FERROR,"pipe failed in do_recv\n");
exit(1);
}
if ((pid=do_fork()) == 0) {
recv_files(f_in,flist,local_name,recv_pipe[1]);
if (verbose > 2)
rprintf(FINFO,"receiver read %ld\n",(long)read_total());
exit_cleanup(0);
}
if ((pid=do_fork()) == 0) {
recv_files(f_in,flist,local_name,recv_pipe[1]);
if (am_daemon) report(-1);
exit_cleanup(0);
}
generate_files(f_out,flist,local_name,recv_pipe[0]);
generate_files(f_out,flist,local_name,recv_pipe[0]);
waitpid(pid, &status, 0);
waitpid(pid, &status, 0);
return status;
return status;
}

View File

@@ -0,0 +1,79 @@
Summary: Program for efficient remote updates of files.
Name: rsync
Version: 2.0.7
Release: 1
Copyright: GPL
Group: Applications/Networking
Source: ftp://samba.anu.edu.au/pub/rsync/
URL: http://samba.anu.edu.au/rsync/
Packager: John H Terpstra <jht@samba.anu.edu.au>
BuildRoot: /tmp/rsync
%description
rsync is a replacement for rcp that has many more features.
rsync uses the "rsync algorithm" which provides a very fast method for
bringing remote files into sync. It does this by sending just the
differences in the files across the link, without requiring that both
sets of files are present at one of the ends of the link beforehand.
A technical report describing the rsync algorithm is included with
this package.
%changelog
* Sat May 16 1998 John H Terpstra <jht@aquasoft.com.au>
Upgraded to Rsync 2.0.6
-new feature anonymous rsync
* Mon Apr 6 1998 Douglas N. Arnold <dna@math.psu.edu>
Upgrade to rsync version 1.7.2.
* Sun Mar 1 1998 Douglas N. Arnold <dna@math.psu.edu>
Built 1.6.9-1 based on the 1.6.3-2 spec file of John A. Martin.
Changes from 1.6.3-2 packaging: added latex and dvips commands
to create tech_report.ps.
* Mon Aug 25 1997 John A. Martin <jam@jamux.com>
Built 1.6.3-2 after finding no rsync-1.6.3-1.src.rpm although there
was an ftp://ftp.redhat.com/pub/contrib/alpha/rsync-1.6.3-1.alpha.rpm
showing no packager nor signature but giving
"Source RPM: rsync-1.6.3-1.src.rpm".
Changes from 1.6.2-1 packaging: added '$RPM_OPT_FLAGS' to make, strip
to '%build', removed '%prefix'.
* Thu Apr 10 1997 Michael De La Rue <miked@ed.ac.uk>
rsync-1.6.2-1 packaged. (This entry by jam to credit Michael for the
previous package(s).)
%prep
%setup
%build
./configure --prefix=/usr
make CFLAGS=$RPM_OPT_FLAGS
strip rsync
latex tech_report
dvips tech_report -o
%install
mkdir -p $RPM_BUILD_ROOT/usr/{bin,man/{man1,man5}}
install -m755 rsync $RPM_BUILD_ROOT/usr/bin
install -m644 rsync.1 $RPM_BUILD_ROOT/usr/man/man1
install -m644 rsyncd.conf.5 $RPM_BUILD_ROOT/usr/man/man5
%clean
rm -rf $RPM_BUILD_ROOT
%files
%attr(-,root,root) /usr/bin/rsync
%attr(-,root,root) /usr/man/man1/rsync.1
%attr(-,root,root) /usr/man/man5/rsyncd.conf.5
%attr(-,root,root) %doc tech_report.ps
%attr(-,root,root) %doc tech_report.tex
%attr(-,root,root) %doc README
%attr(-,root,root) %doc COPYING

View File

@@ -0,0 +1,79 @@
Summary: Program for efficient remote updates of files.
Name: rsync
Version: PVERSION
Release: PRELEASE
Copyright: GPL
Group: Applications/Networking
Source: ftp://samba.anu.edu.au/pub/rsync/
URL: http://samba.anu.edu.au/rsync/
Packager: John H Terpstra <jht@samba.anu.edu.au>
BuildRoot: /tmp/rsync
%description
rsync is a replacement for rcp that has many more features.
rsync uses the "rsync algorithm" which provides a very fast method for
bringing remote files into sync. It does this by sending just the
differences in the files across the link, without requiring that both
sets of files are present at one of the ends of the link beforehand.
A technical report describing the rsync algorithm is included with
this package.
%changelog
* Sat May 16 1998 John H Terpstra <jht@aquasoft.com.au>
Upgraded to Rsync 2.0.6
-new feature anonymous rsync
* Mon Apr 6 1998 Douglas N. Arnold <dna@math.psu.edu>
Upgrade to rsync version 1.7.2.
* Sun Mar 1 1998 Douglas N. Arnold <dna@math.psu.edu>
Built 1.6.9-1 based on the 1.6.3-2 spec file of John A. Martin.
Changes from 1.6.3-2 packaging: added latex and dvips commands
to create tech_report.ps.
* Mon Aug 25 1997 John A. Martin <jam@jamux.com>
Built 1.6.3-2 after finding no rsync-1.6.3-1.src.rpm although there
was an ftp://ftp.redhat.com/pub/contrib/alpha/rsync-1.6.3-1.alpha.rpm
showing no packager nor signature but giving
"Source RPM: rsync-1.6.3-1.src.rpm".
Changes from 1.6.2-1 packaging: added '$RPM_OPT_FLAGS' to make, strip
to '%build', removed '%prefix'.
* Thu Apr 10 1997 Michael De La Rue <miked@ed.ac.uk>
rsync-1.6.2-1 packaged. (This entry by jam to credit Michael for the
previous package(s).)
%prep
%setup
%build
./configure --prefix=/usr
make CFLAGS=$RPM_OPT_FLAGS
strip rsync
latex tech_report
dvips tech_report -o
%install
mkdir -p $RPM_BUILD_ROOT/usr/{bin,man/{man1,man5}}
install -m755 rsync $RPM_BUILD_ROOT/usr/bin
install -m644 rsync.1 $RPM_BUILD_ROOT/usr/man/man1
install -m644 rsyncd.conf.5 $RPM_BUILD_ROOT/usr/man/man5
%clean
rm -rf $RPM_BUILD_ROOT
%files
%attr(-,root,root) /usr/bin/rsync
%attr(-,root,root) /usr/man/man1/rsync.1
%attr(-,root,root) /usr/man/man5/rsyncd.conf.5
%attr(-,root,root) %doc tech_report.ps
%attr(-,root,root) %doc tech_report.tex
%attr(-,root,root) %doc README
%attr(-,root,root) %doc COPYING

View File

@@ -99,6 +99,13 @@ ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0,
local1, local2, local3, local4, local5, local6 and local7. The default
is daemon.
dit(bf(socket options)) This option can provide endless fun for people
who like to tune their systems to the utmost degree. You can set all
sorts of socket options which may make transfers faster (or
slower!). Read the man page for the setsockopt() system call for
details on some of the options you may be able to set. By default no
special socket options are set.
enddit()

View File

@@ -216,6 +216,8 @@ set user socket options
void set_socket_options(int fd, char *options)
{
char *tok;
if (!options || !*options) return;
options = strdup(options);
if (!options) out_of_memory("set_socket_options");

84
util.c
View File

@@ -60,44 +60,49 @@ struct map_struct *map_file(int fd,OFF_T len)
char *map_ptr(struct map_struct *map,OFF_T offset,int len)
{
int nread = -2;
int nread;
if (map->map)
return map->map+offset;
if (map->map)
return map->map+offset;
if (len == 0)
return NULL;
if (len == 0)
return NULL;
if (len > (map->size-offset))
len = map->size-offset;
if (len > (map->size-offset))
len = map->size-offset;
if (offset >= map->p_offset &&
offset+len <= map->p_offset+map->p_len) {
return (map->p + (offset - map->p_offset));
}
if (offset >= map->p_offset &&
offset+len <= map->p_offset+map->p_len) {
return (map->p + (offset - map->p_offset));
}
len = MAX(len,CHUNK_SIZE);
if (len > (map->size-offset))
len = map->size-offset;
len = MAX(len,CHUNK_SIZE);
if (len > (map->size-offset))
len = map->size-offset;
if (len > map->p_size) {
if (map->p) free(map->p);
map->p = (char *)malloc(len);
if (!map->p) out_of_memory("map_ptr");
map->p_size = len;
}
if (len > map->p_size) {
if (map->p) free(map->p);
map->p = (char *)malloc(len);
if (!map->p) out_of_memory("map_ptr");
map->p_size = len;
}
if (do_lseek(map->fd,offset,SEEK_SET) != offset ||
(nread=read(map->fd,map->p,len)) != len) {
rprintf(FERROR,"EOF in map_ptr! (offset=%d len=%d nread=%d errno=%d)\n",
(int)offset, len, nread, errno);
exit_cleanup(1);
}
map->p_offset = offset;
map->p_len = len;
map->p_offset = offset;
map->p_len = len;
if (do_lseek(map->fd,offset,SEEK_SET) != offset) {
rprintf(FERROR,"lseek failed in map_ptr\n");
exit_cleanup(1);
}
return map->p;
if ((nread=read(map->fd,map->p,len)) != len) {
if (nread < 0) nread = 0;
/* the best we can do is zero the buffer - the file
has changed mid transfer! */
memset(map->p+nread, 0, len - nread);
}
return map->p;
}
@@ -632,22 +637,15 @@ int vslprintf(char *str, int n, const char *format, va_list ap)
}
}
ret = vsprintf(buf, format, ap);
if (ret < 0) {
str[0] = 0;
return -1;
vsprintf(buf, format, ap);
ret = strlen(buf);
if (ret > n) {
/* yikes! */
exit(1);
}
if (ret < n) {
n = ret;
} else if (ret > n) {
ret = -1;
}
buf[n] = 0;
buf[ret] = 0;
memcpy(str, buf, n+1);
memcpy(str, buf, ret+1);
return ret;
#endif

View File

@@ -1 +1 @@
#define VERSION "2.0.4"
#define VERSION "2.0.7"