From c85f0992ffe3de3dd0f93e645b15b22a9a641977 Mon Sep 17 00:00:00 2001 From: Adam Sacarny Date: Sun, 25 Apr 1999 09:20:40 +0000 Subject: [PATCH] Much nicer way to select wine's location. Option to disable creation of debugging output. Debugging output is now created in directory script was started in. --- tools/bug_report.pl | 184 ++++++++++++++++++++++++++++++-------------- 1 file changed, 125 insertions(+), 59 deletions(-) diff --git a/tools/bug_report.pl b/tools/bug_report.pl index 1dbec07a7bd..13386216ffa 100755 --- a/tools/bug_report.pl +++ b/tools/bug_report.pl @@ -6,6 +6,9 @@ ##hunt you down and kill you like the savage animal I am. ##Released under the WINE licence ##Changelog: +##April 19, 1999 - Much nicer way to select wine's location +## - Option to disable creation of a debugging output +## - Now places debugging output where it was started ##April 4, 1999 - Sanity check for file locations/wine strippedness ## - Various code cleanups/fixes ##March 21, 1999 - Bash 2.0 STDERR workaround (Thanks Ryan Cumming!) @@ -43,7 +46,7 @@ $var0 = qq{ print do_var($var0); $debuglevel=; chomp $debuglevel; -until ($debuglevel < 4) { +until ($debuglevel == 1 or $debuglevel == 2 or $debuglevel == 3) { print "Enter a number from 1-3!\n"; $debuglevel=; chomp $debuglevel; @@ -56,9 +59,11 @@ if ($debuglevel < 3) { thousands of lines). To (hopefully) get the bug fixed, attach the first file to a messsage sent to the comp.emulators.ms-windows.wine newsgroup. The developers might ask you for "the last XX number of lines from the - report". If so, post the second file (It will be compressed with gzip - later, so leave off the .gz). If you feel like it, post both files at the - same time. I don't care. + report". If so, run the command: + gzip -d (output file)|tail -n (number of lines) > outfile + And post outfile. + If you do not want to create one of the files, just type in "no file" + and hit enter. }; print do_var($var1); } elsif ($debuglevel =~ 3) { @@ -67,10 +72,12 @@ if ($debuglevel < 3) { 1. Formatted debug report you might want to post to the newsgroup 2. File with ALL the debug output (It will later be compressed with gzip, so leave off the trailing .gz) + If you do not want to create one of the files, just type in "no file" + and I'll skip it. }; print do_var($var2); } -print "Enter the filename for this debug report (The first file):\n"; +print "Enter the formatted debug output (The first file):\n"; $outfile=; chomp $outfile; $var23 = qq{ @@ -81,7 +88,7 @@ while ($outfile =~ /^(\s)*$/) { $outfile=; chomp $outfile; } -print "Enter the file for the debug output (The second file):\n"; +print "Enter the file for the full debug output (The second file):\n"; $dbgoutfile=; chomp $dbgoutfile; while ($dbgoutfile =~ /^(\s)*$/) { @@ -89,43 +96,66 @@ while ($dbgoutfile =~ /^(\s)*$/) { $dbgoutfile=; chomp $dbgoutfile; } -if ($debuglevel =~ 1) { - print "Looking for wine...\n"; - $wineloc=`which wine`; - chomp $wineloc; - if ($wineloc =~ "") { - print "Couldn't find wine...\n"; - $var3 = qq{ - Enter the full path to wine. The path should look like - /path/to/wine/wine. Get it? It's the directories leading up to the - wine file, and then the actual wine file (Example: /home/wine/wine): - }; - print do_var($var3); - $wineloc=; - chomp $wineloc; - } else { - print "Found wine: $wineloc\n" - } +print "Looking for wine...\n"; +$whereis=`whereis wine`; +chomp $whereis; +print "Choose one of the following options:\n"; +$whereis =~ s/^wine\: //; +@locations = split(/\s/,$whereis); +print "1. Unlisted (I'll prompt you for a new location\n"; +print "2. Unsure (I'll use #3, that's probably it)\n"; +$i=2; +foreach $location (@locations) { + $i++; + print "$i. $location\n"; } -if ($debuglevel > 1) { - if ($debuglevel =~ 2) { - $var4 = qq{ - Enter the full path to wine. The path should look like - /path/to/wine/wine. Get it? It's the directories leading up to the - wine file, and then the actual wine file (Example: /home/wine/wine): - }; - print do_var($var4); - } elsif ($debuglevel =~ 3) { - print "Enter the full path to wine (Example: /home/wine/wine):\n"; +sub select_wineloc { + print "Enter the number that corresponds to wine's location:"; + $wineloc=; + chomp $wineloc; + $yes = 1 if $wineloc == 1 or $wineloc == 2; + $i=3; + foreach $location (@locations) { + $yes = 1 if $wineloc eq $i++; + } + while ($yes ne "1") { + print "Enter the number the corresponds to wine's location:"; + $wineloc=; + chomp $wineloc; + $i=1; + foreach $location (@locations) { + $yes = 1 if $wineloc eq $i++; + } + } + if ($wineloc == 1) { + $var25 = qq{ + Enter the full path to wine (Example: /usr/bin/wine): + }; + $var26 = qq{ + Please enter the full path to wine. A full path is the + directories leading up to a program's location, and then the + program. For example, if you had the program "wine" in the + directory "/usr/bin", you would type in "/usr/bin/wine". Now + try: + }; + print do_var($var25) if $debuglevel == 3; + print do_var($var26) if $debuglevel < 3; + $wineloc=; + chomp $wineloc; + while ($wineloc =~ /^(\s)*$/) { + print do_var($var23); + $wineloc=; + chomp $wineloc; + } + } + elsif ($wineloc == 2) { + $wineloc=$locations[0]; + } + else { + $wineloc=$locations[$wineloc-3]; } - $wineloc=; - chomp $wineloc; -} -while ($wineloc =~ /^(\s)*$/) { - print do_var($var23); - $wineloc=; - chomp $wineloc; } +&select_wineloc; print "Checking if $wineloc is stripped...\n"; $ifstrip = `nm $wineloc 2>&1`; while ($ifstrip =~ /no symbols/) { @@ -136,14 +166,17 @@ while ($ifstrip =~ /no symbols/) { this script. Note: stripped versions make useless debug reports }; print do_var($var24); - print "Enter the full path to wine:\n"; - $wineloc=; - chomp $wineloc; - while ($wineloc =~ /^(\s)*$/) { - print do_var($var23); - $wineloc=; - chomp $wineloc; - } + &select_wineloc; + $ifstrip = `nm $wineloc 2>&1`; +} +while ($ifstrip =~ /not recognized/) { + $var26 = qq{ + Looks like you gave me something that isn't a wine binary (It could be a + text file). Try again. + }; + print do_var($var26); + &select_wineloc; + print "Checking if $wineloc is stripped...\n"; $ifstrip = `nm $wineloc 2>&1`; } $var5 = qq{ @@ -153,7 +186,7 @@ What version of windows are you using with wine? 0-None, 1-Win3.x, }; print do_var($var5); $winver=; -until ($winver < 7) { +until ($winver == 0 or $winver == 1 or $winver == 2 or $winver == 3 or $winver == 4 or $winver == 5 or $winver == 6 or $winver == 7) { $var6 = qq{ No! Enter a number from 0 to 7 that corresponds to your windows version! }; @@ -218,7 +251,7 @@ bit (Windows 9x, NT3.x and up), or 2 if you are unsure: print do_var($var10); $progbits=; chomp $progbits; -until ($progbits < 3) { +until ($progbits == 0 or $progbits == 1 or $progbits == 2) { print "You must enter 0, 1 or 2!\n"; $progbits=; chomp $progbits @@ -378,17 +411,42 @@ if ($debuglevel < 3) { } $bashver=qw("/bin/bash -version"); if ($bashver =~ /2\./) { $outflags = "2>" } -else { $outflags = ">&" } +else { $outflags = ">\&" } print "Hit enter to start wine!\n"; $blank=; $dir=$program; $dir=~m#(.*)/#; $dir=$1; +use Cwd; +$nowdir=getcwd; chdir($dir); -system("echo quit|$wineloc -debugmsg $debugopts $extraops \"$program\" $outflags $dbgoutfile"); -$lastlines=`tail -n $lastnlines $dbgoutfile`; -system("gzip $dbgoutfile"); -open(OUTFILE,">$outfile"); +if ($outfile eq "no file" and $dbgoutfile ne "no file") { + system("echo quit|$wineloc -debugmsg $debugopts $extraops \"$program\" $outflags $nowdir/$dbgoutfile"); + system("gzip $nowdir/$dbgoutfile"); +} +elsif ($outfile ne "no file" and $dbgoutfile ne "no file") { + system("echo quit|$wineloc -debugmsg $debugopts $extraops \"$program\" $outflags $nowdir/$dbgoutfile"); + $lastlines=`tail -n $lastnlines $nowdir/$dbgoutfile`; + system("gzip $nowdir/$dbgoutfile"); + &generate_outfile; +} +elsif ($outfile ne "no file" and $dbgoutfile eq "no file"){ + $lastlines=`echo quit|$wineloc -debugmsg $debugopts $extraops "$program" 2>&1 | tail -n $lastnlines`; + &generate_outfile; +} +else { + $var27 = qq{ + I guess you don't want me to make any debugging output. I'll send + it to your terminal. This will be a *lot* of output -- hit enter to + continue, control-c to quit. + Repeat: this will be a lot of output! + }; + print do_var($var27); + $blah=; + system("$wineloc -debugmsg $debugmsg $extraops \"$program\""); +} +sub generate_outfile { +open(OUTFILE,">$nowdir"."\/"."$outfile"); print OUTFILE <