diff options
author | Wayne Davison <wayne@opencoder.net> | 2021-11-03 09:35:50 -0700 |
---|---|---|
committer | Wayne Davison <wayne@opencoder.net> | 2021-11-03 09:35:50 -0700 |
commit | e4669b81ae0b1e23c4e122022d2507bccc2df5f9 (patch) | |
tree | 406ccaba9107a696a11db36a7484a0c749be5613 | |
parent | 1b9308b727f3b7b6a254ef6c2359f95f0907ff5e (diff) | |
download | rsync-e4669b81ae0b1e23c4e122022d2507bccc2df5f9.tar.gz |
Add the --info=NONREG setting.
-rw-r--r-- | NEWS.md | 5 | ||||
-rw-r--r-- | backup.c | 3 | ||||
-rw-r--r-- | generator.c | 8 | ||||
-rw-r--r-- | options.c | 13 | ||||
-rw-r--r-- | rsync.1.md | 24 | ||||
-rw-r--r-- | rsync.h | 3 |
6 files changed, 40 insertions, 16 deletions
@@ -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. @@ -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(); diff --git a/generator.c b/generator.c index 4e75ae2e..6e1cbe91 100644 --- a/generator.c +++ b/generator.c @@ -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; } @@ -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); } @@ -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` @@ -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) |