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, ldpr)) == 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).
|