mirror of https://github.com/pygos/pkg-utils.git
Signed-off-by: David Oberhollenzer <goliath@infraroot.at>master
parent
aab510aa98
commit
09a336507d
@ -0,0 +1,54 @@
|
||||
#include "dump.h"
|
||||
|
||||
static const char *dependency_type[] = {
|
||||
[PKG_DEPENDENCY_REQUIRES] = "requires",
|
||||
};
|
||||
|
||||
int dump_header(pkg_reader_t *pkg, int flags)
|
||||
{
|
||||
pkg_dependency_t dep;
|
||||
uint8_t buffer[257];
|
||||
pkg_header_t hdr;
|
||||
ssize_t ret;
|
||||
uint16_t i;
|
||||
|
||||
ret = pkg_reader_read_payload(pkg, &hdr, sizeof(hdr));
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
if ((size_t)ret < sizeof(hdr))
|
||||
goto fail_trunc;
|
||||
|
||||
hdr.num_depends = le16toh(hdr.num_depends);
|
||||
|
||||
if (flags & DUMP_DEPS) {
|
||||
printf("Dependencies:\n");
|
||||
|
||||
for (i = 0; i < hdr.num_depends; ++i) {
|
||||
ret = pkg_reader_read_payload(pkg, &dep, sizeof(dep));
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
if ((size_t)ret < sizeof(hdr))
|
||||
goto fail_trunc;
|
||||
|
||||
ret = pkg_reader_read_payload(pkg, buffer,
|
||||
dep.name_length);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
if ((size_t)ret < dep.name_length)
|
||||
goto fail_trunc;
|
||||
|
||||
buffer[dep.name_length] = '\0';
|
||||
|
||||
printf("\t%s: %s\n", dependency_type[dep.type],
|
||||
(char *)buffer);
|
||||
}
|
||||
|
||||
fputc('\n', stdout);
|
||||
}
|
||||
|
||||
return 0;
|
||||
fail_trunc:
|
||||
fprintf(stderr, "%s: truncated header record\n",
|
||||
pkg_reader_get_filename(pkg));
|
||||
return -1;
|
||||
}
|
Loading…
Reference in new issue