elf_rand(S)
elf_rand --
random archive member access
Syntax
cc [flag . . . ] file . . . -lelf [library] . . .
#include <libelf.h>
size_t elf_rand(Elf *elf, size_t offset);
Description
elf_rand(S),
elf_next(S),
and
elf_begin(S)
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 for 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(S)
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.
Diagnostics
Error conditions are identified through the routine
elf_error(S).
Examples
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
ar(FP),
elf(S),
elf_begin(S),
elf_getarsym(S),
elf_next(S)
Standards conformance
elf_rand(S)
is not part of any currently supported standard;
it was developed by UNIX System Laboratories, Inc.
and is maintained by The SCO Group.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003