From 0145ba12ecb20583adda4e4b03dd5b7cfb15d1f4 Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <calcurse@cryptocrack.de>
Date: Tue, 24 Feb 2015 13:57:44 +0100
Subject: Use time_t instead of long in several places

Start converting some variables and return values to store times from
long to time_t.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
---
 src/args.c        | 11 ++++++-----
 src/calcurse.h    | 29 +++++++++++++----------------
 src/day.c         | 36 ++++++++++++++++--------------------
 src/ical.c        | 30 ++++++++++++------------------
 src/notify.c      |  5 ++---
 src/recur.c       |  8 ++++----
 src/ui-calendar.c |  2 +-
 src/ui-day.c      | 11 +++++------
 src/utils.c       | 26 ++++++++++----------------
 9 files changed, 69 insertions(+), 89 deletions(-)

(limited to 'src')

diff --git a/src/args.c b/src/args.c
index 471c9ab..60e8043 100644
--- a/src/args.c
+++ b/src/args.c
@@ -310,7 +310,7 @@ date_arg_from_to(long from, long to, int add_line, const char *fmt_apt,
 	}
 }
 
-static long parse_datearg(const char *str)
+static time_t parse_datearg(const char *str)
 {
 	struct date day;
 
@@ -329,12 +329,12 @@ static long parse_datearg(const char *str)
 	return LONG_MAX;
 }
 
