diff options
author | Glenn L McGrath | 2001-07-18 15:47:21 +0000 |
---|---|---|
committer | Glenn L McGrath | 2001-07-18 15:47:21 +0000 |
commit | c3fbec73fb45997918bef927cea519866e1e1c9d (patch) | |
tree | 5c1fd9758c4c9894bb050d9c152e1735bc007536 /archival/dpkg_deb.c | |
parent | 8d3b0497a4d8866f0cafd873f241971c2871d580 (diff) | |
download | busybox-c3fbec73fb45997918bef927cea519866e1e1c9d.zip busybox-c3fbec73fb45997918bef927cea519866e1e1c9d.tar.gz |
Change read_package_field interface, and rewrite using low level functions
Fixes for a few bugs that have crept into dpkg in the last few days
Diffstat (limited to 'archival/dpkg_deb.c')
-rw-r--r-- | archival/dpkg_deb.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c index 7f4dcbf..a933c69 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); } |