X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=fade.c;h=8dfbcc2f767f251649cddca00084d1a080b0adae;hp=94b866969358126a06d76218832a86f0a985752d;hb=501edee5b98e4133bb64f41f78ffec1cd6f91f7e;hpb=09e1e9039b42f00bcfa64091700d611931618bca diff --git a/fade.c b/fade.c index 94b86696..8dfbcc2f 100644 --- a/fade.c +++ b/fade.c @@ -34,9 +34,9 @@ #include "string.h" -struct gengetopt_args_info args_info; +struct fade_args_info args_info; -void para_log(__unused int ll, const char *fmt,...) +void para_log(__a_unused int ll, const char *fmt,...) { va_list argp; time_t t1; @@ -55,11 +55,11 @@ void para_log(__unused int ll, const char *fmt,...) */ static int open_mixer(void) { - int mixer_fd; + int mixer_fd; - if ((mixer_fd = open(args_info.mixer_device_arg, O_RDWR, 0)) < 0) - return -1; - return mixer_fd; + if ((mixer_fd = open(args_info.mixer_device_arg, O_RDWR, 0)) < 0) + return -1; + return mixer_fd; } /* @@ -188,7 +188,6 @@ static void sweet_dreams(void) time_t t1, wake_time_epoch; unsigned int delay; struct tm *tm; - int hour = args_info.wake_hour_arg; int min = args_info.wake_min_arg; char *fa_stream = args_info.fa_stream_arg; char *wake_stream = args_info.wake_stream_arg; @@ -201,6 +200,25 @@ static void sweet_dreams(void) char *cmd, *sleep_stream = args_info.sleep_stream_given? args_info.sleep_stream_arg : NULL; + /* calculate wake time */ + time(&t1); + if (args_info.wake_hour_given) { + int hour = args_info.wake_hour_arg; + tm = localtime(&t1); + if (tm->tm_hour > hour || (tm->tm_hour == hour && tm->tm_min> min)) { + t1 += 86400; /* wake time is tomorrow */ + tm = localtime(&t1); + } + tm->tm_hour = hour; + tm->tm_min = min; + tm->tm_sec = 0; + } else { + t1 += 8 * 60 * 60; + PARA_INFO_LOG("default wake time: %lu\n", t1); + tm = localtime(&t1); + } + wake_time_epoch = mktime(tm); + PARA_INFO_LOG("waketime: %s", asctime(tm)); if (sf) { PARA_INFO_LOG("initial volume: %d\n", iv); set_vol(iv); @@ -217,27 +235,15 @@ static void sweet_dreams(void) client_cmd("stop"); if (!wf) return; - /* calculate wake time */ - time(&t1); - tm = localtime(&t1); - if (tm->tm_hour > hour || (tm->tm_hour == hour && tm->tm_min> min)) { - /* wake time is tomorrow */ - t1 += 86400; - tm = localtime(&t1); - t1 -= 86400; - } - tm->tm_hour = hour; - tm->tm_min = min; - tm->tm_sec = 0; - wake_time_epoch = mktime(tm); - PARA_INFO_LOG("waketime: %s", asctime(tm)); - while (wake_time_epoch > t1 + wf) { + for (;;) { + time(&t1); + if (wake_time_epoch <= t1 + wf) + break; delay = wake_time_epoch - t1 - wf; PARA_INFO_LOG("sleeping %u seconds (%u:%02u)\n", delay, delay / 3600, (delay % 3600) / 60); sleep(delay); - time(&t1); } cmd = make_message("csp %s\n", wake_stream); client_cmd(cmd); @@ -279,7 +285,7 @@ int main(int argc, char *argv[]) { int ret; - if (cmdline_parser(argc, argv, &args_info)) + if (fade_cmdline_parser(argc, argv, &args_info)) exit(EXIT_FAILURE); ret = configfile_exists(); if (!ret && args_info.config_file_given) { @@ -288,7 +294,7 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } if (ret) - cmdline_parser_configfile(args_info.config_file_arg, + fade_cmdline_parser_configfile(args_info.config_file_arg, &args_info, 0, 0, 0); if ((ret = open_mixer()) < 0) { PARA_EMERG_LOG("can not open mixer device %s.",