* distfiles, gnupg.spec.in: Include convert-from-106.
[gnupg.git] / scripts / gnupgbug
1 #!/bin/sh
2
3 #
4 #     File a bug against the GNU Privacy Guard.
5 #
6
7 #
8 #     Copyright (c) 2000 Thomas Roessler <roessler@guug.de>
9 #
10 #
11 #     This program is free software; you can redistribute it and/or modify
12 #     it under the terms of the GNU General Public License as published by
13 #     the Free Software Foundation; either version 2 of the License, or
14 #     (at your option) any later version.
15 #
16 #     This program is distributed in the hope that it will be useful,
17 #     but WITHOUT ANY WARRANTY; without even the implied warranty of
18 #     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 #     GNU General Public License for more details.
20 #
21 #     You should have received a copy of the GNU General Public License
22 #     along with this program; if not, write to the Free Software
23 #     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #
25
26 SUBMIT="submit@bugs.guug.de"
27 DEBIAN_SUBMIT="submit@bugs.debian.org"
28
29
30 include_file ()
31 {
32         echo
33         echo "--- Begin $1"
34         sed -e 's/^-/- -/' $1 | egrep -v '^[    ]*(#|$)'
35         echo "--- End $1"
36         echo
37 }
38
39 case `echo -n` in
40 "") n=-n; c=   ;;
41  *) n=; c='\c' ;;
42 esac
43
44
45 exec > /dev/tty
46 exec < /dev/tty
47
48 SCRATCH=${TMPDIR-/tmp}/`basename $0`.`hostname`.$$
49
50 mkdir ${SCRATCH} || \
51 {
52         echo "`basename $0`: Can't create temporary directory." >& 2 ;
53         exit 1 ;
54 }
55
56 trap "rm -r -f ${SCRATCH} ; trap '' 0 ; exit" 0 1 2
57
58 TEMPLATE=${SCRATCH}/template.txt
59
60 echo "Please enter a one-line description of the problem you experience:"
61 echo $n "> $c"
62 read SUBJECT
63
64 echo $n "Do you want to include your personal GnuPG configuration files? [Y|n]$c"
65 read personal
66 case "$personal" in
67 [nN]*)  personal=no  ;;
68     *)  personal=yes ;;
69 esac
70
71 if test -f /etc/debian_version ; then
72         DEBIAN=yes
73         echo $n "Checking whether GnuPG has been installed as a package... $c"
74         GNUPGVERSION="`dpkg -l gnupg | grep ^i | awk '{print $3}'`" 2> /dev/null
75         if test "$GNUPGVERSION" ; then
76                 DPKG=yes
77         else
78                 DPKG=no
79         fi
80         echo "$DPKG"
81         if test "$DPKG" = "no" ; then
82                 echo $n "File this bug with Debian? [Y|n]$c"
83                 read $DPKG
84                 case "$DPKG" in
85                 [nN])   DPKG=no ;;
86                 *)      DPKG=yes ;;
87                 esac
88         fi
89 else
90         DEBIAN=no
91         DPKG=no
92 fi
93
94 test "$MUTTVERSION"  || MUTTVERSION="`mutt -v | head -1 | awk '{print $2}' | tr -d i`"
95 test "$DPKG" = "yes" && SUBMIT="$SUBMIT, $DEBIAN_SUBMIT"
96
97
98 exec > ${TEMPLATE}
99
100 echo "Subject: mutt-$MUTTVERSION: $SUBJECT"
101 echo "To: $SUBMIT"
102 echo "Cc: $LOGNAME"
103 echo
104 echo "Package: mutt"
105 echo "Version: $MUTTVERSION"
106 echo
107 echo "-- Please type your report below this line"
108 echo
109 echo
110 echo
111
112 if test "$DEBIAN" = "yes" ; then
113         echo "Obtaining Debian-specific information..." > /dev/tty
114         bug -p -s dummy mutt |                                 \
115                 sed -n -e "/^-- System Information/,/^---/p" | \
116                 grep -v '^---'
117 fi
118
119 echo
120 echo "-- Mutt Version Information"
121 echo
122 mutt -v
123
124 if test "$personal" = "yes" ; then
125         CANDIDATES=".muttrc-${MUTTVERSION} .muttrc .mutt/muttrc-${MUTTVERSION} .mutt/muttrc"
126         MATCHED="none"
127         for f in $CANDIDATES; do
128                 if test -f "${HOME}/$f" ; then
129                         MATCHED="${HOME}/$f"
130                         break
131                 fi
132         done
133
134         if test "$MATCHED" = "none" ; then
135                 echo "WARNING: Can't find your personal .muttrc." >&2
136         else
137                 include_file $MATCHED
138         fi
139 fi
140
141 if test "$global" = "yes" ; then
142         CANDIDATES="Muttrc-${MUTTVERSION} Muttrc"
143         DIRECTORIES="/etc /usr/local/share/mutt"
144         MATCHED="none"
145         for d in $DIRECTORIES ; do
146                 for f in $CANDIDATES; do
147                         if test -f $d/$f ; then
148                                 MATCHED="$d/$f"
149                                 break
150                         fi
151                 done
152                 test "$MATCHED" = "none" || break
153         done
154
155         if test "$MATCHED" = "none" ; then
156                 echo "WARNING: Can't find global Muttrc." >&2
157         else
158                 include_file $MATCHED
159         fi
160 fi
161
162 exec > /dev/tty
163
164 cp $TEMPLATE $SCRATCH/mutt-bug.txt
165
166 input="e"
167 while : ; do
168         if test "$input" = "e" ; then
169                 ${VISUAL-vi} $SCRATCH/mutt-bug.txt
170                 if cmp $SCRATCH/mutt-bug.txt ${TEMPLATE} > /dev/null ; then
171                         echo "WARNING: Bug report was not modified!"
172                 fi
173         fi
174
175         echo $n "Submit, Edit, Print, Quit? [S|e|p|q]$c"
176         read _input
177         input="`echo $_input | tr EPSQ epsq`"
178         case $input in
179         e*)     ;;
180         p*)     ${PAGER-more} $SCRATCH/mutt-bug.txt ;;
181         s*|"")  /usr/sbin/sendmail -t < $SCRATCH/mutt-bug.txt ; exit ;;
182         q*)     exit
183         esac
184 done
185