Hi, Roland Kuhn <[EMAIL PROTECTED]> writes:
>> This was posted in one of Russian forums. It was not possible to >> archive >> (under Linux, using tar) vfat directory where files had long >> Russian names >> (really long - over 150 - 170 characters) - tar returned stat >> failure. When >> looking with plain ls, file names appeared truncated. >> >> Now looking at current (2.6.21) fat driver, __fat_readdir allocates >> large >> enough buffer (PAGE_SIZE-522) for UTF-8 name; but for >> iocharset=utf8 it calls >> uni16_to_x8() which artificially limits length of UTF-8 name to >> 256 ... which >> is obviously not enough for long UTF-8 Russian string (2 bytes per >> character) >> not to mention the - theoretical - general case of 6 bytes UTF-8 >> characters. >> >> Similar problem has apparently vfat_lookup()->...->fat_search_long >> () call >> chain. Except this appears to be broken even in case of "utf8", >> because >> fat_search_long allocates fixed 256 bytes buffer for UTF-8 name. >> >> Am I off track here? >> > PATH_MAX specifically counts _bytes_ not characters, so UTF-8 does > not matter. ISTR that PATH_MAX was 256 at some point, but I just > quickly grepped /usr/include and found various mention of 4096, so > where's the central repository for this configuration item? A hard- > coded value of 256 somewhere inside the kernel smells like a bug. There is a nasty issue here. FAT is limited by 255 unicode chars or so. So, we would need to count number of unicode chars of filename. That's not implemented currently. -- OGAWA Hirofumi <[EMAIL PROTECTED]> - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/