Hi Raphael, Attached is the diff for my convmv 1.10-0.1 NMU uploaded to delayed/2.
Cheers, -- Julien Danjou .''`. Debian Developer : :' : http://julien.danjou.info `. `' http://people.debian.org/~acid `- 9A0D 5FD9 EB42 22F6 8974 C95C A462 B51E C2FE E5CD
diff -Nru /tmp/YmO7y26nwh/convmv-1.09/Changes /tmp/MDhKb3cRW9/convmv-1.10/Changes --- /tmp/YmO7y26nwh/convmv-1.09/Changes 2005-12-09 13:09:55.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/Changes 2006-06-26 03:03:26.000000000 +0200 @@ -1,3 +1,9 @@ +1.10 +- now use from_to instead of utf8::decode (which is experimental and might vanish in the future) to check for valid UTF-8 +- updates and cleanups of testsuite and include "0" filename +- fix "0" filename bugs +- take into account that charset name "utf-8" resolves to "utf-8-strict" in recent Perl versions + 1.09 - work around broken decode_utf8() in Perl 5.8.7 resp. Encode 2.10 (use utf8::decode instead) - adopt test suite to catch cases like this diff -Nru /tmp/YmO7y26nwh/convmv-1.09/MD5sums /tmp/MDhKb3cRW9/convmv-1.10/MD5sums --- /tmp/YmO7y26nwh/convmv-1.09/MD5sums 2005-12-09 17:21:10.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/MD5sums 2006-06-26 03:03:43.000000000 +0200 @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 +Hash: RIPEMD160 e0dc2bf8cde8e56d69cef5d30c702da3 ./GPL2 -f3b37def5387cc3c7612cced43c2faba ./testsuite.tar -0c470de017eb544eb813be0193e701b8 ./Changes +7ef7c40c910edc39fa1c0703f51d3317 ./TODO f38e3517eb6eab6173d2b0bffeacb555 ./Makefile -6631f26e38a7a21ae887555cb263041b ./TODO -886a21f40f83293ea6707804b5b970bc ./VERSION -1a386d1480f099a44b628d921cba2eab ./convmv +18e527fbba66160e3159dcf57d8b81ce ./testsuite.tar +20b03ca7b386a631c79f7d3478ece195 ./Changes +1a631929afcf2b475435f6683f074c7b ./convmv +22860c4e541860ca2bb02979228c4a33 ./VERSION 8bed1a74d53b68c1bce15d32309bdb52 ./CREDITS -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) -iD8DBQFDma72doo0s+hIejkRAmmNAJ0Xw7KzInW3aGBqufqZKiLWcl8aZACfX3p1 -mtRqglUl/qWyzyB9+CDf+N4= -=gr51 +iD8DBQFEnzJvdoo0s+hIejkRA64iAJ9x244ml61zjpmPHCOtgawxqOw2ewCdFg8/ +aW3VNZIvicDT8OjG8F2iGCw= +=jOPt -----END PGP SIGNATURE----- diff -Nru /tmp/YmO7y26nwh/convmv-1.09/Makefile /tmp/MDhKb3cRW9/convmv-1.10/Makefile --- /tmp/YmO7y26nwh/convmv-1.09/Makefile 2006-11-12 22:55:16.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/Makefile 2006-11-12 22:55:16.000000000 +0100 @@ -14,7 +14,7 @@ pod2man --section 1 --center=" " convmv | gzip -9 > convmv.1.gz clean: - rm -f convmv.1.gz convmv-*.tar.gz .files .name + rm -f convmv.1.gz convmv-*.tar.gz MD5sums .files .name rm -rf suite test: @@ -23,6 +23,8 @@ dist: clean sed -n "2,2p" convmv |sed "s/.*convmv \([^ ]*\).*/\1/" > VERSION + md5sum `find . -name "*" -type f` |gpg --clearsign >.MD5sums + mv .MD5sums MD5sums ls > .files echo convmv-`cat VERSION` >.name mkdir `cat .name` diff -Nru /tmp/YmO7y26nwh/convmv-1.09/TODO /tmp/MDhKb3cRW9/convmv-1.10/TODO --- /tmp/YmO7y26nwh/convmv-1.09/TODO 2005-12-09 13:13:39.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/TODO 2006-06-26 02:54:28.000000000 +0200 @@ -8,6 +8,8 @@ - map illegal ntfs characters away: " / \ * ? < > | : - map "most" strange chracters to ASCII equivalences - parsable column mode \0..\0..\0\0 terminated +- keep/restore old ctime - difficult to do! No Perl module, not + even a ctime option in standard "touch" command :-| any other suggestions? diff -Nru /tmp/YmO7y26nwh/convmv-1.09/VERSION /tmp/MDhKb3cRW9/convmv-1.10/VERSION --- /tmp/YmO7y26nwh/convmv-1.09/VERSION 2005-12-09 17:21:08.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/VERSION 2006-06-26 03:03:40.000000000 +0200 @@ -1 +1 @@ -1.09 +1.10 diff -Nru /tmp/YmO7y26nwh/convmv-1.09/convmv /tmp/MDhKb3cRW9/convmv-1.10/convmv --- /tmp/YmO7y26nwh/convmv-1.09/convmv 2005-12-09 17:21:06.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/convmv 2006-06-25 20:46:50.000000000 +0200 @@ -1,6 +1,6 @@ #!/usr/bin/perl -# convmv 1.09 - converts filenames from one encoding to another -# Copyright © 2003-2005 Bjoern JACKE <[EMAIL PROTECTED]> +# convmv 1.10 - converts filenames from one encoding to another +# Copyright © 2003-2006 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 as published by @@ -109,7 +109,7 @@ care about the dotless i/I issue. A lowercase version of "I" will also be dotless while an uppercase version of "i" will also be dotted. This is an -issue for Lithuanian, Turkish and Azeri. +issue for Turkish and Azeri. By the way: The superscript dot of the letter i was added in the Middle Ages to distinguish the letter (in manuscripts) from adjacent vertical strokes in such @@ -151,9 +151,8 @@ 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. If someone knows why Apple chose to do this, please let me know. I think it was a -very bad idea and breaks many things under OS X which expect normal a POSIX -conforming system. If you want a nice GUI use OS X, if you want a sane Unix -don't use OS X. Anywhere else convmv is able to convert files from NFC to +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 JFS @@ -176,6 +175,12 @@ other words, if you want to use NFS4 you might find the conversion and normalization features of convmv quite useful. +=head3 FAT/VFAT and NTFS + +NTFS and VFAT (for long filenames) use UTF-16 internally to store filenames. +You should not need to convert filenames if you mount one of those filesystems. +Use appropriate mount options instead! + =head2 How to undo double UTF-8 (or other) encoded filenames Sometimes it might happen that you "double-encoded" certain filenames, for @@ -269,19 +274,20 @@ die "No charset conversion when unescaping!\n" if ($opt_f or $opt_t); $checkenc=\&unescape_checkenc; $get_newname=\&unescape_get_newname; -} elsif ($opt_upper xor $opt_lower) { +} elsif ($opt_upper or $opt_lower) { die "No charset conversion when uppering/lowering!\n" if ($opt_t); + die "Not possible to --upper and --lower at once!\n" if ($opt_upper and $opt_lower); $checkenc=\&upperlower_checkenc; $get_newname=\&upperlower_get_newname; $opt_f="ascii" unless ($opt_f); } else { $opt_f=Encode::resolve_alias($opt_f) or die "wrong/unknown \"from\" encoding!\n"; $opt_t=Encode::resolve_alias($opt_t) or die "wrong/unknown \"to\" encoding!\n"; - $to_is_utf8 = lc($opt_t) =~ m/^utf-?8$/; $checkenc=\&char_checkenc; $get_newname=\&char_get_newname; } -$from_is_utf8 = lc($opt_f) =~ m/^utf-?8$/; +$to_is_utf8 = lc($opt_t) =~ m/^utf-?8/; +$from_is_utf8 = lc($opt_f) =~ m/^utf-?8/; if ($opt_qfrom) { $from_print=\&to_ascii; @@ -320,16 +326,20 @@ if ($opt_r) { find({wanted=>\&scan,bydepth=>1,no_chdir=>1}, @args); - $errors_occurred=1 if ($warnings_occurred and not &print_ask ("WARNINGS occurred. Do you really want to continue?",1)); + if (not $errors_occurred and $warnings_occurred) { + $errors_occurred=1 if (&print_ask ("WARNINGS occurred. Do you really want to continue?",1)); + } die "To prevent damage to your files, we won't continue.\nFirst fix this or correct options!\n" if ($errors_occurred); find({wanted=>\&process_symlink_targets,bydepth=>1,no_chdir=>1}, @args) unless ($opt_exec); find({wanted=>\&process_main,bydepth=>1,no_chdir=>1}, @args); } else { - for my $a (@args) { &scan($a); } - $errors_occurred=1 if ($warnings_occurred and not &print_ask ("WARNINGS occurred. Do you really want to continue?",1)); - die "To prevent damage to your files, we won't continue.\nFirst fix this or correct options!\n" if ($errors_occurred); - unless ($opt_exec) { for my $a (@args) { &process_symlink_targets($a); } } - for my $a (@args) { &process_main($a); } + for (@args) { &scan; } + if (not $errors_occurred and $warnings_occurred) { + $errors_occurred=1 if (&print_ask ("WARNINGS occurred. Do you really want to continue?",1)); + } + die "To prevent damage to your files, we won't continue.\nFirst fix errors or correct options!\n" if ($errors_occurred); + unless ($opt_exec) { for (@args) { &process_symlink_targets; } } + for (@args) { &process_main; } } if ($opt_notest) { @@ -344,26 +354,26 @@ # scan for real files and check charset first: sub scan { - $arg=shift or $arg=$_; + $arg=$_; &get_dir_base_change; if (-l $arg) { # print "link: $arg in $dir\n"; - &$checkenc($arg) or $errors_occurred=1; + if (not defined(&$checkenc($arg))) { $errors_occurred=1 }; } elsif (-d $arg) { # print "dir: $arg in $dir\n"; $inod_fullname{(stat $arg)[1]}=$dir.$arg if (!$opt_lowmem); - &$checkenc($arg) or $errors_occurred=1; + if (not defined(&$checkenc($arg))) { $errors_occurred=1 }; } elsif (-f $arg) { # print "file: $arg in $dir\n"; $inod_fullname{(stat $arg)[1]}=$dir.$arg if (!$opt_lowmem); - &$checkenc($arg) or $errors_occurred=1; + if (not defined(&$checkenc($arg))) { $errors_occurred=1 }; } chdir $pwd; } # move symlink targets: sub process_symlink_targets { - $arg=shift or $arg=$_; + $arg=$_; &get_dir_base_change; if (-l $arg) { $oldlink=readlink $arg; @@ -390,7 +400,7 @@ # do the changes to all the real files/dirs/links: sub process_main { - $arg=shift or $arg=$_; + $arg=$_; &get_dir_base_change; if (-l $arg) { # $type="symlink"; @@ -415,7 +425,7 @@ } sub char_get_newname { -# retuns 0 on error and string otherwise. +# retuns undef on error and string otherwise. my $oldfile=shift; my $newname; if (!$from_is_utf8 and $to_is_utf8 and !$opt_nosmart and &looks_like_utf8($oldfile)) { @@ -486,11 +496,10 @@ sub char_checkenc() { my $oldfile=shift; my $new=$oldfile; - my $tmpnew=$oldfile; if ($from_is_utf8) { - if (! defined(utf8::decode($tmpnew))) { + if (! &this_is_valid_utf8($new)) { print STDERR "this file was not validly encoded in UTF-8: \"". &$from_print($dir.$oldfile) ."\"\n"; - return 0; + return undef; } } else { if ($to_is_utf8 and !$opt_nosmart and &looks_like_utf8($oldfile)) { @@ -499,7 +508,7 @@ } elsif (! from_to($new,$opt_f, "utf8", Encode::FB_QUIET) ) { print STDERR "this file was not validly encoded in $opt_f: \"". &$from_print($dir.$oldfile) ."\"\n"; - return 0; + return undef; } } # $new is utf-8 now and $oldfile's encoding was valid ... @@ -514,10 +523,10 @@ ## print "$oldfile|$utf8oldfile|$new|$filenamelength\n"; if (! $filenamelength) { print STDERR "$opt_t doesn't cover all needed characters for: \"". &$from_print($dir.$oldfile) ."\"\n"; - return 0; + return undef; } elsif ($filenamelength > $maxfilenamelength) { print STDERR &$from_print($dir.$oldfile).": resulting filename is $filenamelength bytes long (max: $maxfilenamelength)\n"; - return 0; + return undef; } &posix_check($new); return 1; @@ -525,8 +534,8 @@ sub printusage { print <<END; -convmv 1.09 - converts filenames from one encoding to another -Copyright (C) 2003-2005 Bjoern JACKE <[EMAIL PROTECTED]> +convmv 1.10 - converts filenames from one encoding to another +Copyright (C) 2003-2006 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 as published by @@ -557,10 +566,26 @@ sub looks_like_utf8() { my $string = shift; - if ($string =~ m/[^[:ascii:]]/ and utf8::decode($string)) { + if ($string =~ m/[^[:ascii:]]/ and &this_is_valid_utf8($string)) { return 1; } else { - return 0; + return undef; + } +} + +sub this_is_valid_utf8() { + my $string = shift; + # until 1.08 I used to used decode_utf8() but see perl bug #37757 (perl 5.8.7/8) + # let's look for a different way to find valid utf-8 ...: + #utf8::decode() is experimental and might disappear says utf8(3pm): + #if (utf8::decode($string) != undef) { + # Encode::decode does not work as one might expect: + #if (Encode::decode(utf8,$string,Encode::FB_QUIET) == undef) { + # from_to() works for all Perl versions (at the moment ;) + if (from_to($string,utf8,utf8,Encode::FB_QUIET) == undef) { + return undef; + } else { + return 1; } } @@ -585,7 +610,7 @@ } print "\n"; if ($a =~ m/^n$/i) { - return 0; + return undef; } else { return 1; } @@ -598,11 +623,11 @@ return 1; } else { print STDERR "\"",&$from_print($name),"\" not ASCII - this does not seem to be an escaped filename.\n"; - return 0; + return undef; } } -sub unescape_get_newname() { # return 0 on error, string otherwise +sub unescape_get_newname() { # return undef on error, string otherwise my $newname = shift; # $newname =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg; # this was done before $newname =~ s/(%)([0-9a-fA-F][0-9a-fA-F])/chr(hex($2))/eg; @@ -613,8 +638,8 @@ sub upperlower_checkenc() { my $oldname = shift; my $newname = upperlower_get_newname($oldname); - if (! $newname) { - return 0; + if (not defined($newname)) { + return undef; } else { &posix_check($newname); return 1; @@ -622,12 +647,12 @@ } sub upperlower_get_newname() { -# return 0 on error, string otherwise +# return undef on error, string otherwise my $oldname = shift; my $name=$oldname; if (! from_to($name, $opt_f, "utf8", Encode::FB_QUIET)) { # should also leave NFD as it is ... print STDERR "\"",&$from_print($oldname),"\" not encoded in $opt_f ? Supply the correct encoding via -f option!\n"; - return 0; + return undef; } _utf8_on($name); # Unicode in Perl can be a real pain ... no bytes; @@ -654,7 +679,7 @@ # $name =~ s/i\314\207/i/g if ($from_is_utf8); if (! from_to($name, "utf8", $opt_f, Encode::FB_QUIET)) { print STDERR $opt_upper?"Upper":"Lower","case of \"",&$from_print($oldname),"\" not possible in $opt_f ! Maybe supply different encoding via -f option.\n"; - return 0; + return undef; } return $name; } diff -Nru /tmp/YmO7y26nwh/convmv-1.09/debian/changelog /tmp/MDhKb3cRW9/convmv-1.10/debian/changelog --- /tmp/YmO7y26nwh/convmv-1.09/debian/changelog 2006-11-12 22:55:16.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/debian/changelog 2006-11-12 22:55:16.000000000 +0100 @@ -1,3 +1,13 @@ +convmv (1.10-0.1) unstable; urgency=low + + * Non-maintainer upload. + * New upstream release (Closes: #388551) + - This version fix the problem with utf-8 (Closes: #352613) + * Bump standards version + * Move debhelper to Build-Depends + + -- Julien Danjou <[EMAIL PROTECTED]> Sun, 12 Nov 2006 22:50:01 +0100 + convmv (1.09-1) unstable; urgency=low * New upstream release (Bugfix only) diff -Nru /tmp/YmO7y26nwh/convmv-1.09/debian/control /tmp/MDhKb3cRW9/convmv-1.10/debian/control --- /tmp/YmO7y26nwh/convmv-1.09/debian/control 2006-11-12 22:55:16.000000000 +0100 +++ /tmp/MDhKb3cRW9/convmv-1.10/debian/control 2006-11-12 22:55:16.000000000 +0100 @@ -2,8 +2,9 @@ Section: utils Priority: optional Maintainer: Raphael Zimmerer <[EMAIL PROTECTED]> -Build-Depends-Indep: debhelper (>=4.0.0), perl -Standards-Version: 3.6.2 +Build-Depends-Indep: perl +Build-Depends: debhelper ( >= 4.0.0 ) +Standards-Version: 3.7.2 Package: convmv Architecture: all Binary files /tmp/YmO7y26nwh/convmv-1.09/testsuite.tar and /tmp/MDhKb3cRW9/convmv-1.10/testsuite.tar differ
signature.asc
Description: Digital signature