diff options
author | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-07-18 15:47:21 +0000 |
---|---|---|
committer | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-07-18 15:47:21 +0000 |
commit | 9fbd43afcfc341a13ba011bdc286a7f82a41d776 (patch) | |
tree | 5c1fd9758c4c9894bb050d9c152e1735bc007536 /dpkg_deb.c | |
parent | 8aef3244ae4b1f89f0b09f41261f82a2c9f1cda3 (diff) | |
download | busybox-w32-9fbd43afcfc341a13ba011bdc286a7f82a41d776.tar.gz busybox-w32-9fbd43afcfc341a13ba011bdc286a7f82a41d776.tar.bz2 busybox-w32-9fbd43afcfc341a13ba011bdc286a7f82a41d776.zip |
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
git-svn-id: svn://busybox.net/trunk/busybox@3122 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'dpkg_deb.c')
-rw-r--r-- | dpkg_deb.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/dpkg_deb.c b/dpkg_deb.c index 7f4dcbf01..a933c6948 100644 --- a/dpkg_deb.c +++ b/dpkg_deb.c | |||
@@ -110,12 +110,17 @@ extern int dpkg_deb_main(int argc, char **argv) | |||
110 | } | 110 | } |
111 | else if (arg_type == arg_type_field) { | 111 | else if (arg_type == arg_type_field) { |
112 | char *field = NULL; | 112 | char *field = NULL; |
113 | char *name; | ||
114 | char *value; | ||
113 | int field_start = 0; | 115 | int field_start = 0; |
114 | 116 | ||
115 | while ((field = read_package_field(&output_buffer[field_start])) != NULL) { | 117 | while (1) { |
116 | field_start += (strlen(field) + 1); | 118 | field_start += read_package_field(&output_buffer[field_start], &name, &value); |
117 | if (strstr(field, argv[optind + 1]) == field) { | 119 | if (name == NULL) { |
118 | puts(field + strlen(argv[optind + 1]) + 2); | 120 | break; |
121 | } | ||
122 | if (strcmp(name, argv[optind + 1]) == 0) { | ||
123 | puts(value); | ||
119 | } | 124 | } |
120 | free(field); | 125 | free(field); |
121 | } | 126 | } |