Hello community, here is the log from the commit of package convmv for openSUSE:Factory checked in at 2019-01-08 12:26:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/convmv (Old) and /work/SRC/openSUSE:Factory/.convmv.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "convmv" Tue Jan 8 12:26:43 2019 rev:23 rq:661857 version:2.05 Changes: -------- --- /work/SRC/openSUSE:Factory/convmv/convmv.changes 2017-11-27 22:18:07.835245644 +0100 +++ /work/SRC/openSUSE:Factory/.convmv.new.28833/convmv.changes 2019-01-08 12:28:44.460254970 +0100 @@ -1,0 +2,9 @@ +Fri Dec 28 18:32:15 UTC 2018 - Petr Gajdos <[email protected]> + +- Update to 2.05: + * allow NFC/NFD conversion on APFS volumes, add man page section + for that filesystem + * use case- and normalization-insensitivity workarounds also for + parsable mode + +------------------------------------------------------------------- Old: ---- convmv-2.04.tar.gz New: ---- convmv-2.05.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ convmv.spec ++++++ --- /var/tmp/diff_new_pack.l0BQo1/_old 2019-01-08 12:28:44.812254586 +0100 +++ /var/tmp/diff_new_pack.l0BQo1/_new 2019-01-08 12:28:44.812254586 +0100 @@ -1,7 +1,7 @@ # # spec file for package convmv # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,15 +12,15 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: convmv -Version: 2.04 +Version: 2.05 Release: 0 Summary: Converts File Names from One Encoding to Another -License: GPL-2.0+ +License: GPL-2.0-or-later Group: Productivity/File utilities Url: http://j3e.de/linux/convmv/ Source: http://j3e.de/linux/convmv/%{name}-%{version}.tar.gz ++++++ convmv-2.04.tar.gz -> convmv-2.05.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/convmv-2.04/Changes new/convmv-2.05/Changes --- old/convmv-2.04/Changes 2017-11-20 22:15:32.000000000 +0100 +++ new/convmv-2.05/Changes 2018-03-26 22:32:57.000000000 +0200 @@ -1,3 +1,7 @@ +2.05 +- allow NFC/NFD conversion on APFS volumes, add man page section for that filesystem +- use case- and normalization-insensitivity workarounds also for parsable mode + 2.04 - check for valid utf-8 also in upperlower_checkenc() - fix parsable output, missed the path files to run utime() on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/convmv-2.04/SHA256sums new/convmv-2.05/SHA256sums --- old/convmv-2.04/SHA256sums 2017-11-20 22:37:52.000000000 +0100 +++ new/convmv-2.05/SHA256sums 2018-03-26 22:37:13.000000000 +0200 @@ -2,17 +2,18 @@ Hash: SHA256 33cd6497c59daf1697e21663343f703b1eaf6a13e435c4e654c56790a9a7bd2e ./TODO -2275cc495a2f39185400844c0ecfcd223dd36167bac27d0ea83a60cba718e187 ./convmv +05fb77c30e5a16bc4bc5a4998d17fdbe8ed26b97e0ba4b69c606dfa8d7ab4a90 ./convmv 31a04f0b0584237d6f81fab7e77b0d43e307230102f09db947e20b2a3103a108 ./testsuite.tar 42b2cfe802e3bac5bdc2462a0d61de002991125053e41c18d5cd7799b4cebf2b ./CREDITS -cfbcc24bdb8d268486e65a1dac11b6fea3e07805769d3d15918238a43059ce44 ./VERSION -37b03ab277d317eea59c2430f36045ac7a3c231c91e39580e4248c54912929fc ./Changes +75f95d34c899a792823b9bf9b0d516bb4b8ecf7b9d02db2e41e63220feb1ab19 ./VERSION +58c737e1926e8480c0f00d5ac3e76b2de492f215c06bcce8ded4e52c080a3dc6 ./Changes +e84cf66fe230f2405c7ef960d5856f21253870bbd7c55d58ba95b7b555f32891 ./pod2htmd.tmp 10f96f4cf2f61333c289f603cedd4c0f5e523d2da05486d9bea670f3877d8592 ./Makefile a2a9cfa48ba7f7453edf1c43bb8bb1aef5fcd1b87dde11420edceee2e2528db0 ./GPL2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 -iEYEAREIAAYFAloTSy4ACgkQdoo0s+hIejnMZwCg9dimRgvjBTQggCwkR9Xql79Y -5tQAn0hvSXL+3TszEP3chObXayLMCrvl -=ZMbA +iEYEAREIAAYFAlq5WfgACgkQdoo0s+hIejkFlgCghno0G0B0tXjNXXWTmMRJ9PqO +ydkAoK3eI1fMoRBe3KmLgwhRSplU7OEZ +=W+j+ -----END PGP SIGNATURE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/convmv-2.04/VERSION new/convmv-2.05/VERSION --- old/convmv-2.04/VERSION 2017-11-20 22:37:50.000000000 +0100 +++ new/convmv-2.05/VERSION 2018-03-26 22:37:12.000000000 +0200 @@ -1 +1 @@ -2.04 +2.05 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/convmv-2.04/convmv new/convmv-2.05/convmv --- old/convmv-2.04/convmv 2017-11-20 22:30:29.000000000 +0100 +++ new/convmv-2.05/convmv 2018-03-26 22:37:10.000000000 +0200 @@ -1,6 +1,6 @@ #!/usr/bin/perl -# convmv 2.04 - converts filenames from one encoding to another -# Copyright © 2003-2017 Bjoern JACKE <[email protected]> +# convmv 2.05 - converts filenames from one encoding to another +# Copyright © 2003-2018 Bjoern JACKE <[email protected]> # # This program comes with ABSOLUTELY NO WARRANTY; it may be copied or modified # under the terms of the GNU General Public License version 2 or 3 as @@ -203,16 +203,36 @@ Linux and (most?) other Unix-like operating systems use the so called normalization form C (NFC) for its UTF-8 encoding by default but do not enforce -this. Darwin, the base of the Macintosh OS enforces normalization form D +this. HFS+ on the Macintosh OS enforces normalization form D (NFD), where a few characters are encoded in a different way. On OS X it's not possible to create NFC UTF-8 filenames because this is prevented at filesystem layer. On HFS+ filenames are internally stored in UTF-16 and when converted -back to UTF-8, for the underlying BSD system to be handable, NFD is created. -See http://developer.apple.com/qa/qa2001/qa1173.html for defails. I think it -was a very bad idea and breaks many things under OS X which expect a normal -POSIX conforming system. Anywhere else convmv is able to convert files from NFC -to NFD or vice versa which makes interoperability with such systems a lot -easier. +back to UTF-8 (because the Unix based OS can't deal with UTF-16 directly), NFD +is created for whatever reason. See +http://developer.apple.com/qa/qa2001/qa1173.html for defails. I think it was a +very bad idea and breaks many things under OS X which expect a normal POSIX +conforming system. Anywhere else convmv is able to convert files from NFC to +NFD or vice versa which makes interoperability with such systems a lot easier. + +=head3 APFS on macOS + +Apple, with the introduction of APFS in macOS 10.3, gave up to impose NFD on +user space. But once you enforced NFD there is no easy way back without +breaking existing applications. So they had to make APFS +normalization-insensitive, that means a file can be created in NFC or NFD in +the filesystem and it can be accessed with both forms also. Under the hood they +store hashes of the normalized form of the filename to provide normalization +insensitivity. Sounds like a great idea? Let's see: If you readddir a +directory, you will get back the files in the the normalization form that was +used when those files were created. If you stat a file in NFC or in NFD form +you will get back whatever normalization form you used in the stat call. So +user space applications can't expect that a file that can be stat'ed and +accessed successfully, is also part of directory listings because the returned +normalization form is faked to match what the user asked for. Theoretically +also user space will have to normalize strings all the time. This is the same +problem as for the case insensitivity of filenames before, which still breaks +many user space applications. Just that the latter one was much more obvious to +spot and to implement than this thing. So long, and thanks for all the fish. =head3 JFS @@ -457,7 +477,7 @@ print UNDOLOG "# this is a per undo script generated by convmv.\n", "# Please check if this looks reasonable before running!\n"; print UNDOLOG "# Example: perl $opt_undo_script\n"; - print UNDOLOG "chdir $pwd;\n"; + print UNDOLOG "chdir '$pwd;\n'"; } ## do {print ord($_)."_" for (split(//,$_));print "\n"; } for (@args); # debug print @@ -652,24 +672,26 @@ } &save_parent_mtime($dir) if ($opt_mtimes); # the following is to handle case-insensitive filesystems: - if ($opt_lower or $opt_upper) { + if ($opt_lower or $opt_upper or $opt_nfc or $opt_nfd) { if ((stat $oldfile)[1] == (stat $newname)[1]) { $ci_old_new_same_inode = 1; #print $outerr "found case-insensitive filesystem...\n"; - if ($opt_notest) { - my $try; - for (1 .. 10000) { - $try = "convmvtmp".$_; - if (! -e $try) { - #print $outerr "(via temp rename to \"$try\")\n"; - rename ($oldfile, $try); - $opt++; - print UNDOLOG "rename (\"$dir/$try\", \"$dir/$oldfile\");\n"; - $oldfile=$try; - last; - } + my $tmpfile; + for (1 .. 10000) { + $tmpfile = "convmvtmp".$_; + if (! -e "convmvtmp".$_) { + $tmpfile = "convmvtmp".$_; + last; } } + if ($opt_notest) { + rename ($oldfile, $tmpfile); + print UNDOLOG "rename (\"$dir/$tmpfile\", \"$dir/$oldfile\");\n"; + $oldfile=$tmpfile; + } elsif ($opt_parsable) { + print "rename".$del.$dir."/".$oldfile.$del.$dir."/".$tmpfile.$fin_del; + $oldfile=$tmpfile; + } } } if (-e $newname and !$opt_exec and !$ci_old_new_same_inode) { @@ -807,8 +829,8 @@ sub printusage { &check_for_perl_bugs; print <<END; -convmv 2.04 - converts filenames from one encoding to another -Copyright (C) 2003-2017 Bjoern JACKE <bjoern\@j3e.de> +convmv 2.05 - converts filenames from one encoding to another +Copyright (C) 2003-2018 Bjoern JACKE <bjoern\@j3e.de> This program comes with ABSOLUTELY NO WARRANTY; it may be copied or modified under the terms of the GNU General Public License version 2 or 3 as published diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/convmv-2.04/pod2htmd.tmp new/convmv-2.05/pod2htmd.tmp --- old/convmv-2.04/pod2htmd.tmp 1970-01-01 01:00:00.000000000 +0100 +++ new/convmv-2.05/pod2htmd.tmp 2018-03-26 22:35:34.000000000 +0200 @@ -0,0 +1,2 @@ + +.
