The branch, master has been updated via 2f9b963a Make `--max-alloc=0` safer. via 3476caea Convert mnt-excl into python. via 6f3c5ecc Fix old stats bug that counted devices as symlinks. via 79fda353 A couple more NEWS improvements. from cd769934 Mention updated config files.
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2f9b963abaa52e44891180fe6c0d1c2219f6686d Author: Wayne Davison <wa...@opencoder.net> Date: Tue Jun 27 09:01:15 2023 -0700 Make `--max-alloc=0` safer. Always do size checking in my_alloc(), even for `--max-alloc=0`. commit 3476caea3e10ec06b839d0e95b09c145dd3cbfaf Author: Wayne Davison <wa...@opencoder.net> Date: Mon May 22 08:29:15 2023 -0700 Convert mnt-excl into python. commit 6f3c5eccee6cf4dead68b9f3fda8fc2ff90dc311 Author: Wayne Davison <wa...@opencoder.net> Date: Tue May 16 22:44:54 2023 -0700 Fix old stats bug that counted devices as symlinks. commit 79fda353425daba6b23753c8b1b01dc35ecaac7d Author: Wayne Davison <wa...@opencoder.net> Date: Thu May 4 08:56:10 2023 -0700 A couple more NEWS improvements. ----------------------------------------------------------------------- Summary of changes: NEWS.md | 9 ++++++--- delete.c | 2 +- flist.c | 2 +- options.c | 2 ++ rsync.1.md | 3 ++- support/mnt-excl | 48 +++++++++++++++++++++++++++++------------------- util2.c | 2 +- 7 files changed, 42 insertions(+), 26 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 2821a990..ca60c32c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -13,8 +13,9 @@ - Add a backtick to the list of characters that the filename quoting needs to escape using backslashes. -- Fixed a string-comparison issue in the internal file-list code that affected - tr_TR.utf-8. +- Fixed a string-comparison issue in the internal handling of `--progress` (a + locale such as tr_TR.utf-8 needed the internal triggering of `--info` options + to use upper-case flag names to ensure that they match). - Make sure that a local transfer marks the sender side as trusted. @@ -25,10 +26,12 @@ openssl library. - Fixed a problem in the daemon auth for older protocols (29 and before) if the - openssl library is being used to compute md4 checksums. + openssl library is being used to compute MD4 checksums. - Fixed `rsync -VV` on Cygwin -- it needed a flush of stdout. +- Fixed an old stats bug that counted devices as symlinks. + ### ENHANCEMENTS: - Enhanced rrsync with the `-no-overwrite` option that allows you to ensure diff --git a/delete.c b/delete.c index 4a294853..80766164 100644 --- a/delete.c +++ b/delete.c @@ -188,7 +188,7 @@ enum delret delete_item(char *fbuf, uint16 mode, uint16 flags) stats.deleted_symlinks++; #endif else if (IS_DEVICE(mode)) - stats.deleted_symlinks++; + stats.deleted_devices++; else stats.deleted_specials++; } diff --git a/flist.c b/flist.c index 311bbcf1..464d556e 100644 --- a/flist.c +++ b/flist.c @@ -2659,7 +2659,7 @@ struct file_list *recv_file_list(int f, int dir_ndx) } else if (S_ISLNK(file->mode)) stats.num_symlinks++; else if (IS_DEVICE(file->mode)) - stats.num_symlinks++; + stats.num_devices++; else stats.num_specials++; diff --git a/options.c b/options.c index 93bbe7b0..fd674754 100644 --- a/options.c +++ b/options.c @@ -1946,6 +1946,8 @@ int parse_arguments(int *argc_p, const char ***argv_p) goto cleanup; max_alloc = size; } + if (!max_alloc) + max_alloc = SIZE_MAX; if (old_style_args < 0) { if (!am_server && protect_args <= 0 && (arg = getenv("RSYNC_OLD_ARGS")) != NULL && *arg) { diff --git a/rsync.1.md b/rsync.1.md index 894b3663..2ae6f481 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -2106,7 +2106,8 @@ expand it. See the [`--max-size`](#opt) option for a description of how SIZE can be specified. The default suffix if none is given is bytes. - Beginning in 3.2.3, a value of 0 specifies no limit. + Beginning in 3.2.7, a value of 0 is an easy way to specify SIZE_MAX (the + largest limit possible). You can set a default value using the environment variable [`RSYNC_MAX_ALLOC`](#) using the same SIZE values as supported by this diff --git a/support/mnt-excl b/support/mnt-excl index ed7b49ba..bc8b5bcd 100755 --- a/support/mnt-excl +++ b/support/mnt-excl @@ -1,4 +1,4 @@ -#!/usr/bin/env perl +#!/usr/bin/env python3 # This script takes a command-line arg of a source directory # that will be passed to rsync, and generates a set of excludes # that will exclude all mount points from the list. This is @@ -27,23 +27,33 @@ # awk '{print $2}' /proc/mounts | grep -v '^/$' | \ # rsync -avf 'merge,/- -' /dir host:/dest/ -use strict; -use warnings; -use Cwd 'abs_path'; +import os, argparse -my $file = '/proc/mounts'; -my $dir = shift || '/'; -my $trailing_slash = $dir =~ m{./$} ? '/' : ''; -$dir = abs_path($dir) . $trailing_slash; -$dir =~ s{([^/]*)$}{}; -my $trailing = $1; -$trailing = '' if $trailing eq '.' || !-d "$dir$trailing"; -$trailing .= '/' if $trailing ne ''; +MNT_FILE = '/proc/mounts'; -open(IN, $file) or die "Unable to open $file: $!\n"; -while (<IN>) { - $_ = (split)[1]; - next unless s{^\Q$dir$trailing\E}{}o && $_ ne ''; - print "- /$trailing$_\n"; -} -close IN; +def main(): + trailing_slash = '/' if args.path.endswith(('/', '/.')) and args.path != '/' else '' + args.path = os.path.realpath(args.path) + trailing_slash + parent_dir = os.path.dirname(args.path) + trailing = os.path.basename(args.path) + if not os.path.isdir(args.path): + trailing = '' + elif trailing != '': + trailing += '/' + want_path = os.path.join(parent_dir, trailing) + wp_len = len(want_path) + + with open(MNT_FILE) as fh: + for line in fh: + mnt_path = line.split()[1] + if mnt_path.startswith(want_path) and mnt_path != want_path: + print(f"- /{trailing}{mnt_path[wp_len:]}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Output mount points as rsync excludes.", add_help=False) + parser.add_argument("--help", "-h", action="help", help="Output this help message and exit.") + parser.add_argument('path', metavar='PATH', nargs='?', default='/', help="Limit output to those within the PATH hierarchy.") + args = parser.parse_args() + main() + +# vim: sw=4 et diff --git a/util2.c b/util2.c index a8609a5d..3b5a8f41 100644 --- a/util2.c +++ b/util2.c @@ -72,7 +72,7 @@ int msleep(int t) void *my_alloc(void *ptr, size_t num, size_t size, const char *file, int line) { - if (max_alloc && num >= max_alloc/size) { + if (num >= max_alloc/size) { if (!file) return NULL; rprintf(FERROR, "[%s] exceeded --max-alloc=%s setting (file=%s, line=%d)\n", -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs