linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] vfat write wrong value into lcase flag
@ 2001-08-08 15:30 OGAWA Hirofumi
  2001-08-08 20:14 ` Nerijus Baliunas
  0 siblings, 1 reply; 5+ messages in thread
From: OGAWA Hirofumi @ 2001-08-08 15:30 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel

Hi,

The current vfat is writeing wrong value into lcase flag.  It is
writing the lowercase flag, although filename is uppercase.

Please apply.
-- 
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

diff -urN linux-2.4.8-pre6/fs/vfat/namei.c vfat_lcase-2.4.8-pre6/fs/vfat/namei.c
--- linux-2.4.8-pre6/fs/vfat/namei.c	Sat Apr  7 02:51:19 2001
+++ vfat_lcase-2.4.8-pre6/fs/vfat/namei.c	Thu Aug  9 00:07:39 2001
@@ -1056,7 +1056,7 @@
 	(*de)->starthi = 0;
 	(*de)->size = 0;
 	(*de)->attr = is_dir ? ATTR_DIR : ATTR_ARCH;
-	(*de)->lcase = CASE_LOWER_BASE | CASE_LOWER_EXT;
+	(*de)->lcase = 0;
 
 
 	fat_mark_buffer_dirty(sb, *bh);


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] vfat write wrong value into lcase flag
  2001-08-08 15:30 [PATCH] vfat write wrong value into lcase flag OGAWA Hirofumi
@ 2001-08-08 20:14 ` Nerijus Baliunas
  2001-08-09 18:16   ` OGAWA Hirofumi
  0 siblings, 1 reply; 5+ messages in thread
From: Nerijus Baliunas @ 2001-08-08 20:14 UTC (permalink / raw)
  To: OGAWA Hirofumi, linux-kernel

On 09 Aug 2001 00:30:58 +0900 OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> wrote:

OH> The current vfat is writeing wrong value into lcase flag.  It is
OH> writing the lowercase flag, although filename is uppercase.

Hello,

In December 1999 I sent my investigation about short filenames in vfat:
_________________________________________
Hello,

there were some complaints about linux not handling upper/lowercase
filenames in vfat correctly (they are below). So I did some investigation.
I created following directories (or files, it does not matter):

in Linux: LINUP, linlow
in win98: 98UP, 98low
in NT4: NTUP, ntlow
in W2k: W2KUP, w2klow

Now what ls/dir shows:

in Linux: LINUP, linlow, 98up, 98low, ntup, ntlow, w2kup, w2klow
in win98: LINUP, LINLOW, 98UP, 98low, NTUP, NTLOW, W2KUP, W2KLOW
in NT4: LINUP, linlow, 98UP, 98low, NTUP, ntlow, W2KUP, w2klow
in W2K: LINUP, linlow, 98UP, 98low, NTUP, ntlow, W2KUP, w2klow

So I would suggest NT/W2K shows everything correctly (if we can call so,
because microsoft mixed everything up), and win98/Linux shows differently
in opposite directions. I think Linux should follow one of win95/98 or NT/W2K,
and since NT/W2K seams more reasonable, Linux could display filenames
like NT (Linux creates filenames similar to NT already).

There is no such problem with mixed up/low or with filenames
containing more than 8 characters.
_________________________________________

I like this table format better, with errors marked:

in Linux:  LINUP  linlow <98up> 98low <ntup> ntlow
in win98:  LINUP <LINLOW> 98UP  98low  NTUP <NTLOW>
in NT4:    LINUP  linlow  98UP  98low  NTUP  ntlow

Clearly NT displays everything right.
Lowercase must be written the Win98 way.
Uppercase must be written the Linux way.
_________________________________________
Then I sent a diskette image to Al Viro:

> I am sending diskette image, made with
> dd if=/dev/fd0 of=fdd_vfat bs=512 count=2847

Aha... In other words, for NT in short records bit 3 at offset 0xc
means 'lowercase it'. 9x ignores the thing. Everybody handle the long
entries the same way. Umhm... Thanks.
_________________________________________

I think Linux should create files like win98
(because NT shows them correctly) and show like NT.


Regards,
Nerijus



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] vfat write wrong value into lcase flag
  2001-08-08 20:14 ` Nerijus Baliunas
@ 2001-08-09 18:16   ` OGAWA Hirofumi
  2001-08-10 14:09     ` Re[2]: " Nerijus Baliunas
  0 siblings, 1 reply; 5+ messages in thread
From: OGAWA Hirofumi @ 2001-08-09 18:16 UTC (permalink / raw)
  To: Nerijus Baliunas; +Cc: linux-kernel

Nerijus Baliunas <nerijus@users.sourceforge.net> writes:

> On 09 Aug 2001 00:30:58 +0900 OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> wrote:
> 
> OH> The current vfat is writeing wrong value into lcase flag.  It is
> OH> writing the lowercase flag, although filename is uppercase.
> 
> Hello,
> 
> In December 1999 I sent my investigation about short filenames in vfat:

[...]

> 
> I think Linux should create files like win98
> (because NT shows them correctly) and show like NT.

The _current vfat_ uses the following rule.

  name                   attribute                         used direntry
