File: 105_alarm.patch

package info (click to toggle)
yaret 2.1.0-5.1
  • links: PTS
  • area: main
  • in suites: bullseye, buster, stretch
  • size: 192 kB
  • ctags: 49
  • sloc: perl: 1,153; makefile: 6
file content (69 lines) | stat: -rw-r--r-- 1,999 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Index: yaret-2.1.0/yaret
===================================================================
--- yaret-2.1.0.orig/yaret	2006-03-05 12:39:25.000000000 +0100
+++ yaret-2.1.0/yaret	2006-03-05 12:39:55.000000000 +0100
@@ -449,6 +449,7 @@
 my $track = {}; # traslated Audio::CD::Info->tracks
 my %status; # holds the filehandles to read status from
 my $grand_dad = 1; # are we the main parent?
+my $alarm = 0; # set to 1 when an alarm signal is received
 
 sub kill_all {
   kill "SIGINT" => keys %kid;
@@ -466,7 +467,7 @@
 }
 
 sub set_default_signals {
-  $SIG{ALRM} = sub{};#'IGNORE';
+  $SIG{ALRM} = sub { $alarm = 1 };
   $SIG{CHLD} = \&kid_killer;
   $SIG{INT} = \&kill_all;
   $SIG{TERM} = \&kill_all;
@@ -1065,7 +1066,8 @@
   send_message($parent, type=>'startup');
   my @found;
   do {
-    sleep;
+    sleep unless $alarm;
+    $alarm = 0;
     my $glob = make_filename "*", $settings{from_name};
     @found = glob($glob);
     $workfile{$_} = 1 for @found;
@@ -1119,7 +1121,9 @@
   printc $INFO, "Waiting for work: \u$settings{name}\n";
   send_message($parent, type=>'startup');
   do {
-    sleep, check_message;
+    sleep unless $alarm;
+    $alarm = 0;
+    check_message;
     my $glob = make_filename "*", $settings{from_name};
     my $track_regex = make_filename '(\\d+)', $settings{from_name};
     $track_regex = '^'.$track_regex.'$';
@@ -1148,7 +1152,11 @@
       $my_kid{$filename} = make_kid $settings{name}."_kid", $settings{sub_call}, $track_num, %settings;
     }
   } while $done < keys %{$track};
-  (sleep, check_message) until kid_done $settings{name}."_kid";
+  until (kid_done $settings{name}."_kid") {
+      sleep unless $alarm;
+      $alarm = 0;
+      check_message;
+  };
 }
 
 sub send_signal {
@@ -1329,8 +1337,11 @@
   $status{group}{$encoder} = 'encoder';
 }
 
-sleep, print_status
-  until kid_done keys %{ $status{kid} };
+do {
+    sleep unless $alarm;
+    $alarm = 0;
+    print_status;
+} until kid_done keys %{ $status{kid} };
 
 rmdir $root_work;