-static long parse_datetimearg(const char *str)
+static time_t parse_datetimearg(const char *str)
 {
 	char *date = mem_strdup(str);
 	char *time;
 	unsigned hour, min;
-	long ret;
+	time_t ret;
 
 	time = strchr(date, ' ');
 	if (time) {
@@ -363,7 +363,7 @@ static long parse_datetimearg(const char *str)
 	return ret;
 }
 
-static int parse_daterange(const char *str, long *date_from, long *date_to)
+static int parse_daterange(const char *str, time_t *date_from, time_t *date_to)
 {
 	int ret = 0;
 	char *s = xstrdup(str);
@@ -438,7 +438,8 @@ int parse_args(int argc, char **argv)
 	int grep = 0, query = 0, next = 0;
 	int status = 0, gc = 0, import = 0, export = 0;
 	/* Query ranges */
-	long from = -1, range = -1, to = -1;
+	time_t from = -1, to = -1;
+	int range = -1;
 	int limit = INT_MAX;
 	/* Filters */
 	struct item_filter filter = { 0, NULL, -1, -1, -1, -1, 0, 0, 0 };
diff --git a/src/calcurse.h b/src/calcurse.h
index ebb3eb8..a1b59cf 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -406,10 +406,10 @@ enum item_type {
 struct item_filter {
 	int type_mask;
 	regex_t *regex;
-	long start_from;
-	long start_to;
-	long end_from;
-	long end_to;
+	time_t start_from;
+	time_t start_to;
+	time_t end_from;
+	time_t end_to;
 	int priority;
 	int completed;
 	int uncompleted;
@@ -699,7 +699,7 @@ unsigned ui_calendar_week_begins_on_monday(void);
 void ui_calendar_store_current_date(struct date *);
 void ui_calendar_init_slctd_day(void);
 struct date *ui_calendar_get_slctd_day(void);
-long ui_calendar_get_slctd_day_sec(void);
+time_t ui_calendar_get_slctd_day_sec(void);
 void ui_calendar_monthly_view_cache_set_invalid(void);
 void ui_calendar_update_panel(void);
 void ui_calendar_goto_today(void);
@@ -954,11 +954,9 @@ void recur_apoint_write(struct recur_apoint *, FILE *);
 void recur_event_write(struct recur_event *, FILE *);
 void recur_save_data(FILE *);
 unsigned recur_item_find_occurrence(long, long, llist_t *, int,
-				    int, long, long, unsigned *);
-unsigned recur_apoint_find_occurrence(struct recur_apoint *, long,
-				      unsigned *);
-unsigned recur_event_find_occurrence(struct recur_event *, long,
-				     unsigned *);
+				    int, long, long, time_t *);
+unsigned recur_apoint_find_occurrence(struct recur_apoint *, long, time_t *);
+unsigned recur_event_find_occurrence(struct recur_event *, long, time_t *);
 unsigned recur_item_inday(long, long, llist_t *, int, int, long, long);
 unsigned recur_apoint_inday(struct recur_apoint *, long *);
 unsigned recur_event_inday(struct recur_event *, long *);
@@ -1053,17 +1051,17 @@ int is_all_digit(const char *);
 long get_item_time(long);
 int get_item_hour(long);
 int get_item_min(long);
-long date2sec(struct date, unsigned, unsigned);
-long utcdate2sec(struct date, unsigned, unsigned);
+time_t date2sec(struct date, unsigned, unsigned);
+time_t utcdate2sec(struct date, unsigned, unsigned);
 char *date_sec2date_str(long, const char *);
 void date_sec2date_fmt(long, const char *, char *);
 long date_sec_change(long, int, int);
 long update_time_in_date(long, unsigned, unsigned);
-long get_sec_date(struct date);
+time_t get_sec_date(struct date);
 long min2sec(unsigned);
 void draw_scrollbar(WINDOW *, int, int, int, int, int, unsigned);
 void item_in_popup(const char *, const char *, const char *, const char *);
-long get_today(void);
+time_t get_today(void);
 long now(void);
 char *nowstr(void);
 void print_bool_option_incolor(WINDOW *, unsigned, int, int);
@@ -1083,8 +1081,7 @@ int child_wait(int *, int *, int);
 void press_any_key(void);
 void print_apoint(const char *, long, struct apoint *);
 void print_event(const char *, long, struct event *);
-void print_recur_apoint(const char *, long, unsigned,
-			struct recur_apoint *);
+void print_recur_apoint(const char *, long, time_t, struct recur_apoint *);
 void print_recur_event(const char *, long, struct recur_event *);
 void print_todo(const char *, struct todo *);
 int vasprintf(char **, const char *, va_list);
diff --git a/src/day.c b/src/day.c
index eddd52b..131119f 100644
--- a/src/day.c
+++ b/src/day.c
@@ -308,7 +308,7 @@ static int day_store_recur_apoints(long date)
 
 		p.rapt = rapt;
 
-		unsigned real_start;
+		time_t real_start;
 		if (recur_apoint_find_occurrence(rapt, date, &real_start)) {
 			day_add_item(RECUR_APPT, real_start, p);
 			a_nb++;
@@ -358,7 +358,6 @@ day_store_items(long date, int include_captions)
  */
 void day_process_storage(struct date *slctd_date, unsigned day_changed)
 {
-	long date;
 	struct date day;
 
 	if (slctd_date)
@@ -366,14 +365,12 @@ void day_process_storage(struct date *slctd_date, unsigned day_changed)
 	else
 		ui_calendar_store_current_date(&day);
 
-	date = date2sec(day, 0, 0);
-
 	/* Inits */
 	if (apad.length != 0)
 		delwin(apad.ptrwin);
 
 	/* Store the events and appointments (recursive and normal items). */
-	day_store_items(date, 1);
+	day_store_items(date2sec(day, 0, 0), 1);
 }
 
 /*
@@ -508,25 +505,24 @@ void day_popup_item(struct day_item *day)
  */
 int day_check_if_item(struct date day)
 {
-	const long date = date2sec(day, 0, 0);
+	const time_t t = date2sec(day, 0, 0);
 
-	if (LLIST_FIND_FIRST
-	    (&recur_elist, (long *)&date, recur_event_inday))
+	if (LLIST_FIND_FIRST(&recur_elist, (time_t *)&t, recur_event_inday))
 		return 1;
 
 	LLIST_TS_LOCK(&recur_alist_p);
-	if (LLIST_TS_FIND_FIRST
-	    (&recur_alist_p, (long *)&date, recur_apoint_inday)) {
+	if (LLIST_TS_FIND_FIRST(&recur_alist_p, (time_t *)&t,
+				recur_apoint_inday)) {
 		LLIST_TS_UNLOCK(&recur_alist_p);
 		return 1;
 	}
 	LLIST_TS_UNLOCK(&recur_alist_p);
 
-	if (LLIST_FIND_FIRST(&eventlist, (long *)&date, event_inday))
+	if (LLIST_FIND_FIRST(&eventlist, (time_t *)&t, event_inday))
 		return 1;
 
 	LLIST_TS_LOCK(&alist_p);
-	if (LLIST_TS_FIND_FIRST(&alist_p, (long *)&date, apoint_inday)) {
+	if (LLIST_TS_FIND_FIRST(&alist_p, (time_t *)&t, apoint_inday)) {
 		LLIST_TS_UNLOCK(&alist_p);
 		return 1;
 	}
@@ -558,24 +554,24 @@ static unsigned fill_slices(int *slices, int slicesno, int first, int last)
  */
 unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
 {
+	const time_t t = date2sec(day, 0, 0);
 	llist_item_t *i;
 	int slicelen;
-	const long date = date2sec(day, 0, 0);
 
 	slicelen = DAYINSEC / slicesno;
 
 #define  SLICENUM(tsec)  ((tsec) / slicelen % slicesno)
 
 	LLIST_TS_LOCK(&recur_alist_p);
-	LLIST_TS_FIND_FOREACH(&recur_alist_p, (long *)&date,
+	LLIST_TS_FIND_FOREACH(&recur_alist_p, (time_t *)&t,
 			      recur_apoint_inday, i) {
 		struct apoint *rapt = LLIST_TS_GET_DATA(i);
 		long start = get_item_time(rapt->start);
 		long end = get_item_time(rapt->start + rapt->dur);
 
-		if (rapt->start < date)
+		if (rapt->start < t)
 			start = 0;
-		if (rapt->start + rapt->dur >= date + DAYINSEC)
+		if (rapt->start + rapt->dur >= t + DAYINSEC)
 			end = DAYINSEC - 1;
 
 		if (!fill_slices
@@ -587,16 +583,16 @@ unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
 	LLIST_TS_UNLOCK(&recur_alist_p);
 
 	LLIST_TS_LOCK(&alist_p);
-	LLIST_TS_FIND_FOREACH(&alist_p, (long *)&date, apoint_inday, i) {
+	LLIST_TS_FIND_FOREACH(&alist_p, (time_t *)&t, apoint_inday, i) {
 		struct apoint *apt = LLIST_TS_GET_DATA(i);
 		long start = get_item_time(apt->start);
 		long end = get_item_time(apt->start + apt->dur);
 
-		if (apt->start >= date + DAYINSEC)
+		if (apt->start >= t + DAYINSEC)
 			break;
-		if (apt->start < date)
+		if (apt->start < t)
 			start = 0;
-		if (apt->start + apt->dur >= date + DAYINSEC)
+		if (apt->start + apt->dur >= t + DAYINSEC)
 			end = DAYINSEC - 1;
 
 		if (!fill_slices
diff --git a/src/ical.c b/src/ical.c
index c964ee7..df791c1 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -481,14 +481,13 @@ ical_chk_header(FILE * fd, char *buf, char *lstore, unsigned *lineno,
  *
  * The timezone is not yet handled by calcurse.
  */
-static long ical_datetime2long(char *datestr, ical_vevent_e * type)
+static time_t ical_datetime2time_t(char *datestr, ical_vevent_e * type)
 {
-	const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 6,
-	      FORMAT_DATETIMEZ = 7;
+	const int FORMAT_DATE = 3, FORMAT_DATETIME = 6, FORMAT_DATETIMEZ = 7;
 	struct date date;
 	unsigned hour, min, sec;
 	char c;
-	long datelong ;
+	time_t t = 0;
 	int format;
 
 	format = sscanf(datestr, "%04u%02u%02uT%02u%02u%02u%c",
@@ -496,18 +495,16 @@ static long ical_datetime2long(char *datestr, ical_vevent_e * type)
 	if (format == FORMAT_DATE) {
 		if (type)
 			*type = EVENT;
-		datelong = date2sec(date, 0, 0);
+		t = date2sec(date, 0, 0);
 	} else if (format == FORMAT_DATETIME || format == FORMAT_DATETIMEZ) {
 		if (type)
 			*type = APPOINTMENT;
 		if (format == FORMAT_DATETIMEZ && c == 'Z')
-			datelong = utcdate2sec(date, hour, min);
+			t = utcdate2sec(date, hour, min);
 		else
-			datelong = date2sec(date, hour, min);
-	} else {
-		datelong = NOTFOUND;
+			t = date2sec(date, hour, min);
 	}
-	return datelong;
+	return t;
 }
 
 static long ical_durtime2long(char *timestr)
@@ -723,7 +720,7 @@ static ical_rpt_t *ical_read_rrule(FILE * log, char *rrulestr,
 	 * specified, counts as the first occurrence.
 	 */
 	if ((p = strstr(rrulestr, "UNTIL")) != NULL) {
-		rpt->until = ical_datetime2long(strchr(p, '=') + 1, NULL);
+		rpt->until = ical_datetime2time_t(strchr(p, '=') + 1, NULL);
 	} else {
 		unsigned cnt;
 		char *countstr;
@@ -766,7 +763,6 @@ ical_read_exdate(llist_t * exc, FILE * log, char *exstr,
 		 unsigned *noskipped, const int itemline)
 {
 	char *p, *q;
-	long date;
 
 	p = strchr(exstr, ':');
 	if (!p) {
@@ -783,12 +779,10 @@ ical_read_exdate(llist_t * exc, FILE * log, char *exstr,
 
 		strncpy(buf, p, buflen);
 		buf[buflen] = '\0';
-		date = ical_datetime2long(buf, NULL);
-		ical_add_exc(exc, date);
+		ical_add_exc(exc, ical_datetime2time_t(buf, NULL));
 		p = ++q;
 	}
-	date = ical_datetime2long(p, NULL);
-	ical_add_exc(exc, date);
+	ical_add_exc(exc, ical_datetime2time_t(p, NULL));
 }
 
 /* Return an allocated string containing the name of the newly created note. */
@@ -944,7 +938,7 @@ ical_read_event(FILE * fdi, FILE * log, unsigned *noevents,
 				goto cleanup;
 			}
 
-			vevent.start = ical_datetime2long(++p, &vevent_type);
+			vevent.start = ical_datetime2time_t(++p, &vevent_type);
 			if (!vevent.start) {
 				ical_log(log, ICAL_VEVENT, ITEMLINE,
 					 _("could not retrieve event start time."));
@@ -958,7 +952,7 @@ ical_read_event(FILE * fdi, FILE * log, unsigned *noevents,
 				goto cleanup;
 			}
 
-			vevent.end = ical_datetime2long(++p, &vevent_type);
+			vevent.end = ical_datetime2time_t(++p, &vevent_type);
 			if (!vevent.end) {
 				ical_log(log, ICAL_VEVENT, ITEMLINE,
 					 _("could not retrieve event end time."));
diff --git a/src/notify.c b/src/notify.c
index 970306e..78c8484 100644
--- a/src/notify.c
+++ b/src/notify.c
@@ -499,9 +499,8 @@ void notify_check_added(char *mesg, long start, char state)
 /* Check if the newly repeated appointment is to be notified. */
 void notify_check_repeated(struct recur_apoint *i)
 {
-	unsigned real_app_time;
+	time_t current_time, real_app_time;
 	int update_notify = 0;
-	time_t current_time;
 
 	current_time = time(NULL);
 	pthread_mutex_lock(&notify_app.mutex);
@@ -541,7 +540,7 @@ int notify_same_item(long time)
 int notify_same_recur_item(struct recur_apoint *i)
 {
 	int same = 0;
-	unsigned item_start = 0;
+	time_t item_start = 0;
 
 	recur_item_find_occurrence(i->start, i->dur, &i->exc, i->rpt->type,
 				   i->rpt->freq, i->rpt->until,
diff --git a/src/recur.c b/src/recur.c
index bda899d..667ecdf 100644
--- a/src/recur.c
+++ b/src/recur.c
@@ -610,7 +610,7 @@ unsigned
 recur_item_find_occurrence(long item_start, long item_dur,
 			   llist_t * item_exc, int rpt_type, int rpt_freq,
 			   long rpt_until, long day_start,
-			   unsigned *occurrence)
+			   time_t *occurrence)
 {
 	struct date start_date;
 	long diff, span;
@@ -696,7 +696,7 @@ recur_item_find_occurrence(long item_start, long item_dur,
 
 unsigned
 recur_apoint_find_occurrence(struct recur_apoint *rapt, long day_start,
-			     unsigned *occurrence)
+			     time_t *occurrence)
 {
 	return recur_item_find_occurrence(rapt->start, rapt->dur,
 					  &rapt->exc, rapt->rpt->type,
@@ -707,7 +707,7 @@ recur_apoint_find_occurrence(struct recur_apoint *rapt, long day_start,
 
 unsigned
 recur_event_find_occurrence(struct recur_event *rev, long day_start,
-			    unsigned *occurrence)
+			    time_t *occurrence)
 {
 	return recur_item_find_occurrence(rev->day, DAYINSEC, &rev->exc,
 					  rev->rpt->type, rev->rpt->freq,
@@ -841,7 +841,7 @@ struct notify_app *recur_apoint_check_next(struct notify_app *app,
 					   long start, long day)
 {
 	llist_item_t *i;
-	unsigned real_recur_start_time;
+	time_t real_recur_start_time;
 
 	LLIST_TS_LOCK(&recur_alist_p);
 	LLIST_TS_FIND_FOREACH(&recur_alist_p, &app->time,
diff --git a/src/ui-calendar.c b/src/ui-calendar.c
index 4539b86..2259c7f 100644
--- a/src/ui-calendar.c
+++ b/src/ui-calendar.c
@@ -214,7 +214,7 @@ struct date *ui_calendar_get_slctd_day(void)
 }
 
 /* Returned value represents the selected day in calendar (in seconds) */
-long ui_calendar_get_slctd_day_sec(void)
+time_t ui_calendar_get_slctd_day_sec(void)
 {
 	return date2sec(slctd_day, 0, 0);
 }
diff --git a/src/ui-day.c b/src/ui-day.c
index c71feb7..c777704 100644
--- a/src/ui-day.c
+++ b/src/ui-day.c
@@ -155,7 +155,7 @@ static void update_desc(char **desc)
 static void update_rept(struct rpt **rpt, const long start)
 {
 	int newtype, newfreq;
-	long newuntil;
+	time_t newuntil;
 	char *freqstr = NULL, *timstr, *outstr;
 	const char *msg_rpt_prefix = _("Enter the new repetition type:");
 	const char *msg_rpt_daily = _("(d)aily");
@@ -480,7 +480,7 @@ void ui_day_item_add(void)
 	const char *enter_str = _("Press [Enter] to continue");
 	char item_time[LDUR] = "";
 	char item_mesg[BUFSIZ] = "";
-	long apoint_start;
+	time_t apoint_start;
 	unsigned heures, minutes;
 	unsigned apoint_duration;
 	unsigned end_h, end_m;
@@ -680,7 +680,7 @@ void ui_day_item_repeat(void)
 	int item_nb;
 	struct day_item *p;
 	struct recur_apoint *ra;
-	long until, date;
+	time_t until, date;
 
 	if (day_item_count(0) <= 0)
 		goto cleanup;
@@ -744,8 +744,7 @@ void ui_day_item_repeat(void)
 			until_date.dd = day;
 			until_date.mm = month;
 			until_date.yyyy = year;
-			until =
-			    date2sec(until_date, lt.tm_hour, lt.tm_min);
+			until = date2sec(until_date, lt.tm_hour, lt.tm_min);
 			if (until >= p->start)
 				break;
 			status_mesg(mesg_older, wrong_type_2);
@@ -859,7 +858,7 @@ void ui_day_sel_move(int delta)
 void ui_day_draw(int n, WINDOW *win, int y, int hilt, void *cb_data)
 {
 	struct date slctd_date = *ui_calendar_get_slctd_day();
-	long date = date2sec(slctd_date, 0, 0);
+	time_t date = date2sec(slctd_date, 0, 0);
 	struct day_item *item = day_get_item(n);
 	int width = lb_apt.sw.w;
 
diff --git a/src/utils.c b/src/utils.c
index ec5a1ea..613e4bc 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -365,7 +365,7 @@ int get_item_min(long date)
 	return lt.tm_min;
 }
 
-long date2sec(struct date day, unsigned hour, unsigned min)
+time_t date2sec(struct date day, unsigned hour, unsigned min)
 {
 	time_t t = now();
 	struct tm start;
@@ -386,8 +386,7 @@ long date2sec(struct date day, unsigned hour, unsigned min)
 	return t;
 }
 
-time_t
-utcdate2sec(struct date day, unsigned hour, unsigned min)
+time_t utcdate2sec(struct date day, unsigned hour, unsigned min)
 {
 	char *tz;
 	time_t t;
@@ -488,11 +487,10 @@ long update_time_in_date(long date, unsigned hr, unsigned mn)
  * Returns the date in seconds from year 1900.
  * If no date is entered, current date is chosen.
  */
-long get_sec_date(struct date date)
+time_t get_sec_date(struct date date)
 {
 	struct tm ptrtime;
 	time_t timer;
-	long long_date;
 	char current_day[] = "dd ";
 	char current_month[] = "mm ";
 	char current_year[] = "yyyy ";
@@ -501,16 +499,14 @@ long get_sec_date(struct date date)
 		timer = time(NULL);
 		localtime_r(&timer, &ptrtime);
 		strftime(current_day, strlen(current_day), "%d", &ptrtime);
-		strftime(current_month, strlen(current_month), "%m",
-			 &ptrtime);
-		strftime(current_year, strlen(current_year), "%Y",
-			 &ptrtime);
+		strftime(current_month, strlen(current_month), "%m", &ptrtime);
+		strftime(current_year, strlen(current_year), "%Y", &ptrtime);
 		date.mm = atoi(current_month);
 		date.dd = atoi(current_day);
 		date.yyyy = atoi(current_year);
 	}
-	long_date = date2sec(date, 0, 0);
-	return long_date;
+
+	return date2sec(date, 0, 0);
 }
 
 long min2sec(unsigned minutes)
@@ -566,11 +562,10 @@ item_in_popup(const char *a_start, const char *a_end, const char *msg,
 }
 
 /* Returns the beginning of current day in seconds from 1900. */
-long get_today(void)
+time_t get_today(void)
 {
 	struct tm lt;
 	time_t current_time;
-	long current_day;
 	struct date day;
 
 	current_time = time(NULL);
@@ -578,9 +573,8 @@ long get_today(void)
 	day.mm = lt.tm_mon + 1;
 	day.dd = lt.tm_mday;
 	day.yyyy = lt.tm_year + 1900;
-	current_day = date2sec(day, 0, 0);
 
-	return current_day;
+	return date2sec(day, 0, 0);
 }
 
 /* Returns the current time in seconds. */
@@ -1500,7 +1494,7 @@ void print_event(const char *format, long day, struct event *ev)
 
 /* Print a formatted recurrent appointment to stdout. */
 void
-print_recur_apoint(const char *format, long day, unsigned occurrence,
+print_recur_apoint(const char *format, long day, time_t occurrence,
 		   struct recur_apoint *rapt)
 {
 	struct apoint apt;
-- 
cgit v1.2.3-70-g09d2