Guest User

Untitled

a guest
Mar 6th, 2020
85
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --- runit-2.1.2/src/runit.c.b   2014-08-10 22:22:35.000000000 +0400
  2. +++ runit-2.1.2/src/runit.c 2020-03-06 16:24:33.202792656 +0300
  3. @@ -30,6 +30,7 @@
  4.  int selfpipe[2];
  5.  int sigc =0;
  6.  int sigi =0;
  7. +int sigp =0;
  8.  
  9.  void sig_cont_handler (void) {
  10.    sigc++;
  11. @@ -39,6 +40,11 @@
  12.    sigi++;
  13.    write(selfpipe[1], "", 1);
  14.  }
  15. +void sig_pwr_handler (void) {
  16. +   sigc++;
  17. +   sigp++;
  18. +}
  19. +
  20.  void sig_child_handler (void) { write(selfpipe[1], "", 1); }
  21.  
  22.  int main (int argc, const char * const *argv, char * const *envp) {
  23. @@ -64,6 +70,8 @@
  24.    sig_block(sig_cont);
  25.    sig_catch(sig_cont, sig_cont_handler);
  26.    sig_block(sig_hangup);
  27. +  sig_block(sig_pwr);
  28. +  sig_catch(sig_pwr, sig_pwr_handler);
  29.    sig_block(sig_int);
  30.    sig_catch(sig_int, sig_int_handler);
  31.    sig_block(sig_pipe);
  32. @@ -127,6 +135,8 @@
  33.        sig_unblock(sig_cont);
  34.        sig_ignore(sig_cont);
  35.        sig_unblock(sig_hangup);
  36. +      sig_unblock(sig_pwr);
  37. +      sig_uncatch(sig_pwr);
  38.        sig_unblock(sig_int);
  39.        sig_uncatch(sig_int);
  40.        sig_unblock(sig_pipe);
  41. @@ -145,6 +155,7 @@
  42.        sig_unblock(sig_child);
  43.        sig_unblock(sig_cont);
  44.        sig_unblock(sig_int);
  45. +      sig_unblock(sig_pwr);
  46.  #ifdef IOPAUSE_POLL
  47.        poll(&x, 1, 14000);
  48.  #else
  49. @@ -156,6 +167,7 @@
  50.        sig_block(sig_cont);
  51.        sig_block(sig_child);
  52.        sig_block(sig_int);
  53. +      sig_block(sig_pwr);
  54.        
  55.        while (read(selfpipe[0], &ch, 1) == 1) {}
  56.        while ((child =wait_nohang(&wstat)) > 0)
  57. @@ -239,7 +251,7 @@
  58.          sigi =0;
  59.          sigc++;
  60.        }
  61. -      if (sigc && (stat(STOPIT, &s) != -1) && (s.st_mode & S_IXUSR)) {
  62. +      if (sigc && ((stat(STOPIT, &s) != -1) && (s.st_mode & S_IXUSR) || sigp)) {
  63.          int i;
  64.          /* unlink(STOPIT); */
  65.          chmod(STOPIT, 0);
  66.  
  67. --- runit-2.1.2/src/sig.c.b 2014-08-10 22:22:34.000000000 +0400
  68. +++ runit-2.1.2/src/sig.c   2020-03-03 17:46:32.241855898 +0300
  69. @@ -10,6 +10,7 @@
  70.  int sig_int = SIGINT;
  71.  int sig_pipe = SIGPIPE;
  72.  int sig_term = SIGTERM;
  73. +int sig_pwr = SIGPWR;
  74.  
  75.  void (*sig_defaulthandler)() = SIG_DFL;
  76.  void (*sig_ignorehandler)() = SIG_IGN;
  77. --- runit-2.1.2/src/sig.h.b 2014-08-10 22:22:35.000000000 +0400
  78. +++ runit-2.1.2/src/sig.h   2020-03-03 17:46:32.245189250 +0300
  79. @@ -10,6 +10,7 @@
  80.  extern int sig_int;
  81.  extern int sig_pipe;
  82.  extern int sig_term;
  83. +extern int sig_pwr;
  84.  
  85.  extern void (*sig_defaulthandler)();
  86.  extern void (*sig_ignorehandler)();
RAW Paste Data