LINUX.ORG.RU

Братцы, спасите! Скажите мне, где находится дефинишн структуры DIR? (она же __dirstream)


0

0

Что-то у меня ум за разум заходит... Переработал, может быть? :-/ Но НИГДЕ нет в заголовках нет этого __dirstream, а компиляется с этим символом все замечательно. У меня red hat.


там только typedef struct __dirstream DIR, а самого __dirstream нету нигде... неужели оно зарыто в линуховых сорцах, чтобы юзеры не создавали объекты этих стуктур?

JekLove
() автор топика

А он нигде не находится. В С есть такая фишка, которая специально предназначена для opaque структур. В dirent.h черным по белому написано: /* This is the data type of directory stream objects. The actual structure is opaque to users. */ Так что если очень нужно, то можно покопаться в исходниках glibc. Но все равно в обычной программе получить к ней доступ не получится. Да и зачем, собственно?

aa5779
()

Угу, угу... Я уже это понял. Только насчет opaque впервые слышу. Зачем мне это нужно? Просто надо мне под линухом спортировать некоторые низкоуровневые функции из C в Modula2. Вот и нужно...

JekLove
() автор топика

opaque -- оно и в Африке opaque. А нужно оно для абстракции данных, а грубо говоря, чтобы поменьше программ ломалось, когда пару строчек в системной библиотеке меняют :) Что касаемо портирования чего-то в чего-то -- то я не понимаю причем здесь сишные хедеры? Вообще что имеется в виду -- сделать модула-второй биндинг к libc или переписать opendir на Modula2? Если первое, то вероятно, opendir должно просто возвращать pointer. Если второе -- то см. исходники glibc и ваяй себе. Кстати, если кто не в курсе :) opendir -- это не системный вызов линуха, а функция в glibc, реализованная через open(..., O_DIRECTORY)

aa5779
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.