ELF_NEXT(3) Library Functions Manual ELF_NEXT(3)

elf_nextprovide sequential access to the next archive member

library “libelf”

#include <libelf.h>

Elf_Cmd
elf_next(Elf *elf);

The () function causes the ELF archive descriptor corresponding to argument elf to be adjusted to provide access to the next member in the archive on a subsequent call to ().

The return value of () is suitable for use in a loop invoking ().

If successful, function elf_next() returns the value ELF_C_READ. Otherwise, if argument elf was not associated with an archive, or if it was NULL, or if any other error occurred, the value ELF_C_NULL is returned.

To process all the members of an archive use:

Elf_Cmd cmd;
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 ...

	cmd = elf_next(e);
	elf_end(e);
}
elf_end(archive);

Function elf_next() may fail with the following error:

[]
Argument elf was not associated with a containing ar(1) archive.
[]
An error was encountered while parsing the archive containing argument elf.

elf(3), elf_begin(3), elf_end(3), elf_rand(3)

February 27, 2019 OpenBSD 7.6