From: Martin Liska Date: Mon, 4 Jan 2021 10:13:04 +0000 (+0100) Subject: Port update-copyright.py to Python3 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b25e83536bcd1b2977659a2c6d9f0f9bf2a3152;p=gcc.git Port update-copyright.py to Python3 contrib/ChangeLog: * update-copyright.py: Port to python3 by guessing encoding (first utf8, then iso8859). Add 2 more ignores: .png and .pyc. --- diff --git a/contrib/update-copyright.py b/contrib/update-copyright.py index bc65208d9cb..5603b8eac16 100755 --- a/contrib/update-copyright.py +++ b/contrib/update-copyright.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # # Copyright (C) 2013-2020 Free Software Foundation, Inc. # @@ -64,7 +64,10 @@ class GenericFilter: def __init__ (self): self.skip_files = set() self.skip_dirs = set() - self.skip_extensions = set() + self.skip_extensions = set([ + '.png', + '.pyc', + ]) self.fossilised_files = set() self.own_files = set() @@ -307,7 +310,7 @@ class Copyright: # If it looks like the copyright is incomplete, add the next line. while not self.is_complete (match): try: - next_line = file.next() + next_line = file.readline() except StopIteration: break @@ -381,6 +384,15 @@ class Copyright: return (line != orig_line, line, next_line) + def guess_encoding (self, pathname): + for encoding in ('utf8', 'iso8859'): + try: + open(pathname, 'r', encoding=encoding).read() + return encoding + except UnicodeDecodeError: + pass + return None + def process_file (self, dir, filename, filter): pathname = os.path.join (dir, filename) if filename.endswith ('.tmp'): @@ -395,7 +407,8 @@ class Copyright: changed = False line_filter = filter.get_line_filter (dir, filename) mode = None - with open (pathname, 'r') as file: + encoding = self.guess_encoding(pathname) + with open (pathname, 'r', encoding=encoding) as file: prev = None mode = os.fstat (file.fileno()).st_mode for line in file: @@ -421,7 +434,7 @@ class Copyright: # If something changed, write the new file out. if changed and self.errors.ok(): tmp_pathname = pathname + '.tmp' - with open (tmp_pathname, 'w') as file: + with open (tmp_pathname, 'w', encoding=encoding) as file: for line in lines: file.write (line) os.fchmod (file.fileno(), mode) @@ -432,7 +445,7 @@ class Copyright: def process_tree (self, tree, filter): for (dir, subdirs, filenames) in os.walk (tree): # Don't recurse through directories that should be skipped. - for i in xrange (len (subdirs) - 1, -1, -1): + for i in range (len (subdirs) - 1, -1, -1): if filter.skip_dir (dir, subdirs[i]): del subdirs[i]