To process all the members of an archive use:
off_t off;
Elf *archive, *e;
...
cmd = ELF_C_READ;
archive = elf_begin(fd, cmd, NULL);
while ((e = elf_begin(fd, cmd, archive)) != (Elf *) 0)
{
... process `e' here ...
elf_end(e);
off = ...new value...;
if (elf_rand(archive, off) != off) {
... process error ...
}
}
elf_end(archive);
To rewind an archive, use:
Elf *archive;
...
if (elf_rand(archive, SARMAG) != SARMAG) {
... error ...
}