-----------------------------------------------------------------------------
foo.txt  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
foo.TXT  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
FOO.txt  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
FOO.TXT               , CASE_LOWER_BASE | CASE_LOWER_EXT         1
Foo.TXT  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
FOO.Txt  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2

I missed something?
-- 
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re[2]: [PATCH] vfat write wrong value into lcase flag
  2001-08-09 18:16   ` OGAWA Hirofumi
@ 2001-08-10 14:09     ` Nerijus Baliunas
  2001-08-10 16:56       ` OGAWA Hirofumi
  0 siblings, 1 reply; 5+ messages in thread
From: Nerijus Baliunas @ 2001-08-10 14:09 UTC (permalink / raw)
  To: OGAWA Hirofumi, linux-kernel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1586 bytes --]

On 10 Aug 2001 03:16:34 +0900 OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> wrote:

OH> Nerijus Baliunas <nerijus@users.sourceforge.net> writes:
OH> 
OH> > On 09 Aug 2001 00:30:58 +0900 OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> wrote:
OH> > 
OH> > OH> The current vfat is writeing wrong value into lcase flag.  It is
OH> > OH> writing the lowercase flag, although filename is uppercase.
OH> > 
OH> > Hello,
OH> > 
OH> > In December 1999 I sent my investigation about short filenames in vfat:
OH> 
OH> [...]
OH> 
OH> > I think Linux should create files like win98
OH> > (because NT shows them correctly) and show like NT.
OH> 
OH> The _current vfat_ uses the following rule.
OH> 
OH>   name                   attribute                         used direntry
OH> -----------------------------------------------------------------------------
OH> foo.txt  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
OH> foo.TXT  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
OH> FOO.txt  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
OH> FOO.TXT               , CASE_LOWER_BASE | CASE_LOWER_EXT         1
OH> Foo.TXT  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
OH> FOO.Txt  LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
OH> 
OH> I missed something?

I don't know. Sorry, I didn't look at the code, but current (2.4.7) kernel still shows
filenames as I wrote in 1999. I am talking about filenames _without_ long entries.
Didn't test what current kernel writes, though.
I'm attaching floppy image, ungzip and loop mount it.

Regards,
Nerijus

[-- Attachment #2: fdd_vfat.gz --]
[-- Type: APPLICATION/X-GZIP, Size: 1961 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] vfat write wrong value into lcase flag
  2001-08-10 14:09     ` Re[2]: " Nerijus Baliunas
@ 2001-08-10 16:56       ` OGAWA Hirofumi
  0 siblings, 0 replies; 5+ messages in thread
From: OGAWA Hirofumi @ 2001-08-10 16:56 UTC (permalink / raw)
  To: Nerijus Baliunas; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2161 bytes --]

Nerijus Baliunas <nerijus@users.sourceforge.net> writes:

> I don't know. Sorry, I didn't look at the code, but current (2.4.7) kernel still shows
> filenames as I wrote in 1999. I am talking about filenames _without_ long entries.
> Didn't test what current kernel writes, though.
> I'm attaching floppy image, ungzip and loop mount it.

Thanks for sending floppy image.

This floppy image contains following directory entry:
(this floppy image forgot testing extension name)

  name                   attribute                         used direntry
-----------------------------------------------------------------------------
LINUP    LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2
LINLOW                , CASE_LOWER_BASE | CASE_LOWER_EXT         1
DOSUP                 ,                                          1
DOSLOW                ,                                          1
98UP                  ,                                          1
98low    LONG_FILENAME,                                          2
W2KUP                 ,                                          1
W2KLOW                , CASE_LOWER_BASE                          1
NTUP                  ,                                          1
NTLOW                 , CASE_LOWER_BASE                          1

linux-2.4.8-pre8:
-----------------------------------------------------------------------------
LINUP                 , CASE_LOWER_BASE | CASE_LOWER_EXT         1
linlow   LONG_FILENAME, CASE_LOWER_BASE | CASE_LOWER_EXT         2

default, convert the shortname to lowercase:
  $ mount -t vfat fdd_vfat /mnt -o loop
  $ ls /mnt
  98low  98up  LINUP  doslow  dosup  linlow  ntlow  ntup  w2klow  w2kup

nocase option, use the win9x rule for display (doesn't support CASE_* flags):
  $ mount -t vfat fdd_vfat /mnt -o loop,nocase
  $ ls /mnt
  98UP  98low  DOSLOW  DOSUP  LINLOW  LINUP  NTLOW  NTUP  W2KLOW  W2KUP

2.4.8-pre8 is useing the win9x rule for create. But attribute must
change to 0.

Now, I writing the lower/win95/winnt/mixed rule on -ac tree.
Please help to test the following patch, if you interests.
-- 
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

[-- Attachment #2: vfat_shortname-2.4.7-ac10.diff.gz --]
[-- Type: application/octet-stream, Size: 6655 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2001-08-10 16:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-08 15:30 [PATCH] vfat write wrong value into lcase flag OGAWA Hirofumi
2001-08-08 20:14 ` Nerijus Baliunas
2001-08-09 18:16   ` OGAWA Hirofumi
2001-08-10 14:09     ` Re[2]: " Nerijus Baliunas
2001-08-10 16:56       ` OGAWA Hirofumi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).