+ grep -E -m 1 "^#.*Revision:.*Date" $SPECFILE
+}
+
+find_mirror(){
+
+ cd "$SPECS_DIR"
+ url="$1"
+ if [ ! -f "mirrors" -a "$NOCVSSPEC" != "yes" ] ; then
+ cvs update mirrors >&2
+ fi
+
+ IFS="|"
+ while read origin mirror name rest; do
+ ol=`echo -n "$origin"|wc -c`
+ prefix="`echo -n "$url" | head -c $ol`"
+ if [ "$prefix" = "$origin" ] ; then
+ suffix="`echo "$url"|cut -b $ol-`"
+ echo -n "$mirror$suffix"
+ return 0
+ fi
+ done < mirrors
+ echo "$url"
+}
+
+src_no ()
+{
+ cd $SPECS_DIR
+ $RPMBUILD -bp $BCOND --define 'prep %dump' $SPECFILE 2>&1 | \
+ grep "SOURCEURL[0-9]*[ ]*$1""[ ]*$" | \
+ sed -e 's/.*SOURCEURL\([0-9][0-9]*\).*/\1/' | \
+ head -1 | xargs
+}
+
+src_md5 ()
+{
+ no=$(src_no "$1")
+ [ -z "$no" ] && return
+ cd $SPECS_DIR
+ spec_rev=$(grep $SPECFILE CVS/Entries | sed -e s:/$SPECFILE/:: -e s:/.*::)
+ if [ -z "$spec_rev" ]; then
+ spec_rev="$(head -1 $SPECFILE | sed -e 's/.*\$Revision: \([0-9.]*\).*/\1/')"
+ fi
+ spec="$SPECFILE[0-9.,]*,$(echo $spec_rev | sed 's/\./\\./g')"
+ md5=$(grep -s -v '^#' additional-md5sums | \
+ grep -E "[ ]$(basename "$1")[ ]+${spec}([ ,]|\$)" | \
+ sed -e 's/^\([0-9a-f]\{32\}\).*/\1/' | \
+ grep -E '^[0-9a-f]{32}$')
+ if [ X"$md5" = X"" ] ; then
+ grep -i "#[ ]*Source$no-md5[ ]*:" $SPECFILE | sed -e 's/.*://' | xargs
+ else
+ if [ $(echo "$md5" | wc -l) != 1 ] ; then
+ echo "$SPECFILE: more then one entry in additional-md5sums for $1" 1>&2
+ fi
+ echo "$md5" | tail -1
+ fi
+}
+
+distfiles_url ()
+{
+ echo "$DISTFILES_SERVER/by-md5/$(src_md5 "$1" | sed -e 's|^\(.\)\(.\)|\1/\2/&|')/$(basename "$1")"
+}
+
+good_md5 ()
+{
+ md5=$(src_md5 "$1")
+ [ "$md5" = "" ] || \
+ [ "$md5" = "$(md5sum $(nourl "$1") 2> /dev/null | sed -e 's/ .*//')" ]