View | Details | Raw Unified | Return to bug 32251
Collapse All | Expand All

(-)/usr/src/usr.sbin/apmd/apmd.c (-8 / +9 lines)
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);

Return to bug 32251