Add the --info=NONREG setting.

This commit is contained in:
Wayne Davison
2021-11-03 09:35:50 -07:00
parent 1b9308b727
commit e4669b81ae
6 changed files with 40 additions and 16 deletions

View File

@@ -90,6 +90,11 @@
- When `--chown`, `--usermap`, or `--groupmap` is used, rsync now implies
the appropriate `--owner` and/or `--group` option.
- Added the `--info=NONREG` setting to control if rsync should warn about
non-regular files in the transfer. This is enabled by default (keeping the
behavior the same as before), so specifying `--info=nonreg0` can be used to
turn the warnings off.
- More ASM optimizations from Shark64.
- Make rrsync handle the latest options.

View File

@@ -304,7 +304,8 @@ int make_backup(const char *fname, BOOL prefer_rename)
#endif
if (!ret && !S_ISREG(file->mode)) {
rprintf(FINFO, "make_bak: skipping non-regular file %s\n", fname);
if (INFO_GTE(NONREG, 1))
rprintf(FINFO, "make_bak: skipping non-regular file %s\n", fname);
unmake_file(file);
#ifdef SUPPORT_ACLS
uncache_tmp_acls();

View File

@@ -1678,9 +1678,11 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
if (ftype != FT_REG) {
if (solo_file)
fname = f_name(file, NULL);
rprintf(FINFO, "skipping non-regular file \"%s\"\n", fname);
if (INFO_GTE(NONREG, 1)) {
if (solo_file)
fname = f_name(file, NULL);
rprintf(FINFO, "skipping non-regular file \"%s\"\n", fname);
}
goto cleanup;
}

View File

@@ -230,7 +230,7 @@ static const char *debug_verbosity[] = {
#define MAX_VERBOSITY ((int)(sizeof debug_verbosity / sizeof debug_verbosity[0]) - 1)
static const char *info_verbosity[1+MAX_VERBOSITY] = {
/*0*/ NULL,
/*0*/ "NONREG",
/*1*/ "COPY,DEL,FLIST,MISC,NAME,STATS,SYMSAFE",
/*2*/ "BACKUP,MISC2,MOUNT,NAME2,REMOVE,SKIP",
};
@@ -268,9 +268,10 @@ static struct output_struct info_words[COUNT_INFO+1] = {
INFO_WORD(MISC, W_SND|W_REC, "Mention miscellaneous information (levels 1-2)"),
INFO_WORD(MOUNT, W_SND|W_REC, "Mention mounts that were found or skipped"),
INFO_WORD(NAME, W_SND|W_REC, "Mention 1) updated file/dir names, 2) unchanged names"),
INFO_WORD(NONREG, W_REC, "Mention skipped non-regular files (default 1, 0 disables)"),
INFO_WORD(PROGRESS, W_CLI, "Mention 1) per-file progress or 2) total transfer progress"),
INFO_WORD(REMOVE, W_SND, "Mention files removed on the sending side"),
INFO_WORD(SKIP, W_REC, "Mention files that are skipped due to options used (levels 1-2)"),
INFO_WORD(SKIP, W_REC, "Mention files skipped due to transfer overrides (levels 1-2)"),
INFO_WORD(STATS, W_CLI|W_SRV, "Mention statistics at end of run (levels 1-3)"),
INFO_WORD(SYMSAFE, W_SND|W_REC, "Mention symlinks that are unsafe"),
{ NULL, "--info", 0, 0, 0, 0 }
@@ -488,9 +489,9 @@ static void output_item_help(struct output_struct *words)
rprintf(FINFO, fmt, "HELP", "Output this help message");
rprintf(FINFO, "\n");
rprintf(FINFO, "Options added for each increase in verbose level:\n");
rprintf(FINFO, "Options added at each level of verbosity:\n");
for (j = 1; j <= MAX_VERBOSITY; j++) {
for (j = 0; j <= MAX_VERBOSITY; j++) {
parse_output_words(words, levels, verbosity[j], HELP_PRIORITY);
opt = make_output_option(words, levels, W_CLI|W_SRV|W_SND|W_REC);
if (opt) {
@@ -509,7 +510,7 @@ static void set_output_verbosity(int level, uchar priority)
if (level > MAX_VERBOSITY)
level = MAX_VERBOSITY;
for (j = 1; j <= level; j++) {
for (j = 0; j <= level; j++) {
parse_output_words(info_words, info_levels, info_verbosity[j], priority);
parse_output_words(debug_words, debug_levels, debug_verbosity[j], priority);
}
@@ -528,7 +529,7 @@ void limit_output_verbosity(int level)
memset(debug_limits, 0, sizeof debug_limits);
/* Compute the level limits in the above arrays. */
for (j = 1; j <= level; j++) {
for (j = 0; j <= level; j++) {
parse_output_words(info_words, info_limits, info_verbosity[j], LIMIT_PRIORITY);
parse_output_words(debug_words, debug_limits, debug_verbosity[j], LIMIT_PRIORITY);
}

View File

@@ -1019,6 +1019,10 @@ your home directory (remove the '=' for that).
When symlinks are encountered, recreate the symlink on the destination.
By default, rsync generates a "non-regular file" warning for each symlink
encountered when this option is not set. You can silence the warning by
specifying ``--info=nonreg0``.
0. `--copy-links`, `-L`
When symlinks are encountered, the item that they point to (the referent)
@@ -1325,14 +1329,24 @@ your home directory (remove the '=' for that).
0. `--devices`
This option causes rsync to transfer character and block device files to
the remote system to recreate these devices. This option has no effect if
the receiving rsync is not run as the super-user (see also the `--super`
and `--fake-super` options).
the remote system to recreate these devices. If the receiving rsync is not
being run as the super-user, rsync silently skips creating the device files
(see also the `--super` and `--fake-super` options).
By default, rsync generates a "non-regular file" warning for each device
file encountered when this option is not set. You can silence the warning
by specifying ``--info=nonreg0``.
0. `--specials`
This option causes rsync to transfer special files such as named sockets
and fifos.
This option causes rsync to transfer special files, such as named sockets
and fifos. If the receiving rsync is not being run as the super-user,
rsync silently skips creating the special files (see also the `--super` and
`--fake-super` options).
By default, rsync generates a "non-regular file" warning for each special
file encountered when this option is not set. You can silence the warning
by specifying ``--info=nonreg0``.
0. `-D`

View File

@@ -1416,7 +1416,8 @@ extern short info_levels[], debug_levels[];
#define INFO_MISC (INFO_FLIST+1)
#define INFO_MOUNT (INFO_MISC+1)
#define INFO_NAME (INFO_MOUNT+1)
#define INFO_PROGRESS (INFO_NAME+1)
#define INFO_NONREG (INFO_NAME+1)
#define INFO_PROGRESS (INFO_NONREG+1)
#define INFO_REMOVE (INFO_PROGRESS+1)
#define INFO_SKIP (INFO_REMOVE+1)
#define INFO_STATS (INFO_SKIP+1)