]> git.sur5r.net Git - i3/i3status/commitdiff
Skip a day in the Discordian calendar when St. Tib's Day has passed
authorDeiz <silverwraithii@gmail.com>
Mon, 15 Oct 2012 17:56:17 +0000 (13:56 -0400)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 16 Oct 2012 07:25:38 +0000 (09:25 +0200)
src/print_ddate.c

index ce94759ab3a7efcc556db590abec992f92e54f67..30bdc527a6d5122b8559b62aaf40782e36c239dc 100644 (file)
@@ -180,20 +180,22 @@ struct disc_time *get_ddate(struct tm *current_tm) {
         int is_leap_year = !(current_tm->tm_year % 4) &&
                             (!(current_tm->tm_year % 400) || current_tm->tm_year % 100);
 
-        if (is_leap_year && current_tm->tm_yday == 59) {
+        /* If St. Tib's Day has passed, it will be necessary to skip a day. */
+        int yday = current_tm->tm_yday;
+
+        if (is_leap_year && yday == 59) {
                 /* On St. Tibs Day we don't have to define a date */
                 dt.st_tibs_day = 1;
         } else {
                 dt.st_tibs_day = 0;
-                dt.season_day = current_tm->tm_yday % 73;
-                if (is_leap_year && current_tm->tm_yday > 59) {
-                        dt.week_day = (current_tm->tm_yday - 1) % 5;
-                } else {
-                        dt.week_day = current_tm->tm_yday % 5;
-                }
+                if (is_leap_year && yday > 59)
+                        yday -= 1;
+
+                dt.season_day = yday % 73;
+                dt.week_day = yday % 5;
         }
         dt.year = current_tm->tm_year + 3066;
-        dt.season = current_tm->tm_yday / 73;
+        dt.season = yday / 73;
         return &dt;
 }