gdbunpack: Strip off some pre-uu garbage.
[nethome.git] / bin / gdbunpack
index 561e3f8..6f8a60f 100755 (executable)
@@ -2,47 +2,81 @@
 # $Id$
 # Extract gdb.sum+gdb.log from the Fedora/Red Hat gdb rpm build log.
 
 # $Id$
 # Extract gdb.sum+gdb.log from the Fedora/Red Hat gdb rpm build log.
 
+rc=0
+
 force=false
 if [ "$1" = "-f" ];then
        force=true
        shift
 fi
 force=false
 if [ "$1" = "-f" ];then
        force=true
        shift
 fi
-for log in "$@";do
+clean=false
+if [ "$1" = "-c" ];then
+       clean=true
+       shift
+fi
+args="$*"
+if [ -z "$args" ];then
+       args="`find -name "*.log"`"
+fi
+for log in $args;do
        base="${log%.log}"
        base="${log%.log}"
+       if [ "$base" = "$log" ];then
+               base="${log%/log}"
+               if [ "$base" != "$log" ];then
+                       base="$base/out"
+               fi
+       fi
        if [ "$base" = "$log" -o "$log" != "${log%/gdb.log}" -o "$log" = "gdb.log" ];then
                echo >&2 "file has no .log suffix or is gdb.log: $log"
        if [ "$base" = "$log" -o "$log" != "${log%/gdb.log}" -o "$log" = "gdb.log" ];then
                echo >&2 "file has no .log suffix or is gdb.log: $log"
+               rc=1
                continue
        fi
                continue
        fi
-       if $force && test -d "$base";then
+       if ($force || $clean) && test -d "$base";then
                rm -rf "$base"
        fi
                rm -rf "$base"
        fi
+       if $clean;then
+               continue
+       fi
        if ! mkdir "$base";then
                echo >&2 "Error <$log>: mkdir"
        if ! mkdir "$base";then
                echo >&2 "Error <$log>: mkdir"
-               exit 1
+               rc=1
+               continue
        fi
        fi
-       if ! (cd "$base";uudecode) <"$log";then
+       if ! (cd "$base";sed -n '/^begin /,$p'|uudecode) <"$log";then
                echo >&2 "Error <$log>: uudecode"
                echo >&2 "Error <$log>: uudecode"
-               exit 1
+               rm -rf "$base"
+               rc=1
+               continue
        fi
        if echo -n "$base"/*|grep ' ';then
                echo >&2 "Error <$log>: Too many files in: $base"
        fi
        if echo -n "$base"/*|grep ' ';then
                echo >&2 "Error <$log>: Too many files in: $base"
-               exit 1
+               rm -rf "$base"
+               rc=1
+               continue
        fi
        if ! (echo -n "$base"/*|grep -q '[.]tar[.]bz2$');then
                echo >&2 "Error <$log>: Invalid file:" "$base"/*
        fi
        if ! (echo -n "$base"/*|grep -q '[.]tar[.]bz2$');then
                echo >&2 "Error <$log>: Invalid file:" "$base"/*
-               exit 1
+               rm -rf "$base"
+               rc=1
+               continue
        fi
        if ! (cd "$base";tar xjf *);then
                echo >&2 "Error <$log>: tar xjf"
        fi
        if ! (cd "$base";tar xjf *);then
                echo >&2 "Error <$log>: tar xjf"
-               exit 1
+               rm -rf "$base"
+               rc=1
+               continue
        fi
        rm -f "$base"/*.tar.bz2
        chmod -x "$base"/*
        fi
        rm -f "$base"/*.tar.bz2
        chmod -x "$base"/*
-       if ! (echo "$base"/*|grep -q '^[^ ]*[.]log [^ ]*[.]sum$');then
-               echo >&2 "Error <$log>: Not two files .log+.sum:" "$base"/*
-               exit 1
-       fi
-       mv -f "$base"/*.log "$base"/gdb.log
-       mv -f "$base"/*.sum "$base"/gdb.sum
+       perl -i -pe 's{\Q'"$HOME"'\E/.*?/build/[^/]*/}{}g' "$base"/*
+#      if ! (echo "$base"/*|grep -q '^[^ ]*[.]log [^ ]*[.]sum$');then
+#              echo >&2 "Error <$log>: Not two files .log+.sum:" "$base"/*
+#              exit 1
+#      fi
+#      mv -f "$base"/*.log "$base"/gdb.log
+#      mv -f "$base"/*.sum "$base"/gdb.sum
 done
 done
-echo OK
+if [ $rc -eq 0 ];then
+       echo OK
+fi
+exit $rc