X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libopkg%2Fpkg_parse.c;h=f1725de3a33ad09ebcf2feee3c701b2bc54a1c95;hb=dbf9c6748a2c7eb32f7a61ea2b393d32ea334c8b;hp=c35eb1a30d67fef0a555e86db58ace33cd6c0365;hpb=599cc259280ccde97b2a3b459c3f015db6390127;p=oweals%2Fopkg-lede.git diff --git a/libopkg/pkg_parse.c b/libopkg/pkg_parse.c index c35eb1a..f1725de 100644 --- a/libopkg/pkg_parse.c +++ b/libopkg/pkg_parse.c @@ -16,6 +16,8 @@ General Public License for more details. */ +#include "config.h" + #include #include @@ -146,6 +148,19 @@ parse_version(pkg_t *pkg, const char *vstr) return 0; } +static int +get_arch_priority(const char *arch) +{ + nv_pair_list_elt_t *l; + + list_for_each_entry(l , &conf->arch_list.head, node) { + nv_pair_t *nv = (nv_pair_t *)l->data; + if (strcmp(nv->name, arch) == 0) + return strtol(nv->value, NULL, 0); + } + return 0; +} + static int pkg_parse_line(pkg_t *pkg, const char *line, uint mask) { @@ -161,9 +176,10 @@ pkg_parse_line(pkg_t *pkg, const char *line, uint mask) switch (*line) { case 'A': - if ((mask & PFM_ARCHITECTURE ) && is_field("Architecture", line)) + if ((mask & PFM_ARCHITECTURE ) && is_field("Architecture", line)) { pkg->architecture = parse_simple("Architecture", line); - else if ((mask & PFM_AUTO_INSTALLED) && is_field("Auto-Installed", line)) { + pkg->arch_priority = get_arch_priority(pkg->architecture); + } else if ((mask & PFM_AUTO_INSTALLED) && is_field("Auto-Installed", line)) { char *tmp = parse_simple("Auto-Installed", line); if (strcmp(tmp, "yes") == 0) pkg->auto_installed = 1;