aboutsummaryrefslogtreecommitdiff
path: root/archival/dpkg_deb.c
diff options
context:
space:
mode:
Diffstat (limited to 'archival/dpkg_deb.c')
-rw-r--r--archival/dpkg_deb.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c
index 7f4dcbf01..a933c6948 100644
--- a/archival/dpkg_deb.c
+++ b/archival/dpkg_deb.c
@@ -110,12 +110,17 @@ extern int dpkg_deb_main(int argc, char **argv)
}
else if (arg_type == arg_type_field) {
char *field = NULL;
+ char *name;
+ char *value;
int field_start = 0;
- while ((field = read_package_field(&output_buffer[field_start])) != NULL) {
- field_start += (strlen(field) + 1);
- if (strstr(field, argv[optind + 1]) == field) {
- puts(field + strlen(argv[optind + 1]) + 2);
+ while (1) {
+ field_start += read_package_field(&output_buffer[field_start], &name, &value);
+ if (name == NULL) {
+ break;
+ }
+ if (strcmp(name, argv[optind + 1]) == 0) {
+ puts(value);
}
free(field);
}