From f38a6d9028aa186d31710008d8bf86af5c341da1 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Fri, 5 Oct 2012 06:14:16 +0000 Subject: [PATCH] Fix some time keeping bugs --- src/main.c | 13 +++++++++++++ src/main.h | 6 +++--- src/test.c | 4 ++++ src/util.c | 6 +++--- view/day.c | 4 ++-- view/week.c | 2 +- view/year.c | 2 +- 7 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/main.c b/src/main.c index 1327a82..6ae9798 100644 --- a/src/main.c +++ b/src/main.c @@ -19,11 +19,17 @@ #include #include #include +#include #include #include "main.h" #include "screen.h" +/* Debugging */ +int YEAR = 2012; +int MONTH = 8; +int DAY = 29; + /* Static data */ static FILE *debug_fd = NULL; @@ -83,6 +89,13 @@ int main(int argc, char **argv) act.sa_handler = on_sigwinch; sigaction(SIGWINCH, &act, NULL); + /* Time setup */ + time_t sec = time(NULL); + struct tm *tm = localtime(&sec); + YEAR = tm->tm_year+1900; + MONTH = tm->tm_mon; + DAY = tm->tm_mday-1; + /* Curses setup */ initscr(); cbreak(); diff --git a/src/main.h b/src/main.h index 4139309..dd7c3fb 100644 --- a/src/main.h +++ b/src/main.h @@ -19,9 +19,9 @@ #define COLOR_ERROR 2 /* Debugging */ -const static int YEAR = 2012; -const static int MONTH = 8; -const static int DAY = 29; +extern int YEAR; +extern int MONTH; +extern int DAY; /* Debug functions */ int debug(char *fmt, ...); diff --git a/src/test.c b/src/test.c index 07058f6..86eb8c5 100644 --- a/src/test.c +++ b/src/test.c @@ -17,6 +17,10 @@ #include "util.h" +int YEAR = 2012; +int MONTH = 8; +int DAY = 29; + int main(int argc, char **argv) { test_time(); diff --git a/src/util.c b/src/util.c index 3d6aa20..688cc94 100644 --- a/src/util.c +++ b/src/util.c @@ -55,18 +55,18 @@ wday_t day_of_week(year_t year, month_t month, day_t day) { static int tmp[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}; - if (month < 3) + if (month < MAR) year--; int start = year + year / 4 - year / 100 + year / 400 + tmp[month]; - return (start + day) % 7; + return (start + day + 1) % 7; } wday_t start_of_month(year_t year, month_t month) { - return day_of_week(year, month, 1); + return day_of_week(year, month, 0); } void add_days(year_t *year, month_t *month, day_t *day, int days) diff --git a/view/day.c b/view/day.c index 3f49573..58e65da 100644 --- a/view/day.c +++ b/view/day.c @@ -37,8 +37,8 @@ void day_draw(void) const char *dstr = day_to_string(day_of_week(YEAR, MONTH, DAY)); /* Print Header */ - mvwprintw(win, 0, 0, "%s, %s %d", dstr, mstr, DAY); - mvwprintw(win, 0, COLS-10, "%d-%02d-%02d", YEAR, MONTH, DAY); + mvwprintw(win, 0, 0, "%s, %s %d", dstr, mstr, DAY+1); + mvwprintw(win, 0, COLS-10, "%d-%02d-%02d", YEAR, MONTH, DAY+1); mvwhline(win, 1, 0, ACS_HLINE, COLS); /* Print times */ diff --git a/view/week.c b/view/week.c index 60cb176..e9988e9 100644 --- a/view/week.c +++ b/view/week.c @@ -49,7 +49,7 @@ void week_draw(void) for (int d = 0; d < 5; d++) { // FIXME.. const char *str = hstep >= 10 ? day_to_string(d+MON) : day_to_str(d+MON); - mvwprintw(win, 0, x+ROUND(d*hstep), "%02d/%02d", month, day); + mvwprintw(win, 0, x+ROUND(d*hstep), "%02d/%02d", month+1, day+1); mvwprintw(win, 1, x+ROUND(d*hstep), "%s", str); add_days(&year, &month, &day, 1); } diff --git a/view/year.c b/view/year.c index 1505494..d20f22f 100644 --- a/view/year.c +++ b/view/year.c @@ -40,7 +40,7 @@ static void print_month(month_t month, int y, int x) for (int d = 0; d < days; d++) { int row = (start + d) / 7; int col = (start + d) % 7; - mvwprintw(win, y+2+row, x+col*3, "%d", d+1); + mvwprintw(win, y+2+row, x+col*3, "%2d", d+1); } } -- 2.43.2