[GRASS-user] Cannot use grass on vfat partition
Agustin Lobo
aloboaleu at gmail.com
Fri May 2 05:21:36 EDT 2008
Thanks, solved by adding shortname=win95 to the mount options in /etc/fstab
Should a bug report be filled? by me?
Should I write a note in the wiki?
Agus
Glynn Clements wrote:
> Agustin Lobo wrote:
>
>> Also, if within the grass text session I do:
>> g.mapset /media/mifat32/test/testmapset
>> I get:
>> ERROR: The mapset does not exist.
>
> That's correct. The mapset= argument should be the name of a mapset
> (e.g. "testmapset"), not a full path.
>
>> Just found the difference between locations on
>> the vfat and on the ext3 partition:
>> mapsets on the vfat partition get
>> files MYNAME WIND as myname and wind.
>
> That explains it.
>
>> Just renaming these files makes everything work.
>>
>> What I do not understand is why grass
>> writes thes files in lower case, it does not
>> with LOCATION for example, and even less
>> why grass has a different behaviour
>> for different partition formats
>
> It isn't GRASS that's doing this, but Linux.
>
> The reason why it only does it to those files and not to PERMANENT and
> DEFAULT_WIND is the length of the name.
>
> If you look at the mount(8) manual page, in the section entitled
> "Mount options for vfat", it says:
>
> shortname=[lower|win95|winnt|mixed]
>
> Defines the behaviour for creation and display of filenames
> which fit into 8.3 characters. If a long name for a file exists,
> it will always be preferred display. There are four modes:
>
> lower Force the short name to lower case upon display; store a
> long name when the short name is not all upper case.
>
> win95 Force the short name to upper case upon display; store a
> long name when the short name is not all upper case.
>
> winnt Display the shortname as is; store a long name when the
> short name is not all lower case or all upper case.
>
> mixed Display the short name as is; store a long name when the
> short name is not all upper case.
>
> The default is "lower".
>
> With the default setting of "lower", MYNAME and WIND fit into 8.3
> format (up to 8 characters, with an optional extension of up to 3
> characters), and are all upper-case, so the VFAT filesystem driver
> only creates a normal "DOS" filename, and not a VFAT long filename
> (LFN). When the directory is enumerated, the short filenames are
> returned as lower case (the on-disk format uses upper case).
>
> If you add shortname=win95 to the mount options, the issue should go
> away. If the name is all upper case, only a short name will be stored,
> but the short name will be returned in upper case. If the name isn't
> all upper case, a long name will be stored, and the long name will
> always be returned as-is; the short name will be ignored.
>
> Using shortname=winnt would also work, but that results in a mix of
> upper- and lower-case short names on disk, which is less compatible
> (MS-DOS only ever used upper case for the on-disk format).
>
> BTW, I have no idea why the default is "lower".
>
> Even so, this still indicates a bug in GRASS; i.e. something is
> enumerating the directory and expecting to see a file named "WIND",
> rather than asking the OS whether "WIND" exists. This is wrong, for
> the reasons which I outlined previously.
>
More information about the grass-user
mailing list