|
Lines 55-61
Link Here
|
| 55 |
extern int yyparse(void); |
55 |
extern int yyparse(void); |
| 56 |
|
56 |
|
| 57 |
int debug_level = 0; |
57 |
int debug_level = 0; |
| 58 |
int verbose = 0; |
58 |
int verbose = 0, soft_power_state_change = 0; |
| 59 |
const char *apmd_configfile = APMD_CONFIGFILE; |
59 |
const char *apmd_configfile = APMD_CONFIGFILE; |
| 60 |
const char *apmd_pidfile = APMD_PIDFILE; |
60 |
const char *apmd_pidfile = APMD_PIDFILE; |
| 61 |
int apmctl_fd = -1, apmnorm_fd = -1; |
61 |
int apmctl_fd = -1, apmnorm_fd = -1; |
|
Lines 464-470
Link Here
|
| 464 |
int |
464 |
int |
| 465 |
proc_signal(int fd) |
465 |
proc_signal(int fd) |
| 466 |
{ |
466 |
{ |
| 467 |
int rc = -1; |
|
|
| 468 |
int sig; |
467 |
int sig; |
| 469 |
|
468 |
|
| 470 |
while (read(fd, &sig, sizeof sig) == sizeof sig) { |
469 |
while (read(fd, &sig, sizeof sig) == sizeof sig) { |
|
Lines 476-483
Link Here
|
| 476 |
break; |
475 |
break; |
| 477 |
case SIGTERM: |
476 |
case SIGTERM: |
| 478 |
syslog(LOG_NOTICE, "going down on signal %d", sig); |
477 |
syslog(LOG_NOTICE, "going down on signal %d", sig); |
| 479 |
rc = 1; |
478 |
return -1; |
| 480 |
goto out; |
|
|
| 481 |
case SIGCHLD: |
479 |
case SIGCHLD: |
| 482 |
wait_child(); |
480 |
wait_child(); |
| 483 |
break; |
481 |
break; |
|
Lines 486-494
Link Here
|
| 486 |
break; |
484 |
break; |
| 487 |
} |
485 |
} |
| 488 |
} |
486 |
} |
| 489 |
rc = 0; |
487 |
return 0; |
| 490 |
out: |
|
|
| 491 |
return rc; |
| 492 |
} |
488 |
} |
| 493 |
void |
489 |
void |
| 494 |
proc_apmevent(int fd) |
490 |
proc_apmevent(int fd) |
|
Lines 548-553
Link Here
|
| 548 |
* the event-caught state. |
544 |
* the event-caught state. |
| 549 |
*/ |
545 |
*/ |
| 550 |
if (last_state != AC_POWER_STATE) { |
546 |
if (last_state != AC_POWER_STATE) { |
|
|
547 |
if (soft_power_state_change && fork() == 0) |
| 548 |
exit(exec_event_cmd(&events[PMEV_POWERSTATECHANGE])); |
| 551 |
last_state = AC_POWER_STATE; |
549 |
last_state = AC_POWER_STATE; |
| 552 |
for (p = battery_watch_list ; p!=NULL ; p = p -> next) |
550 |
for (p = battery_watch_list ; p!=NULL ; p = p -> next) |
| 553 |
p->done = 0; |
551 |
p->done = 0; |
|
Lines 642-648
Link Here
|
| 642 |
char *prog; |
640 |
char *prog; |
| 643 |
int logopt = LOG_NDELAY | LOG_PID; |
641 |
int logopt = LOG_NDELAY | LOG_PID; |
| 644 |
|
642 |
|
| 645 |
while ((ch = getopt(ac, av, "df:v")) != EOF) { |
643 |
while ((ch = getopt(ac, av, "df:vs")) != EOF) { |
| 646 |
switch (ch) { |
644 |
switch (ch) { |
| 647 |
case 'd': |
645 |
case 'd': |
| 648 |
daemonize = 0; |
646 |
daemonize = 0; |
|
Lines 653-658
Link Here
|
| 653 |
break; |
651 |
break; |
| 654 |
case 'v': |
652 |
case 'v': |
| 655 |
verbose = 1; |
653 |
verbose = 1; |
|
|
654 |
break; |
| 655 |
case 's': |
| 656 |
soft_power_state_change = 1; |
| 656 |
break; |
657 |
break; |
| 657 |
default: |
658 |
default: |
| 658 |
(void) err(1, "unknown option `%c'", ch); |
659 |
(void) err(1, "unknown option `%c'", ch); |