Sophie

Sophie

distrib > Altlinux > 4.1 > i586 > media > core-src > by-pkgid > 61d96b330bb9ab9f0af5be59b9457aa5 > files > 3

dosfstools-2.11-alt4.src.rpm

--- dosfstools-2.11/dosfsck/check.c.orig	2005-03-12 18:08:43 +0300
+++ dosfstools-2.11/dosfsck/check.c	2007-01-04 12:57:22 +0300
@@ -217,6 +217,16 @@ static char *file_stat(DOS_FILE *file)
 }
 
 
+static int is_suspicious(unsigned char c)
+{
+	if (c >= 0x80 && c < 0xB0)
+		return 0;   /* CP866 A6B..on */
+	if (c >= 0xE0 && c < 0xF2)
+		return 0;   /* CP866 pcmy..Ee */
+	return (c > 0x7f);
+}
+
+
 static int bad_name(unsigned char *name)
 {
     int i, spc, suspicious = 0;
@@ -229,13 +239,13 @@ static int bad_name(unsigned char *name)
     
     for (i = 0; i < 8; i++) {
 	if (name[i] < ' ' || name[i] == 0x7f) return 1;
-	if (name[i] > 0x7f) ++suspicious;
+	suspicious += is_suspicious(name[i]);
 	if (strchr(bad_chars,name[i])) return 1;
     }
 
     for (i = 8; i < 11; i++) {
 	if (name[i] < ' ' || name[i] == 0x7f) return 1;
-	if (name[i] > 0x7f) ++suspicious;
+	suspicious += is_suspicious(name[i]);
 	if (strchr(bad_chars,name[i])) return 1;
     }