mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-24 09:23:23 -05:00
This was a lot more involved than I first suspected, but the solution was
simpler than I thought .. & backgrounds the process .. and then the pid is watched for in /proc to dissappear. So it is very mult-tasking.
This commit is contained in:
parent
199b52fdaa
commit
6a6a26cda2
@ -1507,26 +1507,38 @@ sub accept_button {
|
|||||||
info(0, "Already bzip2 compressed.\n");
|
info(0, "Already bzip2 compressed.\n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
my $command_line =
|
|
||||||
"$compress -c9 $tmp/$entry_advanced[4]|";
|
|
||||||
info(0,"Compressing $entry_advanced[4] with $compress\n");
|
|
||||||
open (PLACE, ">$tmp/$entry_advanced[4].gz");
|
|
||||||
open (COMP,"$command_line");
|
|
||||||
while (<COMP>) {
|
|
||||||
print PLACE $_;
|
|
||||||
while (Gtk->events_pending)
|
|
||||||
{ Gtk->main_iteration; }
|
|
||||||
}
|
|
||||||
close(COMP);
|
|
||||||
close(PLACE);
|
|
||||||
info(0,"Done compressing $entry_advanced[4] with $compress\n");
|
|
||||||
=pod
|
|
||||||
system
|
|
||||||
"$compress -c9 $tmp/$entry_advanced[4] > $tmp/$entry_advanced[4].gz";
|
|
||||||
=cut
|
|
||||||
$entry_advanced[4] = "$entry_advanced[4].gz";
|
|
||||||
$entry3->set_text("$tmp/$entry_advanced[4]");
|
|
||||||
|
|
||||||
|
|
||||||
|
info(0,"Compressing $entry_advanced[4] with $compress\n");
|
||||||
|
system "$compress -c9 $tmp/$entry_advanced[4] > $tmp/$entry_advanced[4].gz&";
|
||||||
|
|
||||||
|
|
||||||
|
$, = "";
|
||||||
|
my @ps_check = `ps w -C $compress 2> /dev/null`;
|
||||||
|
$, = "\n";
|
||||||
|
|
||||||
|
my @pids;
|
||||||
|
foreach my $line ( @ps_check ) {
|
||||||
|
if ( $line =~
|
||||||
|
m,$compress -c $tmp/$entry_advanced[4]$, ) {
|
||||||
|
|
||||||
|
my $pid = (split(" ",$line))[0];
|
||||||
|
push(@pids,$pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $pid ( @pids ) {
|
||||||
|
do {
|
||||||
|
while (Gtk->events_pending)
|
||||||
|
{ Gtk->main_iteration; }
|
||||||
|
} while -d "/proc/$pid";
|
||||||
|
}
|
||||||
|
|
||||||
|
info(0,"Done compressing $entry_advanced[4] with $compress\n");
|
||||||
|
$entry_advanced[4] = "$entry_advanced[4].gz";
|
||||||
|
$entry3->set_text("$tmp/$entry_advanced[4]");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(F);
|
close(F);
|
||||||
@ -1553,27 +1565,37 @@ sub accept_button {
|
|||||||
info(0, "Already bzip2 compressed.\n");
|
info(0, "Already bzip2 compressed.\n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
my $command_line =
|
|
||||||
"$compress -c $tmp/$entry_advanced[4]|";
|
|
||||||
info(0,"Compressing $entry_advanced[4] with $compress\n");
|
info(0,"Compressing $entry_advanced[4] with $compress\n");
|
||||||
open (PLACE, ">$tmp/$entry_advanced[4].bz2");
|
|
||||||
open (COMP,"$command_line");
|
|
||||||
while (<COMP>) {
|
|
||||||
print PLACE $_;
|
|
||||||
while (Gtk->events_pending)
|
|
||||||
{ Gtk->main_iteration; }
|
|
||||||
}
|
|
||||||
close(COMP);
|
|
||||||
close(PLACE);
|
|
||||||
info(0,"Done compressing $entry_advanced[4] with $compress\n");
|
|
||||||
|
|
||||||
=pod
|
|
||||||
system
|
system"$compress -c $tmp/$entry_advanced[4] > $tmp/$entry_advanced[4].bz2&";
|
||||||
"$compress -c $tmp/$entry_advanced[4] > $tmp/$entry_advanced[4].bz2";
|
|
||||||
=cut
|
$, = "";
|
||||||
|
my @ps_check = `ps w -C $compress 2> /dev/null`;
|
||||||
|
$, = "\n";
|
||||||
|
|
||||||
|
my @pids;
|
||||||
|
foreach my $line ( @ps_check ) {
|
||||||
|
if ( $line =~
|
||||||
|
m,$compress -c $tmp/$entry_advanced[4]$, ) {
|
||||||
|
|
||||||
|
my $pid = (split(" ",$line))[0];
|
||||||
|
push(@pids,$pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $pid ( @pids ) {
|
||||||
|
do {
|
||||||
|
while (Gtk->events_pending)
|
||||||
|
{ Gtk->main_iteration; }
|
||||||
|
} while -d "/proc/$pid";
|
||||||
|
}
|
||||||
|
|
||||||
|
info(0,"Done compressing $entry_advanced[4] with $compress\n");
|
||||||
$entry_advanced[4] = "$entry_advanced[4].bz2";
|
$entry_advanced[4] = "$entry_advanced[4].bz2";
|
||||||
$entry3->set_text("$tmp/$entry_advanced[4]");
|
$entry3->set_text("$tmp/$entry_advanced[4]");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user