Merge branch 'master' of ssh://vps2.jankratochvil.net/var/lib/git/nethome
[nethome.git] / bin / changelogget
index cde7598..578f1d5 100755 (executable)
@@ -11,32 +11,52 @@ if [ "$1" = "-n" ];then
        changelog="$1"
        shift
 fi
-for arg in "$@";do
+
+function formatpatch
+{
+       # --- src/gdb/ChangeLog   2008/04/24 08:46:17     1.9308
+       diffdecvs | if [ -z "$changelog" ];then perl -p -e '$r=qr/^(?:---|\Q+++\E) /o;$c=0 if m{$r}o;$c=1 if s{$r(?=\S+/ChangeLog(?:\t|$))}{### }o;s{^@@}{##} if $c;'; else cat; fi
+}
+
+if [ "$*" = "-f" ];then
+       formatpatch
+else for arg in "$@";do
+       arg="$(echo "$arg"|sed 's/^https:/http:/')"
        # http://sourceware.org/ml/gdb-cvs/2099-99/msg99999.html
        if [ "$arg" != "${arg#http://sources.redhat.com/}" ];then
                arg="http://sourceware.org/${arg#http://sources.redhat.com/}"
        fi
-       if [ "$arg" != "${arg#http://sourceware.org/ml/}" -a "$arg" != "${arg%.html}" ];then
-               echo >&2 -n '*'
+       if [ "$arg" != "${arg#http://sourceware.org/ml/*-cvs/}" -a "$arg" != "${arg%.html}" ];then
+               echo >&2 -n '+'
+               echo "$arg"
+               echo
+               changelogget -q $changelog $(wget -q -O - "$arg" | sed -n -e 's/&amp;/\&/g' -e 's#^<a \+\(rel="nofollow"\)\? *href="\(.*\)">\2</a>$#\2#p')
+       elif [ "$arg" != "${arg#http://gcc.gnu.org/viewcvs[?]view=revision&revision=}" ];then
+               echo >&2 -n '+'
+               echo "$arg"
+               echo
+               changelogget -q $changelog $(wget -q -O - "$arg" | sed -n -e 's/&amp;/\&/g' -e 's#^.*<a href="\(/viewcvs/[^">]*\)"[^>]*>text changed<.*$#http://gcc.gnu.org\1#p')
+       elif [ "$arg" != "${arg#http://sourceware.org/ml/}" -a "$arg" != "${arg%.html}" ];then
+               echo >&2 -n '#'
                echo "$arg"
                raw="$(wget -q -O - "$arg" | sed -n 's#^.*<a href="\(/cgi-bin/get-raw-msg[?][^"]*\)">Raw text</a>.*$#\1#p')"
                if [ -z "$raw" ];then
-                       echo >&2 -n '+'
-                       echo
-                       changelogget -q $changelog $(wget -q -O - "$arg" | sed -n -e 's/&amp;/\&/g' -e 's#^<a \+href="\(.*\)">\1</a>$#\1#p')
-               else
-                       echo >&2 -n '#'
-                       wget -q -O - "http://sourceware.org$raw" | sed -n -e '/^Subject:/p' -e '/^$/,$p'
+                       echo >&2 "No raw URL found: $arg"
+                       exit 1
                fi
+               wget -q -O - "http://sourceware.org$raw" | sed -n -e '/^Subject:/p' -e '/^$/,$p'
        elif [ "$arg" != "${arg#http://sourceware.org/cgi-bin/cvsweb.cgi/src/}" ];then
                echo >&2 -n '.'
-               # --- src/gdb/ChangeLog   2008/04/24 08:46:17     1.9308
-               wget -q -O - "$arg" | diffdecvs | if [ -z "$changelog" ];then perl -p -e '$c=1 if s{^(?:---|\Q+++\E)(?= \S+/ChangeLog\t)}{###};s{^@@}{##} if $c;'; else cat; fi
+               wget -q -O - "$arg" | formatpatch
+       # http://gcc.gnu.org/viewcvs/trunk/ChangeLog?r1=154127&r2=154126&pathrev=154127
+       elif [ "$arg" != "${arg#http://gcc.gnu.org/viewcvs/}" ];then
+               echo >&2 -n '.'
+               wget -q -O - "$arg&view=patch" | formatpatch
        else
                echo >&2 "Invalid URL: $arg"
                exit 1
        fi
-done
+done;fi
 if $v;then
        echo >&2 OK
 fi