X-Git-Url: http://pileus.org/git/?p=lackey;a=blobdiff_plain;f=src%2Fdate.h;h=85fb805ef2c352911162f2c5111dae658178a6e4;hp=77f7341b1b0ffc40752bc1a0f53fc04ca62673d0;hb=d45541aeb31a0e34a2a43df0e112f1f720f80abf;hpb=b9a8d20bc5dba484a6ab23ac715dc02a3ae86f7d diff --git a/src/date.h b/src/date.h index 77f7341..85fb805 100644 --- a/src/date.h +++ b/src/date.h @@ -1,25 +1,29 @@ /* - * Copyright (C) 2012 Andy Spencer - * + * Copyright (C) 2012-2013 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 . */ -/* Time types */ +/* UTC time stamp */ +typedef long long stamp_t; + +/* Local time type */ typedef int year_t; typedef int day_t; typedef int hour_t; typedef int min_t; +typedef int sec_t; typedef enum { JAN = 0, @@ -46,13 +50,23 @@ typedef enum { SAT = 6, } wday_t; +typedef struct { + year_t year; + month_t month; + day_t day; + hour_t hour; + min_t min; + sec_t sec; +} date_t; + /* Global data */ -extern year_t YEAR; -extern month_t MONTH; -extern day_t DAY; +extern date_t NOW; // current wall clock time, refreshed at 10 Hz +extern date_t SEL; // date and time the user is looking at /* Initialize */ void date_init(void); +void date_sync(void); +void date_config(const char *group, const char *name, const char *key, const char *value); /* Time functions */ int is_leap_year(year_t year); @@ -65,12 +79,21 @@ day_t start_of_week(year_t year, month_t month, day_t day); void add_days(year_t *year, month_t *month, day_t *day, int days); void add_months(year_t *year, month_t *month, int months); +/* Date functions */ +date_t get_date(stamp_t stamp); +stamp_t get_stamp(date_t date); +int get_mins(date_t *start, date_t *end); +int get_secs(date_t *start, date_t *end); +int compare(date_t *a, date_t *b); +int same_day(date_t *a, date_t *b); +int before(date_t *start, int year, int month, int day, int hour, int min); + +int all_day(date_t *start, date_t *end); +int no_date(date_t *date); + /* Time to string functions */ const char *month_to_str(month_t month); const char *month_to_string(month_t month); const char *day_to_st(wday_t day); const char *day_to_str(wday_t day); const char *day_to_string(wday_t day); - -/* Tests */ -void test_time(void);