Amiga Unix — 68040 · 68060

Manual pages › ELF library (3E)

elf_rand(3E)

random archive member access

From the original Amiga UNIX 2.1 manual. Some things it mentions may not be in this release.

NAME

elf_rand - random archive member access

SYNOPSIS

cc [flag ...] file ...  -lelf [library ...]

#include <libelf.h>

size_t elf_rand(Elf *elf, size_t offset);

DESCRIPTION

elf_rand, elf_next, and elf_begin manipulate simple object files and archives. elf is an ELF descriptor previously returned from elf_begin. elf_rand provides random archive processing, preparing elf to access an arbitrary archive member. elf must be a descriptor for the archive itself, not a member within the archive. offset gives the byte offset from the beginning of the archive to the archive header of the desired member. See elf_getarsym(3E) for more information about archive member offsets. When elf_rand works, it returns offset. Otherwise it returns 0, because an error occurred, elf was null, or the file was not an archive (no archive member can have a zero offset). A program may mix random and sequential archive processing.

EXAMPLE

An archive starts with a ``magic string''  that  has  SARMAG
bytes;  the  initial archive member follows immediately.  An
application could thus provide  the  following  function  to
rewind  an archive (the function returns -1 for errors and 0
otherwise).
     #include <ar.h>
     #include <libelf.h>

     int
     rewindelf(Elf *elf)
     {
             if (elf_rand(elf, (size_t)SARMAG) == SARMAG)
                     return 0;
             return -1;
     }

SEE ALSO

elf(3E), elf_begin(3E), elf_getarsym(3E), elf_next(3E),
ar(4).