Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Sat, 6 Dec 2003 20:29:19 +0100 | From | Michal Rokos <> | Subject | Re: [PATCH 2.6.0-test11] VFAT fix for UTF-8 and trailing dots |
| |
Hi,
On Sun, Dec 07, 2003 at 12:52:07AM +0900, OGAWA Hirofumi wrote: > Michal Rokos <m.rokos@sh.cvut.cz> writes: > > > The problem is: even if vfat_striptail_len() counts len of name without > > trailing dots and sets len to the correct value, utf8_mbstowcs() doesn't > > care about len and takes whole name. > > So dirs and files with dots can be created on vfat fs and that will > > cause some problems as you know :) > > [...] > > > if (utf8) { > > + int name_len = strlen(name); > > + > > *outlen = utf8_mbstowcs((wchar_t *)outname, name, PAGE_SIZE); > > - if (name[len-1] == '.') > > - *outlen-=2; > > + > > + /* > > + * We stripped '.'s before and set len appropriately, > > + * but utf8_mbstowcs doesn't care about len > > + */ > > + *outlen -= (name_len-len); > > + > > op = &outname[*outlen * sizeof(wchar_t)]; > > Indeed. However, this looks not right fix. I think utf8_mbstowcs() > should take the length of both outname and name, so we should fix the > utf8_mbstowcs().
I don't know... Functions in nls_base.c have specification the same as those from userspace (defined by ISO/ANSI C or UNIX98).
Probably we should. This was meant as minimal patch.
In case you'll be modifiing nls_base.c, please, decide whether this shouldn't be in...
--- linux-2.6.0-test11/fs/nls/nls_base.c.old 2003-11-26 21:44:31.000000000 +0100 +++ linux-2.6.0-test11/fs/nls/nls_base.c 2003-12-06 20:09:01.000000000 +0100 @@ -99,6 +99,7 @@ utf8_mbstowcs(wchar_t *pwcs, const __u8 } } else { *op++ = *ip++; + n--; } } return (op - pwcs); > For example, utf8_mbstowcs(outbuf, outlen, inbuf, inlen); >
I'd would propose uft8_mbsntowcs(outbuf, outlen, inbuf, inlen);
BR
Michal
-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Michal Rokos Czech Technical University, Prague e-mail: m.rokos@sh.cvut.cz icq: 36118339 jabber: majkl@jabber.cz -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |