#include <stdarg.h>
#include <stdlib.h>
#include <signal.h>
+#include <time.h>
#include <ncurses.h>
#include "main.h"
#include "screen.h"
+/* Debugging */
+int YEAR = 2012;
+int MONTH = 8;
+int DAY = 29;
+
/* Static data */
static FILE *debug_fd = NULL;
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();
#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, ...);
#include "util.h"
+int YEAR = 2012;
+int MONTH = 8;
+int DAY = 29;
+
int main(int argc, char **argv)
{
test_time();
{
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)
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 */
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);
}
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);
}
}