On Mon, 7 Jun 2004, Yuri N. Glibovetz wrote:
> > А где Вы нашли open64? В glibc? Потому, что в ядре такого нет.
>
> /usr/include/fcntl.h
>
Это от glibc.
> Интересно. Получается что можно использовать обычный open, добавив в
> flags "|O_LARGEFILE". Надо будет попробовать. Хотя не знаю, правильно ли
> это идеологически.
>
Это будет идеологически неправильно, если Вы пишите переносимый софт.
O_LARGEFILE заморочка линуксовская.
Но и в программах ориентированных на Linux тоже не стоит этим
пользоваться из-за того, что это не стандарт и в любой момент они
легко могут изменить ситуацию.
Также, мне кажется, не надо особо думать об open/open64. OC сама
должна обрабатывать такую ситуацию, ведь никто не знает, где будет
собрана и использована программа.
И еще: open64 это тоже только в glibc и посему также непереносимо
(но уже в плане исходников). А использовать libtool и auto{conf,make}
и заявлять, что это обеспечивает максимальную портабельность исходного
кода (как делает подавляющее большинство GNU программистов) вообще
неприемлимо.
> >
> > Кстати, получается Linux не может работать ни на одной <32-разрядной
> > архитектуре, если у них в ядре такое ;-)
> >
>
> А смысл?
>
Да в общем никакого, просто интересно :-)
> > Кстати об lseek. Тут вообще забавный код:
[skip]
>
> Вообще-то origin - это:
>
> #define SEEK_SET 0
> #define SEEK_CURR 1
> #define SEEK_END 2
>
[skip]
>
> Да, здесь некрасиво, но преобразовать 0, 1, 2 из unsigned int в int
> несмертельно.
>
В таких делах лучше быть параноиком :-]