#!/bin/ash -efu . shell-error uidtbl=' {ec8030f7-c20a-464f-9b0e-13a3a9e97384} firefox {3550f703-e582-4d05-9a08-453d09bdfdc6} thunderbird {136c295a-4a5a-41cf-bf24-5cee526720d5} nvu {86c18b42-e466-45a9-ae7a-9b95ba6f5640} mozilla {92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} seamonkey {718e30fb-e89b-41dd-9da7-e25a45638b28} sunbird {3db10fab-e461-4c80-8b97-957ad5f8ea47} netscape {a463f10c-3994-11da-9945-000d60ca027b} flock ' uid3tbl=' toolkit@mozilla.org firefox ' uid2name() { local uid="`printf %s "$1" |tr '[A-Z]' '[a-z]'`" printf '%s\n' "$uidtbl$uid3tbl" | grep "^$uid " | cut -d\ -f2 } name2uid() { local name="`printf %s "$1" |tr '[A-Z]' '[a-z]'`" printf '%s\n' "$uidtbl" | grep " $name\$" | cut -d\ -f1 } round_min() { min_cmp='>=' min_version= local n= p= for p in `printf '%s\n' "$1" | sed -e 's/^\([0-9\.]\+\).*/\1/' -e 's/[.[:space:]]\+/ /g'`; do if n="$(printf '%g' "$p" 2>/dev/null)"; then [ "$n" -ge 0 ] || n=0 p="$n" fi min_version="$min_version.$p" done min_version="${min_version#\.}" } round_max() { max_cmp='<=' max_version= local n= p= prev= for p in `printf '%s\n' "$1" |tr '.' ' '`; do if printf '%s' "$p" |egrep -qs '^[0-9]+(\+|[A-Za-z]+)'; then max_cmp='<' n="${p%%'+'*}" n="${p%%[A-Za-z]*}" max_version="$max_version.$(($n+1))" break elif printf '%s' "$p" |egrep -qs '^[0-9]+\*'; then max_cmp='<' n="${p%%'*'*}" max_version="$max_version.$(($n+1))" break elif printf '%s' "$p" |egrep -qs '^(\+|\*|[A-Za-z]+)$'; then max_cmp='<' max_version="${max_version%\.*}.$(($prev+1))" break elif n="$(printf '%g' "$p" 2>/dev/null)"; then max_version="$max_version.$n" prev="$n" fi done max_version="${max_version#\.}" } show_requires() { local rc min_version min_cmp max_version max_cmp round_min "$min" round_max "$max" if [ "$min_version" != "$max_version" ]; then rc="$(rpmevrcmp "$max_version" "$min_version")" case "$rc" in 1|[1-9]*) verbose "$p minVersion=[$min], maxVersion=[$max]: [$p $min_cmp $min_version], [$p $max_cmp $max_version]" printf '%s\n' "$p $min_cmp $min_version" printf '%s\n' "$p $max_cmp $max_version" ;; 0) verbose "$p minVersion=[$min], maxVersion=[$max]: [$p = $min_version]" printf '%s\n' "$p = $min_version" ;; *) fatal "Error: $p: minVersion=$min_version > maxVersion=$max_version" ;; esac else verbose "$p minVersion=[$min], maxVersion=[$max]: [$p = $min_version]" printf '%s\n' "$p = $min_version" fi }