diff options
| -rwxr-xr-x | scripts/xattr_user_crc32 | 20 | 
1 files changed, 11 insertions, 9 deletions
| diff --git a/scripts/xattr_user_crc32 b/scripts/xattr_user_crc32 index a13840f..8f47bdd 100755 --- a/scripts/xattr_user_crc32 +++ b/scripts/xattr_user_crc32 @@ -1,5 +1,5 @@  #!/usr/bin/env python3 -# Copyright 2020 vg +# Copyright 2022 vg  # SPDX-License-Identifier: MIT  ''' @@ -24,15 +24,15 @@ Options:          Null instead of LF as filename separator for in and out  ''' -### standard modules +# standard modules  import contextlib  import functools  import itertools -import operator -import os  import sys +from os import getxattr, setxattr +from os.path import basename -### external modules +# external modules  import docopt @@ -69,16 +69,18 @@ def get_crc32(filename):  def main(): -    args = docopt.docopt(__doc__.format(progname=os.path.basename(sys.argv[0]))) +    args = docopt.docopt(__doc__.format(progname=basename(sys.argv[0])))      separator = '\0' if args['-z'] else '\n'      for filename in filenames(args['FILENAME'], separator):          tag_crc32 = None          with contextlib.suppress(OSError): -            tag_crc32 = os.getxattr(filename, 'user.crc32').decode('utf8') +            tag_crc32 = getxattr(filename, 'user.crc32').decode('utf8')          calculated_crc32 = get_crc32(filename) -        os.setxattr(filename, 'user.crc32', calculated_crc32.encode('utf8')) +        if tag_crc32 != calculated_crc32: +            # write access to filesystem only if needed +            setxattr(filename, 'user.crc32', calculated_crc32.encode('utf8'))          print('%-8s %-8s %s' -                % (tag_crc32, calculated_crc32, filename), end=separator) +              % (tag_crc32, calculated_crc32, filename), end=separator)  main() | 
