Index: uspace/srv/fs/fat/fat_dentry.c
===================================================================
--- uspace/srv/fs/fat/fat_dentry.c	(revision ab9f443226bf5802fcaacccd852f8b4a0ff582bd)
+++ uspace/srv/fs/fat/fat_dentry.c	(revision 22a8a9bf03a2a9e9757a181a62a427d71aae2fa5)
@@ -334,5 +334,5 @@
 	while (i < count) {
 		if ((ch = str_decode(src, &off, STR_NO_LIMIT)) != 0) {
-			if (ascii_check(ch) & IS_D_CHAR(ch))
+			if (ascii_check(ch) && IS_D_CHAR(ch))
 				*dst = toupper(ch);
 			else
Index: uspace/srv/fs/fat/fat_directory.c
===================================================================
--- uspace/srv/fs/fat/fat_directory.c	(revision ab9f443226bf5802fcaacccd852f8b4a0ff582bd)
+++ uspace/srv/fs/fat/fat_directory.c	(revision 22a8a9bf03a2a9e9757a181a62a427d71aae2fa5)
@@ -162,4 +162,11 @@
 	int rc;
 
+	void *data;
+	fat_instance_t *instance;
+
+	rc = fs_instance_get(di->nodep->idx->service_id, &data);
+	assert(rc == EOK);
+	instance = (fat_instance_t *) data;
+	
 	do {
 		rc = fat_directory_get(di, &d);
@@ -177,5 +184,5 @@
 				long_entry_count--;
 				if ((FAT_LFN_ORDER(d) == long_entry_count) && 
-					(checksum == FAT_LFN_CHKSUM(d))) {
+				    (checksum == FAT_LFN_CHKSUM(d))) {
 					/* Right order! */
 					fat_lfn_get_entry(d, wname,
@@ -189,5 +196,5 @@
 					long_entry = false;
 				}
-			} else if (FAT_IS_LFN(d)) {
+			} else if (FAT_IS_LFN(d) && instance->lfn_enabled) {
 				/* We found Last long entry! */
 				if (FAT_LFN_COUNT(d) <= FAT_LFN_MAX_COUNT) {
@@ -308,5 +315,5 @@
 		checksum = fat_dentry_chksum(de->name);
 
-		rc = fat_directory_seek(di, start_pos+long_entry_count);
+		rc = fat_directory_seek(di, start_pos + long_entry_count);
 		if (rc != EOK)
 			return rc;
