General Public License for more details.
*/
-#include "includes.h"
-#include <errno.h>
+#include "config.h"
+
+#include <stdio.h>
#include <ctype.h>
-
+
#include "pkg.h"
#include "opkg_utils.h"
#include "pkg_parse.h"
while (*raw) {
depends = xrealloc(depends, sizeof(char *) * (line_count + 1));
-
+
while (isspace(*raw))
raw++;
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)
{
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;
char *tmp = parse_simple("Installed-Time", line);
pkg->installed_time = strtoul(tmp, NULL, 0);
free (tmp);
- }
+ }
break;
case 'M':
break;
case 'P':
- if ((mask & PFM_PACKAGE) && is_field("Package", line))
+ if ((mask & PFM_PACKAGE) && is_field("Package", line))
pkg->name = parse_simple("Package", line);
else if ((mask & PFM_PRIORITY) && is_field("Priority", line))
pkg->priority = parse_simple("Priority", line);
buf = *buf0;
buflen = buf0len;
buf[0] = '\0';
- };
+ }
if (pkg->name == NULL) {
/* probably just a blank line */