X-Git-Url: http://pileus.org/git/?p=lackey;a=blobdiff_plain;f=src%2Fdate.c;h=4df8ce4241343cacbafe882f2b7d15ae5089724b;hp=e0e439956d39edb2cd7dc625fd4475d980b31832;hb=f3ee8b7432fadc415514747ab1fd5dc375188f7f;hpb=43d379d9d3e82940c5134188895a35fed13d3997 diff --git a/src/date.c b/src/date.c index e0e4399..4df8ce4 100644 --- a/src/date.c +++ b/src/date.c @@ -1,16 +1,16 @@ /* * Copyright (C) 2012 Andy Spencer - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -23,9 +23,8 @@ #include "date.h" /* Global data */ -year_t YEAR; -month_t MONTH; -day_t DAY; +date_t NOW; +date_t SEL; /* Initialize */ void date_init(void) @@ -33,14 +32,22 @@ void date_init(void) time_t sec = time(NULL); struct tm *tm = localtime(&sec); - YEAR = tm->tm_year+1900; - MONTH = tm->tm_mon; - DAY = tm->tm_mday-1; + SEL.year = tm->tm_year+1900; + SEL.month = tm->tm_mon; + SEL.day = tm->tm_mday-1; +} - /* Testing */ - //YEAR = 2008; - //MONTH = OCT; - //DAY = 21; +void date_sync(void) +{ + time_t sec = time(NULL); + struct tm *tm = localtime(&sec); + + NOW.year = tm->tm_year+1900; + NOW.month = tm->tm_mon; + NOW.day = tm->tm_mday-1; + NOW.hour = tm->tm_hour; + NOW.min = tm->tm_min; + NOW.sec = tm->tm_sec; } /* Time functions */ @@ -136,11 +143,30 @@ int compare(date_t *a, date_t *b) return rval; } +int same_day(date_t *a, date_t *b) +{ + return a->year == b->year && + a->month == b->month && + a->day == b->day; +} + int before(date_t *start, int year, int month, int day, int hour, int min) { return compare(start, &(date_t){year, month, day, hour, min}) < 0; } +int all_day(date_t *start, date_t *end) +{ + date_t test = *start; + add_days(&test.year, &test.month, &test.day, 1); + return compare(&test, end) <= 0; +} + +int no_date(date_t *date) +{ + return date->year == 0; +} + /* Debug functions */ const char *month_to_str(month_t month) { @@ -182,7 +208,7 @@ const char *day_to_string(wday_t day) void date_test(void) { printf("Info\n"); - printf(" Year Month Start Weeks Days\n"); + printf(" Year Month Start Weeks Days\n"); for (int y = 2012; y <= 2012; y++) for (int m = JAN; m <= DEC; m++) { printf(" %-5d", y);