Началось все это давно (2001 кажется год), когда она отказалась читать с fd0 блок по размеру некратный 512 байт. Да вы слышали что нибудь про абстракцию вообще???
Я тогда некоторое время возился с ней, патч имени меня можно найти во FreeBSD. Но это было давно. Сейчас я опять работаю с ней, и она не перестает меня радовать.
Наше приложение должно читать с CD информацию. Мы обеспечили поддержку этого формата, и неожиданностей в принципе не ожидали. Правда экспериментировали мы на дисках, записанных собственноручно.
И вот сюрприз, пришел правильный диск - не работает. Стали выяснять почему, и выяснилось...
Стандарт ISO подразумевает, что все имена файлов хранятся в верхнем регистре. Но операционные системы, дабы не шокировать пользователей, приводят все имена к нижнему регистру. Говоря про системы я имею ввиду Unix.
Мы наивно предполагали что диски будут писать люди грамотные и продвинутые, и если написано имя файла должно быть большими буквами - значит надо использовать расширения, в которых большие буквы отличаются от маленьких. Собственно так мы и делали и работали с именами файлов исключительно в верхнем регистре.
После монтирования диска все имена файлов почему-то в нижнем регистре. Мы быстро сообразили, что это вероятно из за отсутствия расширений ISO. Только вот оставалось не совсем понятным, почему приложение, хоть и не полностью, все таки работает.
Оказалось, что FreeBSD, Тудыть ее в CVS, позволяет пользователям работать с файлами в верхнем регистре.
# lsВот блин, какие заботливые, позаботились о глупых пользователях, не оставили нас...
foo.txt
# ls FOO.TXT
FOO.TXT
# WTF?!?
# ls *.TXTНа этом мы собственно и обожглись. Открытие файлов работает без проблем. А вот glob("*.TXT") выдает пустой результат.
<пусто>
# WTF!?! WTF?!?
Ну кто так строит???
1 коммент.:
Интересно проверить в linux, но лениво создавать что-либо с этой фс.
Отправить комментарий