diff options
-rw-r--r-- | parsehdlist.c | 19 | ||||
-rw-r--r-- | rpmtools.spec | 5 |
2 files changed, 18 insertions, 6 deletions
diff --git a/parsehdlist.c b/parsehdlist.c index c8ab948..af8b904 100644 --- a/parsehdlist.c +++ b/parsehdlist.c @@ -388,7 +388,7 @@ int main(int argc, char **argv) /* interactive mode */ while (interactive_mode) { char in_name[4096]; - char *in_tag, *in_version, *in_release; + char *in_tag, *in_version, *in_release, *in_arch; unsigned long hash_in_name; int i, count = 0; @@ -398,6 +398,7 @@ int main(int argc, char **argv) break; } *in_tag++ = 0; + if ((in_arch = strrchr(in_name, '.')) != NULL && !strchr(in_arch, '-')) *in_arch++ = 0; else in_arch = 0; if ((in_release = strrchr(in_name, '-')) != NULL) { *in_release++ = 0; if ((in_version = strrchr(in_name, '-')) != NULL) { @@ -406,15 +407,22 @@ int main(int argc, char **argv) for (i = 0; i < count_headers; ++i) { if (headers[i].hash_name == hash_in_name && !strcmp(headers[i].name, in_name)) { if (strcmp(get_name(headers[i].header, RPMTAG_VERSION), in_version)) continue; - if (strcmp(get_name(headers[i].header, RPMTAG_RELEASE), in_release)) continue; + if (strcmp(get_name(headers[i].header, RPMTAG_RELEASE), in_release)) { + if (in_arch) in_arch[-1] = '.'; + if (strcmp(get_name(headers[i].header, RPMTAG_RELEASE), in_release)) { + if (in_arch) in_arch[-1] = 0; + continue; + } + } else if (in_arch && strcmp(get_name(headers[i].header, RPMTAG_ARCH), in_arch)) continue; print_header_flag_interactive(in_tag, headers[i].header); ++count; break; /* special case to avoid multiple output for multiply defined same package */ } } - if (!count) in_version[-1] = '-'; + in_version[-1] = '-'; } if (!count) { + if (in_arch) in_arch[-1] = '.'; in_version = in_release; hash_in_name = hash(in_name); for (i = 0; i < count_headers; ++i) { @@ -424,15 +432,16 @@ int main(int argc, char **argv) ++count; } } - if (!count) in_version[-1] = '-'; + in_version[-1] = '-'; } } if (!count) { + if (in_arch) in_arch[-1] = '.'; hash_in_name = hash(in_name); for (i = 0; i < count_headers; ++i) { if (headers[i].hash_name == hash_in_name && !strcmp(headers[i].name, in_name)) { print_header_flag_interactive(in_tag, headers[i].header); - ++count; + ++count; } } } diff --git a/rpmtools.spec b/rpmtools.spec index 86316b6..e388e07 100644 --- a/rpmtools.spec +++ b/rpmtools.spec @@ -1,5 +1,5 @@ %define name rpmtools -%define release 6mdk +%define release 7mdk # do not modify here, see Makefile in the CVS %define version 3.0 @@ -54,6 +54,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/perl5/man/*/* %changelog +* Mon Jul 2 2001 François Pons <fpons@mandrakesoft.com> 3.0-7mdk +- added arch check support for parsehdlist. + * Thu Jun 28 2001 François Pons <fpons@mandrakesoft.com> 3.0-6mdk - removed some specific urpm code to urpm package. - removed obsoleted methods. |