return pkg_set_architecture(pkg, s, e - s);
}
-int pkg_parse_line(void *ptr, const char *line, uint mask)
+int pkg_parse_line(void *ptr, char *line, uint mask)
{
pkg_t *pkg = (pkg_t *) ptr;
abstract_pkg_t *ab_pkg = NULL;
+ conffile_list_t *cl;
/* these flags are a bit hackish... */
static int reading_conffiles = 0, reading_description = 0;
static char *description = NULL;
- char *s;
int ret = 0;
/* Exclude globally masked fields. */
if ((mask & PFM_CONFFILES) && is_field("Conffiles", line)) {
reading_conffiles = 1;
reading_description = 0;
+
+ cl = xcalloc(1, sizeof(*cl));
+ conffile_list_init(cl);
+ pkg_set_ptr(pkg, PKG_CONFFILES, cl);
+
goto dont_reset_flags;
} else if ((mask & PFM_CONFLICTS)
&& is_field("Conflicts", line))
if (ab_pkg && (ab_pkg->state_flag & SF_NEED_DETAIL)) {
if (!(pkg->state_flag & SF_NEED_DETAIL)) {
- opkg_msg(DEPEND, "propagating abpkg flag to pkg %s\n", pkg->name);
+ opkg_msg(DEBUG, "propagating abpkg flag to pkg %s\n", pkg->name);
pkg->state_flag |= SF_NEED_DETAIL;
}
}
case ' ':
if ((mask & PFM_DESCRIPTION) && reading_description) {
- if (isatty(1)) {
- description = xrealloc(description,
- strlen(description)
- + 1 + strlen(line) +
- 1);
+ size_t len = (description ? strlen(description) : 0)
+ + (isatty(1) ? 1 : 0) + strlen(line) + 1;
+
+ description = description ? xrealloc(description, len)
+ : xcalloc(len, 1);
+
+ if (isatty(1))
strcat(description, "\n");
- } else {
- description = xrealloc(description,
- strlen(description)
- + 1 + strlen(line));
- }
- strcat(description, (line));
+
+ strcat(description, line);
goto dont_reset_flags;
} else if ((mask & PFM_CONFFILES) && reading_conffiles) {
parse_conffiles(pkg, line);