]> Pileus Git - lackey/blobdiff - src/date.h
Add simple notification daemon mode
[lackey] / src / date.h
index 673b3b33ef43481a18835dbd15f2a86a2065b474..85fb805ef2c352911162f2c5111dae658178a6e4 100644 (file)
@@ -1,27 +1,29 @@
 /*
- * Copyright (C) 2012 Andy Spencer <andy753421@gmail.com>
- * 
+ * Copyright (C) 2012-2013 Andy Spencer <andy753421@gmail.com>
+ *
  * 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 <http://www.gnu.org/licenses/>.
  */
 
-/* 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,
@@ -54,15 +56,17 @@ typedef struct {
        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);
@@ -75,8 +79,17 @@ 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);
 
-stamp_t get_stamp(date_t *date);
+/* 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);
@@ -84,6 +97,3 @@ 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 date_test(void);