Package: dosfstools
Version: 3.0.6-1
Severity: important
Tags: patch
dosfsck in interactive mode complains about bad file name when it finds
a direntry with 7 or more characters with codes 127. This is wrong:
filenames containing such characters are valid (at least in MSDOS,
Windows and Linux), but they can be interpreted differently depending
on the local codepage (CP437, CP866, etc.)
Another problem is a misleading error message: dosfsck thinks that short
filename is wrong, but shows a long filename.
Patches are attached.
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.33.2 (SMP w/2 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages dosfstools depends on:
ii libc6 2.10.1-5 GNU C Library: Shared libraries
dosfstools recommends no packages.
dosfstools suggests no packages.
-- debconf-show failed
commit 8577de60c50c774cf12b2c4311e2cfce67e13bd2
Author: Alexander Korolkov alexander.korol...@gmail.com
Date: Sun Sep 5 16:57:21 2010 +0400
dosfsck: don't complain about bad filenames when short filename contains 7 or more characters with codes 128-255
diff --git a/src/check.c b/src/check.c
index 01f34ab..8da13c5 100644
--- a/src/check.c
+++ b/src/check.c
@@ -339,11 +339,10 @@ static int bad_name(DOS_FILE *file)
if (atari_format suspicious)
return 1;
-/* Only complain about too much suspicious chars in interactive mode,
- * never correct them automatically. The chars are all basically ok, so we
- * shouldn't auto-correct such names. */
-if (interactive suspicious 6)
- return 1;
+/* Under MS-DOS and Windows, chars = 128 in short names are valid
+ * (but these characters can be visualised differently depending on
+ * local codepage: CP437, CP866, etc). The chars are all basically ok,
+ * so we shouldn't auto-correct such names. */
return 0;
}
commit 1db5fc9a4c39103c6d7297714b3ac08e8c861741
Author: Alexander Korolkov alexander.korol...@gmail.com
Date: Sun Sep 5 17:15:15 2010 +0400
If the test of short filename fails, dosfsck could complain about bad long
filename
diff --git a/src/check.c b/src/check.c
index 0378da5..2a71b1b 100644
--- a/src/check.c
+++ b/src/check.c
@@ -629,7 +629,8 @@ static int check_dir(DOS_FS *fs,DOS_FILE **root,int dots)
}
if (!((*walk)-dir_ent.attr ATTR_VOLUME)
bad_name(*walk)) {
- printf(%s\n Bad file name.\n,path_name(*walk));
+ puts(path_name(*walk));
+ printf( Bad short file name (%s).\n,
file_name((*walk)-dir_ent.name));
if (interactive)
printf(1) Drop file\n2) Rename file\n3) Auto-rename\n
4) Keep it\n);