On Wed, Aug 31, 2005 at 11:31:00AM +0300, Sviataslau Svirydau wrote: > Ограничение на alt - хороший вариант. Плюс поставить ограничение на, > скажем, максимум 3 последние записи - и для начала подойдет. А потом > посмотрим - что понравится и что нет, и тогда можно будет подкорректировать. "the same packager, for last 3 months, no more than 3 entires" -rpm_lastchange() { rpm -qp --lastchange -- "$@" |sed -ne \ - 's/@\([[:alnum:]-]\+\)\.[[:alnum:]]\+>/@\1>/;/[[:alnum:]]/p'; } + +rpm_recent_changes() +{ + perl -MRPM::Header -Mstrict -l - "$@" <<'__EOF__' + my ($f) = @ARGV; + tie my %hdr, "RPM::Header", $f or die "$f: $RPM::err\n"; + my ($guy0, $time0); + for my $i (0 .. $#{$hdr{CHANGELOGTIME}}) { + use Date::Format qw(time2str); + my $time = $hdr{CHANGELOGTIME}[$i]; + my $date = time2str("%a %b %d %Y", $time); + my $info = "* $date $hdr{CHANGELOGNAME}[$i]"; + my $guy; + $info =~ s{(?<=<)([^<>]+?)(?=>)}{ + local $_ = $1; + s/ at /@/g; s/ dot /./g; + s/@([-\w._]+)[.]\w+\z/\@$1/; + $guy = $_; + }e; + print $info; + $guy0 = $guy if $i == 0; + $time0 = $time if $i == 0; + # the same packager, for last 3 months, no more than 3 entires + my $again = $guy eq $guy0 && $time+3600*24*30*3 > $time0 && $i < 3; + print $hdr{CHANGELOGTEXT}[$i] if $again || $i == 0; + last if not $again; + } +__EOF__ +}