From 4b987f70ac463121f9791eb3493952a77aba495f Mon Sep 17 00:00:00 2001
From: Frederic Culot <calcurse@culot.org>
Date: Sat, 28 Jul 2007 13:11:42 +0000
Subject: unuseful headers removed and some functions became static

---
 src/apoint.c   |   6 +-
 src/apoint.h   |   5 +-
 src/args.c     | 412 ++++++++++++++++++++++++++-------------------------------
 src/args.h     |  16 +--
 src/calcurse.c |  10 +-
 src/calendar.c |   5 +-
 src/calendar.h |   4 +-
 src/custom.c   | 216 +++++++++++++++---------------
 src/custom.h   |   3 +-
 src/day.c      | 399 ++++++++++++++++++++++++++++---------------------------
 src/day.h      |  15 +--
 src/event.c    |   4 +-
 src/event.h    |  10 +-
 src/help.c     |  37 +++---
 src/help.h     |   6 +-
 src/io.c       |  23 ++--
 src/io.h       |  18 +--
 src/notify.c   |  69 +++++-----
 src/notify.h   |   8 +-
 src/recur.c    | 158 +++++++++++-----------
 src/recur.h    |  11 +-
 src/sigs.c     |   6 +-
 src/todo.c     |  84 ++++++------
 src/todo.h     |   5 +-
 src/utils.c    | 145 ++++++++++----------
 src/utils.h    |  10 +-
 src/vars.h     |   3 +-
 src/wins.c     |  54 +++++++-
 28 files changed, 824 insertions(+), 918 deletions(-)

(limited to 'src')

diff --git a/src/apoint.c b/src/apoint.c
index e7789fd..dd3cbac 100755
--- a/src/apoint.c
+++ b/src/apoint.c
@@ -1,4 +1,4 @@
-/*	$calcurse: apoint.c,v 1.12 2007/07/21 19:35:14 culot Exp $	*/
+/*	$calcurse: apoint.c,v 1.13 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,7 +24,6 @@
  *
  */
 
-#include <ncurses.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -403,7 +402,8 @@ void display_item_date(WINDOW *win, int incolor, apoint_llist_node_t *i,
  * the appointment panel. This is to help the appointment scroll function 
  * to place beggining of the pad correctly.
  */
-int get_item_line(int item_nb, int nb_events_inday)
+static int 
+get_item_line(int item_nb, int nb_events_inday)
 {
 	int separator = 2;
 	int line = 0;
diff --git a/src/apoint.h b/src/apoint.h
index 69ac520..bcf6483 100755
--- a/src/apoint.h
+++ b/src/apoint.h
@@ -1,4 +1,4 @@
-/*	$calcurse: apoint.h,v 1.7 2007/07/21 19:35:14 culot Exp $	*/
+/*	$calcurse: apoint.h,v 1.8 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,8 +27,6 @@
 #ifndef CALCURSE_APOINT_H
 #define CALCURSE_APOINT_H
 
-#include <ncurses.h>
-
 #include "notify.h"
 #include "recur.h"
 #include "vars.h"
@@ -67,7 +65,6 @@ apoint_llist_node_t    *apoint_scan(FILE *, struct tm, struct tm, char);
 void 			apoint_delete_bynum(long, unsigned);
 void 			display_item_date(WINDOW *, int, apoint_llist_node_t *,
 			    int, long, int, int);
-int 			get_item_line(int, int);
 void 			scroll_pad_down(int, int, int);
 void 			scroll_pad_up(int, int);
 struct notify_app_s    *apoint_check_next(struct notify_app_s *, long);
diff --git a/src/args.c b/src/args.c
index 9692403..22535e7 100755
--- a/src/args.c
+++ b/src/args.c
@@ -1,4 +1,4 @@
-/*	$calcurse: args.c,v 1.22 2007/07/21 19:34:42 culot Exp $	*/
+/*	$calcurse: args.c,v 1.23 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,12 +24,9 @@
  *
  */
 
-#include <ncurses.h>
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
-#include <stdbool.h>
 #include <sys/types.h>
 #include <getopt.h>
 #include <time.h>
@@ -40,168 +37,36 @@
 #include "args.h"
 #include "event.h"
 #include "apoint.h"
-#include "recur.h"
 #include "day.h"
 #include "todo.h"
 #include "io.h"
-#include "notify.h"
 
 /* 
- * Parse the command-line arguments and call the appropriate
- * routines to handle those arguments. Also initialize the data paths.
+ * Print Calcurse usage and exit.
  */
-int 
-parse_args(int argc, char **argv, conf_t *conf)
+static void 
+usage()
 {
-	int ch, add_line = 0;
-	int unknown_flag = 0, app_found = 0;
-	/* Command-line flags */
-	int aflag = 0;	/* -a: print appointments for current day */
-	int cflag = 0;	/* -c: specify the calendar file to use */
-	int dflag = 0;	/* -d: print appointments for a specified days */
-	int hflag = 0;	/* -h: print help text */
-	int nflag = 0;	/* -n: print next appointment */
-	int tflag = 0;	/* -t: print todo list */
-	int vflag = 0;	/* -v: print version number */
-	int xflag = 0;  /* -x: export data to iCalendar format */
-  
-	int tnum = 0;
-	int non_interactive = 0, multiple_flag = 0, load_data = 0;
-	int no_file = 1;
-	char *ddate = "", *cfile = NULL;
-
-	static char *optstr = "hvnaxt::d:c:";
-
-	struct option longopts[] = {
-	    {"appointment", no_argument, NULL, 'a'},
-	    {"calendar", required_argument, NULL, 'c'},
-	    {"day", required_argument, NULL, 'd'},
-	    {"help", no_argument, NULL, 'h'},
-	    {"next", no_argument, NULL, 'n'},
-	    {"todo", optional_argument, NULL, 't'},
-	    {"version", no_argument, NULL, 'v'},
-	    {"export", no_argument, NULL, 'x'},	
-	    {NULL, no_argument, NULL, 0}
-	};
+        char *arg_usage = 
+	    _("Usage: calcurse [-h|-v] [-x] [-an] [-t[num]] [-d date|num] [-c file]\n");
+	
+        fputs(arg_usage, stdout);
+}
 
-	while ((ch = getopt_long(argc, argv, optstr, longopts, NULL)) != -1) {
-		switch (ch) {
-		case 'a':
-			aflag = 1;
-			multiple_flag++;
-			load_data++;
-			break;
-		case 'c':
-			cflag = 1;
-			multiple_flag++;
-			load_data++;
-			cfile = optarg;
-			break;
-		case 'd':
-			dflag = 1;
-			multiple_flag++;
-			load_data++;
-			ddate = optarg;
-			break;
-		case 'h':
-			hflag = 1;
-			break;
-		case 'n':
-			nflag = 1;
-			multiple_flag++;
-			load_data++;
-			break;
-		case 't':
-			tflag = 1;
-			multiple_flag++;
-			load_data++;
-			add_line = 1;
-			if (optarg != NULL) {
-				tnum = atoi(optarg);
-				if (tnum < 1 || tnum > 9) {
-					usage();
-					usage_try();
-					return EXIT_FAILURE;
-				}
-			} else
-				tnum = 0;
-			break;
-		case 'v':
-			vflag = 1;
-			break;
-		case 'x':
-			xflag = 1;
-			multiple_flag++;
-			load_data++;
-			break;
-		default:
-			usage();
-                        usage_try();
-			unknown_flag = 1;
-			non_interactive = 1;
-			/* NOTREACHED */
-		}
-	}
-	argc -= optind;
-	argv += optind;
+static void 
+usage_try()
+{
+        char *arg_usage_try =
+	    _("Try 'calcurse -h' for more information.\n");
 
-	if (argc >= 1) {	/* incorrect arguments */
-		usage();
-                usage_try();
-		return EXIT_FAILURE;
-	} else {
-		if (unknown_flag) {
-			non_interactive = 1;
-		} else if (hflag) {
-			help_arg();
-			non_interactive = 1;
-		} else if (vflag) {
-			version_arg();
-			non_interactive = 1;
-		} else if (multiple_flag) {
-			if (load_data) {
-				io_init(cfile);
-				no_file = check_data_files();
-				if (dflag || aflag || nflag || xflag)  
-					load_app();
-			}
-			if (xflag) {
-				notify_init_vars();
-				custom_load_conf(conf, 0);
-				io_export_data(IO_EXPORT_NONINTERACTIVE, conf);
-				non_interactive = 1;
-				return (non_interactive);
-			}
-			if (tflag) {
-				todo_arg(tnum);
-				non_interactive = 1;
-			}
-			if (nflag) {
-				next_arg();
-				non_interactive = 1;
-			}
-			if (dflag) {
-				date_arg(ddate, add_line);
-				non_interactive = 1;
-			} else if (aflag) {
-				date_t day;
-				day.dd = day.mm = day.yyyy = 0;
-				app_found = app_arg(add_line,day,0);
-				non_interactive = 1;
-			}
-		} else {
-			non_interactive = 0;
-			io_init(cfile);
-			no_file = check_data_files();
-		}
-		return (non_interactive);
-	}
+        fputs(arg_usage_try, stdout);
 }
 
 /*
  * Print Calcurse version with a short copyright text and exit.
  */
-void version_arg()
+static void 
+version_arg()
 {
 	char vtitle[BUFSIZ];
 	char *vtext =
@@ -209,7 +74,7 @@ void version_arg()
 	    "This is free software; see the source for copying conditions.\n");
 
 	snprintf(vtitle, BUFSIZ, 
-		_("Calcurse %s - text-based organizer\n"), VERSION);
+	    _("Calcurse %s - text-based organizer\n"), VERSION);
 	fputs(vtitle, stdout);
 	fputs(vtext, stdout);
 }
@@ -217,7 +82,8 @@ void version_arg()
 /* 
  * Print the command line options and exit.
  */
