[SCM] The rsync repository. - branch master updated
Rsync CVS commit messages
rsync-cvs at lists.samba.org
Thu Apr 9 22:11:59 UTC 2020
The branch, master has been updated
via c5fabfb0 Set Copyright years and make them easier to update
from e2aee6c4 Switch RSYNC_PORT to -1 in check_for_hostspec().
https://git.samba.org/?p=rsync.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit c5fabfb068bba9381c0f65fea60a99a62b681008
Author: Wayne Davison <wayned at samba.org>
Date: Thu Apr 9 15:11:37 2020 -0700
Set Copyright years and make them easier to update
I replaced git-set-file-times with an improved version that I wrote
recently (in python3). A new script uses it to figure out the
last-modified year for each *.[ch] file and updates its copyright.
It also puts the latest year into the latest-year.h file for the
output of --version.
-----------------------------------------------------------------------
Summary of changes:
Makefile.in | 1 +
authenticate.c | 2 +-
checksum.c | 2 +-
cleanup.c | 2 +-
clientserver.c | 2 +-
connection.c | 1 +
flist.c | 2 +-
generator.c | 2 +-
latest-year.h | 1 +
lib/md5.c | 1 +
loadparm.c | 7 ++-
log.c | 2 +-
main.c | 2 +-
options.c | 5 +-
progress.c | 2 +-
receiver.c | 2 +-
rounding.c | 2 +-
rsync.c | 2 +-
rsync.h | 2 +-
sender.c | 2 +-
support/git-set-file-times | 119 +++++++++++++++++++++++++++++----------------
support/year-tweak | 93 +++++++++++++++++++++++++++++++++++
uidlist.c | 2 +-
util.c | 2 +-
util2.c | 2 +-
25 files changed, 196 insertions(+), 66 deletions(-)
create mode 100644 latest-year.h
create mode 100755 support/year-tweak
Changeset truncated at 500 lines:
diff --git a/Makefile.in b/Makefile.in
index d7ddbc41..4d6eadc6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -95,6 +95,7 @@ rsync$(EXEEXT): $(OBJS)
$(OBJS): $(HEADERS)
$(CHECK_OBJS): $(HEADERS)
+options.o: latest-year.h
flist.o: rounding.h
diff --git a/authenticate.c b/authenticate.c
index 67c417cc..169331e5 100644
--- a/authenticate.c
+++ b/authenticate.c
@@ -2,7 +2,7 @@
* Support rsync daemon authentication.
*
* Copyright (C) 1998-2000 Andrew Tridgell
- * Copyright (C) 2002-2019 Wayne Davison
+ * Copyright (C) 2002-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/checksum.c b/checksum.c
index b7ea748f..a6f1cd9c 100644
--- a/checksum.c
+++ b/checksum.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1996 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
- * Copyright (C) 2004-2019 Wayne Davison
+ * Copyright (C) 2004-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/cleanup.c b/cleanup.c
index 51130caf..fbf7c60b 100644
--- a/cleanup.c
+++ b/cleanup.c
@@ -4,7 +4,7 @@
* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2002 Martin Pool
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/clientserver.c b/clientserver.c
index 692a4047..3970f507 100644
--- a/clientserver.c
+++ b/clientserver.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1998-2001 Andrew Tridgell <tridge at samba.org>
* Copyright (C) 2001-2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2002-2019 Wayne Davison
+ * Copyright (C) 2002-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/connection.c b/connection.c
index 62818610..1039115c 100644
--- a/connection.c
+++ b/connection.c
@@ -2,6 +2,7 @@
* Support the max connections option.
*
* Copyright (C) 1998 Andrew Tridgell
+ * Copyright (C) 2006-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/flist.c b/flist.c
index 7d7d2c0f..5a29d6e9 100644
--- a/flist.c
+++ b/flist.c
@@ -4,7 +4,7 @@
* Copyright (C) 1996 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2002-2019 Wayne Davison
+ * Copyright (C) 2002-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/generator.c b/generator.c
index 12ad037d..1955bc81 100644
--- a/generator.c
+++ b/generator.c
@@ -4,7 +4,7 @@
* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/latest-year.h b/latest-year.h
new file mode 100644
index 00000000..ddbf2b5e
--- /dev/null
+++ b/latest-year.h
@@ -0,0 +1 @@
+#define LATEST_YEAR "2020"
diff --git a/lib/md5.c b/lib/md5.c
index 4baa9638..c979d10c 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -2,6 +2,7 @@
* RFC 1321 compliant MD5 implementation
*
* Copyright (C) 2001-2003 Christophe Devine
+ * Copyright (C) 2007-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/loadparm.c b/loadparm.c
index 534e7b63..eaa15d7d 100644
--- a/loadparm.c
+++ b/loadparm.c
@@ -11,13 +11,12 @@
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, visit the http://fsf.org website.
- */
-
-/* This is based on loadparm.c from Samba, written by Andrew Tridgell
+ *
+ * This is based on loadparm.c from Samba, written by Andrew Tridgell
* and Karl Auer. Some of the changes are:
*
* Copyright (C) 2001, 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2003-2019 Wayne Davison <wayned at samba.org>
+ * Copyright (C) 2003-2020 Wayne Davison
*/
/* Load parameters.
diff --git a/log.c b/log.c
index b9bab811..3c6b1b9b 100644
--- a/log.c
+++ b/log.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1998-2001 Andrew Tridgell <tridge at samba.org>
* Copyright (C) 2000-2001 Martin Pool <mbp at samba.org>
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/main.c b/main.c
index 9af9e5d3..3b37796d 100644
--- a/main.c
+++ b/main.c
@@ -4,7 +4,7 @@
* Copyright (C) 1996-2001 Andrew Tridgell <tridge at samba.org>
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/options.c b/options.c
index 99d3627a..4ec8d4c8 100644
--- a/options.c
+++ b/options.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1998-2001 Andrew Tridgell <tridge at samba.org>
* Copyright (C) 2000, 2001, 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2002-2019 Wayne Davison
+ * Copyright (C) 2002-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@
#include "rsync.h"
#include "itypes.h"
+#include "latest-year.h"
#include <popt.h>
#include <zlib.h>
@@ -614,7 +615,7 @@ static void print_rsync_version(enum logcode f)
rprintf(f, "%s version %s protocol version %d%s\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
- rprintf(f, "Copyright (C) 1996-2019 by Andrew Tridgell, Wayne Davison, and others.\n");
+ rprintf(f, "Copyright (C) 1996-" LATEST_YEAR " by Andrew Tridgell, Wayne Davison, and others.\n");
rprintf(f, "Web site: http://rsync.samba.org/\n");
rprintf(f, "Capabilities:\n");
rprintf(f, " %d-bit files, %d-bit inums, %d-bit timestamps, %d-bit long ints,\n",
diff --git a/progress.c b/progress.c
index d1cf8caa..21763611 100644
--- a/progress.c
+++ b/progress.c
@@ -4,7 +4,7 @@
* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/receiver.c b/receiver.c
index adfa8047..afc8932c 100644
--- a/receiver.c
+++ b/receiver.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/rounding.c b/rounding.c
index c4c29b31..bf2ecd31 100644
--- a/rounding.c
+++ b/rounding.c
@@ -1,7 +1,7 @@
/*
* A pre-compilation helper program to aid in the creation of rounding.h.
*
- * Copyright (C) 2007-2019 Wayne Davison
+ * Copyright (C) 2007-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/rsync.c b/rsync.c
index b8d9acb9..f4af4945 100644
--- a/rsync.c
+++ b/rsync.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1996 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/rsync.h b/rsync.h
index b1d16b37..3f239f06 100644
--- a/rsync.h
+++ b/rsync.h
@@ -2,7 +2,7 @@
* Copyright (C) 1996, 2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp at samba.org>
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/sender.c b/sender.c
index 27c511ef..4f34cded 100644
--- a/sender.c
+++ b/sender.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 1996 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
- * Copyright (C) 2003-2019 Wayne Davison
+ * Copyright (C) 2003-2020 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/support/git-set-file-times b/support/git-set-file-times
index 53550b74..6fe641a3 100755
--- a/support/git-set-file-times
+++ b/support/git-set-file-times
@@ -1,43 +1,76 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-
-# Sets mtime and atime of files to the latest commit time in git.
-#
-# This is useful after the first clone of the rsync repository BEFORE you
-# do any building. It is also safe if you have done a "make distclean".
-
-my %ls;
-my $commit_time;
-my $prefix = @ARGV && $ARGV[0] =~ s/^--prefix=// ? shift : '';
-
-my $top_dir = `git rev-parse --show-toplevel`;
-exit 1 unless $top_dir;
-chomp($top_dir);
-
-chdir $top_dir or die "Failed to chdir to $top_dir\: $!\n";
-
-$/ = "\0";
-open FH, '-|', qw( git ls-files -z ) or die "Failed to fork: $!";
-while (<FH>) {
- chomp;
- $ls{$_} = $_;
-}
-close FH;
-
-$/ = "\n";
-open FH, '-|', qw( git log -r --name-only --no-color --pretty=raw -z ), @ARGV or die "Failed to fork: $!";
-while (<FH>) {
- chomp;
- if (/^committer .*? (\d+) (?:[\-\+]\d+)$/) {
- $commit_time = $1;
- } elsif (s/\0\0commit [a-f0-9]{40}$// || s/\0$//) {
- my @files = delete @ls{split(/\0/, $_)};
- @files = grep { defined $_ } @files;
- next unless @files;
- map { s/^/$prefix/ } @files;
- utime $commit_time, $commit_time, @files;
- }
- last unless %ls;
-}
-close FH;
+#!/usr/bin/python3
+
+import os, re, argparse, subprocess
+from datetime import datetime
+
+NULL_COMMIT_RE = re.compile(r'\0\0commit [a-f0-9]{40}$|\0$')
+
+def main():
+ if not args.git_dir:
+ cmd = 'git rev-parse --show-toplevel 2>/dev/null || echo .'
+ top_dir = subprocess.check_output(cmd, shell=True).decode('utf-8').strip()
+ args.git_dir = os.path.join(top_dir, '.git')
+ if not args.prefix:
+ os.chdir(top_dir)
+
+ git = [ 'git', '--git-dir=' + args.git_dir ]
+
+ if args.tree:
+ cmd = git + 'ls-tree -z -r --name-only'.split() + [ args.tree ]
+ else:
+ cmd = git + 'ls-files -z'.split()
+
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ out = proc.communicate()[0].decode('utf-8')
+ ls = set(out.split('\0'))
+ ls.discard('')
+
+ cmd = git + 'log -r --name-only --no-color --pretty=raw --no-renames -z'.split()
+ if args.tree:
+ cmd.append(args.tree)
+ cmd += ['--'] + args.files
+
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ for line in proc.stdout:
+ line = line.decode('utf-8').strip()
+ m = re.match(r'^committer .*? (\d+) [-+]\d+$', line)
+ if m:
+ commit_time = int(m[1])
+ elif NULL_COMMIT_RE.search(line):
+ line = NULL_COMMIT_RE.sub('', line)
+ files = set(fn for fn in line.split('\0') if fn in ls)
+ if not files:
+ continue
+ for fn in files:
+ if args.prefix:
+ fn = args.prefix + fn
+ mtime = os.lstat(fn).st_mtime
+ if args.list:
+ if args.list > 1:
+ ts = str(commit_time).rjust(10)
+ else:
+ ts = datetime.utcfromtimestamp(commit_time).strftime("%Y-%m-%d %H:%M:%S")
+ chg = '.' if mtime == commit_time else '*'
+ print(chg, ts, fn)
+ elif mtime != commit_time:
+ if not args.quiet:
+ print(f"Setting {fn}")
+ os.utime(fn, (commit_time, commit_time), follow_symlinks = False)
+ ls -= files
+ if not ls:
+ break
+ proc.communicate()
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description="Set the times of the current git checkout to their last-changed time.")
+ parser.add_argument('--git-dir', metavar='GIT_DIR', help="The git dir to query (defaults to affecting the current git checkout).")
+ parser.add_argument('--tree', metavar='TREE-ISH', help="The tree-ish to query (defaults to the current branch).")
+ parser.add_argument('--prefix', metavar='PREFIX_STR', help="Prepend the PREFIX_STR to each filename we tweak.")
+ parser.add_argument('--quiet', '-q', action='store_true', help="Don't output the changed-file information.")
+ parser.add_argument('--list', '-l', action='count', help="List the files and their dates instead of changing them. Repeat for Unix Time instead of human reable.")
+ parser.add_argument('files', metavar='FILE', nargs='*', help="Specify a subset of checked-out files to tweak.")
+ args = parser.parse_args()
+ main()
+
+# vim: sw=4 et
diff --git a/support/year-tweak b/support/year-tweak
new file mode 100755
index 00000000..aff72aa4
--- /dev/null
+++ b/support/year-tweak
@@ -0,0 +1,93 @@
+#!/usr/bin/python3
+
+# This uses the output from "support/git-set-file-times --list" to discern
+# the last-modified year of each *.c & *.h file and updates the copyright
+# year if it isn't set right.
+
+import sys, os, re, argparse, subprocess
+from datetime import datetime
+
+MAINTAINER_NAME = 'Wayne Davison'
+MAINTAINER_SUF = ' ' + MAINTAINER_NAME + "\n"
+
+def main():
+ latest_year = '2000'
+
+ proc = subprocess.Popen('support/git-set-file-times --list'.split(), stdout=subprocess.PIPE, encoding='utf-8')
+ for line in proc.stdout:
+ m = re.match(r'^\S\s+(?P<year>\d\d\d\d)\S+\s+\S+\s+(?P<fn>.+)', line)
+ if not m:
+ print("Failed to parse line from git-set-file-times:", line)
+ sys.exit(1)
+ m = argparse.Namespace(**m.groupdict())
+ if m.year > latest_year:
+ latest_year = m.year
+ if not re.search(r'\.(c|h|[1-9])$', m.fn) or m.fn.startswith('zlib/'):
+ continue
+ maybe_edit_copyright_year(m.fn, m.year)
+ proc.communicate()
+
+ fn = 'latest-year.h'
+ with open(fn, 'r', encoding='utf-8') as fh:
+ old_txt = fh.read()
+
+ txt = f'#define LATEST_YEAR "{latest_year}"\n'
+ if txt != old_txt:
+ print(f"Updating {fn} with year {latest_year}")
+ with open(fn, 'w', encoding='utf-8') as fh:
+ fh.write(txt)
+
+
+def maybe_edit_copyright_year(fn, year):
+ opening_lines = [ ]
+ copyright_line = None
+
+ with open(fn, 'r', encoding='utf-8') as fh:
+ for line in fh:
+ opening_lines.append(line)
+ if not re.search(r'\S', line):
+ break
+ m = re.match(r'^(?P<pre>.*Copyright\s+\S+\s+)(?P<year>\d\d\d\d(?:-\d\d\d\d)?(,\s+\d\d\d\d)*)(?P<suf>.+)', line)
+ if not m:
+ continue
+ copyright_line = argparse.Namespace(**m.groupdict())
+ copyright_line.lineno = len(opening_lines)
+ copyright_line.is_maintainer_line = MAINTAINER_NAME in copyright_line.suf
+ copyright_line.txt = line
+ if copyright_line.is_maintainer_line:
+ break
+
+ if not copyright_line:
+ return
+
+ if copyright_line.is_maintainer_line:
+ cyears = copyright_line.year.split('-')
+ if year == cyears[0]:
+ cyears = [ year ]
+ else:
+ cyears = [ cyears[0], year ]
+ txt = copyright_line.pre + '-'.join(cyears) + MAINTAINER_SUF
+ if txt == copyright_line.txt:
+ return
+ opening_lines[copyright_line.lineno - 1] = txt
+ else:
+ if fn.startswith('lib/'):
+ return
+ txt = copyright_line.pre + year + MAINTAINER_SUF
+ opening_lines[copyright_line.lineno - 1] += txt
+
+ remaining_txt = fh.read()
+
+ print(f"Updating {fn} with year {year}")
+
+ with open(fn, 'w', encoding='utf-8') as fh:
+ fh.write(''.join(opening_lines))
+ fh.write(remaining_txt)
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description="Grab the year of last mod for our c & h files and make sure the Copyright comment is up-to-date.")
+ args = parser.parse_args()
+ main()
+
+# vim: sw=4 et
diff --git a/uidlist.c b/uidlist.c
--
The rsync repository.
More information about the rsync-cvs
mailing list