- }
- fprintf(fp, "\n");
- }
- } else {
- goto UNKNOWN_FMT_FIELD;
- }
- break;
- case 'd':
- case 'D':
- if (strcasecmp(field, "Depends") == 0) {
- if (pkg->depends_count) {
- fprintf(fp, "Depends:");
- for (j=0, i=0; i<depends_count; i++) {
- if (pkg->depends[i].type != DEPEND)
- continue;
- str = pkg_depend_str(pkg, i);
- fprintf(fp, "%s %s", j == 0 ? "" : ",", str);
- free(str);
- j++;
- }
- fprintf(fp, "\n");
- }
- } else if (strcasecmp(field, "Description") == 0) {
- if (pkg->description) {
- fprintf(fp, "Description: %s\n", pkg->description);
- }
- } else {
- goto UNKNOWN_FMT_FIELD;
- }
- break;
- case 'e':
- case 'E':
- if (pkg->essential) {
- fprintf(fp, "Essential: yes\n");
- }
- break;
- case 'f':
- case 'F':
- if (pkg->filename) {
- fprintf(fp, "Filename: %s\n", pkg->filename);
- }
- break;
- case 'i':
- case 'I':
- if (strcasecmp(field, "Installed-Size") == 0) {
- fprintf(fp, "Installed-Size: %ld\n", pkg->installed_size);
- } else if (strcasecmp(field, "Installed-Time") == 0 && pkg->installed_time) {
- fprintf(fp, "Installed-Time: %lu\n", pkg->installed_time);
- }
- break;
- case 'm':
- case 'M':
- if (strcasecmp(field, "Maintainer") == 0) {
- if (pkg->maintainer) {
- fprintf(fp, "Maintainer: %s\n", pkg->maintainer);
- }
- } else if (strcasecmp(field, "MD5sum") == 0) {
- if (pkg->md5sum) {
- fprintf(fp, "MD5Sum: %s\n", pkg->md5sum);
- }
- } else {
- goto UNKNOWN_FMT_FIELD;
- }
- break;
- case 'p':
- case 'P':
- if (strcasecmp(field, "Package") == 0) {
- fprintf(fp, "Package: %s\n", pkg->name);
- } else if (strcasecmp(field, "Priority") == 0) {
- fprintf(fp, "Priority: %s\n", pkg->priority);
- } else if (strcasecmp(field, "Provides") == 0) {
- if (pkg->provides_count > 1) {
- fprintf(fp, "Provides:");
- for(i = 1; i < pkg->provides_count; i++) {
- fprintf(fp, "%s %s", i == 1 ? "" : ",",
- pkg->provides[i]->name);
- }
- fprintf(fp, "\n");
- }
- } else {
- goto UNKNOWN_FMT_FIELD;
- }
- break;
- case 'r':
- case 'R':
- if (strcasecmp (field, "Replaces") == 0) {
- if (pkg->replaces_count) {
- fprintf(fp, "Replaces:");
- for (i = 0; i < pkg->replaces_count; i++) {
- fprintf(fp, "%s %s", i == 0 ? "" : ",",
- pkg->replaces[i]->name);
- }
- fprintf(fp, "\n");
- }
- } else if (strcasecmp (field, "Recommends") == 0) {
- if (pkg->recommends_count) {
- fprintf(fp, "Recommends:");
- for (j=0, i=0; i<depends_count; i++) {
- if (pkg->depends[i].type != RECOMMEND)
- continue;
- str = pkg_depend_str(pkg, i);
- fprintf(fp, "%s %s", j == 0 ? "" : ",", str);
- free(str);
- j++;
- }
- fprintf(fp, "\n");
- }
- } else {
- goto UNKNOWN_FMT_FIELD;
- }
- break;
- case 's':
- case 'S':
- if (strcasecmp(field, "Section") == 0) {
- if (pkg->section) {
- fprintf(fp, "Section: %s\n", pkg->section);
- }
-#if defined HAVE_SHA256
- } else if (strcasecmp(field, "SHA256sum") == 0) {
- if (pkg->sha256sum) {
- fprintf(fp, "SHA256sum: %s\n", pkg->sha256sum);
- }
-#endif
- } else if (strcasecmp(field, "Size") == 0) {
- if (pkg->size) {
- fprintf(fp, "Size: %ld\n", pkg->size);
- }
- } else if (strcasecmp(field, "Source") == 0) {
- if (pkg->source) {
- fprintf(fp, "Source: %s\n", pkg->source);
- }
- } else if (strcasecmp(field, "Status") == 0) {
- char *pflag = pkg_state_flag_to_str(pkg->state_flag);
- fprintf(fp, "Status: %s %s %s\n",
- pkg_state_want_to_str(pkg->state_want),
- pflag,
- pkg_state_status_to_str(pkg->state_status));
- free(pflag);
- } else if (strcasecmp(field, "Suggests") == 0) {
- if (pkg->suggests_count) {
- fprintf(fp, "Suggests:");
- for (j=0, i=0; i<depends_count; i++) {
- if (pkg->depends[i].type != SUGGEST)
- continue;
- str = pkg_depend_str(pkg, i);
- fprintf(fp, "%s %s", j == 0 ? "" : ",", str);
- free(str);
- j++;
- }
- fprintf(fp, "\n");
- }
- } else {
- goto UNKNOWN_FMT_FIELD;
- }
- break;
- case 't':
- case 'T':
- if (strcasecmp(field, "Tags") == 0) {
- if (pkg->tags) {
- fprintf(fp, "Tags: %s\n", pkg->tags);
- }
- }
- break;
- case 'v':
- case 'V':
- {
- char *version = pkg_version_str_alloc(pkg);
- if (version == NULL)
- return;
- fprintf(fp, "Version: %s\n", version);
- free(version);
- }
- break;
- default:
- goto UNKNOWN_FMT_FIELD;
- }
-
- return;
+ } else if (strcasecmp(field, "Conflicts") == 0) {
+ struct depend *cdep;
+ compound_depend_t *deps, *dep;
+ deps = pkg_get_ptr(pkg, PKG_CONFLICTS);
+ if (deps) {
+ fprintf(fp, "Conflicts:");
+ for (i = 0, dep = deps; dep->type; dep++, i++) {
+ cdep = dep->possibilities[0];
+ fprintf(fp, "%s %s", i == 0 ? "" : ",",
+ cdep->pkg->name);
+ if (cdep->version) {
+ fprintf(fp, " (%s%s)",
+ constraint_to_str(cdep->
+ constraint),
+ cdep->version);
+ }
+ }
+ fprintf(fp, "\n");
+ }
+ } else {
+ goto UNKNOWN_FMT_FIELD;
+ }
+ break;
+ case 'd':
+ case 'D':
+ if (strcasecmp(field, "Depends") == 0) {
+ dep = pkg_get_depends(pkg, DEPEND);
+ if (dep) {
+ fprintf(fp, "Depends:");
+ for (i = 0, j = 0; dep && dep->type; i++, dep++) {
+ if (dep->type != DEPEND)
+ continue;
+ str = pkg_depend_str(pkg, i);
+ fprintf(fp, "%s %s", j == 0 ? "" : ",",
+ str);
+ free(str);
+ j++;
+ }
+ fprintf(fp, "\n");
+ }
+ } else if (strcasecmp(field, "Description") == 0) {
+ p = pkg_get_string(pkg, PKG_DESCRIPTION);
+ if (p) {
+ fprintf(fp, "Description: %s\n",
+ p);
+ }
+ } else {
+ goto UNKNOWN_FMT_FIELD;
+ }
+ break;
+ case 'e':
+ case 'E':
+ if (pkg->essential) {
+ fprintf(fp, "Essential: yes\n");
+ }
+ break;
+ case 'f':
+ case 'F':
+ p = pkg_get_string(pkg, PKG_FILENAME);
+ if (p) {
+ fprintf(fp, "Filename: %s\n", p);
+ }
+ break;
+ case 'i':
+ case 'I':
+ if (strcasecmp(field, "Installed-Size") == 0) {
+ fprintf(fp, "Installed-Size: %lu\n",
+ (unsigned long) pkg_get_int(pkg, PKG_INSTALLED_SIZE));
+ } else if (strcasecmp(field, "Installed-Time") == 0) {
+ i = pkg_get_int(pkg, PKG_INSTALLED_TIME);
+ if (i) {
+ fprintf(fp, "Installed-Time: %lu\n",
+ (unsigned long) i);
+ }
+ }
+ break;
+ case 'm':
+ case 'M':
+ if (strcasecmp(field, "Maintainer") == 0) {
+ p = pkg_get_string(pkg, PKG_MAINTAINER);
+ if (p) {
+ fprintf(fp, "Maintainer: %s\n", p);
+ }
+ } else if (strcasecmp(field, "MD5sum") == 0) {
+ p = pkg_get_md5(pkg);
+ if (p) {
+ fprintf(fp, "MD5Sum: %s\n", p);
+ }
+ } else {
+ goto UNKNOWN_FMT_FIELD;
+ }
+ break;
+ case 'p':
+ case 'P':
+ if (strcasecmp(field, "Package") == 0) {
+ fprintf(fp, "Package: %s\n", pkg->name);
+ } else if (strcasecmp(field, "Priority") == 0) {
+ fprintf(fp, "Priority: %s\n", pkg_get_string(pkg, PKG_PRIORITY));
+ } else if (strcasecmp(field, "Provides") == 0) {
+ ab_pkg = pkg_get_ptr(pkg, PKG_PROVIDES);
+ if (ab_pkg && ab_pkg[0] && ab_pkg[1]) {
+ fprintf(fp, "Provides:");
+ for (i = 1; ab_pkg[i]; i++) {
+ fprintf(fp, "%s %s", i == 1 ? "" : ",",
+ ab_pkg[i]->name);
+ }
+ fprintf(fp, "\n");
+ }
+ } else {
+ goto UNKNOWN_FMT_FIELD;
+ }
+ break;
+ case 'r':
+ case 'R':
+ if (strcasecmp(field, "Replaces") == 0) {
+ ab_pkg = pkg_get_ptr(pkg, PKG_REPLACES);
+ if (ab_pkg && *ab_pkg) {
+ fprintf(fp, "Replaces:");
+ for (i = 0; *ab_pkg; i++, ab_pkg++) {
+ fprintf(fp, "%s %s", i == 0 ? "" : ",",
+ (*ab_pkg)->name);
+ }
+ fprintf(fp, "\n");
+ }
+ } else if (strcasecmp(field, "Recommends") == 0) {
+ dep = pkg_get_depends(pkg, RECOMMEND);
+ if (dep) {
+ fprintf(fp, "Recommends:");
+ for (j = 0, i = 0; dep && dep->type; i++, dep++) {
+ if (dep->type != RECOMMEND)
+ continue;
+ str = pkg_depend_str(pkg, i);
+ fprintf(fp, "%s %s", j == 0 ? "" : ",",
+ str);
+ free(str);
+ j++;
+ }
+ fprintf(fp, "\n");
+ }
+ } else {
+ goto UNKNOWN_FMT_FIELD;
+ }
+ break;
+ case 's':
+ case 'S':
+ if (strcasecmp(field, "Section") == 0) {
+ p = pkg_get_string(pkg, PKG_SECTION);
+ if (p) {
+ fprintf(fp, "Section: %s\n", p);
+ }
+ } else if (strcasecmp(field, "SHA256sum") == 0) {
+ p = pkg_get_string(pkg, PKG_SHA256SUM);
+ if (p) {
+ fprintf(fp, "SHA256sum: %s\n", p);
+ }
+ } else if (strcasecmp(field, "Size") == 0) {
+ i = pkg_get_int(pkg, PKG_SIZE);
+ if (i) {
+ fprintf(fp, "Size: %lu\n", (unsigned long) i);
+ }
+ } else if (strcasecmp(field, "Source") == 0) {
+ p = pkg_get_string(pkg, PKG_SOURCE);
+ if (p) {
+ fprintf(fp, "Source: %s\n", p);
+ }
+ } else if (strcasecmp(field, "Status") == 0) {
+ char *pflag = pkg_state_flag_to_str(pkg->state_flag);
+ fprintf(fp, "Status: %s %s %s\n",
+ pkg_state_want_to_str(pkg->state_want),
+ pflag,
+ pkg_state_status_to_str(pkg->state_status));
+ free(pflag);
+ } else if (strcasecmp(field, "Suggests") == 0) {
+ dep = pkg_get_depends(pkg, SUGGEST);
+ if (dep) {
+ fprintf(fp, "Suggests:");
+ for (j = 0, i = 0; dep && dep->type; i++, dep++) {
+ if (dep->type != SUGGEST)
+ continue;
+ str = pkg_depend_str(pkg, i);
+ fprintf(fp, "%s %s", j == 0 ? "" : ",",
+ str);
+ free(str);
+ j++;
+ }
+ fprintf(fp, "\n");
+ }
+ } else {
+ goto UNKNOWN_FMT_FIELD;
+ }
+ break;
+ case 't':
+ case 'T':
+ if (strcasecmp(field, "Tags") == 0) {
+ p = pkg_get_string(pkg, PKG_TAGS);
+ if (p) {
+ fprintf(fp, "Tags: %s\n", p);
+ }
+ }
+ break;
+ case 'v':
+ case 'V':
+ {
+ char *version = pkg_version_str_alloc(pkg);
+ if (version == NULL)
+ return;
+ fprintf(fp, "Version: %s\n", version);
+ free(version);
+ }
+ break;
+ default:
+ goto UNKNOWN_FMT_FIELD;
+ }
+
+ return;