#include <elfutils/libdwelf.h>
#include <pakfire/ctx.h>
+#include <pakfire/elf.h>
#include <pakfire/file.h>
#include <pakfire/linter.h>
#include <pakfire/linter-file.h>
// File
struct pakfire_file* file;
+ // ELF Object
+ struct pakfire_elf* _elf;
+
// File Descriptor
int fd;
goto ERROR;
}
+ // Open an ELF object
+ r = pakfire_elf_open(&l->_elf, l->ctx, l->path, l->fd);
+ if (r < 0) {
+ switch (-r) {
+ // This does not seem to be an ELF file
+ case ENOTSUP:
+ break;
+
+ // Something else happened
+ default:
+ goto ERROR;
+ }
+ }
+
// Initialize libelf
r = pakfire_linter_file_open_elf(l);
if (r < 0) {
static void pakfire_linter_file_free(struct pakfire_linter_file* lfile) {
int r;
+ if (lfile->_elf)
+ pakfire_elf_unref(lfile->_elf);
+
if (lfile->elf)
elf_end(lfile->elf);