gdbunpack: Strip off some pre-uu garbage.
[nethome.git] / bin / gdbunpack
index fa94885..6f8a60f 100755 (executable)
@@ -2,6 +2,8 @@
 # $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
@@ -18,8 +20,15 @@ if [ -z "$args" ];then
 fi
 for log in $args;do
        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"
+               rc=1
                continue
        fi
        if ($force || $clean) && test -d "$base";then
@@ -30,26 +39,36 @@ for log in $args;do
        fi
        if ! mkdir "$base";then
                echo >&2 "Error <$log>: mkdir"
-               exit 1
+               rc=1
+               continue
        fi
-       if ! (cd "$base";uudecode) <"$log";then
+       if ! (cd "$base";sed -n '/^begin /,$p'|uudecode) <"$log";then
                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"
-               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"/*
-               exit 1
+               rm -rf "$base"
+               rc=1
+               continue
        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"/*
+       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
@@ -57,4 +76,7 @@ for log in $args;do
 #      mv -f "$base"/*.log "$base"/gdb.log
 #      mv -f "$base"/*.sum "$base"/gdb.sum
 done
-echo OK
+if [ $rc -eq 0 ];then
+       echo OK
+fi
+exit $rc