- if ($ans =~ /^!(.*)/) {
- my $cmd = $1 || $ENV{'SHELL'};
- chdir('workdir') or die $!;
- system $cmd;
- chdir('..') or die $!;
- $default = 'D,E';
- next;
- }
- if ($ans =~ /^\S*F/i) {
- chdir('workdir') or die $!;
- system "vim @rejects";
- chdir('..') or die $!;
- $default = 'D,E';
- }
- if ($ans =~ /^\S*D/i) {
- $default = generate_new_patch($diff);
- }
- if ($ans =~ /^\S*E/i) {
- chdir('workdir') or die $!;
- system "vim -d ../../$diff ../new.patch";
- chdir('..') or die $!;
- $default = 'U,A';
- }
- if ($ans =~ /^\S*U/i) {
- system "cp -p new.patch ../$diff";
- print "\nUpdated $diff from new.patch\n";
- $default = 'A';
- }
- if ($ans =~ /^\S*A/i) {
- $default = apply_patch($diff);
- }
- if ($ans =~ /^\S*B/i) {
- if (!-f 'workdir/Makefile') {
- open(IN, '../../Makefile') or die $!;
- open(OUT, '>workdir/Makefile') or die $!;
- print OUT "srcdir=.\n\n";
- while (<IN>) {
- last if /^gen:/;
- }
- print OUT $_;
- while (<IN>) {
- last if /^clean:/;
+ while ($ans =~ s/^\s*(!|\w)((?<!!)[^;,]*|[^;]*)[;,]?//) {
+ my $cmd = "\U$1\E";
+ if ($cmd eq '!') {
+ $cmd = $2 || $ENV{'SHELL'};
+ chdir('workdir') or die $!;
+ system $cmd;
+ chdir('..') or die $!;
+ $default = 'D,E';
+ next;
+ }
+ if ($cmd eq 'A') {
+ $default = apply_patch($diff);
+ next;
+ }
+ if ($cmd eq 'B') {
+ if (!-f 'workdir/Makefile') {
+ open(IN, '../../Makefile') or die $!;
+ open(OUT, '>workdir/Makefile') or die $!;
+ print OUT "srcdir=.\n\n";
+ while (<IN>) {
+ last if /^gen:/;
+ }