-void help_arg()
+static void 
+help_arg()
 {
 	char htitle[BUFSIZ];
 	char *htext =
@@ -263,13 +129,14 @@ void help_arg()
  * Print todo list and exit. If a priority number is given (say not equal to
  * zero), then only todo items that have this priority will be displayed.
  */
-void todo_arg(int priority)
+static void 
+todo_arg(int priority)
 {
 	struct todo_s *i;
 	int nb_tod, title = 1;
 	char priority_str[BUFSIZ] = "";
 
-	nb_tod = load_todo();
+	nb_tod = io_load_todo();
 	for (i = todolist; i != 0; i = i->next) {
 		if (priority == 0 || i->id == priority) {
 			if (title) {
@@ -285,7 +152,7 @@ void todo_arg(int priority)
 }
 
 /* Print the next appointment within the upcoming 24 hours. */
-void 
+static void 
 next_arg(void)
 {
 	struct notify_app_s *next_app;
@@ -312,12 +179,31 @@ next_arg(void)
 	free(next_app);
 }
 
+/* 
+ * Print the date on stdout.
+ */
+static void 
+arg_print_date(long date) 
+{
+		char date_str[BUFSIZ];
+		time_t t;
+		struct tm *lt;
+
+		t = date;
+		lt = localtime(&t);
+		snprintf(date_str, BUFSIZ, "%02u/%02u/%04u",
+			lt->tm_mon+1, lt->tm_mday, 1900+lt->tm_year);
+		fputs(date_str,stdout);
+		fputs(":\n",stdout);
+}
+
 /*
  * Print appointments for given day and exit.
  * If no day is given, the given date is used.
  * If there is also no date given, current date is considered.
  */
-int app_arg(int add_line, date_t day, long date)
+static int 
+app_arg(int add_line, date_t day, long date)
 {
 	struct recur_event_s *re;
 	struct event_s *j;
@@ -428,7 +314,8 @@ int app_arg(int add_line, date_t day, long date)
  * Print appointment for the given date or for the given n upcoming
  * days.
  */
-void date_arg(char *ddate, int add_line)
+static void 
+date_arg(char *ddate, int add_line)
 {
 	int i;
 	date_t day;
@@ -486,75 +373,154 @@ void date_arg(char *ddate, int add_line)
 	}
 }
 
-/*
- * Check if the entered date is of a valid format.
- * First check the format by itself, and then check the 
- * numbers correctness.
- */
-int
-check_date(char *date)
-{
-	int ok = 0;
-	char month[3] = "";
-	char day[3] = "";
-	char year[5] = "";
-	if ( 
-			(strlen(date) == 10) &
-			(isdigit(date[0]) != 0) &
-			(isdigit(date[1]) != 0) &
-			(date[2] == '/') &
-			(isdigit(date[3]) != 0) &
-			(isdigit(date[4]) != 0) &
-			(date[5] == '/') &
-			(isdigit(date[6])!=0) & (isdigit(date[7])!=0) & 
-			(isdigit(date[8])!=0) & (isdigit(date[9])!=0)
-	) {
-		strncpy(month, date, 2);
-		strncpy(day, date + 3, 2);
-		strncpy(year, date + 6, 4);
-		if ( (atoi(month) <= 12) & 
-		     (atoi(month) >= 1)  &
-		     (atoi(day) <= 31) &
-		     (atoi(day) >= 1) &
-		     (atoi(year) <= 9999) &
-		     (atoi(year) > 1))
-		ok = 1;		
-	}
-	return ok;
-}
-
 /* 
- * Print the date on stdout.
+ * Parse the command-line arguments and call the appropriate
+ * routines to handle those arguments. Also initialize the data paths.
  */
-void arg_print_date(long date) 
+int 
+parse_args(int argc, char **argv, conf_t *conf)
 {
-		char date_str[BUFSIZ];
-		time_t t;
-		struct tm *lt;
+	int ch, add_line = 0;
+	int unknown_flag = 0, app_found = 0;
+	/* Command-line flags */
+	int aflag = 0;	/* -a: print appointments for current day */
+	int cflag = 0;	/* -c: specify the calendar file to use */
+	int dflag = 0;	/* -d: print appointments for a specified days */
+	int hflag = 0;	/* -h: print help text */
+	int nflag = 0;	/* -n: print next appointment */
+	int tflag = 0;	/* -t: print todo list */
+	int vflag = 0;	/* -v: print version number */
+	int xflag = 0;  /* -x: export data to iCalendar format */
+  
+	int tnum = 0;
+	int non_interactive = 0, multiple_flag = 0, load_data = 0;
+	int no_file = 1;
+	char *ddate = "", *cfile = NULL;
 
-		t = date;
-		lt = localtime(&t);
-		snprintf(date_str, BUFSIZ, "%02u/%02u/%04u",
-			lt->tm_mon+1, lt->tm_mday, 1900+lt->tm_year);
-		fputs(date_str,stdout);
-		fputs(":\n",stdout);
-}
+	static char *optstr = "hvnaxt::d:c:";
 
-/* 
- * Print Calcurse usage and exit.
- */
-void usage()
-{
-        char *arg_usage = 
-                _("Usage: calcurse [-h|-v] [-x] [-an] [-t[num]] [-d date|num] [-c file]\n");
-	
-        fputs(arg_usage, stdout);
-}
+	struct option longopts[] = {
+	    {"appointment", no_argument, NULL, 'a'},
+	    {"calendar", required_argument, NULL, 'c'},
+	    {"day", required_argument, NULL, 'd'},
+	    {"help", no_argument, NULL, 'h'},
+	    {"next", no_argument, NULL, 'n'},
+	    {"todo", optional_argument, NULL, 't'},
+	    {"version", no_argument, NULL, 'v'},
+	    {"export", no_argument, NULL, 'x'},	
+	    {NULL, no_argument, NULL, 0}
+	};
 
-void usage_try()
-{
-        char *arg_usage_try =
-                _("Try 'calcurse -h' for more information.\n");
+	while ((ch = getopt_long(argc, argv, optstr, longopts, NULL)) != -1) {
+		switch (ch) {
+		case 'a':
+			aflag = 1;
+			multiple_flag++;
+			load_data++;
+			break;
+		case 'c':
+			cflag = 1;
+			multiple_flag++;
+			load_data++;
+			cfile = optarg;
+			break;
+		case 'd':
+			dflag = 1;
+			multiple_flag++;
+			load_data++;
+			ddate = optarg;
+			break;
+		case 'h':
+			hflag = 1;
+			break;
+		case 'n':
+			nflag = 1;
+			multiple_flag++;
+			load_data++;
+			break;
+		case 't':
+			tflag = 1;
+			multiple_flag++;
+			load_data++;
+			add_line = 1;
+			if (optarg != NULL) {
+				tnum = atoi(optarg);
+				if (tnum < 1 || tnum > 9) {
+					usage();
+					usage_try();
+					return EXIT_FAILURE;
+				}
+			} else
+				tnum = 0;
+			break;
+		case 'v':
+			vflag = 1;
+			break;
+		case 'x':
+			xflag = 1;
+			multiple_flag++;
+			load_data++;
+			break;
+		default:
+			usage();
+                        usage_try();
+			unknown_flag = 1;
+			non_interactive = 1;
+			/* NOTREACHED */
+		}
+	}
+	argc -= optind;
+	argv += optind;
 
-        fputs(arg_usage_try, stdout);
+	if (argc >= 1) {	/* incorrect arguments */
+		usage();
+                usage_try();
+		return EXIT_FAILURE;
+	} else {
+		if (unknown_flag) {
+			non_interactive = 1;
+		} else if (hflag) {
+			help_arg();
+			non_interactive = 1;
+		} else if (vflag) {
+			version_arg();
+			non_interactive = 1;
+		} else if (multiple_flag) {
+			if (load_data) {
+				io_init(cfile);
+				no_file = io_check_data_files();
+				if (dflag || aflag || nflag || xflag)  
+					io_load_app();
+			}
+			if (xflag) {
+				notify_init_vars();
+				custom_load_conf(conf, 0);
+				io_export_data(IO_EXPORT_NONINTERACTIVE, conf);
+				non_interactive = 1;
+				return (non_interactive);
+			}
+			if (tflag) {
+				todo_arg(tnum);
+				non_interactive = 1;
+			}
+			if (nflag) {
+				next_arg();
+				non_interactive = 1;
+			}
+			if (dflag) {
+				date_arg(ddate, add_line);
+				non_interactive = 1;
+			} else if (aflag) {
+				date_t day;
+				day.dd = day.mm = day.yyyy = 0;
+				app_found = app_arg(add_line,day,0);
+				non_interactive = 1;
+			}
+		} else {
+			non_interactive = 0;
+			io_init(cfile);
+			no_file = io_check_data_files();
+		}
+		return (non_interactive);
+	}
 }
diff --git a/src/args.h b/src/args.h
index c383266..5fe51bf 100755
--- a/src/args.h
+++ b/src/args.h
@@ -1,4 +1,4 @@
-/*	$calcurse: args.h,v 1.7 2007/07/01 17:56:08 culot Exp $	*/
+/*	$calcurse: args.h,v 1.8 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,18 +27,6 @@
 #ifndef CALCURSE_ARGS_H
 #define CALCURSE_ARGS_H
 
-#include "vars.h"
-
-void usage();
-void usage_try();
-int parse_args(int argc, char **argv, conf_t *conf);
-void version_arg();
-void help_arg();
-void todo_arg(int priority);
-void next_arg(void);
-int app_arg(int add_line, date_t day, long date);
-void date_arg(char *ddate, int add_line);
-int check_date(char *date);
-void arg_print_date(long date);
+int 	parse_args(int, char **, conf_t *);
 
 #endif /* CALCURSE_ARGS_H */
diff --git a/src/calcurse.c b/src/calcurse.c
index 6375395..2b55538 100755
--- a/src/calcurse.c
+++ b/src/calcurse.c
@@ -1,4 +1,4 @@
-/*	$calcurse: calcurse.c,v 1.50 2007/07/26 20:35:58 culot Exp $	*/
+/*	$calcurse: calcurse.c,v 1.51 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -160,11 +160,11 @@ main(int argc, char **argv)
 	 * configuration (the display is then updated), and then
 	 * the todo list, appointments and events.
 	 */
-	no_data_file = check_data_files();
+	no_data_file = io_check_data_files();
 	custom_load_conf(&conf, background);
 	erase_status_bar();
-	nb_tod = load_todo();	
-	load_app();
+	nb_tod = io_load_todo();	
+	io_load_app();
 	if (notify_bar()) {
 		notify_start_main_thread();
 		notify_check_next_app();
@@ -175,7 +175,7 @@ main(int argc, char **argv)
 	    &win[TODO], &win[CALENDAR], &win[NOTIFY]);
 	wins_update(&conf, &win[STATUS], &win[APPOINTMENT], &win[TODO], 
 	    hilt_app, hilt_tod, nb_tod, first_todo_onscreen, &saved_t_mesg);
-        startup_screen(conf.skip_system_dialogs, no_data_file);
+        io_startup_screen(conf.skip_system_dialogs, no_data_file);
 	inday = *day_process_storage(0, day_changed, &inday);
 	wins_slctd_set(CALENDAR);
 	wins_update(&conf, &win[STATUS], &win[APPOINTMENT], &win[TODO], 
diff --git a/src/calendar.c b/src/calendar.c
index 3869e68..15c511c 100755
--- a/src/calendar.c
+++ b/src/calendar.c
@@ -1,4 +1,4 @@
-/*	$calcurse: calendar.c,v 1.8 2007/07/01 17:48:50 culot Exp $	*/
+/*	$calcurse: calendar.c,v 1.9 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,13 +24,10 @@
  *
  */
 
-#include <ncurses.h>
-#include <pthread.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
-#include <stdbool.h>
 #include <time.h>
 
 #include "i18n.h"
diff --git a/src/calendar.h b/src/calendar.h
index b43276a..1d60fe7 100755
--- a/src/calendar.h
+++ b/src/calendar.h
@@ -1,4 +1,4 @@
-/*	$calcurse: calendar.h,v 1.4 2007/07/21 19:39:23 culot Exp $	*/
+/*	$calcurse: calendar.h,v 1.5 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,8 +27,8 @@
 #ifndef CALCURSE_CALENDAR_H
 #define CALCURSE_CALENDAR_H
 
-#include <stdbool.h>
 #include <ncurses.h>
+#include <stdbool.h>
 
 #define	CALHEIGHT	12
 #define	CALWIDTH	30
diff --git a/src/custom.c b/src/custom.c
index 3894e41..b6cb812 100755
--- a/src/custom.c
+++ b/src/custom.c
@@ -1,4 +1,4 @@
-/*	$calcurse: custom.c,v 1.14 2007/07/21 19:34:07 culot Exp $	*/
+/*	$calcurse: custom.c,v 1.15 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,16 +24,12 @@
  *
  */
 
-#include <ncurses.h>
 #include <string.h>
 #include <stdlib.h>
-#include <stdio.h>
 
-#include "calendar.h"
 #include "custom.h"
 #include "i18n.h"
 #include "io.h"
-#include "wins.h"
 #include "utils.h"
 #include "apoint.h"
 
@@ -53,6 +49,111 @@ fill_config_var(char *string)
 	}
 }
 
+/* 
+ * Load user color theme from file. 
+ * Need to handle calcurse versions prior to 1.8, where colors where handled
+ * differently (number between 1 and 8).
+ */
+static void
+custom_load_color(char *color, int background)
+{
+#define AWAITED_COLORS	2
+
+	int i, len, color_num;
+	char c[AWAITED_COLORS][BUFSIZ];
+	int colr[AWAITED_COLORS];
+	const char *wrong_color_number =
+	    _("FATAL ERROR in custom_load_color: wrong color number.\n");
+	const char *wrong_color_name =
+	    _("FATAL ERROR in custom_load_color: wrong color name.\n");
+	const char *wrong_variable_format =
+	    _("FATAL ERROR in custom_load_color: " 
+	    "wrong configuration variable format.\n");
+
+	len = strlen(color);
+
+	if (len > 1) { 
+		/* New version configuration */
+		if (sscanf(color, "%s on %s", c[0], c[1]) != AWAITED_COLORS) {
+			fputs(_("FATAL ERROR in custom_load_color: "
+			    "missing colors in config file.\n"), stderr);
+			exit(EXIT_FAILURE);
+			/* NOTREACHED */
+		};
+
+		for (i = 0; i < AWAITED_COLORS; i++) {
+			if (!strncmp(c[i], "black", 5))
+				colr[i] = COLOR_BLACK;
+			else if (!strncmp(c[i], "red", 3))
+				colr[i] = COLOR_RED;
+			else if (!strncmp(c[i], "green", 5))
+				colr[i] = COLOR_GREEN;
+			else if (!strncmp(c[i], "yellow", 6))
+				colr[i] = COLOR_YELLOW;
+			else if (!strncmp(c[i], "blue", 4))
+				colr[i] = COLOR_BLUE;
+			else if (!strncmp(c[i], "magenta", 7))
+				colr[i] = COLOR_MAGENTA;
+			else if (!strncmp(c[i], "cyan", 4))
+				colr[i] = COLOR_CYAN;
+			else if (!strncmp(c[i], "white", 5))
+				colr[i] = COLOR_WHITE;
+			else if (!strncmp(c[i], "default", 7))
+				colr[i] = background;
+			else {
+				fputs(wrong_color_name, stderr);
+				exit(EXIT_FAILURE);
+				/* NOTREACHED */
+			}
+		}
+		
+		init_pair(COLR_CUSTOM, colr[0], colr[1]);
+
+	} else if (len > 0 && len < 2) { 
+		/* Old version configuration */
+		color_num = atoi(color);	
+
+		switch (color_num) {
+		case 0:
+			colorize = false;
+			break;
+		case 1:
+			init_pair(COLR_CUSTOM, COLOR_RED, background);
+			break;
+		case 2:
+			init_pair(COLR_CUSTOM, COLOR_GREEN, background);
+			break;
+		case 3:
+			init_pair(COLR_CUSTOM, COLOR_BLUE, background);
+			break;
+		case 4:
+			init_pair(COLR_CUSTOM, COLOR_CYAN, background);
+			break;
+		case 5:
+			init_pair(COLR_CUSTOM, COLOR_YELLOW, background);
+			break;
+		case 6:
+			init_pair(COLR_CUSTOM, COLOR_BLACK, COLR_GREEN);
+			break;
+		case 7:
+			init_pair(COLR_CUSTOM, COLOR_BLACK, COLR_YELLOW);
+			break;
+		case 8:
+			init_pair(COLR_CUSTOM, COLOR_RED, COLR_BLUE);
+			break;
+		default:
+			fputs(wrong_color_number, stderr);
+			exit(EXIT_FAILURE);
+			/* NOTREACHED */
+		}
+
+	} else {
+		fputs(wrong_variable_format, stderr);
+		exit(EXIT_FAILURE);
+		/* NOTREACHED */
+	}
+}
+
 /* 
  * Define window attributes (for both color and non-color terminals):
  * ATTR_HIGHEST are for window titles
@@ -488,111 +589,6 @@ custom_color_config(int notify_bar)
 	delwin(conf_win);
 }
 
-/* 
- * Load user color theme from file. 
- * Need to handle calcurse versions prior to 1.8, where colors where handled
- * differently (number between 1 and 8).
- */
-void
-custom_load_color(char *color, int background)
-{
-#define AWAITED_COLORS	2
-
-	int i, len, color_num;
-	char c[AWAITED_COLORS][BUFSIZ];
-	int colr[AWAITED_COLORS];
-	const char *wrong_color_number =
-	    _("FATAL ERROR in custom_load_color: wrong color number.\n");
-	const char *wrong_color_name =
-	    _("FATAL ERROR in custom_load_color: wrong color name.\n");
-	const char *wrong_variable_format =
-	    _("FATAL ERROR in custom_load_color: " 
-	    "wrong configuration variable format.\n");
-
-	len = strlen(color);
-
-	if (len > 1) { 
-		/* New version configuration */
-		if (sscanf(color, "%s on %s", c[0], c[1]) != AWAITED_COLORS) {
-			fputs(_("FATAL ERROR in custom_load_color: "
-			    "missing colors in config file.\n"), stderr);
-			exit(EXIT_FAILURE);
-			/* NOTREACHED */
-		};
-
-		for (i = 0; i < AWAITED_COLORS; i++) {
-			if (!strncmp(c[i], "black", 5))
-				colr[i] = COLOR_BLACK;
-			else if (!strncmp(c[i], "red", 3))
-				colr[i] = COLOR_RED;
-			else if (!strncmp(c[i], "green", 5))
-				colr[i] = COLOR_GREEN;
-			else if (!strncmp(c[i], "yellow", 6))
-				colr[i] = COLOR_YELLOW;
-			else if (!strncmp(c[i], "blue", 4))
-				colr[i] = COLOR_BLUE;
-			else if (!strncmp(c[i], "magenta", 7))
-				colr[i] = COLOR_MAGENTA;
-			else if (!strncmp(c[i], "cyan", 4))
-				colr[i] = COLOR_CYAN;
-			else if (!strncmp(c[i], "white", 5))
-				colr[i] = COLOR_WHITE;
-			else if (!strncmp(c[i], "default", 7))
-				colr[i] = background;
-			else {
-				fputs(wrong_color_name, stderr);
-				exit(EXIT_FAILURE);
-				/* NOTREACHED */
-			}
-		}
-		
-		init_pair(COLR_CUSTOM, colr[0], colr[1]);
-
-	} else if (len > 0 && len < 2) { 
-		/* Old version configuration */
-		color_num = atoi(color);	
-
-		switch (color_num) {
-		case 0:
-			colorize = false;
-			break;
-		case 1:
-			init_pair(COLR_CUSTOM, COLOR_RED, background);
-			break;
-		case 2:
-			init_pair(COLR_CUSTOM, COLOR_GREEN, background);
-			break;
-		case 3:
-			init_pair(COLR_CUSTOM, COLOR_BLUE, background);
-			break;
-		case 4:
-			init_pair(COLR_CUSTOM, COLOR_CYAN, background);
-			break;
-		case 5:
-			init_pair(COLR_CUSTOM, COLOR_YELLOW, background);
-			break;
-		case 6:
-			init_pair(COLR_CUSTOM, COLOR_BLACK, COLR_GREEN);
-			break;
-		case 7:
-			init_pair(COLR_CUSTOM, COLOR_BLACK, COLR_YELLOW);
-			break;
-		case 8:
-			init_pair(COLR_CUSTOM, COLOR_RED, COLR_BLUE);
-			break;
-		default:
-			fputs(wrong_color_number, stderr);
-			exit(EXIT_FAILURE);
-			/* NOTREACHED */
-		}
-
-	} else {
-		fputs(wrong_variable_format, stderr);
-		exit(EXIT_FAILURE);
-		/* NOTREACHED */
-	}
-}
-
 /* 
  * Return a string defining the color theme in the form:
  *       foreground color 'on' background color
diff --git a/src/custom.h b/src/custom.h
index 07c071f..30e63d8 100755
--- a/src/custom.h
+++ b/src/custom.h
@@ -1,4 +1,4 @@
-/*	$calcurse: custom.h,v 1.7 2007/07/21 19:34:07 culot Exp $	*/
+/*	$calcurse: custom.h,v 1.8 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -73,7 +73,6 @@ void 	custom_load_conf(conf_t *, int);
 void 	config_bar(void);
 int 	layout_config(int);
 void 	custom_color_config(int);
-void 	custom_load_color(char *, int);
 void 	custom_color_theme_name(char *);
 void 	custom_general_config(conf_t *);
 
diff --git a/src/day.c b/src/day.c
index bb8e8c3..0ed71dc 100755
--- a/src/day.c
+++ b/src/day.c
@@ -1,4 +1,4 @@
-/*	$calcurse: day.c,v 1.24 2007/07/20 19:05:19 culot Exp $	*/
+/*	$calcurse: day.c,v 1.25 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,105 +24,117 @@
  *
  */
 
-#include <ncurses.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
 #include <ctype.h>
-#include <stdbool.h>
 #include <time.h>
 
 #include "i18n.h"
 #include "utils.h"
 #include "apoint.h"
 #include "event.h"
-#include "recur.h"
 #include "day.h"
-#include "vars.h"
-#include "args.h"
 
-static struct day_item_s *day_items_ptr;
-static struct day_saved_item_s *day_saved_item = NULL;
+static struct day_item_s 	*day_items_ptr;
+static struct day_saved_item_s 	*day_saved_item = NULL;
 
-
-/*
- * Store the events and appointments for the selected day, and write
- * those items in a pad. If selected day is null, then store items for current
- * day. This is useful to speed up the appointment panel update.
- */
-day_items_nb_t *
-day_process_storage(date_t *slctd_date, bool day_changed, day_items_nb_t *inday)
+/* Free the current day linked list containing the events and appointments. */
+static void 
+day_free_list(void)
 {
-	long date;
-	date_t day;
-
-	if (slctd_date) 
-		day = *slctd_date;
-	else
-		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). */
-	apad->length = day_store_items(date, 
-		&inday->nb_events, &inday->nb_apoints);
-
-	/* Create the new pad with its new length. */
-	if (day_changed) 
-		apad->first_onscreen = 0;
-	apad->ptrwin = newpad(apad->length, apad->width);
+	struct day_item_s *p, *q;
 
-	return (inday);
+	for (p = day_items_ptr; p != 0; p = q) {
+		q = p->next;
+		free(p->mesg);
+		free(p);
+	}
+	day_items_ptr = NULL;
 }
 
-/* 
- * Store all of the items to be displayed for the selected day.
- * Items are of four types: recursive events, normal events, 
- * recursive appointments and normal appointments.
- * The items are stored in the linked list pointed by *day_items_ptr
- * and the length of the new pad to write is returned.
- * The number of events and appointments in the current day are also updated.
- */
-int day_store_items(long date, int *pnb_events, int *pnb_apoints)
+/* Add an event in the current day list */
+static struct day_item_s *
+day_add_event(int type, char *mesg, long day, int id)
 {
-	int pad_length;
-	int nb_events, nb_recur_events;
-	int nb_apoints, nb_recur_apoints;
-
-	pad_length = nb_events = nb_apoints = 0;
-	nb_recur_events = nb_recur_apoints = 0;
+	struct day_item_s *o, **i;
+	o = (struct day_item_s *) malloc(sizeof(struct day_item_s));
+	o->mesg = (char *) malloc(strlen(mesg) + 1);
+	strncpy(o->mesg, mesg, strlen(mesg) + 1);
+	o->type = type;
+	o->appt_dur = 0;
+	o->appt_pos = 0;
+	o->start = day;
+	o->evnt_id = id;
+	i = &day_items_ptr;
+	for (;;) {
+		if (*i == 0) {
+			o->next = *i;
+			*i = o;
+			break;
+		}
+		i = &(*i)->next;
+	}
+	return o;
+}
 
-	if (day_items_ptr != 0)
-		day_free_list();
-	nb_recur_events = day_store_recur_events(date);
-	nb_events = day_store_events(date);
-	*pnb_events = nb_events;
-	nb_recur_apoints = day_store_recur_apoints(date);
-	nb_apoints = day_store_apoints(date);
-	*pnb_apoints = nb_apoints;
-	pad_length = nb_recur_events + nb_events + 1 + 
-		3*(nb_recur_apoints + nb_apoints);
-	*pnb_apoints += nb_recur_apoints;
-	*pnb_events += nb_recur_events;
+/* Add an appointment in the current day list. */
+static struct day_item_s *
+day_add_apoint(int type, char *mesg, long start, long dur, char state, 
+    int real_pos)
+{
+	struct day_item_s *o, **i;
+	int insert_item = 0;
 
-	return pad_length;
+	o = (struct day_item_s *) malloc(sizeof(struct day_item_s));
+	o->mesg = (char *) malloc(strlen(mesg) + 1);
+	strncpy(o->mesg, mesg, strlen(mesg) + 1);
+	o->start = start;
+	o->appt_dur = dur;
+	o->appt_pos = real_pos;
+	o->state = state;
+	o->type = type;
+	o->evnt_id = 0;
+	i = &day_items_ptr;
+	for (;;) {
+		if (*i == 0) {
+			insert_item = 1;
+		} else if ( ((*i)->start > start) && 
+		    ((*i)->type > EVNT) ) {
+			insert_item = 1;
+		}	
+		if (insert_item) {
+			o->next = *i;
+			*i = o;
+			break;
+		}
+		i = &(*i)->next;
+	}
+	return o;
 }
 
-/* Free the current day linked list containing the events and appointments. */
-void day_free_list(void)
+/* 
+ * Store the events for the selected day in structure pointed
+ * by day_items_ptr. This is done by copying the events 
+ * from the general structure pointed by eventlist to the structure
+ * dedicated to the selected day. 
+ * Returns the number of events for the selected day.
+ */
+static int 
+day_store_events(long date)
 {
-	struct day_item_s *p, *q;
+	struct event_s *j;
+	struct day_item_s *ptr;
+	int e_nb = 0;
 
-	for (p = day_items_ptr; p != 0; p = q) {
-		q = p->next;
-		free(p->mesg);
-		free(p);
+	for (j = eventlist; j != 0; j = j->next) {
+		if (event_inday(j, date)) {
+			e_nb++;
+			ptr = day_add_event(EVNT, j->mesg, j->day, j->id);
+		}	
 	}
-	day_items_ptr = NULL;
+
+	return e_nb;
 }
 
 /* 
@@ -132,7 +144,8 @@ void day_free_list(void)
  * dedicated to the selected day. 
  * Returns the number of recurrent events for the selected day.
  */
-int day_store_recur_events(long date)
+static int 
+day_store_recur_events(long date)
 {
 	struct recur_event_s *j;
 	struct day_item_s *ptr;
@@ -150,26 +163,30 @@ int day_store_recur_events(long date)
 }
 
 /* 
- * Store the events for the selected day in structure pointed
- * by day_items_ptr. This is done by copying the events 
- * from the general structure pointed by eventlist to the structure
- * dedicated to the selected day. 
- * Returns the number of events for the selected day.
+ * Store the apoints for the selected day in structure pointed
+ * by day_items_ptr. This is done by copying the appointments
+ * from the general structure pointed by alist_p->root to the 
+ * structure dedicated to the selected day. 
+ * Returns the number of appointments for the selected day.
  */
-int day_store_events(long date)
+static int 
+day_store_apoints(long date)
 {
-	struct event_s *j;
+	apoint_llist_node_t *j;
 	struct day_item_s *ptr;
-	int e_nb = 0;
+	int a_nb = 0;
 
-	for (j = eventlist; j != 0; j = j->next) {
-		if (event_inday(j, date)) {
-			e_nb++;
-			ptr = day_add_event(EVNT, j->mesg, j->day, j->id);
+	pthread_mutex_lock(&(alist_p->mutex));
+	for (j = alist_p->root; j != 0; j = j->next) {
+		if (apoint_inday(j, date)) {
+			a_nb++;
+			ptr = day_add_apoint(APPT, j->mesg, j->start, j->dur, 
+			    j->state, 0);
 		}	
 	}
+	pthread_mutex_unlock(&(alist_p->mutex));
 
-	return e_nb;
+	return a_nb;
 }
 
 /* 
@@ -179,7 +196,8 @@ int day_store_events(long date)
  * structure dedicated to the selected day. 
  * Returns the number of recurrent appointments for the selected day.
  */
-int day_store_recur_apoints(long date)
+static int 
+day_store_recur_apoints(long date)
 {
 	recur_apoint_llist_node_t *j;
 	struct day_item_s *ptr;
@@ -203,87 +221,89 @@ int day_store_recur_apoints(long date)
 }
 
 /* 
- * Store the apoints for the selected day in structure pointed
- * by day_items_ptr. This is done by copying the appointments
- * from the general structure pointed by alist_p->root to the 
- * structure dedicated to the selected day. 
- * Returns the number of appointments for the selected day.
+ * Store all of the items to be displayed for the selected day.
+ * Items are of four types: recursive events, normal events, 
+ * recursive appointments and normal appointments.
+ * The items are stored in the linked list pointed by *day_items_ptr
+ * and the length of the new pad to write is returned.
+ * The number of events and appointments in the current day are also updated.
  */
-int day_store_apoints(long date)
+static int 
+day_store_items(long date, int *pnb_events, int *pnb_apoints)
 {
-	apoint_llist_node_t *j;
-	struct day_item_s *ptr;
-	int a_nb = 0;
+	int pad_length;
+	int nb_events, nb_recur_events;
+	int nb_apoints, nb_recur_apoints;
 
-	pthread_mutex_lock(&(alist_p->mutex));
-	for (j = alist_p->root; j != 0; j = j->next) {
-		if (apoint_inday(j, date)) {
-			a_nb++;
-			ptr = day_add_apoint(APPT, j->mesg, j->start, j->dur, 
-			    j->state, 0);
-		}	
-	}
-	pthread_mutex_unlock(&(alist_p->mutex));
+	pad_length = nb_events = nb_apoints = 0;
+	nb_recur_events = nb_recur_apoints = 0;
 
-	return a_nb;
+	if (day_items_ptr != 0)
+		day_free_list();
+	nb_recur_events = day_store_recur_events(date);
+	nb_events = day_store_events(date);
+	*pnb_events = nb_events;
+	nb_recur_apoints = day_store_recur_apoints(date);
+	nb_apoints = day_store_apoints(date);
+	*pnb_apoints = nb_apoints;
+	pad_length = nb_recur_events + nb_events + 1 + 
+		3*(nb_recur_apoints + nb_apoints);
+	*pnb_apoints += nb_recur_apoints;
+	*pnb_events += nb_recur_events;
+
+	return pad_length;
 }
 
-/* Add an event in the current day list */
-struct day_item_s *day_add_event(int type, char *mesg, long day, int id)
+/*
+ * Store the events and appointments for the selected day, and write
+ * those items in a pad. If selected day is null, then store items for current
+ * day. This is useful to speed up the appointment panel update.
+ */
+day_items_nb_t *
+day_process_storage(date_t *slctd_date, bool day_changed, day_items_nb_t *inday)
 {
-	struct day_item_s *o, **i;
-	o = (struct day_item_s *) malloc(sizeof(struct day_item_s));
-	o->mesg = (char *) malloc(strlen(mesg) + 1);
-	strncpy(o->mesg, mesg, strlen(mesg) + 1);
-	o->type = type;
-	o->appt_dur = 0;
-	o->appt_pos = 0;
-	o->start = day;
-	o->evnt_id = id;
-	i = &day_items_ptr;
-	for (;;) {
-		if (*i == 0) {
-			o->next = *i;
-			*i = o;
-			break;
-		}
-		i = &(*i)->next;
-	}
-	return o;
+	long date;
+	date_t day;
+
+	if (slctd_date) 
+		day = *slctd_date;
+	else
+		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). */
+	apad->length = day_store_items(date, 
+		&inday->nb_events, &inday->nb_apoints);
+
+	/* Create the new pad with its new length. */
+	if (day_changed) 
+		apad->first_onscreen = 0;
+	apad->ptrwin = newpad(apad->length, apad->width);
+
+	return (inday);
 }
 
-/* Add an appointment in the current day list. */
-struct day_item_s *day_add_apoint(int type, char *mesg, long start, long dur, 
-	char state, int real_pos)
+/*
+ * Returns a structure of type apoint_llist_node_t given a structure of type 
+ * day_item_s 
+ */
+static apoint_llist_node_t *
+day_item_s2apoint_s(struct day_item_s *p)
 {
-	struct day_item_s *o, **i;
-	int insert_item = 0;
+	apoint_llist_node_t *a;
 
-	o = (struct day_item_s *) malloc(sizeof(struct day_item_s));
-	o->mesg = (char *) malloc(strlen(mesg) + 1);
-	strncpy(o->mesg, mesg, strlen(mesg) + 1);
-	o->start = start;
-	o->appt_dur = dur;
-	o->appt_pos = real_pos;
-	o->state = state;
-	o->type = type;
-	o->evnt_id = 0;
-	i = &day_items_ptr;
-	for (;;) {
-		if (*i == 0) {
-			insert_item = 1;
-		} else if ( ((*i)->start > start) && 
-		    ((*i)->type > EVNT) ) {
-			insert_item = 1;
-		}	
-		if (insert_item) {
-			o->next = *i;
-			*i = o;
-			break;
-		}
-		i = &(*i)->next;
-	}
-	return o;
+	a = (apoint_llist_node_t *) malloc(sizeof(apoint_llist_node_t));
+	a->mesg = (char *) malloc(strlen(p->mesg) + 1);
+	a->state = p->state;
+	a->start = p->start;
+	a->dur = p->appt_dur;
+	a->mesg = p->mesg;
+	return a;
 }
 
 /* 
@@ -355,23 +375,6 @@ day_write_pad(long date, int width, int length, int incolor)
 	}
 }
 
-/*
- * Returns a structure of type apoint_llist_node_t given a structure of type 
- * day_item_s 
- */
-apoint_llist_node_t *day_item_s2apoint_s(struct day_item_s *p)
-{
-	apoint_llist_node_t *a;
-
-	a = (apoint_llist_node_t *) malloc(sizeof(apoint_llist_node_t));
-	a->mesg = (char *) malloc(strlen(p->mesg) + 1);
-	a->state = p->state;
-	a->start = p->start;
-	a->dur = p->appt_dur;
-	a->mesg = p->mesg;
-	return a;
-}
-
 /* Display an item inside a popup window. */
 void day_popup_item(void)
 {
@@ -431,6 +434,27 @@ void day_popup_item(void)
 	return 0;
 }
 
+/* Request the user to enter a new time. */
+static char *
+day_edit_time(long time) {
+	char *timestr;
+	char *msg_time = _("Enter the new time ([hh:mm] or [h:mm]) : ");
+        char *enter_str = _("Press [Enter] to continue");
+	char *fmt_msg = 
+	_("You entered an invalid time, should be [h:mm] or [hh:mm]");
+
+	while (1) {
+		status_mesg(msg_time, "");
+		timestr = date_sec2hour_str(time);
+		updatestring(swin, &timestr, 0, 1);
+		if (check_time(timestr) != 1 || strlen(timestr) == 0) {
+			status_mesg(fmt_msg, enter_str);
+			wgetch(swin);
+		} else
+			return timestr;
+	}
+}
+
 /* Edit an already existing item. */
 void 
 day_edit_item(int item_num)
@@ -644,27 +668,6 @@ day_edit_item(int item_num)
 	}
 }
 
-/* Request the user to enter a new time. */
-char *
-day_edit_time(long time) {
-	char *timestr;
-	char *msg_time = _("Enter the new time ([hh:mm] or [h:mm]) : ");
-        char *enter_str = _("Press [Enter] to continue");
-	char *fmt_msg = 
-	_("You entered an invalid time, should be [h:mm] or [hh:mm]");
-
-	while (1) {
-		status_mesg(msg_time, "");
-		timestr = date_sec2hour_str(time);
-		updatestring(swin, &timestr, 0, 1);
-		if (check_time(timestr) != 1 || strlen(timestr) == 0) {
-			status_mesg(fmt_msg, enter_str);
-			wgetch(swin);
-		} else
-			return timestr;
-	}
-}
-
 /*
  * In order to erase an item, we need to count first the number of
  * items for each type (in order: recurrent events, events, 
diff --git a/src/day.h b/src/day.h
index 49aa50b..0c8b046 100755
--- a/src/day.h
+++ b/src/day.h
@@ -1,4 +1,4 @@
-/*	$calcurse: day.h,v 1.13 2007/07/20 19:07:02 culot Exp $	*/
+/*	$calcurse: day.h,v 1.14 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,10 +27,7 @@
 #ifndef CALCURSE_DAY_H
 #define CALCURSE_DAY_H
 
-#include <stdio.h>
-
 #include "calendar.h"
-#include "apoint.h"
 
 #define MAX_TYPES	4
 
@@ -64,20 +61,10 @@ struct day_saved_item_s {
 };
 
 day_items_nb_t 	       *day_process_storage(date_t *, bool, day_items_nb_t *);
-int 			day_store_items(long, int *, int *);
-void 			day_free_list(void);
-int 			day_store_recur_events(long);
-int 			day_store_events(long);
-int 			day_store_recur_apoints(long);
-int 			day_store_apoints(long);
-struct day_item_s      *day_add_event(int, char *, long, int);
-struct day_item_s      *day_add_apoint(int, char *, long, long, char, int);
 void 			day_write_pad(long, int, int, int);
-apoint_llist_node_t    *day_item_s2apoint_s(struct day_item_s *);
 void 			day_popup_item(void);
 int	 		day_check_if_item(date_t);
 void 			day_edit_item(int);
-char 		       *day_edit_time(long);
 int 			day_erase_item(long, int, int);
 struct day_item_s      *day_get_item(int);
 int 			day_item_nb(long, int, int);
diff --git a/src/event.c b/src/event.c
index 95573ab..6aca296 100755
--- a/src/event.c
+++ b/src/event.c
@@ -1,4 +1,4 @@
-/*	$calcurse: event.c,v 1.3 2007/04/04 19:37:14 culot Exp $	*/
+/*	$calcurse: event.c,v 1.4 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,7 +24,6 @@
  *
  */
 
-#include <ncurses.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -33,7 +32,6 @@
 #include "vars.h"
 #include "i18n.h"
 #include "event.h"
-#include "utils.h"
 
 struct event_s *eventlist;
 
diff --git a/src/event.h b/src/event.h
index 6e06691..3b2e794 100755
--- a/src/event.h
+++ b/src/event.h
@@ -1,4 +1,4 @@
-/*	$calcurse: event.h,v 1.1 2006/07/31 21:00:03 culot Exp $	*/
+/*	$calcurse: event.h,v 1.2 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -40,9 +40,9 @@ struct event_s {
 extern struct event_s *eventlist;
 
 struct event_s *event_new(char *, long, int);
-unsigned event_inday(struct event_s *o, long start);
-void event_write(struct event_s *o, FILE * f);
-struct event_s *event_scan(FILE * f, struct tm start, int id);
-void event_delete_bynum(long start, unsigned num);
+unsigned 	event_inday(struct event_s *, long);
+void 		event_write(struct event_s *, FILE *);
+struct event_s *event_scan(FILE *, struct tm, int);
+void 		event_delete_bynum(long, unsigned);
 
 #endif /* CALCURSE_EVENT_H */
diff --git a/src/help.c b/src/help.c
index 255e3a6..b9bff60 100755
--- a/src/help.c
+++ b/src/help.c
@@ -1,4 +1,4 @@
-/*	$calcurse: help.c,v 1.18 2007/07/23 19:29:34 culot Exp $	*/
+/*	$calcurse: help.c,v 1.19 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,28 +24,35 @@
  *
  */
 
-#include <ncurses.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <string.h>
-#include <stdbool.h>
 #include <ctype.h>
 #include <sys/types.h>
 
 #include "i18n.h"
 #include "help.h"
 #include "custom.h"
-#include "vars.h"
 #include "utils.h"
-#include "apoint.h"
 #include "notify.h"
-#include "wins.h"
+
+/* Returns the number of lines in an help text. */
+static int 
+get_help_lines(char *text)
+{
+	int i;
+	int nl = 0;
+
+	for (i = 0; text[i]; i++) {
+		if (text[i] == '\n') nl++;
+	}
+	return nl + 1;
+}
 
 /* 
  * Write the desired help text inside the help pad, and return the number
  * of lines that were written. 
- * */
-int 
+ */
+static int 
 write_help_pad(WINDOW *win, char *title, char *text, int pad_width)
 {
 	int nl_title = 0;
@@ -61,18 +68,6 @@ write_help_pad(WINDOW *win, char *title, char *text, int pad_width)
 	return nl_text + nl_title;
 }
 
-int 
-get_help_lines(char *text)
-{
-	int i;
-	int nl = 0;
-
-	for (i = 0; text[i]; i++) {
-		if (text[i] == '\n') nl++;
-	}
-	return nl + 1;
-}
-
 /* Draws the help screen */
 void 
 help_screen(void)
diff --git a/src/help.h b/src/help.h
index e072f90..df4fc0a 100755
--- a/src/help.h
+++ b/src/help.h
@@ -1,4 +1,4 @@
-/*	$calcurse: help.h,v 1.3 2007/07/23 19:29:34 culot Exp $	*/
+/*	$calcurse: help.h,v 1.4 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,15 +27,11 @@
 #ifndef CALCURSE_HELP_H
 #define CALCURSE_HELP_H
 
-#include <ncurses.h>
-
 typedef struct {
 	char *title;
 	char *text;
 } help_page_t;
 
-int 	write_help_pad(WINDOW *, char *, char *, int);
-int 	get_help_lines(char *);
 void 	help_screen(void);
 
 #endif /* CALCURSE_HELP_H */
diff --git a/src/io.c b/src/io.c
index 95dbbb5..376644d 100755
--- a/src/io.c
+++ b/src/io.c
@@ -1,4 +1,4 @@
-/*	$calcurse: io.c,v 1.17 2007/07/01 17:57:57 culot Exp $	*/
+/*	$calcurse: io.c,v 1.18 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,13 +24,8 @@
  *
  */
 
-#include <ncurses.h>
-#include <pthread.h>
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stdbool.h>
-#include <sys/types.h>
 #include <sys/stat.h>
 #include <time.h>
 #include <math.h>
@@ -42,9 +37,7 @@
 #include "todo.h"
 #include "event.h"
 #include "apoint.h"
-#include "recur.h"
 #include "io.h"
-#include "calendar.h"
 
 typedef enum {
 	PROGRESS_BAR_SAVE,
@@ -548,7 +541,7 @@ io_save_cal(conf_t *conf)
  * recursive item (which can also be either an event or an appointment).
  */ 
 void 
-load_app(void)
+io_load_app(void)
 {
 	FILE *data_file;
 	int c, is_appointment, is_event, is_recursive;
@@ -559,7 +552,7 @@ load_app(void)
 	int freq;
 	char type, state;
 	char *error = 
-		_("FATAL ERROR in load_app: wrong format in the appointment or event\n");
+		_("FATAL ERROR in io_load_app: wrong format in the appointment or event\n");
 
         t = time(NULL);
         lt = localtime(&t);
@@ -578,7 +571,7 @@ load_app(void)
                  */
                 if (fscanf(data_file, "%u / %u / %u ", 
                            &start.tm_mon, &start.tm_mday, &start.tm_year) != 3) {
-                        fputs(_("FATAL ERROR in load_app: "
+                        fputs(_("FATAL ERROR in io_load_app: "
 				"syntax error in the item date\n"), stderr);
                         exit(EXIT_FAILURE);
                 }
@@ -593,7 +586,7 @@ load_app(void)
                 else if (c == '[')
                         is_event = 1;
                 else {
-                        fputs(_("FATAL ERROR in load_app: "
+                        fputs(_("FATAL ERROR in io_load_app: "
 				"no event nor appointment found\n"), stderr);
                         exit(EXIT_FAILURE);
                 }
@@ -689,7 +682,7 @@ load_app(void)
 
 /* Load the todo data */
 int
-load_todo(void)
+io_load_todo(void)
 {
 	FILE *data_file;
 	char *mesg_line1 = _("Failed to open todo file");
@@ -729,7 +722,7 @@ load_todo(void)
 
 /* Checks if data files exist. If not, create them */
 int 
-check_data_files(void)
+io_check_data_files(void)
 {
 	FILE *data_file;
 	int no_data_file;
@@ -775,7 +768,7 @@ check_data_files(void)
 
 /* Draw the startup screen */
 void 
-startup_screen(bool skip_dialogs, int no_data_file)
+io_startup_screen(bool skip_dialogs, int no_data_file)
 {
 	char *welcome_mesg = 
 	    _("Welcome to Calcurse. Missing data files were created.");
diff --git a/src/io.h b/src/io.h
index 163b935..bc956fb 100755
--- a/src/io.h
+++ b/src/io.h
@@ -1,4 +1,4 @@
-/*	$calcurse: io.h,v 1.6 2007/05/06 13:32:42 culot Exp $	*/
+/*	$calcurse: io.h,v 1.7 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -35,13 +35,13 @@ typedef enum {
 	IO_EXPORT_NBMODES
 } export_mode_t;
 
-void io_init(char *cfile);
-void io_extract_data(char *dst_data, const char *org, int len);
-void io_save_cal(conf_t *conf); 
-void load_app(void);
-int load_todo(void);
-int check_data_files(void);
-void startup_screen(bool skip_dialogs, int no_data_file);
-void io_export_data(export_mode_t mode, conf_t *conf);
+void 	io_init(char *);
+void 	io_extract_data(char *, const char *, int);
+void 	io_save_cal(conf_t *); 
+void 	io_load_app(void);
+int 	io_load_todo(void);
+int 	io_check_data_files(void);
+void 	io_startup_screen(bool, int);
+void 	io_export_data(export_mode_t, conf_t *);
 
 #endif /* CALCURSE_IO_H */
diff --git a/src/notify.c b/src/notify.c
index 1d7fb42..e69317e 100755
--- a/src/notify.c
+++ b/src/notify.c
@@ -1,4 +1,4 @@
-/*	$calcurse: notify.c,v 1.15 2007/07/21 19:36:45 culot Exp $	*/
+/*	$calcurse: notify.c,v 1.16 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,22 +24,15 @@
  *
  */
 
-#include <ncurses.h>
-#include <pthread.h>
 #include <time.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 
 #include "i18n.h"
 #include "utils.h"
 #include "custom.h"
-#include "vars.h"
-#include "apoint.h"
 #include "notify.h"
-#include "recur.h"
-#include "wins.h"
 
 static struct notify_vars_s *notify = NULL;
 static struct notify_app_s *notify_app = NULL;
@@ -78,6 +71,14 @@ notify_init_vars(void)
 		nbar->shell = "/bin/sh"; 
 }
 
+/* Extract the appointment file name from the complete file path. */
+static void 
+extract_aptsfile(void)
+{
+	notify->apts_file = strrchr(path_apts, '/');
+	notify->apts_file++;
+}
+
 /* 
  * Create the notification bar, by initializing all the variables and 
  * creating the notification window (l is the number of lines, c the
@@ -93,7 +94,7 @@ notify_init_bar(window_t *win)
 	pthread_mutex_init(&notify_app->mutex, NULL);
 	notify_app->got_app = 0;
 	notify->win = newwin(win->h, win->w, win->y, win->x);
-	notify_extract_aptsfile();
+	extract_aptsfile();
 }
 
 /* Stop the notify-bar main thread. */
@@ -115,6 +116,26 @@ notify_reinit_bar(int l, int c, int y, int x)
 	notify->win = newwin(l, c, y, x);
 }
 
+/* Launch user defined command as a notification. */
+static void
+launch_cmd(char *cmd, char *shell)
+{
+	int pid;
+
+	pid = fork();
+	
+	if (pid < 0) {
+		fputs(_("FATAL ERROR in launch_cmd: could not fork\n"), 
+		    stderr);
+		exit(EXIT_FAILURE);
+	} else if (pid == 0) { /* Child: launch user defined command */
+		if (execlp(shell, shell, "-c", cmd, (char *)NULL) < 0)
+			fputs(_("FATAL ERROR in launch_cmd: could not "
+			    "launch user command\n"), stderr);
+		exit(EXIT_FAILURE);
+	}
+}
+
 /* 
  * Update the notification bar. This is useful when changing color theme
  * for example.
@@ -180,7 +201,7 @@ notify_update_bar(void)
 			if (blinking && 
 			    !(notify_app->state & APOINT_NOTIFIED)) {
 				notify_app->state |= APOINT_NOTIFIED;
-				notify_launch_cmd(nbar->cmd, nbar->shell);
+				launch_cmd(nbar->cmd, nbar->shell);
 			}
 			pthread_mutex_unlock(&nbar->mutex);
 		} else {
@@ -200,14 +221,6 @@ notify_update_bar(void)
 	pthread_mutex_unlock(&notify->mutex);
 }
 
-/* Extract the appointment file name from the complete file path. */
-void 
-notify_extract_aptsfile(void)
-{
-	notify->apts_file = strrchr(path_apts, '/');
-	notify->apts_file++;
-}
-
 /* Update the notication bar content */
 static void *
 notify_main_thread(void *arg)
@@ -380,26 +393,6 @@ notify_same_recur_item(recur_apoint_llist_node_t *i)
 	return same;
 }
 
-/* Launch user defined command as a notification. */
-void
-notify_launch_cmd(char *cmd, char *shell)
-{
-	int pid;
-
-	pid = fork();
-	
-	if (pid < 0) {
-		fputs(_("FATAL ERROR in notify_launch_cmd: could not fork\n"), 
-		    stderr);
-		exit(EXIT_FAILURE);
-	} else if (pid == 0) { /* Child: launch user defined command */
-		if (execlp(shell, shell, "-c", cmd, (char *)NULL) < 0)
-			fputs(_("FATAL ERROR in notify_launch_cmd: could not "
-			    "launch user command\n"), stderr);
-		exit(EXIT_FAILURE);
-	}
-}
-
 /* Launch the notify-bar main thread. */
 void 
 notify_start_main_thread(void) 
diff --git a/src/notify.h b/src/notify.h
index c1fe957..85ae733 100755
--- a/src/notify.h
+++ b/src/notify.h
@@ -1,4 +1,4 @@
-/*	$calcurse: notify.h,v 1.10 2007/07/23 19:30:04 culot Exp $	*/
+/*	$calcurse: notify.h,v 1.11 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,9 +27,6 @@
 #ifndef CALCURSE_NOTIFY_H
 #define CALCURSE_NOTIFY_H
 
-#include <ncurses.h>
-#include <pthread.h>
-
 #include "wins.h"
 #include "apoint.h"
 #include "recur.h"
@@ -60,14 +57,11 @@ void 	notify_start_main_thread(void);
 void 	notify_stop_main_thread(void);
 void 	notify_reinit_bar(int, int, int, int);
 void 	notify_update_bar(void);
-void 	notify_extract_aptsfile(void);
 void 	notify_check_next_app(void);
 void 	notify_check_added(char *, long, char);
 void 	notify_check_repeated(recur_apoint_llist_node_t *);
 int 	notify_same_item(long);
 int 	notify_same_recur_item(recur_apoint_llist_node_t *);
-void 	notify_launch_cmd(char *, char *);
-void 	notify_catch_children(void);
 void 	notify_config_bar(void);
 
 #endif /* CALCURSE_NOTIFY_H */
diff --git a/src/recur.c b/src/recur.c
index d30d760..52bc44d 100755
--- a/src/recur.c
+++ b/src/recur.c
@@ -1,4 +1,4 @@
-/*	$calcurse: recur.c,v 1.26 2007/07/01 17:53:42 culot Exp $	*/
+/*	$calcurse: recur.c,v 1.27 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,9 +24,7 @@
  *
  */
 
-#include <ncurses.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <string.h>
 #include <ctype.h>
 #include <sys/types.h>
@@ -34,13 +32,9 @@
 
 #include "i18n.h"
 #include "utils.h"
-#include "apoint.h"
-#include "event.h"
-#include "recur.h"
 #include "notify.h"
-#include "args.h"
 #include "day.h"
-#include "vars.h"
+#include "recur.h"
 
 recur_apoint_llist_t *recur_alist_p;
 struct recur_event_s *recur_elist;
@@ -170,7 +164,8 @@ int recur_char2def(char type){
 }
 
 /* Write days for which recurrent items should not be repeated. */
-void recur_write_exc(struct days_s *exc, FILE *f) {
+static void 
+recur_write_exc(struct days_s *exc, FILE *f) {
 	struct tm *lt;
 	time_t t;
 	int st_mon, st_day, st_year;
@@ -186,78 +181,6 @@ void recur_write_exc(struct days_s *exc, FILE *f) {
 	}
 }
 
-/* Writting of a recursive appointment into file. */
-void 
-recur_apoint_write(recur_apoint_llist_node_t *o, FILE *f)
-{
-	struct tm *lt;
-	time_t t;
-
-	t = o->start;
-	lt = localtime(&t);
-	fprintf(f, "%02u/%02u/%04u @ %02u:%02u",
-	    lt->tm_mon + 1, lt->tm_mday, 1900 + lt->tm_year,
-	    lt->tm_hour, lt->tm_min);
-
-	t = o->start + o->dur;
-	lt = localtime(&t);
-	fprintf(f, " -> %02u/%02u/%04u @ %02u:%02u",
-	    lt->tm_mon + 1, lt->tm_mday, 1900 + lt->tm_year,
-	    lt->tm_hour, lt->tm_min);
-
-	t = o->rpt->until;
-	if (t == 0) { /* We have an endless recurrent appointment. */
-		fprintf(f, " {%d%c", o->rpt->freq, 
-		    recur_def2char(o->rpt->type)); 
-	} else {
-		lt = localtime(&t);
-		fprintf(f, " {%d%c -> %02u/%02u/%04u",
-		    o->rpt->freq, recur_def2char(o->rpt->type),
-		    lt->tm_mon + 1, lt->tm_mday, 1900 + lt->tm_year);
-	}
-	if (o->exc != 0) 
-		recur_write_exc(o->exc, f);
-	if (o->state & APOINT_NOTIFY)
-		fprintf(f, "} !");
-	else
-		fprintf(f, "} |");
-	fprintf(f, "%s\n", o->mesg);
-}
-
-/* Writting of a recursive event into file. */
-void recur_event_write(struct recur_event_s *o, FILE *f)
-{
-	struct tm *lt;
-	time_t t;
-	int st_mon, st_day, st_year;
-	int end_mon, end_day, end_year;
-	
-	t = o->day;
-	lt = localtime(&t);
-	st_mon = lt->tm_mon + 1;
-	st_day = lt->tm_mday;
-	st_year = lt->tm_year + 1900;
-	t = o->rpt->until;
-	if (t == 0) { /* We have an endless recurrent event. */
-		fprintf(f, "%02u/%02u/%04u [%d] {%d%c",
-			st_mon, st_day, st_year, o->id, o->rpt->freq,
-			recur_def2char(o->rpt->type));
-		if (o->exc != 0) recur_write_exc(o->exc, f);
-		fprintf(f,"} %s\n", o->mesg);
-	} else {
-		lt = localtime(&t);
-		end_mon = lt->tm_mon + 1;
-		end_day = lt->tm_mday;
-		end_year = lt->tm_year + 1900;
-		fprintf(f, "%02u/%02u/%04u [%d] {%d%c -> %02u/%02u/%04u",
-			st_mon, st_day, st_year, o->id, 
-			o->rpt->freq, recur_def2char(o->rpt->type),
-			end_mon, end_day, end_year);
-		if (o->exc != 0) recur_write_exc(o->exc, f);
-		fprintf(f, "} %s\n", o->mesg);
-	}		
-}
-
 /* Load the recursive appointment description */
 recur_apoint_llist_node_t *
 recur_apoint_scan(FILE * f, struct tm start, struct tm end, char type, 
@@ -348,6 +271,79 @@ struct recur_event_s *recur_event_scan(FILE * f, struct tm start, int id,
 		freq, tuntil, exc);
 }
 
+/* Writting of a recursive appointment into file. */
+static void 
+recur_apoint_write(recur_apoint_llist_node_t *o, FILE *f)
+{
+	struct tm *lt;
+	time_t t;
+
+	t = o->start;
+	lt = localtime(&t);
+	fprintf(f, "%02u/%02u/%04u @ %02u:%02u",
+	    lt->tm_mon + 1, lt->tm_mday, 1900 + lt->tm_year,
+	    lt->tm_hour, lt->tm_min);
+
+	t = o->start + o->dur;
+	lt = localtime(&t);
+	fprintf(f, " -> %02u/%02u/%04u @ %02u:%02u",
+	    lt->tm_mon + 1, lt->tm_mday, 1900 + lt->tm_year,
+	    lt->tm_hour, lt->tm_min);
+
+	t = o->rpt->until;
+	if (t == 0) { /* We have an endless recurrent appointment. */
+		fprintf(f, " {%d%c", o->rpt->freq, 
+		    recur_def2char(o->rpt->type)); 
+	} else {
+		lt = localtime(&t);
+		fprintf(f, " {%d%c -> %02u/%02u/%04u",
+		    o->rpt->freq, recur_def2char(o->rpt->type),
+		    lt->tm_mon + 1, lt->tm_mday, 1900 + lt->tm_year);
+	}
+	if (o->exc != 0) 
+		recur_write_exc(o->exc, f);
+	if (o->state & APOINT_NOTIFY)
+		fprintf(f, "} !");
+	else
+		fprintf(f, "} |");
+	fprintf(f, "%s\n", o->mesg);
+}
+
+/* Writting of a recursive event into file. */
+static void 
+recur_event_write(struct recur_event_s *o, FILE *f)
+{
+	struct tm *lt;
+	time_t t;
+	int st_mon, st_day, st_year;
+	int end_mon, end_day, end_year;
+	
+	t = o->day;
+	lt = localtime(&t);
+	st_mon = lt->tm_mon + 1;
+	st_day = lt->tm_mday;
+	st_year = lt->tm_year + 1900;
+	t = o->rpt->until;
+	if (t == 0) { /* We have an endless recurrent event. */
+		fprintf(f, "%02u/%02u/%04u [%d] {%d%c",
+			st_mon, st_day, st_year, o->id, o->rpt->freq,
+			recur_def2char(o->rpt->type));
+		if (o->exc != 0) recur_write_exc(o->exc, f);
+		fprintf(f,"} %s\n", o->mesg);
+	} else {
+		lt = localtime(&t);
+		end_mon = lt->tm_mon + 1;
+		end_day = lt->tm_mday;
+		end_year = lt->tm_year + 1900;
+		fprintf(f, "%02u/%02u/%04u [%d] {%d%c -> %02u/%02u/%04u",
+			st_mon, st_day, st_year, o->id, 
+			o->rpt->freq, recur_def2char(o->rpt->type),
+			end_mon, end_day, end_year);
+		if (o->exc != 0) recur_write_exc(o->exc, f);
+		fprintf(f, "} %s\n", o->mesg);
+	}		
+}
+
 /* Write recursive items to file. */
 void recur_save_data(FILE *f)
 {
diff --git a/src/recur.h b/src/recur.h
index aca1b3d..a582ca5 100755
--- a/src/recur.h
+++ b/src/recur.h
@@ -1,4 +1,4 @@
-/*	$calcurse: recur.h,v 1.12 2007/07/01 17:53:42 culot Exp $	*/
+/*	$calcurse: recur.h,v 1.13 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -27,10 +27,6 @@
 #ifndef CALCURSE_RECUR_H
 #define CALCURSE_RECUR_H
 
-#include "apoint.h"
-#include "notify.h"
-#include "vars.h"
-
 typedef enum { RECUR_NO,
 	RECUR_DAILY,
 	RECUR_WEEKLY,
@@ -84,11 +80,6 @@ struct recur_event_s	       *recur_event_new(char *, long, int, int, int,
 				    long, struct days_s *);
 char 				recur_def2char(int);
 int 				recur_char2def(char);
-void 				recur_write_exc(struct days_s *, FILE *);
-void 				recur_apoint_write(recur_apoint_llist_node_t *,
-				    FILE *);
-void 				recur_event_write(struct recur_event_s *, 
-				    FILE *);
 recur_apoint_llist_node_t      *recur_apoint_scan(FILE *, struct tm, struct tm,
 				    char, int, struct tm, struct days_s *, 
 				    char);
diff --git a/src/sigs.c b/src/sigs.c
index a544952..4928744 100755
--- a/src/sigs.c
+++ b/src/sigs.c
@@ -1,4 +1,4 @@
-/*	$Id: sigs.c,v 1.1 2007/07/23 19:31:12 culot Exp $	*/
+/*	$Id: sigs.c,v 1.2 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -26,14 +26,10 @@
 
 #include <sys/types.h>
 #include <sys/wait.h>
-#include <ncurses.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <signal.h>
 
 #include "i18n.h"
-#include "utils.h"
-#include "wins.h"
 #include "vars.h"
 
 /* 
diff --git a/src/todo.c b/src/todo.c
index c793baa..9809f22 100755
--- a/src/todo.c
+++ b/src/todo.c
@@ -1,4 +1,4 @@
-/*	$calcurse: todo.c,v 1.12 2007/07/21 19:35:40 culot Exp $	*/
+/*	$calcurse: todo.c,v 1.13 2007/07/28 13:11:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,11 +24,9 @@
  *
  */
 
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include "vars.h"
 #include "utils.h"
 #include "i18n.h"
 #include "todo.h"
@@ -80,6 +78,30 @@ todo_add(char *mesg, int id)
 	return o;
 }
 
+/* Delete an item from the todo linked list. */
+static void 
+todo_delete_bynum(unsigned num)
+{
+	unsigned n;
+	struct todo_s *i, **iptr;
+
+	n = 0;
+	iptr = &todolist;
+	for (i = todolist; i != 0; i = i->next) {
+		if (n == num) {
+			*iptr = i->next;
+			free(i->mesg);
+			free(i);
+			return;
+		}
+		iptr = &i->next;
+		n++;
+	}
+	/* NOTREACHED */
+	fputs(_("FATAL ERROR in todo_delete_bynum: no such todo\n"), stderr);
+	exit(EXIT_FAILURE);
+}
+
 /* Delete an item from the ToDo list. */
 void 
 todo_delete(conf_t *conf, int *nb_tod, int *hilt_tod)
@@ -112,51 +134,11 @@ todo_delete(conf_t *conf, int *nb_tod, int *hilt_tod)
 	}
 }
 
-
-
-/* Delete an item from the todo linked list. */
-void 
-todo_delete_bynum(unsigned num)
-{
-	unsigned n;
-	struct todo_s *i, **iptr;
-
-	n = 0;
-	iptr = &todolist;
-	for (i = todolist; i != 0; i = i->next) {
-		if (n == num) {
-			*iptr = i->next;
-			free(i->mesg);
-			free(i);
-			return;
-		}
-		iptr = &i->next;
-		n++;
-	}
-	/* NOTREACHED */
-	fputs(_("FATAL ERROR in todo_delete_bynum: no such todo\n"), stderr);
-	exit(EXIT_FAILURE);
-}
-
-/* Returns a structure containing the selected item. */
-struct todo_s *
-todo_get_item(int item_number)
-{
-	struct todo_s *o;
-	int i;
-	
-	o = todolist;
-	for (i = 1; i < item_number; i++) {
-		o = o->next;
-	}
-	return o;
-}
-
 /* 
  * Returns the position into the linked list corresponding to the
  * given todo_s item.
  */
-int 
+static int 
 todo_get_position(struct todo_s *i)
 {
 	struct todo_s *o;
@@ -178,6 +160,20 @@ todo_get_position(struct todo_s *i)
 	} 
 }
 
+/* Returns a structure containing the selected item. */
+static struct todo_s *
+todo_get_item(int item_number)
+{
+	struct todo_s *o;
+	int i;
+	
+	o = todolist;
+	for (i = 1; i < item_number; i++) {
+		o = o->next;
+	}
+	return o;
+}
+
 /* Change an item priority by pressing '+' or '-' inside TODO panel. */
 int 
 todo_chg_priority(int action, int item_num)
diff --git a/src/todo.h b/src/todo.h
index 48b1b07..30b8056 100755
--- a/src/todo.h
+++ b/src/todo.h
@@ -1,4 +1,4 @@
-/*	$calcurse: todo.h,v 1.7 2007/07/23 19:30:17 culot Exp $	*/
+/*	$calcurse: todo.h,v 1.8 2007/07/28 13:11:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -40,9 +40,6 @@ extern struct todo_s *todolist;
 int 		todo_new_item(int); 
 struct todo_s  *todo_add(char *, int);
 void		todo_delete(conf_t *, int *, int *);
-void 		todo_delete_bynum(unsigned);
-struct todo_s  *todo_get_item(int);
-int 		todo_get_position(struct todo_s *);
 int 		todo_chg_priority(int, int);
 void 		todo_edit_item(int);
 void		todo_update_panel(window_t *, int, int, int, int, char **);
diff --git a/src/utils.c b/src/utils.c
index ed620fd..07a6175 100755
--- a/src/utils.c
+++ b/src/utils.c
@@ -1,4 +1,4 @@
-/*	$calcurse: utils.c,v 1.32 2007/07/23 19:26:38 culot Exp $	*/
+/*	$calcurse: utils.c,v 1.33 2007/07/28 13:11:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,21 +24,17 @@
  *
  */
 
-#include <ncurses.h>
 #include <time.h>	
 #include <string.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <ctype.h>
-#include <stdbool.h>
 #include <sys/types.h>
 #include <math.h>
 
 #include "i18n.h"
-#include "utils.h"
 #include "wins.h"
 #include "custom.h"
-#include "vars.h"
+#include "utils.h"
 
 static unsigned status_page;
 
@@ -135,34 +131,13 @@ print_in_middle(WINDOW * win, int starty, int startx, int width, char *string)
 	custom_remove_attr(win, ATTR_HIGHEST);
 }
 
-/* Delete a character at the given position in string. */
-void del_char(int pos, char *str)
-{
-	int len;
-
-	str += pos;
-	len = strlen(str) + 1;
-	memmove(str, str + 1, len);
-}
-
-/* Add a character at the given position in string. */
-char *add_char(int pos, int ch, char *str)
-{
-	int len;
-
-	str += pos;
-	len = strlen(str) + 1;
-	memmove(str + 1, str, len);
-	*str = ch;
-	return (str += len);
-}
-
 /* 
  * Draw the cursor at the correct position in string.
  * As echoing is not set, we need to know the string we are working on to 
  * handle display correctly.
  */
-void showcursor(WINDOW *win, int y, int pos, char *str, int l, int offset)
+static void 
+showcursor(WINDOW *win, int y, int pos, char *str, int l, int offset)
 {
 	char *nc;
 
@@ -172,7 +147,8 @@ void showcursor(WINDOW *win, int y, int pos, char *str, int l, int offset)
 }
 
 /* Print the string at the desired position. */
-void showstring(WINDOW *win, int y, int x, char *str, int len, int pos)
+static void 
+showstring(WINDOW *win, int y, int x, char *str, int len, int pos)
 {
 	const int rec = 30, border = 3;
 	const int max_col = col - border, max_len = max_col - rec;
@@ -198,6 +174,30 @@ void showstring(WINDOW *win, int y, int x, char *str, int len, int pos)
 	showcursor(win, y, pos, orig, len, offset);
 }
 
+/* Delete a character at the given position in string. */
+static void 
+del_char(int pos, char *str)
+{
+	int len;
+
+	str += pos;
+	len = strlen(str) + 1;
+	memmove(str, str + 1, len);
+}
+
+/* Add a character at the given position in string. */
+static char *
+add_char(int pos, int ch, char *str)
+{
+	int len;
+
+	str += pos;
+	len = strlen(str) + 1;
+	memmove(str + 1, str, len);
+	*str = ch;
+	return (str += len);
+}
+
 /* 
  * Getstring allows to get user input and to print it on a window,
  * even if noecho() is on. This function is also used to modify an existing
@@ -338,54 +338,6 @@ int is_all_digit(char *string)
 	return all_digit;
 }
 
-/* draw panel border in color */
-void 
-border_color(WINDOW *window)
-{
-        int color_attr    = A_BOLD;
-        int no_color_attr = A_BOLD;
-
-        if (colorize) {
-                wattron(window, color_attr | COLOR_PAIR(COLR_CUSTOM));
-                box(window, 0, 0);
-        } else {
-                wattron(window, no_color_attr);
-                box(window, 0, 0);
-        }
-
-	if (colorize) {
-                wattroff(window, color_attr | COLOR_PAIR(COLR_CUSTOM));
-        } else {
-                wattroff(window, no_color_attr);
-        }
-
-	wnoutrefresh(window);
-}
-
-/* draw panel border without any color */
-void 
-border_nocolor(WINDOW *window)
-{
-        int color_attr   = A_BOLD;
-        int no_color_attr = A_DIM;
-
-        if (colorize) {
-                wattron(window, color_attr | COLOR_PAIR(COLR_DEFAULT));
-        } else {
-                wattron(window, no_color_attr);
-        }
-        
-        box(window, 0, 0);
-        
-        if (colorize) {
-                wattroff(window, color_attr | COLOR_PAIR(COLR_DEFAULT));
-        } else {
-                wattroff(window, no_color_attr);
-        } 
-
-	wnoutrefresh(window);
-}
-
 /* 
  * Draws the status bar. 
  * To add a keybinding, insert a new binding_t item, add it in the *binding
@@ -617,6 +569,43 @@ get_sec_date(date_t date)
 	return long_date;
 }
 
+/*
+ * Check if the entered date is of a valid format.
+ * First check the format by itself, and then check the 
+ * numbers correctness.
+ */
+int
+check_date(char *date)
+{
+	int ok = 0;
+	char month[3] = "";
+	char day[3] = "";
+	char year[5] = "";
+	if ( 
+			(strlen(date) == 10) &
+			(isdigit(date[0]) != 0) &
+			(isdigit(date[1]) != 0) &
+			(date[2] == '/') &
+			(isdigit(date[3]) != 0) &
+			(isdigit(date[4]) != 0) &
+			(date[5] == '/') &
+			(isdigit(date[6])!=0) & (isdigit(date[7])!=0) & 
+			(isdigit(date[8])!=0) & (isdigit(date[9])!=0)
+	) {
+		strncpy(month, date, 2);
+		strncpy(day, date + 3, 2);
+		strncpy(year, date + 6, 4);
+		if ( (atoi(month) <= 12) & 
+		     (atoi(month) >= 1)  &
+		     (atoi(day) <= 31) &
+		     (atoi(day) >= 1) &
+		     (atoi(year) <= 9999) &
+		     (atoi(year) > 1))
+		ok = 1;		
+	}
+	return ok;
+}
+
 long 
 min2sec(unsigned minutes)
 {
diff --git a/src/utils.h b/src/utils.h
index 6e7ff1a..ec06c1b 100755
--- a/src/utils.h
+++ b/src/utils.h
@@ -1,4 +1,4 @@
-/*	$calcurse: utils.h,v 1.21 2007/07/23 19:26:38 culot Exp $	*/
+/*	$calcurse: utils.h,v 1.22 2007/07/28 13:11:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -28,7 +28,6 @@
 #define CALCURSE_UTILS_H
 
 #include "calendar.h"
-#include "vars.h"
 
 #define MAX(x,y) 	((x)>(y)?(x):(y))
 #define MIN(x,y) 	((x)<(y)?(x):(y))
@@ -59,15 +58,9 @@ void	erase_status_bar(void);
 void 	erase_window_part(WINDOW *, int, int, int, int);
 WINDOW *popup(int, int, int, int, char *);
 void 	print_in_middle(WINDOW *, int, int, int, char *);
-void 	del_char(int, char *);
-char   *add_char(int, int, char *);
-void 	showcursor(WINDOW *, int, int, char *, int, int);
-void 	showstring(WINDOW *, int, int, char *, int, int);
 int 	getstring(WINDOW *, char *, int, int, int);
 int 	updatestring(WINDOW *, char **, int, int);
 int 	is_all_digit(char *);
-void 	border_color(WINDOW *);
-void 	border_nocolor(WINDOW *);
 void 	status_bar(void);
 long 	date2sec(date_t, unsigned, unsigned);
 char   *date_sec2hour_str(long);
@@ -76,6 +69,7 @@ void 	date_sec2ical_date(long, char *);
 void 	date_sec2ical_datetime(long, char *);
 long 	update_time_in_date(long, unsigned, unsigned);
 long 	get_sec_date(date_t);
+int	check_date(char *);
 long 	min2sec(unsigned);
 int 	check_time(char *);
 void 	draw_scrollbar(WINDOW *, int, int, int, int, int, bool);
diff --git a/src/vars.h b/src/vars.h
index f7c2262..4129b2b 100755
--- a/src/vars.h
+++ b/src/vars.h
@@ -1,4 +1,4 @@
-/*	$calcurse: vars.h,v 1.14 2007/07/23 19:27:28 culot Exp $	*/
+/*	$calcurse: vars.h,v 1.15 2007/07/28 13:11:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -30,7 +30,6 @@
 #include <ncurses.h> 
 #include <pthread.h>
 #include <stdbool.h>
-#include <stdio.h>
 
 #define DIR_NAME	".calcurse"
 #define TODO_PATH 	".calcurse/todo"
diff --git a/src/wins.c b/src/wins.c
index 3fdbda0..17b6230 100755
--- a/src/wins.c
+++ b/src/wins.c
@@ -1,4 +1,4 @@
-/*	$Id: wins.c,v 1.2 2007/07/23 19:28:37 culot Exp $	*/
+/*	$Id: wins.c,v 1.3 2007/07/28 13:11:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -24,15 +24,13 @@
  *
  */
 
-#include <ncurses.h>
 #include <stdlib.h>
 
 #include "i18n.h"
-#include "vars.h"
-#include "calendar.h"
 #include "notify.h"
 #include "utils.h"
 #include "todo.h"
+#include "custom.h"
 #include "wins.h"
 
 static window_e 	slctd_win;
@@ -245,6 +243,54 @@ wins_get_config(conf_t *conf, window_t *status, window_t *notify,
 	}
 }
 
+/* draw panel border in color */
+static void 
+border_color(WINDOW *window)
+{
+        int color_attr    = A_BOLD;
+        int no_color_attr = A_BOLD;
+
+        if (colorize) {
+                wattron(window, color_attr | COLOR_PAIR(COLR_CUSTOM));
+                box(window, 0, 0);
+        } else {
+                wattron(window, no_color_attr);
+                box(window, 0, 0);
+        }
+
+	if (colorize) {
+                wattroff(window, color_attr | COLOR_PAIR(COLR_CUSTOM));
+        } else {
+                wattroff(window, no_color_attr);
+        }
+
+	wnoutrefresh(window);
+}
+
+/* draw panel border without any color */
+static void 
+border_nocolor(WINDOW *window)
+{
+        int color_attr   = A_BOLD;
+        int no_color_attr = A_DIM;
+
+        if (colorize) {
+                wattron(window, color_attr | COLOR_PAIR(COLR_DEFAULT));
+        } else {
+                wattron(window, no_color_attr);
+        }
+        
+        box(window, 0, 0);
+        
+        if (colorize) {
+                wattroff(window, color_attr | COLOR_PAIR(COLR_DEFAULT));
+        } else {
+                wattroff(window, no_color_attr);
+        } 
+
+	wnoutrefresh(window);
+}
+
 /* 
  * Update all of the three windows and put a border around the
  * selected window.
-- 
cgit v1.2.3-70-g09d2