diff -Nur evkeyd-0.1pre7.orig/backlight.c evkeyd-0.1pre7/backlight.c --- evkeyd-0.1pre7.orig/backlight.c 2003-07-20 06:47:43.000000000 +0200 +++ evkeyd-0.1pre7/backlight.c 2005-12-15 09:02:36.000000000 +0100 @@ -20,7 +20,7 @@ int fd = open(DEV_PMU, O_RDWR); - if(ioctl(fd, _IOR('B', 6, 0), 0) < 0) { + if(ioctl(fd, PMU_IOC_GRAB_BACKLIGHT, 0) < 0) { log_warn(cfg, "couldn't grab backlight"); cfg->backlight_enable = 0; close(fd); diff -Nur evkeyd-0.1pre7.orig/config.c evkeyd-0.1pre7/config.c --- evkeyd-0.1pre7.orig/config.c 2003-07-20 06:47:43.000000000 +0200 +++ evkeyd-0.1pre7/config.c 2005-12-14 12:02:58.000000000 +0100 @@ -226,8 +226,8 @@ return 1; } else if(strncmp(keyword, "key-delay", 9) == 0) { cfg->key_delay = atoi(flag); - if(cfg->bright_hrate < 10000 || - cfg->bright_hrate > 2000000) { + if(cfg->key_delay < 10000 || + cfg->key_delay > 2000000) { cfg->key_delay = KEY_DELAY; log_warn(cfg, "config - invalid key delay, using default"); } else log_info(cfg, "config - set key delay"); diff -Nur evkeyd-0.1pre7.orig/eventinterface.c evkeyd-0.1pre7/eventinterface.c --- evkeyd-0.1pre7.orig/eventinterface.c 2003-07-20 06:47:44.000000000 +0200 +++ evkeyd-0.1pre7/eventinterface.c 2005-12-17 11:49:33.000000000 +0100 @@ -49,6 +49,8 @@ } } + closedir(dirdesc); + if(x < 1) log_fatal(cfg, "Couldn't find the appropriate event device"); @@ -137,8 +139,9 @@ int held=0; - if(((abs(keystatus->time.tv_usec - keystatus->last.tv_sec) < 70000) || - (keystatus->value > 1))) { + if(abs((keystatus->time.tv_sec - keystatus->last.tv_sec) * 1000000LL + + (keystatus->time.tv_usec - keystatus->last.tv_sec)) < 70000 || + keystatus->value > 1) { held = 1; } else held = 0; diff -Nur evkeyd-0.1pre7.orig/evkeyd.c evkeyd-0.1pre7/evkeyd.c --- evkeyd-0.1pre7.orig/evkeyd.c 2003-07-20 06:47:44.000000000 +0200 +++ evkeyd-0.1pre7/evkeyd.c 2005-12-15 07:38:36.000000000 +0100 @@ -16,6 +16,7 @@ struct config *sigcfg; +int sig_received; void log_debug (struct config *cfg, char *msg) { @@ -124,14 +125,7 @@ void signal_handler (int sig) { - if(sig == SIGTERM) { - log_info(sigcfg, "recieved SIGTERM, exiting"); - unlink(LOCK_FILE); - exit(0); - } else if (sig > 32) { - read_event(sigcfg, sig-32); - } - + sig_received = sig; } int init (struct config *cfg, int argc, char **argv, @@ -164,8 +158,10 @@ mixer_init(cfg); event_init(cfg, eventfd); - eject_init(cfg); - *pmufd = backlight_init(cfg); + if(cfg->eject_enable) + eject_init(cfg); + if(cfg->backlight_enable) + *pmufd = backlight_init(cfg); return 1; @@ -199,7 +195,15 @@ free(verstr); while(1) { + sig_received = 0; sleep(1); + if (sig_received == SIGTERM) { + log_info(sigcfg, "received SIGTERM, exiting"); + unlink(LOCK_FILE); + break; + } + else if (sig_received > 32) + read_event(sigcfg, sig_received-32); } finish(cfg, eventfd, pmufd); diff -Nur evkeyd-0.1pre7.orig/mixer.c evkeyd-0.1pre7/mixer.c --- evkeyd-0.1pre7.orig/mixer.c 2003-07-20 06:47:44.000000000 +0200 +++ evkeyd-0.1pre7/mixer.c 2005-12-17 11:55:50.000000000 +0100 @@ -117,9 +117,11 @@ if(ioctl(fd, MIXER_WRITE(SOUND_MIXER_VOLUME), &volume) < 0) { cfg->mixer_enable = 0; log_err(cfg, "couldn't set volume"); + close(fd); return -1; } - + + close(fd); return past_volume; }