The branch, master has been updated via a2b630c0 Unify md parsing scripts & improve non-man html conversions. via 5b1baa7a Rename md2man. via 7f8cf771 Add more backticks. via b00e99c5 Ignore the built rrsync man-page files. via a76e32f9 Test --with-rrsync configure option & put rrsync into the artifacts. via 512acd12 Use mallinfo2, when available, and use %zd for size_t values on C99. from 72adf49b rrsync improvements
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit a2b630c0bb586c9761fd5fc53dc4c212b6dd25df Author: Wayne Davison <wa...@opencoder.net> Date: Mon Dec 27 14:19:11 2021 -0800 Unify md parsing scripts & improve non-man html conversions. commit 5b1baa7a2e58f51b575ce263dbc8c09beefca2d0 Author: Wayne Davison <wa...@opencoder.net> Date: Mon Dec 27 13:42:19 2021 -0800 Rename md2man. commit 7f8cf771b733f700259ce4c30ef7e3fe43b478b5 Author: Wayne Davison <wa...@opencoder.net> Date: Mon Dec 27 13:11:23 2021 -0800 Add more backticks. commit b00e99c52953ca87bf2ac4523a1e04335af5bd4a Author: Wayne Davison <wa...@opencoder.net> Date: Mon Dec 27 12:10:31 2021 -0800 Ignore the built rrsync man-page files. commit a76e32f9491889c378e99d651ffb90cdc8fe20cf Author: Wayne Davison <wa...@opencoder.net> Date: Sun Dec 26 14:48:55 2021 -0800 Test --with-rrsync configure option & put rrsync into the artifacts. commit 512acd125e450b748cd2c8f6b02f8e01e0e3a70e Author: Wayne Davison <wa...@opencoder.net> Date: Sun Dec 26 14:23:19 2021 -0800 Use mallinfo2, when available, and use %zd for size_t values on C99. An exhanced version of pull request #265. ----------------------------------------------------------------------- Summary of changes: .github/workflows/build.yml | 18 +- .gitignore | 5 +- INSTALL.md | 8 +- Makefile.in | 11 +- NEWS.md | 16 +- configure.ac | 2 +- io.c | 106 +++++++----- main.c | 49 +++--- maybe-make-man | 4 +- md2man => md-convert | 222 ++++++++++++++++-------- md2man | 401 +------------------------------------------- packaging/auto-Makefile | 2 +- packaging/md2html | 104 ------------ packaging/release-rsync | 2 +- rsync.h | 11 ++ 15 files changed, 287 insertions(+), 674 deletions(-) copy md2man => md-convert (65%) mode change 100755 => 120000 md2man delete mode 100755 packaging/md2html Changeset truncated at 500 lines: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9e34b4c9..4f5cbf23 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,9 +22,9 @@ jobs: wget -O git-version.h https://gist.githubusercontent.com/WayneD/c11243fa374fc64d4e42f2855c8e3827/raw/rsync-git-version.h echo "/usr/local/bin" >>$GITHUB_PATH - name: configure - run: ./configure + run: ./configure --with-rrsync - name: make - run: make + run: make all rrsync - name: install run: sudo make install - name: info @@ -47,6 +47,8 @@ jobs: rsync.1 rsync-ssl.1 rsyncd.conf.5 + rrsync.1 + rrsync macos-build: runs-on: macos-latest @@ -59,9 +61,9 @@ jobs: wget -O git-version.h https://gist.githubusercontent.com/WayneD/c11243fa374fc64d4e42f2855c8e3827/raw/rsync-git-version.h echo "/usr/local/bin" >>$GITHUB_PATH - name: configure - run: CPPFLAGS=-I/usr/local/opt/openssl/include/ LDFLAGS=-L/usr/local/opt/openssl/lib/ ./configure + run: CPPFLAGS=-I/usr/local/opt/openssl/include/ LDFLAGS=-L/usr/local/opt/openssl/lib/ ./configure --with-rrsync - name: make - run: make + run: make all rrsync - name: install run: sudo make install - name: info @@ -80,6 +82,8 @@ jobs: rsync.1 rsync-ssl.1 rsyncd.conf.5 + rrsync.1 + rrsync cygwin-build: runs-on: windows-latest @@ -97,9 +101,9 @@ jobs: - name: commonmark run: bash -c 'python3 -mpip install --user commonmark' - name: configure - run: bash -c './configure' + run: bash -c './configure --with-rrsync' - name: make - run: bash -c 'make' + run: bash -c 'make all rrsync' - name: install run: bash -c 'make install' - name: info @@ -118,3 +122,5 @@ jobs: rsync.1 rsync-ssl.1 rsyncd.conf.5 + rrsync.1 + rrsync diff --git a/.gitignore b/.gitignore index 13c6db8d..85290116 100644 --- a/.gitignore +++ b/.gitignore @@ -15,9 +15,10 @@ config.status aclocal.m4 /proto.h /proto.h-tstamp -/rsync*.1 -/rsync*.5 +/rsync*.[15] +/rrsync*.1 /rsync*.html +/rrsync*.html /help-rsync*.h /default-cvsignore.h /default-dont-compress.h diff --git a/INSTALL.md b/INSTALL.md index 1f373c69..6a95c451 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -178,9 +178,9 @@ config.h, or just override them in your /etc/rsyncd.conf file. As of 2.4.7, rsync uses Eric Troan's popt option-parsing library. A cut-down copy of a recent release is included in the rsync distribution, and will be used if there is no popt library on your build host, or if -the --with-included-popt option is passed to ./configure. +the `--with-included-popt` option is passed to ./configure. -If you configure using --enable-maintainer-mode, then rsync will try +If you configure using `--enable-maintainer-mode`, then rsync will try to pop up an xterm on DISPLAY=:0 if it crashes. You might find this useful, but it should be turned off for production builds. @@ -194,7 +194,7 @@ This is helpful when using the branch-from-patch and patch-update scripts to maintain the official rsync patches. If you ever need to build from a "detached head" git position then you'll need to manually chdir into the build dir to run make. I also like to create 2 more symlinks in the -source dir: ln -s build/rsync . ; ln -s build/testtmp . +source dir: `ln -s build/rsync . ; ln -s build/testtmp .` ## Make compatibility @@ -228,7 +228,7 @@ Some versions of Mac OS X (Darwin) seem to have an IPv6 stack, but do not completely implement the "New Sockets" API. [This site][5] says that Apple started to support IPv6 in 10.2 (Jaguar). If -your build fails, try again after running configure with --disable-ipv6. +your build fails, try again after running configure with `--disable-ipv6`. [5]: http://www.ipv6.org/impl/mac.html diff --git a/Makefile.in b/Makefile.in index 5eed339e..14d95abe 100644 --- a/Makefile.in +++ b/Makefile.in @@ -101,6 +101,9 @@ install-strip: rsync$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) +rrsync: support/rrsync + cp -p $(srcdir)/support/rrsync rrsync + $(OBJS): $(HEADERS) $(CHECK_OBJS): $(HEADERS) tls.o xattrs.o: lib/sysxattrs.h @@ -254,16 +257,16 @@ proto.h-tstamp: $(srcdir)/*.c $(srcdir)/lib/compat.c daemon-parm.h .PHONY: man man: rsync.1 rsync-ssl.1 rsyncd.conf.5 rrsync.1 -rsync.1: rsync.1.md md2man version.h Makefile +rsync.1: rsync.1.md md-convert version.h Makefile @$(srcdir)/maybe-make-man $(srcdir) rsync.1.md -rsync-ssl.1: rsync-ssl.1.md md2man version.h Makefile +rsync-ssl.1: rsync-ssl.1.md md-convert version.h Makefile @$(srcdir)/maybe-make-man $(srcdir) rsync-ssl.1.md -rsyncd.conf.5: rsyncd.conf.5.md md2man version.h Makefile +rsyncd.conf.5: rsyncd.conf.5.md md-convert version.h Makefile @$(srcdir)/maybe-make-man $(srcdir) rsyncd.conf.5.md -rrsync.1: support/rrsync.1.md md2man Makefile +rrsync.1: support/rrsync.1.md md-convert Makefile @$(srcdir)/maybe-make-man $(srcdir) support/rrsync.1.md .PHONY: clean diff --git a/NEWS.md b/NEWS.md index b3002e89..b88208c5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -78,7 +78,7 @@ - The rsync daemon can now handle a client address with an implied "%scope" suffix. - - Added support for `--atimes` on macOS and fixed using using it without -t. + - Added support for `--atimes` on macOS and fixed using using it without `-t`. - Rsync can now update the xattrs on a read-only file when your user can temporarily add user-write permission to the file. (It always worked for a @@ -113,7 +113,7 @@ ### PACKAGING RELATED: - - Give configure the --with-rrsync option if you want `make install` to + - Give configure the `--with-rrsync` option if you want `make install` to install the (now python3) rrsync script and its (new) man page. - If the rrsync script is installed, make its package depend on python3 and @@ -1327,7 +1327,7 @@ that hasn't really been created. - Fixed a problem with `--compress` (`-z`) where the receiving side could - return the error "inflate (token) returned -5". + return the error "`inflate (token) returned -5`". - Fixed a bug where `--delete-during` could delete in a directory before it noticed that the sending side sent an I/O error for that directory (both @@ -1346,7 +1346,7 @@ - An absolute-path filter rule (i.e. with a '/' modifier) no longer loses its modifier when sending the filter rules to the remote rsync. - - Improved the "--delete does not work without -r or -d" message. + - Improved the "`--delete does not work without -r or -d`" message. - Improved rsync's handling of `--timeout` to avoid a weird timeout case where the sender could timeout even though it has recently written data to the @@ -1657,8 +1657,8 @@ of a proto.h-tstamp rule that could make the binaries get rebuild without cause. - - Improved the testsuite to work around a problem with some utilities (e.g. cp - -p & touch -r) rounding sub-second timestamps. + - Improved the testsuite to work around a problem with some utilities (e.g. + `cp -p` & `touch -r`) rounding sub-second timestamps. - Ensure that the early patches don't cause any generated-file hunks to bleed-over into patches that follow. @@ -4367,7 +4367,7 @@ - HP PA-RISC HP-UX 11.11 cc - IRIX 6.5 MIPS cc - IRIX 6.5 MIPS gcc - - Mac OS X PPC (--disable-ipv6) cc + - Mac OS X PPC (`--disable-ipv6`) cc - NetBSD 1.5 i386 gcc - NetBSD Current i386 cc - OpenBSD 2.5 Sparc gcc @@ -4472,3 +4472,5 @@ \* DATE OF COMMIT is the date the protocol change was committed to version control. + +@USE_GFM_PARSER@ diff --git a/configure.ac b/configure.ac index 84111de8..b30eeb93 100644 --- a/configure.ac +++ b/configure.ac @@ -829,7 +829,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd chown chmod lchmod mknod mkfifo \ fchmod fstat ftruncate strchr readlink link utime utimes lutimes strftime \ chflags getattrlist mktime innetgr linkat \ memmove lchown vsnprintf snprintf vasprintf asprintf setsid strpbrk \ - strlcat strlcpy strtol mallinfo getgroups setgroups geteuid getegid \ + strlcat strlcpy strtol mallinfo mallinfo2 getgroups setgroups geteuid getegid \ setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \ seteuid strerror putenv iconv_open locale_charset nl_langinfo getxattr \ extattr_get_link sigaction sigprocmask setattrlist getgrouplist \ diff --git a/io.c b/io.c index cc70ce88..abb0f7ab 100644 --- a/io.c +++ b/io.c @@ -264,15 +264,18 @@ static size_t safe_read(int fd, char *buf, size_t len) rprintf(FINFO, "select exception on fd %d\n", fd); */ if (FD_ISSET(fd, &r_fds)) { - int n = read(fd, buf + got, len - got); - if (DEBUG_GTE(IO, 2)) - rprintf(FINFO, "[%s] safe_read(%d)=%ld\n", who_am_i(), fd, (long)n); + ssize_t n = read(fd, buf + got, len - got); + if (DEBUG_GTE(IO, 2)) { + rprintf(FINFO, "[%s] safe_read(%d)=%" SIZE_T_FMT_MOD "d\n", + who_am_i(), fd, (SIZE_T_FMT_CAST)n); + } if (n == 0) break; if (n < 0) { if (errno == EINTR) continue; - rsyserr(FERROR, errno, "safe_read failed to read %ld bytes", (long)len); + rsyserr(FERROR, errno, "safe_read failed to read %" SIZE_T_FMT_MOD "d bytes", + (SIZE_T_FMT_CAST)len); exit_cleanup(RERR_STREAMIO); } if ((got += (size_t)n) == len) @@ -304,7 +307,7 @@ static const char *what_fd_is(int fd) * is not used on the socket except very early in the transfer. */ static void safe_write(int fd, const char *buf, size_t len) { - int n; + ssize_t n; assert(fd != iobuf.out_fd); @@ -315,8 +318,8 @@ static void safe_write(int fd, const char *buf, size_t len) if (errno != EINTR && errno != EWOULDBLOCK && errno != EAGAIN) { write_failed: rsyserr(FERROR, errno, - "safe_write failed to write %ld bytes to %s", - (long)len, what_fd_is(fd)); + "safe_write failed to write %" SIZE_T_FMT_MOD "d bytes to %s", + (SIZE_T_FMT_CAST)len, what_fd_is(fd)); exit_cleanup(RERR_STREAMIO); } } else { @@ -362,7 +365,7 @@ static void safe_write(int fd, const char *buf, size_t len) * a chunk of data and put it into the output buffer. */ static void forward_filesfrom_data(void) { - int len; + ssize_t len; len = read(ff_forward_fd, ff_xb.buf + ff_xb.len, ff_xb.size - ff_xb.len); if (len <= 0) { @@ -377,8 +380,10 @@ static void forward_filesfrom_data(void) return; } - if (DEBUG_GTE(IO, 2)) - rprintf(FINFO, "[%s] files-from read=%ld\n", who_am_i(), (long)len); + if (DEBUG_GTE(IO, 2)) { + rprintf(FINFO, "[%s] files-from read=%" SIZE_T_FMT_MOD "d\n", + who_am_i(), (SIZE_T_FMT_CAST)len); + } #ifdef ICONV_OPTION len += ff_xb.len; @@ -562,52 +567,59 @@ static char *perform_io(size_t needed, int flags) case PIO_NEED_INPUT: /* We never resize the circular input buffer. */ if (iobuf.in.size < needed) { - rprintf(FERROR, "need to read %ld bytes, iobuf.in.buf is only %ld bytes.\n", - (long)needed, (long)iobuf.in.size); + rprintf(FERROR, "need to read %" SIZE_T_FMT_MOD "d bytes," + " iobuf.in.buf is only %" SIZE_T_FMT_MOD "d bytes.\n", + (SIZE_T_FMT_CAST)needed, (SIZE_T_FMT_CAST)iobuf.in.size); exit_cleanup(RERR_PROTOCOL); } if (msgs2stderr == 1 && DEBUG_GTE(IO, 3)) { - rprintf(FINFO, "[%s] perform_io(%ld, %sinput)\n", - who_am_i(), (long)needed, flags & PIO_CONSUME_INPUT ? "consume&" : ""); + rprintf(FINFO, "[%s] perform_io(%" SIZE_T_FMT_MOD "d, %sinput)\n", + who_am_i(), (SIZE_T_FMT_CAST)needed, flags & PIO_CONSUME_INPUT ? "consume&" : ""); } break; case PIO_NEED_OUTROOM: /* We never resize the circular output buffer. */ if (iobuf.out.size - iobuf.out_empty_len < needed) { - fprintf(stderr, "need to write %ld bytes, iobuf.out.buf is only %ld bytes.\n", - (long)needed, (long)(iobuf.out.size - iobuf.out_empty_len)); + fprintf(stderr, "need to write %" SIZE_T_FMT_MOD "d bytes," + " iobuf.out.buf is only %" SIZE_T_FMT_MOD "d bytes.\n", + (SIZE_T_FMT_CAST)needed, (SIZE_T_FMT_CAST)(iobuf.out.size - iobuf.out_empty_len)); exit_cleanup(RERR_PROTOCOL); } if (msgs2stderr == 1 && DEBUG_GTE(IO, 3)) { - rprintf(FINFO, "[%s] perform_io(%ld, outroom) needs to flush %ld\n", - who_am_i(), (long)needed, + rprintf(FINFO, "[%s] perform_io(%" SIZE_T_FMT_MOD "d," + " outroom) needs to flush %" SIZE_T_FMT_MOD "d\n", + who_am_i(), (SIZE_T_FMT_CAST)needed, iobuf.out.len + needed > iobuf.out.size - ? (long)(iobuf.out.len + needed - iobuf.out.size) : 0L); + ? (SIZE_T_FMT_CAST)(iobuf.out.len + needed - iobuf.out.size) : (SIZE_T_FMT_CAST)0); } break; case PIO_NEED_MSGROOM: /* We never resize the circular message buffer. */ if (iobuf.msg.size < needed) { - fprintf(stderr, "need to write %ld bytes, iobuf.msg.buf is only %ld bytes.\n", - (long)needed, (long)iobuf.msg.size); + fprintf(stderr, "need to write %" SIZE_T_FMT_MOD "d bytes," + " iobuf.msg.buf is only %" SIZE_T_FMT_MOD "d bytes.\n", + (SIZE_T_FMT_CAST)needed, (SIZE_T_FMT_CAST)iobuf.msg.size); exit_cleanup(RERR_PROTOCOL); } if (msgs2stderr == 1 && DEBUG_GTE(IO, 3)) { - rprintf(FINFO, "[%s] perform_io(%ld, msgroom) needs to flush %ld\n", - who_am_i(), (long)needed, + rprintf(FINFO, "[%s] perform_io(%" SIZE_T_FMT_MOD "d," + " msgroom) needs to flush %" SIZE_T_FMT_MOD "d\n", + who_am_i(), (SIZE_T_FMT_CAST)needed, iobuf.msg.len + needed > iobuf.msg.size - ? (long)(iobuf.msg.len + needed - iobuf.msg.size) : 0L); + ? (SIZE_T_FMT_CAST)(iobuf.msg.len + needed - iobuf.msg.size) : (SIZE_T_FMT_CAST)0); } break; case 0: - if (msgs2stderr == 1 && DEBUG_GTE(IO, 3)) - rprintf(FINFO, "[%s] perform_io(%ld, %d)\n", who_am_i(), (long)needed, flags); + if (msgs2stderr == 1 && DEBUG_GTE(IO, 3)) { + rprintf(FINFO, "[%s] perform_io(%" SIZE_T_FMT_MOD "d, %d)\n", + who_am_i(), (SIZE_T_FMT_CAST)needed, flags); + } break; default: @@ -665,8 +677,8 @@ static char *perform_io(size_t needed, int flags) ((MPLEX_BASE + (int)MSG_DATA)<<24) + iobuf.out.len - 4); if (msgs2stderr == 1 && DEBUG_GTE(IO, 1)) { - rprintf(FINFO, "[%s] send_msg(%d, %ld)\n", - who_am_i(), (int)MSG_DATA, (long)iobuf.out.len - 4); + rprintf(FINFO, "[%s] send_msg(%d, %" SIZE_T_FMT_MOD "d)\n", + who_am_i(), (int)MSG_DATA, (SIZE_T_FMT_CAST)iobuf.out.len - 4); } /* reserve room for the next MSG_DATA header */ @@ -757,7 +769,7 @@ static char *perform_io(size_t needed, int flags) if (iobuf.in_fd >= 0 && FD_ISSET(iobuf.in_fd, &r_fds)) { size_t len, pos = iobuf.in.pos + iobuf.in.len; - int n; + ssize_t n; if (pos >= iobuf.in.size) { pos -= iobuf.in.size; len = iobuf.in.size - iobuf.in.len; @@ -784,8 +796,10 @@ static char *perform_io(size_t needed, int flags) exit_cleanup(RERR_SOCKETIO); } } - if (msgs2stderr == 1 && DEBUG_GTE(IO, 2)) - rprintf(FINFO, "[%s] recv=%ld\n", who_am_i(), (long)n); + if (msgs2stderr == 1 && DEBUG_GTE(IO, 2)) { + rprintf(FINFO, "[%s] recv=%" SIZE_T_FMT_MOD "d\n", + who_am_i(), (SIZE_T_FMT_CAST)n); + } if (io_timeout || stop_at_utime) { last_io_in = time(NULL); @@ -803,7 +817,7 @@ static char *perform_io(size_t needed, int flags) if (out && FD_ISSET(iobuf.out_fd, &w_fds)) { size_t len = iobuf.raw_flushing_ends_before ? iobuf.raw_flushing_ends_before - out->pos : out->len; - int n; + ssize_t n; if (bwlimit_writemax && len > bwlimit_writemax) len = bwlimit_writemax; @@ -824,8 +838,8 @@ static char *perform_io(size_t needed, int flags) } } if (msgs2stderr == 1 && DEBUG_GTE(IO, 2)) { - rprintf(FINFO, "[%s] %s sent=%ld\n", - who_am_i(), out == &iobuf.out ? "out" : "msg", (long)n); + rprintf(FINFO, "[%s] %s sent=%" SIZE_T_FMT_MOD "d\n", + who_am_i(), out == &iobuf.out ? "out" : "msg", (SIZE_T_FMT_CAST)n); } if (io_timeout) @@ -945,8 +959,10 @@ int send_msg(enum msgcode code, const char *buf, size_t len, int convert) if (!OUT_MULTIPLEXED) return 0; - if (want_debug) - rprintf(FINFO, "[%s] send_msg(%d, %ld)\n", who_am_i(), (int)code, (long)len); + if (want_debug) { + rprintf(FINFO, "[%s] send_msg(%d, %" SIZE_T_FMT_MOD "d)\n", + who_am_i(), (int)code, (SIZE_T_FMT_CAST)len); + } /* When checking for enough free space for this message, we need to * make sure that there is space for the 4-byte header, plus we'll @@ -1021,8 +1037,10 @@ int send_msg(enum msgcode code, const char *buf, size_t len, int convert) SIVAL(hdr, 0, ((MPLEX_BASE + (int)code)<<24) + len); - if (want_debug && convert > 0) - rprintf(FINFO, "[%s] converted msg len=%ld\n", who_am_i(), (long)len); + if (want_debug && convert > 0) { + rprintf(FINFO, "[%s] converted msg len=%" SIZE_T_FMT_MOD "d\n", + who_am_i(), (SIZE_T_FMT_CAST)len); + } return 1; } @@ -1436,8 +1454,10 @@ static void read_a_msg(void) msg_bytes = tag & 0xFFFFFF; tag = (tag >> 24) - MPLEX_BASE; - if (msgs2stderr == 1 && DEBUG_GTE(IO, 1)) - rprintf(FINFO, "[%s] got msg=%d, len=%ld\n", who_am_i(), (int)tag, (long)msg_bytes); + if (msgs2stderr == 1 && DEBUG_GTE(IO, 1)) { + rprintf(FINFO, "[%s] got msg=%d, len=%" SIZE_T_FMT_MOD "d\n", + who_am_i(), (int)tag, (SIZE_T_FMT_CAST)msg_bytes); + } switch (tag) { case MSG_DATA: @@ -1613,8 +1633,10 @@ static void read_a_msg(void) else goto invalid_msg; iobuf.in_multiplexed = 1; - if (DEBUG_GTE(EXIT, 3)) - rprintf(FINFO, "[%s] got MSG_ERROR_EXIT with %ld bytes\n", who_am_i(), (long)msg_bytes); + if (DEBUG_GTE(EXIT, 3)) { + rprintf(FINFO, "[%s] got MSG_ERROR_EXIT with %" SIZE_T_FMT_MOD "d bytes\n", + who_am_i(), (SIZE_T_FMT_CAST)msg_bytes); + } if (msg_bytes == 0) { if (!am_sender && !am_generator) { if (DEBUG_GTE(EXIT, 3)) { diff --git a/main.c b/main.c index 013a0555..8b145867 100644 --- a/main.c +++ b/main.c @@ -467,38 +467,33 @@ static void output_summary(void) **/ static void show_malloc_stats(void) { -#ifdef HAVE_MALLINFO - struct mallinfo mi; - - mi = mallinfo(); +#ifdef MEM_ALLOC_INFO + struct MEM_ALLOC_INFO mi = MEM_ALLOC_INFO(); /* mallinfo or mallinfo2 */ rprintf(FCLIENT, "\n"); rprintf(FINFO, RSYNC_NAME "[%d] (%s%s%s) heap statistics:\n", (int)getpid(), am_server ? "server " : "", am_daemon ? "daemon " : "", who_am_i()); - rprintf(FINFO, " arena: %10ld (bytes from sbrk)\n", - (long)mi.arena); -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs