LDOPEN(3X) LDOPEN(3X) НАЗВАНИЕ ldopen, ldaopen - открыть объектный файл обычного фор- мата на чтение СИНТАКСИС |#include |#include |#include | |LDFILE *ldopen (filename, ldptr) |char *filename; |LDFILE *ldptr; | |LDFILE *ldaopen (filename, oldptr) |char *filename; |LDFILE *oldptr; ОПИСАНИЕ Функции ldopen и ldclose(3X) обеспечивают унифицирован- ный доступ как к отдельным объектным файлам, так и к объектным файлам, входящим в состав архивов. С помощью этих функций архив объектных файлов может быть обрабо- тан так, как если бы он был последовательностью отдель- ных объектных файлов обычного формата. Если аргумент ldptr имеет значение NULL, функция ldopen открывает файл filename, размещает и инициализирует структуру LDFILE и возвращает указатель на эту структу- ру. Если значение ldptr соответствует открытому файлу и TYPE (ldptr) является магическим числом архивного фай- ла, ldopen инициализирует стуктуру LDFILE для обработки следующего элемента архива filename. Функции ldopen и ldclose(3X) предназначены для совмест- ной работы. Ldclose возвращает значение FAILURE только в том случае, когда TYPE (ldptr) является магическим числом архива и в архиве еще есть необработанные файлы. В этом единственном случае можно вызывать ldopen с те- кущим значением ldptr. Во всех других случаях, в част- ности, когда открывается файл с новым именем, следует вызывать ldopen с аргументом ldptr, равным NULL. Схема использования ldopen и ldclose(3X) такова: |/* Для каждого из обрабатываемых файлов */ | |ldptr = NULL; |do { | if ((ldptr = ldopen (filename, ldptr)) != NULL) { | /* Проверить магическое число */ | . . . | /* Обработать файл */ | . . . | } |} while (ldclose (ldptr) == FAILURE); Функция ldaopen служит для повторного открытия объект- ного файла. Если значение oldptr отлично от NULL, ldaopen заново открывает файл с именем filename, порож- дает новую структуру LDFILE, копируя из структуры, ука- занной в oldptr, поля TYPE, OFFSET и HEADER, и возвра- щает указатель на новую структуру. Старый указатель oldptr и новый указатель могут быть использованы однов ременно и независимо для чтения разных частей объектно- го файла. Например, один из указателей может последова- тельно продвигаться по информации о настройке ссылок, а другой - по элементам таблицы имен. Функции ldopen и ldaopen открывают файл на чтение. Обе функции возвращают NULL, если файл filename открыть не удается, или если под структуру LDFILE не хватает памя- ти. Успешное открытие не гарантирует, что указанный файл является объектным. При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным фай- лам libld.a. СМ. ТАКЖЕ fopen(3S), ldclose(3X), ldfcn(4).