Skip to content

Commit

Permalink
Add the --info=NONREG setting.
Browse files Browse the repository at this point in the history
  • Loading branch information
WayneD committed Nov 3, 2021
1 parent 1b9308b commit e4669b8
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 16 deletions.
5 changes: 5 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion backup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
8 changes: 5 additions & 3 deletions generator.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
13 changes: 7 additions & 6 deletions options.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
};
Expand Down Expand Up @@ -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 }
Expand Down Expand Up @@ -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) {
Expand All @@ -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);
}
Expand All @@ -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);
}
Expand Down
24 changes: 19 additions & 5 deletions rsync.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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`

Expand Down
3 changes: 2 additions & 1 deletion rsync.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

1 comment on commit e4669b8

@JhonnyTheJeccer
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, this is an even better solution. I will test this out later today. Thank you for your fast response!

If I am correct, this should fix #248 and #111.

Please sign in to comment.