[SCM] The rsync repository. - branch master updated
Rsync CVS commit messages
rsync-cvs at lists.samba.org
Tue Sep 29 21:58:24 UTC 2020
The branch, master has been updated
via 9fce0eb5 Avoid some pedantic errors & old warnings.
via 33e94849 Handle early gcc versions that don't understand -Wno-pedantic.
via 8f151118 Make gcc die on init overflow of an array.
via acca9d43 Expand the max name_num_item list size.
via 58f464f4 Change `--info=skip2` messages & add info on attr changes.
via 7eb59a91 Change from $build_cpu to $host_cpu as edo1 suggested.
from 740ed11a Make the extra info on the "exists" messages optional.
https://git.samba.org/?p=rsync.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 9fce0eb5ab80da4d4d97bcde346c9b0b92432ac8
Author: Wayne Davison <wayne at opencoder.net>
Date: Tue Sep 29 14:47:31 2020 -0700
Avoid some pedantic errors & old warnings.
commit 33e94849b1013ff7e7b04e0a45ab2fffe2dd1e44
Author: Wayne Davison <wayne at opencoder.net>
Date: Tue Sep 29 14:22:40 2020 -0700
Handle early gcc versions that don't understand -Wno-pedantic.
commit 8f1511184ab5ad10110286cdef22195b5a67f01f
Author: Wayne Davison <wayne at opencoder.net>
Date: Tue Sep 29 13:04:41 2020 -0700
Make gcc die on init overflow of an array.
- Use -pedantic-errors with gcc to make an array-init fatal.
- Fix all the extra warnings that gcc outputs due to this option.
- Also add -Wno-pedantic to gcc if we're using the internal popt
code (since it has lots of pedantic issues).
commit acca9d43d3143113088efa76d561b813735f1a73
Author: Wayne Davison <wayne at opencoder.net>
Date: Tue Sep 29 12:57:32 2020 -0700
Expand the max name_num_item list size.
commit 58f464f4daa1b1ee00c6afd898a19ca5cd81bf58
Author: Wayne Davison <wayne at opencoder.net>
Date: Wed Sep 23 09:26:10 2020 -0700
Change `--info=skip2` messages & add info on attr changes.
commit 7eb59a9152a2ace7bc7858e9915c671b3ab54344
Author: Wayne Davison <wayne at opencoder.net>
Date: Tue Sep 22 17:19:45 2020 -0700
Change from $build_cpu to $host_cpu as edo1 suggested.
-----------------------------------------------------------------------
Summary of changes:
NEWS.md | 3 ++-
configure.ac | 20 +++++++++++++++++---
generator.c | 13 ++++++++-----
lib/sysxattrs.c | 9 +++++----
loadparm.c | 2 +-
log.c | 24 +++++++++++++++++-------
rsync.1.md | 7 ++++---
rsync.h | 2 +-
tls.c | 3 ++-
token.c | 2 +-
xattrs.c | 3 ++-
11 files changed, 60 insertions(+), 28 deletions(-)
Changeset truncated at 500 lines:
diff --git a/NEWS.md b/NEWS.md
index d978222c..bbc1b3fe 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -32,7 +32,8 @@
- Added extra info to the "FILENAME exists" output of `--ignore-existing` when
`--info=skip2` is used. The skip message becomes "FILENAME exists (INFO)"
- where the INFO is one of uptodate, type differs, or differs.
+ where the INFO is one of "type change", "sum change" (requires `-c`), "file
+ change" (based on the quick check), "attr change", or "uptodate".
- Some manpage improvements.
diff --git a/configure.ac b/configure.ac
index 109546a6..1116e658 100644
--- a/configure.ac
+++ b/configure.ac
@@ -211,7 +211,7 @@ CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-g //'`
if test x"$enable_simd" != x"no"; then
# For x86-64 SIMD, g++ >=5 or clang++ >=7 is required
- if test x"$build_cpu" = x"x86_64"; then
+ if test x"$host_cpu" = x"x86_64"; then
AC_LANG(C++)
AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
#include <immintrin.h>
@@ -283,8 +283,8 @@ AC_ARG_ENABLE(asm,
AS_HELP_STRING([--disable-asm],[disable ASM optimizations]))
if test x"$enable_asm" != x"no"; then
- if test x"$build_cpu" = x"x86_64"; then
- ASM="$build_cpu"
+ if test x"$host_cpu" = x"x86_64"; then
+ ASM="$host_cpu"
elif test x"$enable_asm" = x"yes"; then
AC_MSG_RESULT(unavailable)
AC_MSG_ERROR(The ASM optimizations are currently x86_64 only.
@@ -1046,6 +1046,20 @@ elif test x"$ac_cv_header_popt_h" != x"yes"; then
with_included_popt=yes
fi
+if test x"$GCC" = x"yes"; then
+ if test x"$with_included_popt" != x"yes"; then
+ # Turn pedantic warnings into errors to ensure an array-init overflow is an error.
+ CFLAGS="$CFLAGS -pedantic-errors"
+ else
+ # Our internal popt code cannot be compiled with pedantic warnings as errors, so try to
+ # turn off pedantic warnings (which will not lose the error for array-init overflow).
+ case `$CC -dumpversion 2>/dev/null` in
+ 4.*) ;; # Early gcc doesn't understand -Wno-pedantic
+ *) CFLAGS="$CFLAGS -pedantic-errors -Wno-pedantic" ;;
+ esac
+ fi
+fi
+
AC_MSG_CHECKING([whether to use included libpopt])
if test x"$with_included_popt" = x"yes"; then
AC_MSG_RESULT($srcdir/popt)
diff --git a/generator.c b/generator.c
index e3bc40a6..a890bdc3 100644
--- a/generator.c
+++ b/generator.c
@@ -182,7 +182,8 @@ static int remember_delete(struct file_struct *file, const char *fname, int flag
static int read_delay_line(char *buf, int *flags_p)
{
static int read_pos = 0;
- int j, len, mode;
+ unsigned int mode;
+ int j, len;
char *bp, *past_space;
while (1) {
@@ -1381,11 +1382,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
const char *suf = "";
if (INFO_GTE(SKIP, 2)) {
if (ftype != stype)
- suf = " (type differs)";
- else if (quick_check_ok(ftype, fname, file, &sx.st))
- suf = " (uptodate)";
+ suf = " (type change)";
+ else if (!quick_check_ok(ftype, fname, file, &sx.st))
+ suf = always_checksum ? " (sum change)" : " (file change)";
+ else if (!unchanged_attrs(fname, file, &sx))
+ suf = " (attr change)";
else
- suf = " (differs)";
+ suf = " (uptodate)";
}
rprintf(FINFO, "%s exists%s\n", fname, suf);
}
diff --git a/lib/sysxattrs.c b/lib/sysxattrs.c
index 583b93e9..d403caf5 100644
--- a/lib/sysxattrs.c
+++ b/lib/sysxattrs.c
@@ -67,7 +67,7 @@ ssize_t sys_lgetxattr(const char *path, const char *name, void *value, size_t si
u_int32_t offset = len;
size_t data_retrieved = len;
while (data_retrieved < size) {
- len = getxattr(path, name, value + offset, size - data_retrieved, offset, XATTR_NOFOLLOW);
+ len = getxattr(path, name, (char*)value + offset, size - data_retrieved, offset, XATTR_NOFOLLOW);
if (len <= 0)
break;
data_retrieved += len;
@@ -167,7 +167,7 @@ static ssize_t read_xattr(int attrfd, void *buf, size_t buflen)
} else {
size_t bufpos;
for (bufpos = 0; bufpos < sb.st_size; ) {
- ssize_t cnt = read(attrfd, buf + bufpos, sb.st_size - bufpos);
+ ssize_t cnt = read(attrfd, (char*)buf + bufpos, sb.st_size - bufpos);
if (cnt <= 0) {
if (cnt < 0 && errno == EINTR)
continue;
@@ -218,7 +218,7 @@ int sys_lsetxattr(const char *path, const char *name, const void *value, size_t
return -1;
for (bufpos = 0; bufpos < size; ) {
- ssize_t cnt = write(attrfd, value+bufpos, size);
+ ssize_t cnt = write(attrfd, (char*)value + bufpos, size);
if (cnt <= 0) {
if (cnt < 0 && errno == EINTR)
continue;
@@ -274,7 +274,8 @@ ssize_t sys_llistxattr(const char *path, char *list, size_t size)
&& (dp->d_name[10] == 'o' || dp->d_name[10] == 'w'))
continue;
- if ((ret += len+1) > size) {
+ ret += len + 1;
+ if ((size_t)ret > size) {
if (size == 0)
continue;
ret = -1;
diff --git a/loadparm.c b/loadparm.c
index 952a0b74..3906bc0f 100644
--- a/loadparm.c
+++ b/loadparm.c
@@ -437,7 +437,7 @@ static BOOL do_parameter(char *parmname, char *parmvalue)
break;
case P_OCTAL:
- sscanf(parmvalue, "%o", (int *)parm_ptr);
+ sscanf(parmvalue, "%o", (unsigned int *)parm_ptr);
break;
case P_PATH:
diff --git a/log.c b/log.c
index 062a930e..06844a94 100644
--- a/log.c
+++ b/log.c
@@ -838,14 +838,24 @@ void maybe_log_item(struct file_struct *file, int iflags, int itemizing, const c
void log_delete(const char *fname, int mode)
{
- static struct {
- union file_extras ex[4]; /* just in case... */
- struct file_struct file;
- } x; /* Zero-initialized due to static declaration. */
+ static struct file_struct *file = NULL;
int len = strlen(fname);
const char *fmt;
- x.file.mode = mode;
+ if (!file) {
+ int extra_len = (file_extra_cnt + 2) * EXTRA_LEN;
+ char *bp;
+#if EXTRA_ROUNDING > 0
+ if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN))
+ extra_len = (extra_len | (EXTRA_ROUNDING * EXTRA_LEN)) + EXTRA_LEN;
+#endif
+
+ bp = new_array0(char, FILE_STRUCT_LEN + extra_len + 1);
+ bp += extra_len;
+ file = (struct file_struct *)bp;
+ }
+
+ file->mode = mode;
if (am_server && protocol_version >= 29 && len < MAXPATHLEN) {
if (S_ISDIR(mode))
@@ -855,14 +865,14 @@ void log_delete(const char *fname, int mode)
;
else {
fmt = stdout_format_has_o_or_i ? stdout_format : "deleting %n";
- log_formatted(FCLIENT, fmt, "del.", &x.file, fname, ITEM_DELETED, NULL);
+ log_formatted(FCLIENT, fmt, "del.", file, fname, ITEM_DELETED, NULL);
}
if (!logfile_name || dry_run || !logfile_format)
return;
fmt = logfile_format_has_o_or_i ? logfile_format : "deleting %n";
- log_formatted(FLOG, fmt, "del.", &x.file, fname, ITEM_DELETED, NULL);
+ log_formatted(FLOG, fmt, "del.", file, fname, ITEM_DELETED, NULL);
}
/*
diff --git a/rsync.1.md b/rsync.1.md
index ba79eb7a..3e4a72b0 100644
--- a/rsync.1.md
+++ b/rsync.1.md
@@ -1607,9 +1607,10 @@ your home directory (remove the '=' for that).
only looking at the existing files in the destination hierarchy itself.
When `--info=skip2` is used rsync will output "FILENAME exists (INFO)"
- messages where the INFO indicates one of "uptodate", "type differs", or
- "differs". The first level of skip messages (which is also implied by
- `-vv`) outputs the exists message without the "(INFO)" suffix.
+ messages where the INFO indicates one of "type change", "sum change"
+ (requires `-c`), "file change" (based on the quick check), "attr change",
+ or "uptodate". Using `--info=skip1` (which is also implied by `-vv`)
+ outputs the exists message without the INFO suffix.
0. `--remove-source-files`
diff --git a/rsync.h b/rsync.h
index 68dfba51..9d5c8008 100644
--- a/rsync.h
+++ b/rsync.h
@@ -1164,7 +1164,7 @@ struct name_num_obj {
uchar *saw;
int saw_len;
int negotiated_num;
- struct name_num_item list[8]; /* A big-enough len (we'll get a compile error if it is ever too small) */
+ struct name_num_item list[10]; /* we'll get a compile error/warning if this is ever too small */
};
#ifndef __cplusplus
diff --git a/tls.c b/tls.c
index c50fa6c3..cb497360 100644
--- a/tls.c
+++ b/tls.c
@@ -60,7 +60,8 @@ int nsec_times = 0;
static int stat_xattr(const char *fname, STRUCT_STAT *fst)
{
- int mode, rdev_major, rdev_minor, uid, gid, len;
+ unsigned int mode;
+ int rdev_major, rdev_minor, uid, gid, len;
char buf[256];
if (am_root >= 0 || IS_DEVICE(fst->st_mode) || IS_SPECIAL(fst->st_mode))
diff --git a/token.c b/token.c
index 61be8dd9..3a6d069e 100644
--- a/token.c
+++ b/token.c
@@ -570,7 +570,7 @@ static int32 recv_deflated_token(int f, char **data)
rx_strm.avail_in = 4;
rx_strm.next_in = (Bytef *)cbuf;
cbuf[0] = cbuf[1] = 0;
- cbuf[2] = cbuf[3] = 0xff;
+ cbuf[2] = cbuf[3] = (char)0xff;
inflate(&rx_strm, Z_SYNC_FLUSH);
recv_state = r_idle;
}
diff --git a/xattrs.c b/xattrs.c
index bcb4bcac..508649c0 100644
--- a/xattrs.c
+++ b/xattrs.c
@@ -1118,7 +1118,8 @@ int del_def_xattr_acl(const char *fname)
int get_stat_xattr(const char *fname, int fd, STRUCT_STAT *fst, STRUCT_STAT *xst)
{
- int mode, rdev_major, rdev_minor, uid, gid, len;
+ unsigned int mode;
+ int rdev_major, rdev_minor, uid, gid, len;
char buf[256];
if (am_root >= 0 || IS_DEVICE(fst->st_mode) || IS_SPECIAL(fst->st_mode))
--
The rsync repository.
More information about the rsync-cvs
mailing list