gui: fix default stat command
[paraslash.git] / fade.c
diff --git a/fade.c b/fade.c
index b385cee7d8a7942d0edd86e69f8306b9b220b5fd..8dfbcc2f767f251649cddca00084d1a080b0adae 100644 (file)
--- a/fade.c
+++ b/fade.c
@@ -20,7 +20,9 @@
 
 #include "fade.cmdline.h"
 #include "para.h"
+#include "fd.h"
 
+#include <stropts.h>
 #include <ctype.h>
 #include <curses.h>
 #include <stdlib.h> /* EXIT_SUCCESS */
@@ -32,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;
@@ -53,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;
 }
 
 /*
@@ -186,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;
@@ -199,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);
@@ -215,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);
@@ -277,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) {
@@ -286,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.",