Support extracting /log to /out.
[nethome.git] / bin / gdbunpack
1 #! /bin/sh
2 # $Id$
3 # Extract gdb.sum+gdb.log from the Fedora/Red Hat gdb rpm build log.
4
5 force=false
6 if [ "$1" = "-f" ];then
7         force=true
8         shift
9 fi
10 clean=false
11 if [ "$1" = "-c" ];then
12         clean=true
13         shift
14 fi
15 args="$*"
16 if [ -z "$args" ];then
17         args="`find -name "*.log"`"
18 fi
19 for log in $args;do
20         base="${log%.log}"
21         if [ "$base" = "$log" ];then
22                 base="${log%/log}"
23                 if [ "$base" != "$log" ];then
24                         base="$base/out"
25                 fi
26         fi
27         if [ "$base" = "$log" -o "$log" != "${log%/gdb.log}" -o "$log" = "gdb.log" ];then
28                 echo >&2 "file has no .log suffix or is gdb.log: $log"
29                 continue
30         fi
31         if ($force || $clean) && test -d "$base";then
32                 rm -rf "$base"
33         fi
34         if $clean;then
35                 continue
36         fi
37         if ! mkdir "$base";then
38                 echo >&2 "Error <$log>: mkdir"
39                 exit 1
40         fi
41         if ! (cd "$base";uudecode) <"$log";then
42                 echo >&2 "Error <$log>: uudecode"
43                 exit 1
44         fi
45         if echo -n "$base"/*|grep ' ';then
46                 echo >&2 "Error <$log>: Too many files in: $base"
47                 exit 1
48         fi
49         if ! (echo -n "$base"/*|grep -q '[.]tar[.]bz2$');then
50                 echo >&2 "Error <$log>: Invalid file:" "$base"/*
51                 exit 1
52         fi
53         if ! (cd "$base";tar xjf *);then
54                 echo >&2 "Error <$log>: tar xjf"
55                 exit 1
56         fi
57         rm -f "$base"/*.tar.bz2
58         chmod -x "$base"/*
59 #       if ! (echo "$base"/*|grep -q '^[^ ]*[.]log [^ ]*[.]sum$');then
60 #               echo >&2 "Error <$log>: Not two files .log+.sum:" "$base"/*
61 #               exit 1
62 #       fi
63 #       mv -f "$base"/*.log "$base"/gdb.log
64 #       mv -f "$base"/*.sum "$base"/gdb.sum
65 done
66 echo OK