From a8cb1c92eff88acc685d7d876647844bacb71e8e Mon Sep 17 00:00:00 2001
From: Frederic Culot <calcurse@culot.org>
Date: Sat, 20 Mar 2010 10:54:41 +0000
Subject: All headers gathered into a single one. Typedefs suppressed.

---
 src/Makefile.am |  40 +--
 src/apoint.c    |  79 +++--
 src/apoint.h    | 101 -------
 src/args.c      |  57 ++--
 src/args.h      |  45 ---
 src/calcurse.c  |  25 +-
 src/calcurse.h  | 919 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/calendar.c  |  58 ++--
 src/calendar.h  | 137 ---------
 src/custom.c    | 130 ++++----
 src/custom.h    | 104 -------
 src/day.c       | 130 ++++----
 src/day.h       |  97 ------
 src/dmon.c      |  16 +-
 src/dmon.h      |  45 ---
 src/event.c     |  39 ++-
 src/event.h     |  67 -----
 src/help.c      |  32 +-
 src/help.h      |  54 ----
 src/i18n.h      |  67 -----
 src/io.c        | 171 +++++------
 src/io.h        |  95 ------
 src/keys.c      |  58 ++--
 src/keys.h      | 140 ---------
 src/mem.c       |  30 +-
 src/mem.h       |  81 -----
 src/notify.c    |  41 +--
 src/notify.h    |  88 ------
 src/recur.c     | 140 +++++----
 src/recur.h     | 135 ---------
 src/sigs.c      |   9 +-
 src/sigs.h      |  47 ---
 src/todo.c      |  51 ++--
 src/todo.h      |  74 -----
 src/utils.c     |  32 +-
 src/utils.h     | 163 ----------
 src/vars.c      |  22 +-
 src/vars.h      | 177 -----------
 src/wins.c      | 109 ++++---
 src/wins.h      | 100 ------
 40 files changed, 1512 insertions(+), 2493 deletions(-)
 delete mode 100755 src/apoint.h
 delete mode 100755 src/args.h
 create mode 100644 src/calcurse.h
 delete mode 100755 src/calendar.h
 delete mode 100755 src/custom.h
 delete mode 100755 src/day.h
 delete mode 100644 src/dmon.h
 delete mode 100755 src/event.h
 delete mode 100755 src/help.h
 delete mode 100755 src/i18n.h
 delete mode 100755 src/io.h
 delete mode 100755 src/keys.h
 delete mode 100644 src/mem.h
 delete mode 100755 src/notify.h
 delete mode 100755 src/recur.h
 delete mode 100755 src/sigs.h
 delete mode 100755 src/todo.h
 delete mode 100755 src/utils.h
 delete mode 100755 src/vars.h
 delete mode 100755 src/wins.h

(limited to 'src')

diff --git a/src/Makefile.am b/src/Makefile.am
index 950b3b5..d00d84c 100755
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,29 +1,29 @@
-#	$calcurse: Makefile.am,v 1.10 2009/07/20 19:44:05 culot Exp $
+#	$calcurse: Makefile.am,v 1.11 2010/03/20 10:54:41 culot Exp $
 
 AUTOMAKE_OPTIONS= foreign
 
 bin_PROGRAMS= calcurse
 
 calcurse_SOURCES= 					\
-	calcurse.c i18n.h htable.h			\
-	apoint.c apoint.h				\
-	args.c args.h					\
-	calendar.c calendar.h				\
-	custom.c custom.h				\
-	day.c day.h					\
-	event.c event.h					\
-	help.c help.h					\
-	io.c io.h					\
-	keys.c keys.h                                   \
-	notify.c notify.h				\
-	recur.c recur.h					\
-	sigs.c sigs.h					\
-	todo.c todo.h					\
-	utils.c utils.h					\
-	vars.c vars.h					\
-	wins.c wins.h	                                \
-	mem.c mem.h                                     \
-	dmon.c dmon.h
+	calcurse.c calcurse.h htable.h			\
+	apoint.c 					\
+	args.c 						\
+	calendar.c 					\
+	custom.c					\
+	day.c 						\
+	event.c 					\
+	help.c 						\
+	io.c 						\
+	keys.c 		                                \
+	notify.c 					\
+	recur.c 					\
+	sigs.c 						\
+	todo.c 						\
+	utils.c 					\
+	vars.c 						\
+	wins.c 		                                \
+	mem.c 		                                \
+	dmon.c
 
 LDADD= @LTLIBINTL@
 
diff --git a/src/apoint.c b/src/apoint.c
index 91c7885..9f24542 100755
--- a/src/apoint.c
+++ b/src/apoint.c
@@ -1,9 +1,9 @@
-/*	$calcurse: apoint.c,v 1.37 2009/07/19 08:20:00 culot Exp $	*/
+/*	$calcurse: apoint.c,v 1.38 2010/03/20 10:54:41 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,24 +41,14 @@
 #include <sys/types.h>
 #include <time.h>
 
-#include "i18n.h"
-#include "vars.h"
-#include "event.h"
-#include "day.h"
-#include "custom.h"
-#include "notify.h"
-#include "recur.h"
-#include "keys.h"
-#include "calendar.h"
-#include "mem.h"
-#include "apoint.h"
-
-apoint_llist_t             *alist_p;
-static apoint_llist_node_t  bkp_cut_apoint;
-static int                  hilt;
+#include "calcurse.h"
+
+struct apoint_list   *alist_p;
+static struct apoint  bkp_cut_apoint;
+static int            hilt;
 
 void
-apoint_free_bkp (erase_flag_e flag)
+apoint_free_bkp (enum eraseflg flag)
 {
   if (bkp_cut_apoint.mesg)
     {
@@ -69,7 +59,7 @@ apoint_free_bkp (erase_flag_e flag)
 }
 
 static void
-apoint_dup (apoint_llist_node_t *in, apoint_llist_node_t *bkp)
+apoint_dup (struct apoint *in, struct apoint *bkp)
 {
   EXIT_IF (!in || !bkp, _("null pointer"));
 
@@ -84,7 +74,7 @@ apoint_dup (apoint_llist_node_t *in, apoint_llist_node_t *bkp)
 void
 apoint_llist_init (void)
 {
-  alist_p = (apoint_llist_t *) mem_malloc (sizeof (apoint_llist_t));
+  alist_p = mem_malloc (sizeof (struct apoint_list));
   alist_p->root = NULL;
   pthread_mutex_init (&(alist_p->mutex), NULL);
 }
@@ -97,7 +87,7 @@ apoint_llist_init (void)
 void
 apoint_llist_free (void)
 {
-  apoint_llist_node_t *o, **i;
+  struct apoint *o, **i;
 
   i = &alist_p->root;
   while (*i)
@@ -137,12 +127,12 @@ apoint_hilt (void)
   return (hilt);
 }
 
-apoint_llist_node_t *
+struct apoint *
 apoint_new (char *mesg, char *note, long start, long dur, char state)
 {
-  apoint_llist_node_t *o, **i;
+  struct apoint *o, **i;
 
-  o = (apoint_llist_node_t *) mem_malloc (sizeof (apoint_llist_node_t));
+  o = mem_malloc (sizeof (struct apoint));
   o->mesg = mem_strdup (mesg);
   o->note = (note != NULL) ? mem_strdup (note) : NULL;
   o->state = state;
@@ -280,7 +270,7 @@ apoint_add (void)
 
 /* Delete an item from the appointment list. */
 void
-apoint_delete (conf_t *conf, unsigned *nb_events, unsigned *nb_apoints)
+apoint_delete (struct conf *conf, unsigned *nb_events, unsigned *nb_apoints)
 {
   char *choices = "[y/n] ";
   char *del_app_str = _("Do you really want to delete this item ?");
@@ -398,7 +388,7 @@ apoint_paste (unsigned *nb_events, unsigned *nb_apoints, int cut_item_type)
 }
 
 unsigned
-apoint_inday (apoint_llist_node_t *i, long start)
+apoint_inday (struct apoint *i, long start)
 {
   if (i->start <= start + DAYINSEC && i->start + i->dur > start)
     {
@@ -408,8 +398,7 @@ apoint_inday (apoint_llist_node_t *i, long start)
 }
 
 void
-apoint_sec2str (apoint_llist_node_t *o, int type, long day, char *start,
-		char *end)
+apoint_sec2str (struct apoint *o, int type, long day, char *start, char *end)
 {
   struct tm *lt;
   time_t t;
@@ -433,7 +422,7 @@ apoint_sec2str (apoint_llist_node_t *o, int type, long day, char *start,
 }
 
 void
-apoint_write (apoint_llist_node_t *o, FILE *f)
+apoint_write (struct apoint *o, FILE *f)
 {
   struct tm *lt;
   time_t t;
@@ -461,7 +450,7 @@ apoint_write (apoint_llist_node_t *o, FILE *f)
   (void)fprintf (f, "%s\n", o->mesg);
 }
 
-apoint_llist_node_t *
+struct apoint *
 apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
 {
   char buf[BUFSIZ], *newline;
@@ -491,10 +480,10 @@ apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
 }
 
 /* Retrieve an appointment from the list, given the day and item position. */
-apoint_llist_node_t *
+struct apoint *
 apoint_get (long day, int pos)
 {
-  apoint_llist_node_t *o;
+  struct apoint *o;
   int n;
 
   n = 0;
@@ -513,11 +502,11 @@ apoint_get (long day, int pos)
 }
 
 void
-apoint_delete_bynum (long start, unsigned num, erase_flag_e flag)
+apoint_delete_bynum (long start, unsigned num, enum eraseflg flag)
 {
   unsigned n;
   int need_check_notify = 0;
-  apoint_llist_node_t *i, **iptr;
+  struct apoint *i, **iptr;
 
   n = 0;
   pthread_mutex_lock (&(alist_p->mutex));
@@ -623,10 +612,10 @@ apoint_scroll_pad_up (int nb_events_inday)
  * Look in the appointment list if we have an item which starts before the item
  * stored in the notify_app structure (which is the next item to be notified).
  */
-struct notify_app_s *
-apoint_check_next (struct notify_app_s *app, long start)
+struct notify_app *
+apoint_check_next (struct notify_app *app, long start)
 {
-  apoint_llist_node_t *i;
+  struct apoint *i;
 
   pthread_mutex_lock (&(alist_p->mutex));
   for (i = alist_p->root; i != 0; i = i->next)
@@ -653,15 +642,15 @@ apoint_check_next (struct notify_app_s *app, long start)
 }
 
 /* 
- * Returns a structure of type apoint_llist_t given a structure of type 
+ * Returns a structure of type struct apoint_list given a structure of type 
  * recur_apoint_s 
  */
-apoint_llist_node_t *
-apoint_recur_s2apoint_s (recur_apoint_llist_node_t *p)
+struct apoint *
+apoint_recur_s2apoint_s (struct recur_apoint *p)
 {
-  apoint_llist_node_t *a;
+  struct apoint *a;
 
-  a = (apoint_llist_node_t *) mem_malloc (sizeof (apoint_llist_node_t));
+  a = mem_malloc (sizeof (struct apoint));
   a->mesg = mem_strdup (p->mesg);
   a->start = p->start;
   a->dur = p->dur;
@@ -674,8 +663,8 @@ apoint_recur_s2apoint_s (recur_apoint_llist_node_t *p)
 void
 apoint_switch_notify (void)
 {
-  apoint_llist_node_t *apoint;
-  struct day_item_s *p;
+  struct apoint *apoint;
+  struct day_item *p;
   long date;
   int apoint_nb = 0, n, need_chk_notify;
 
@@ -733,7 +722,7 @@ apoint_update_panel (int which_pan)
   int app_width = win[APP].w - bordr;
   int app_length = win[APP].h - bordr - title_lines;
   long date;
-  date_t slctd_date;
+  struct date slctd_date;
 
   /* variable inits */
   slctd_date = *calendar_get_slctd_day ();
diff --git a/src/apoint.h b/src/apoint.h
deleted file mode 100755
index 7e92e99..0000000
--- a/src/apoint.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*	$calcurse: apoint.h,v 1.20 2009/08/01 20:28:55 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_APOINT_H
-#define CALCURSE_APOINT_H
-
-#include "utils.h"
-#include "notify.h"
-#include "recur.h"
-#include "vars.h"
-
-#define HRMIN_SIZE 6
-
-typedef struct apoint_llist_node
-{
-  struct apoint_llist_node *next;
-  long start;			/* seconds since 1 jan 1970 */
-  long dur;			/* duration of the appointment in seconds */
-
-#define APOINT_NULL		0x0
-#define APOINT_NOTIFY		0x1	/* Item needs to be notified */
-#define APOINT_NOTIFIED		0x2	/* Item was already notified */
-  char state;			/* 8 bits to store item state */
-  
-  char *mesg;
-  char *note;
-}
-apoint_llist_node_t;
-
-typedef struct apoint_llist
-{
-  apoint_llist_node_t *root;
-  pthread_mutex_t mutex;
-}
-apoint_llist_t;
-
-extern apoint_llist_t *alist_p;
-
-void                 apoint_free_bkp (erase_flag_e);
-void                 apoint_llist_init (void);
-void                 apoint_llist_free (void);
-void                 apoint_hilt_set (int);
-void                 apoint_hilt_decrease (void);
-void                 apoint_hilt_increase (void);
-int                  apoint_hilt (void);
-apoint_llist_node_t *apoint_new (char *, char *, long, long, char);
-void                 apoint_add (void);
-void                 apoint_delete (conf_t *, unsigned *, unsigned *);
-int                  apoint_cut (unsigned *, unsigned *);
-void                 apoint_paste (unsigned *, unsigned *, int);
-unsigned             apoint_inday (apoint_llist_node_t *, long);
-void                 apoint_sec2str (apoint_llist_node_t *, int, long, char *,
-                                     char *);
-void                 apoint_write (apoint_llist_node_t *, FILE *);
-apoint_llist_node_t *apoint_scan (FILE *, struct tm, struct tm, char, char *);
-apoint_llist_node_t *apoint_get (long, int);
-void                 apoint_delete_bynum (long, unsigned, erase_flag_e);
-void                 apoint_scroll_pad_down (int, int);
-void                 apoint_scroll_pad_up (int);
-struct notify_app_s *apoint_check_next (struct notify_app_s *, long);
-apoint_llist_node_t *apoint_recur_s2apoint_s (recur_apoint_llist_node_t *);
-void                 apoint_switch_notify (void);
-void                 apoint_update_panel (int);
-void                 apoint_paste_item (void);
-
-#endif /* CALCURSE_APOINT_H */
diff --git a/src/args.c b/src/args.c
index e974b66..a8c7fd9 100755
--- a/src/args.c
+++ b/src/args.c
@@ -1,9 +1,9 @@
-/*	$calcurse: args.c,v 1.61 2009/11/01 11:19:14 culot Exp $	*/
+/*	$calcurse: args.c,v 1.62 2010/03/20 10:54:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -45,20 +45,7 @@
 #include <time.h>
 #include <regex.h>
 
-#include "i18n.h"
-#include "custom.h"
-#include "utils.h"
-#include "args.h"
-#include "event.h"
-#include "apoint.h"
-#include "day.h"
-#include "todo.h"
-#include "mem.h"
-#include "io.h"
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
+#include "calcurse.h"
 
 /* 
  * Print Calcurse usage and exit.
@@ -257,7 +244,7 @@ print_notefile (FILE *out, char *filename, int nbtab)
 static void
 todo_arg (int priority, int print_note, regex_t *regex)
 {
-  struct todo_s *i;
+  struct todo *i;
   int title = 1;
   char *titlestr, priority_str[BUFSIZ] = "";
   char *all_todos_title = _("to do:\n");
@@ -313,7 +300,7 @@ todo_arg (int priority, int print_note, regex_t *regex)
 static void
 next_arg (void)
 {
-  struct notify_app_s next_app;
+  struct notify_app next_app;
   const long current_time = now ();
   int time_left, hours_left, min_left;
   char mesg[BUFSIZ];
@@ -342,7 +329,7 @@ next_arg (void)
  * Print the date on stdout.
  */
 static void
-arg_print_date (long date, conf_t *conf)
+arg_print_date (long date, struct conf *conf)
 {
   char date_str[BUFSIZ];
   time_t t;
@@ -362,18 +349,18 @@ arg_print_date (long date, conf_t *conf)
  * If regex is not null, only the matching appointments or events are printed.
  */
 static int
-app_arg (int add_line, date_t *day, long date, int print_note, conf_t *conf,
-         regex_t *regex)
+app_arg (int add_line, struct date *day, long date, int print_note,
+         struct conf *conf, regex_t *regex)
 {
-  struct recur_event_s *re;
-  struct event_s *j;
-  recur_apoint_llist_node_t *ra;
-  apoint_llist_node_t *i;
+  struct recur_event *re;
+  struct event *j;
+  struct recur_apoint *ra;
+  struct apoint *i;
   long today;
   unsigned print_date = 1;
   int app_found = 0;
-  char apoint_start_time[100];
-  char apoint_end_time[100];
+  char apoint_start_time[HRMIN_SIZE];
+  char apoint_end_time[HRMIN_SIZE];
 
   if (date == 0)
     today = get_sec_date (*day);
@@ -445,7 +432,7 @@ app_arg (int add_line, date_t *day, long date, int print_note, conf_t *conf,
       if (recur_item_inday (ra->start, ra->exc, ra->rpt->type, ra->rpt->freq,
                             ra->rpt->until, today))
 	{
-          apoint_llist_node_t *apt;
+          struct apoint *apt;
           
           if (regex && regexec (regex, ra->mesg, 0, 0, 0) != 0)
             continue;
@@ -531,10 +518,10 @@ more_info (void)
  */
 static void
 display_app (struct tm *t, int numdays, int add_line, int print_note,
-             conf_t *conf, regex_t *regex)
+             struct conf *conf, regex_t *regex)
 {
   int i, app_found;
-  date_t day;
+  struct date day;
 
   for (i = 0; i < numdays; i++)
     {
@@ -554,11 +541,11 @@ display_app (struct tm *t, int numdays, int add_line, int print_note,
  * days.
  */
 static void
-date_arg (char *ddate, int add_line, int print_note, conf_t *conf,
+date_arg (char *ddate, int add_line, int print_note, struct conf *conf,
           regex_t *regex)
 {
   int i;
-  date_t day;
+  struct date day;
   int numdays = 0, num_digit = 0;
   int arg_len = 0, app_found = 0;
   static struct tm t;
@@ -618,7 +605,7 @@ date_arg (char *ddate, int add_line, int print_note, conf_t *conf,
  */
 static void
 date_arg_extended (char *startday, char *range, int add_line, int print_note,
-                   conf_t *conf, regex_t *regex)
+                   struct conf *conf, regex_t *regex)
 {
   int i, numdays = 1, error = 0, arg_len = 0;
   static struct tm t;
@@ -677,7 +664,7 @@ date_arg_extended (char *startday, char *range, int add_line, int print_note,
  * routines to handle those arguments. Also initialize the data paths.
  */
 int
-parse_args (int argc, char **argv, conf_t *conf)
+parse_args (int argc, char **argv, struct conf *conf)
 {
   int ch, add_line = 0;
   int unknown_flag = 0, app_found = 0;
@@ -954,7 +941,7 @@ parse_args (int argc, char **argv, conf_t *conf)
 	    }
 	  else if (aflag)
 	    {
-	      date_t day;
+	      struct date day;
 
               io_check_file (path_apts, (int *)0);              
               io_check_file (path_conf, (int *)0);              
diff --git a/src/args.h b/src/args.h
deleted file mode 100755
index 9c77835..0000000
--- a/src/args.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*	$calcurse: args.h,v 1.10 2009/07/05 20:33:15 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2007 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-
-#ifndef CALCURSE_ARGS_H
-#define CALCURSE_ARGS_H
-
-int parse_args (int, char **, conf_t *);
-
-#endif /* CALCURSE_ARGS_H */
diff --git a/src/calcurse.c b/src/calcurse.c
index ee9ac7d..ab3febf 100755
--- a/src/calcurse.c
+++ b/src/calcurse.c
@@ -1,9 +1,9 @@
-/*	$calcurse: calcurse.c,v 1.86 2009/08/24 18:59:17 culot Exp $	*/
+/*	$calcurse: calcurse.c,v 1.87 2010/03/20 10:54:42 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,22 +38,7 @@
 
 #include <stdlib.h>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include "i18n.h"
-#include "io.h"
-#include "help.h"
-#include "custom.h"
-#include "utils.h"
-#include "sigs.h"
-#include "day.h"
-#include "todo.h"
-#include "args.h"
-#include "notify.h"
-#include "keys.h"
-#include "dmon.h"
+#include "calcurse.h"
 
 /*
  * Calcurse is a text-based personal organizer which helps keeping track
@@ -65,8 +50,8 @@
 int
 main (int argc, char **argv)
 {
-  conf_t conf;
-  day_items_nb_t inday;
+  struct conf conf;
+  struct day_items_nb inday;
   int background, foreground;
   int non_interactive;
   int no_data_file = 1;
diff --git a/src/calcurse.h b/src/calcurse.h
new file mode 100644
index 0000000..8af1166
--- /dev/null
+++ b/src/calcurse.h
@@ -0,0 +1,919 @@
+/*	$Id: calcurse.h,v 1.1 2010/03/20 10:54:42 culot Exp $	*/
+
+/*
+ * Calcurse - text-based organizer
+ *
+ * Copyright (c) 2010 Frederic Culot <frederic@culot.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the
+ *        following disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the
+ *        following disclaimer in the documentation and/or other
+ *        materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Send your feedback or comments to : calcurse@culot.org
+ * Calcurse home page : http://culot.org/calcurse
+ *
+ */
+
+#ifndef CALCURSE_H
+#define CALCURSE_H
+
+#include "config.h"
+
+#ifdef HAVE_NCURSES_H
+#  include <ncurses.h>
+#elif defined HAVE_NCURSES_NCURSES_H
+#  include <ncurses/ncurses.h>
+#elif defined HAVE_NCURSESW_NCURSES_H
+#  include <ncursesw/ncurses.h>
+#else
+#  error "Missing ncurses header. Aborting..."
+#endif
+
+#include <pthread.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "htable.h"
+
+/* Internationalization. */
+#if ENABLE_NLS
+#  include <locale.h>
+#  include <libintl.h>
+#  undef _
+#  define _(String) gettext(String)
+#  ifdef gettext_noop
+#    define N_(String) gettext_noop(String)
+#  else
+#    define N_(String) (String)
+#  endif
+#else /* NLS disabled */
+#  define _(String) (String)
+#  define N_(String) (String)
+#  define textdomain(String) (String)
+#  define gettext(String) (String)
+#  define dgettext(String) (String)
+#  define dcgettext(String) (String)
+#  define bindtextdomain(String) (String)
+#  define bind_textdomain_codeset(Domain,Codeset) (Codeset)
+#endif /* ENABLE_NLS */
+
+/* Memory debugging functions. */
+#ifdef CALCURSE_MEMORY_DEBUG
+#  define mem_malloc(s)         dbg_malloc ((s), __FILE_POS__)
+#  define mem_calloc(n, s)      dbg_calloc ((n), (s), __FILE_POS__)
+#  define mem_realloc(p, n, s)  dbg_realloc ((p), (n), (s), __FILE_POS__)
+#  define mem_strdup(s)         dbg_strdup ((s), __FILE_POS__)
+#  define mem_free(p)           dbg_free ((p), __FILE_POS__)
+#else /* MEMORY DEBUG disabled */
+#  define mem_malloc(s)         xmalloc ((s))
+#  define mem_calloc(n, s)      xcalloc ((n), (s))
+#  define mem_realloc(p, n, s)  xrealloc ((p), (n), (s))
+#  define mem_strdup(s)         xstrdup ((s))
+#  define mem_free(p)           xfree ((p))
+#  define mem_stats()        
+#endif /* CALCURSE_MEMORY_DEBUG */
+
+/* Paths configuration. */
+#define DIR_NAME         ".calcurse/"
+#define TODO_PATH_NAME   "todo"
+#define APTS_PATH_NAME   "apts"
+#define CONF_PATH_NAME   "conf"
+#define KEYS_PATH_NAME   "keys"
+#define CPID_PATH_NAME   ".calcurse.pid"
+#define DPID_PATH_NAME   ".daemon.pid"
+#define DLOG_PATH_NAME   "daemon.log"
+#define NOTES_DIR_NAME   "notes/"
+
+#define TODO_PATH        DIR_NAME TODO_PATH_NAME
+#define APTS_PATH        DIR_NAME APTS_PATH_NAME
+#define CONF_PATH        DIR_NAME CONF_PATH_NAME
+#define KEYS_PATH        DIR_NAME KEYS_PATH_NAME
+#define CPID_PATH        DIR_NAME CPID_PATH_NAME
+#define DLOG_PATH        DIR_NAME DLOG_PATH_NAME
+#define DPID_PATH        DIR_NAME DPID_PATH_NAME
+#define NOTES_DIR        DIR_NAME NOTES_DIR_NAME
+
+#define ATTR_FALSE	0
+#define ATTR_TRUE	1
+#define ATTR_LOWEST	2
+#define ATTR_LOW	3
+#define ATTR_MIDDLE	4
+#define ATTR_HIGH	5
+#define ATTR_HIGHEST	6
+
+#define STATUSHEIGHT	2
+#define	NOTESIZ		6
+
+/* Format for appointment hours is: HH:MM */
+#define HRMIN_SIZE 6
+
+/* Maximum number of colors available. */
+#define NBUSERCOLORS	6
+
+/* Related to date manipulation. */
+#define DAYINSEC        86400
+#define HOURINSEC       3600
+#define MININSEC        60
+#define YEARINDAYS      365
+#define YEARINMONTHS    12
+#define WEEKINDAYS      7
+#define TM_YEAR_BASE    1900
+
+/* Calendar window. */
+#define	CALHEIGHT	12
+#define	CALWIDTH	30
+
+/* Key definitions. */
+#define CTRLVAL                 0x1F
+#define CTRL(x)                 ((x) & CTRLVAL)
+#define ESCAPE		        27
+#define TAB       		9
+#define SPACE                   32
+
+#define KEYS_KEYLEN		3 /* length of each keybinding */  
+#define KEYS_LABELEN		8 /* length of command description */
+#define KEYS_CMDS_PER_LINE	6 /* max number of commands per line */
+
+#define ERROR_MSG(...) do {                                             \
+  char msg[BUFSIZ];                                                     \
+  int len;                                                              \
+                                                                        \
+  len = snprintf (msg, BUFSIZ, "%s: %d: ", __FILE__, __LINE__);         \
+  (void)snprintf (msg + len, BUFSIZ - len, __VA_ARGS__);                \
+  if (ui_mode == UI_CURSES)                                             \
+    fatalbox (msg);                                                     \
+  else                                                                  \
+    (void)fprintf (stderr, "%s\n", msg);                                \
+} while (0)
+
+#define WARN_MSG(...) do {                                              \
+  char msg[BUFSIZ];                                                     \
+                                                                        \
+  (void)snprintf (msg, BUFSIZ, __VA_ARGS__);                            \
+  if (ui_mode == UI_CURSES)                                             \
+    warnbox (msg);                                                      \
+  else                                                                  \
+    (void)fprintf (stderr, "%s\n", msg);                                \
+} while (0)
+
+#define EXIT(...) do {                                                  \
+          ERROR_MSG(__VA_ARGS__);                                       \
+          if (ui_mode == UI_CURSES)                                     \
+            exit_calcurse (EXIT_FAILURE);                               \
+          else                                                          \
+            exit (EXIT_FAILURE);                                        \
+} while (0)
+
+#define EXIT_IF(cond, ...) do {                                         \
+  if ((cond))                                                           \
+    EXIT(__VA_ARGS__);                                                  \
+} while (0)
+
+#define RETURN_IF(cond, ...) do {                                       \
+  if ((cond))                                                           \
+    {                                                                   \
+      ERROR_MSG(__VA_ARGS__);                                           \
+      return;                                                           \
+    }                                                                   \
+} while (0)
+
+#define RETVAL_IF(cond, val, ...) do {                                  \
+  if ((cond))                                                           \
+    {                                                                   \
+      ERROR_MSG(__VA_ARGS__);                                           \
+      return (val);                                                     \
+    }                                                                   \
+} while (0)
+
+#define STRING_BUILD(str) {str, sizeof (str) - 1}
+#define STRINGIFY(x)  #x
+#define TOSTRING(x)   STRINGIFY(x)
+#define __FILE_POS__   __FILE__ ":" TOSTRING(__LINE__)
+
+#define MAX(x,y) ((x)>(y)?(x):(y))
+#define MIN(x,y) ((x)<(y)?(x):(y))
+
+/* General configuration variables. */
+struct conf {
+  unsigned   auto_save;
+  unsigned   periodic_save;
+  unsigned   confirm_quit;
+  unsigned   confirm_delete;
+  unsigned   skip_system_dialogs;
+  unsigned   skip_progress_bar;
+  char      *editor;
+  char      *pager;
+  char       output_datefmt[BUFSIZ];  /* format for displaying date */
+  int        input_datefmt;	      /* format for reading date */
+};
+
+/* Daemon-related configuration. */
+struct dmon_conf {
+  unsigned  enable;   /* launch daemon automatically when exiting */
+  unsigned  log;      /* log daemon activity */
+};
+
+struct string {
+  const char   *str;
+  const int     len;
+};
+
+enum datefmt {
+  DATEFMT_MMDDYYYY = 1,
+  DATEFMT_DDMMYYYY,
+  DATEFMT_YYYYMMDD,
+  DATEFMT_ISO,
+  DATE_FORMATS
+};
+
+#define DATEFMT(datefmt) (datefmt == DATEFMT_MMDDYYYY ? "%m/%d/%Y" :       \
+		(datefmt == DATEFMT_DDMMYYYY ? "%d/%m/%Y" :                \
+                (datefmt == DATEFMT_YYYYMMDD ? "%Y/%m/%d" : "%Y-%m-%d")))
+
+#define DATEFMT_DESC(datefmt) (datefmt == DATEFMT_MMDDYYYY ?               \
+                               _("mm/dd/yyyy") :                           \
+		               (datefmt == DATEFMT_DDMMYYYY ?              \
+                               _("dd/mm/yyyy") :                           \
+                               (datefmt == DATEFMT_YYYYMMDD ?              \
+                               _("yyyy/mm/dd") : _("yyyy-mm-dd"))))
+
+struct date {
+  unsigned dd;
+  unsigned mm;
+  unsigned yyyy;
+};
+
+/* Appointment definition. */
+struct apoint
+{
+  struct apoint *next;    /* appointments are stored in a linked-list */
+  long           start;   /* seconds since 1 jan 1970 */
+  long           dur;     /* duration of the appointment in seconds */
+
+#define APOINT_NULL      0x0
+#define APOINT_NOTIFY    0x1	/* Item needs to be notified */
+#define APOINT_NOTIFIED  0x2	/* Item was already notified */
+  int            state;
+  
+  char          *mesg;
+  char          *note;
+};
+
+/* Appointments are stored in a linked-list. */
+struct apoint_list
+{
+  struct apoint   *root;
+  pthread_mutex_t  mutex;
+};
+
+/* Event definition. */
+struct event {
+  struct event *next;
+  int           id;    /* event identifier */
+  long          day;   /* seconds since 1 jan 1970 */
+  char         *mesg;
+  char         *note;
+};
+
+/* Todo item definition. */
+struct todo {
+  struct todo  *next;
+  char         *mesg;
+  int           id;
+  char         *note;
+};
+
+/* Number of items in current day. */
+struct day_items_nb {
+  unsigned nb_events;
+  unsigned nb_apoints;
+};
+
+/* Generic item description (to hold appointments, events...). */
+struct day_item {
+  struct day_item *next;
+  long             start;    /* seconds since 1 jan 1970 */
+  long             appt_dur; /* appointment duration in seconds */
+  int              type;     /* (recursive or normal) event or appointment */
+  int              evnt_id;  /* event identifier */
+  int              appt_pos; /* real position in recurrent list */
+  char             state;    /* appointment state */
+  char            *mesg;     /* item description */
+  char            *note;     /* note attached to item */
+};
+
+struct days {
+  struct days *next;
+  long         st;    /* beggining of the considered day, in seconds */
+};
+
+enum recur_type {
+  RECUR_NO,
+  RECUR_DAILY,
+  RECUR_WEEKLY,
+  RECUR_MONTHLY,
+  RECUR_YEARLY,
+  RECUR_TYPES  
+};
+
+/* To describe an item's repetition. */
+struct rpt {
+  enum recur_type  type;  /* repetition type */
+  int              freq;  /* repetition frequence */
+  long             until; /* ending date for repeated event */
+};
+
+/* Recurrent appointment definition. */
+struct recur_apoint {
+  struct recur_apoint  *next;
+  struct rpt           *rpt;   /* information about repetition */
+  struct days          *exc;   /* days when the item should not be repeated */
+  long                  start; /* beggining of the appointment */
+  long                  dur;   /* duration of the appointment */
+  char                  state; /* 8 bits to store item state */
+  char                 *mesg;  /* appointment description */
+  char                 *note;  /* note attached to appointment */
+};
+
+/* Recurrent appointments are stored in a linked-list. */
+struct recur_apoint_list {
+  struct recur_apoint  *root;
+  pthread_mutex_t       mutex;
+};
+
+/* Reccurent event definition. */
+struct recur_event {
+  struct recur_event  *next;
+  struct rpt          *rpt;  /* information about repetition */
+  struct days         *exc;  /* days when the item should not be repeated */
+  int                  id;   /* event type */
+  long                 day;  /* day at which event occurs */
+  char                *mesg; /* event description */
+  char                *note; /* note attached to event */
+};
+
+struct notify_app {
+  long             time;
+  int              got_app;
+  char            *txt;
+  char             state;
+  pthread_mutex_t  mutex;
+};
+  
+struct io_file {
+  FILE *fd;
+  char  name[BUFSIZ];
+};
+
+/* Available keys. */
+enum key {
+  KEY_GENERIC_CANCEL,
+  KEY_GENERIC_SELECT,
+  KEY_GENERIC_CREDITS,
+  KEY_GENERIC_HELP,
+  KEY_GENERIC_QUIT,
+  KEY_GENERIC_SAVE,
+  KEY_GENERIC_CUT,
+  KEY_GENERIC_PASTE,
+  KEY_GENERIC_CHANGE_VIEW,
+  KEY_GENERIC_IMPORT,
+  KEY_GENERIC_EXPORT,
+  KEY_GENERIC_GOTO,
+  KEY_GENERIC_OTHER_CMD,
+  KEY_GENERIC_CONFIG_MENU,
+  KEY_GENERIC_REDRAW,
+  KEY_GENERIC_ADD_APPT,
+  KEY_GENERIC_ADD_TODO,
+  KEY_GENERIC_NEXT_DAY,
+  KEY_GENERIC_PREV_DAY,
+  KEY_GENERIC_NEXT_WEEK,
+  KEY_GENERIC_PREV_WEEK,
+  KEY_GENERIC_SCROLL_DOWN,
+  KEY_GENERIC_SCROLL_UP,
+  KEY_GENERIC_GOTO_TODAY,
+  
+  KEY_MOVE_RIGHT,
+  KEY_MOVE_LEFT,
+  KEY_MOVE_DOWN,
+  KEY_MOVE_UP,
+  KEY_START_OF_WEEK,
+  KEY_END_OF_WEEK,
+  KEY_ADD_ITEM,
+  KEY_DEL_ITEM,
+  KEY_EDIT_ITEM,
+  KEY_VIEW_ITEM,
+  KEY_FLAG_ITEM,
+  KEY_REPEAT_ITEM,
+  KEY_EDIT_NOTE,
+  KEY_VIEW_NOTE,
+  KEY_RAISE_PRIORITY,
+  KEY_LOWER_PRIORITY,
+  
+  NBKEYS,
+  KEY_UNDEF
+};
+
+/* To describe a key binding. */
+struct binding {
+  char      *label;
+  enum key   action;
+};
+
+enum win {
+  CAL,
+  APP,
+  TOD,
+  NOT,
+  STA,
+  NBWINS
+};
+
+enum ui_mode {
+  UI_CURSES,
+  UI_CMDLINE,
+  UI_MODES
+};
+
+/* Generic window structure. */
+struct window {
+  WINDOW   *p;  /* pointer to window */
+  unsigned  w;  /* width */
+  unsigned  h;  /* height */
+  int       x;  /* x position */
+  int       y;  /* y position */
+};
+
+/* Generic scrolling window structure. */
+struct scrollwin {
+  struct window  win;
+  struct window  pad;
+  unsigned       first_visible_line;
+  unsigned       total_lines;
+  char           label[BUFSIZ];
+};
+
+/* Pad structure to handle scrolling. */
+struct pad {
+  int     width;
+  int     length;
+  int     first_onscreen; /* first line to be displayed inside window */
+  WINDOW *ptrwin;         /* pointer to the pad window */
+};
+
+/* Notification bar definition. */
+struct nbar {
+  int              show;	     /* display or hide the notify-bar */
+  int              cntdwn;	     /* warn when time left before next app
+				        becomes lesser than cntdwn */
+  char             datefmt[BUFSIZ];  /* format for displaying date */
+  char             timefmt[BUFSIZ];  /* format for displaying time */
+  char             cmd[BUFSIZ];	     /* notification command */
+  char            *shell;	     /* user shell to launch notif. cmd */
+  pthread_mutex_t  mutex;
+};
+
+/* Available types of items. */
+enum item_type {
+  RECUR_EVNT = 1,
+  EVNT,
+  RECUR_APPT,
+  APPT,
+  MAX_TYPES = APPT
+};
+
+/* Flags used to adapt processing when erasing an item. */
+enum eraseflg {
+  ERASE_DONT_FORCE,
+  ERASE_FORCE,
+  ERASE_FORCE_KEEP_NOTE,
+  ERASE_FORCE_ONLY_NOTE,
+  ERASE_CUT  
+};
+  
+/* Return codes for the getstring() function. */
+enum getstr {
+  GETSTRING_VALID,
+  GETSTRING_ESC,   /* user pressed escape to cancel editing. */
+  GETSTRING_RET    /* return was pressed without entering any text. */
+};
+
+/* Week days. */
+enum wday {
+  SUNDAY,
+  MONDAY,
+  TUESDAY,
+  WEDNESDAY,
+  THURSDAY,
+  FRIDAY,
+  SATURDAY,
+  WDAYS
+};
+
+/* Possible movements inside calendar. */
+enum move {
+  UP,
+  DOWN,
+  LEFT,
+  RIGHT,
+  WEEK_START,
+  WEEK_END,
+  MOVES
+};
+
+/* Available color pairs. */
+enum {
+  COLR_RED = 1,
+  COLR_GREEN,
+  COLR_YELLOW,
+  COLR_BLUE,
+  COLR_MAGENTA,
+  COLR_CYAN,
+  COLR_DEFAULT,
+  COLR_HIGH,
+  COLR_CUSTOM
+};
+
+/* Available import types. */
+enum import_type {
+  IO_IMPORT_ICAL,
+  IO_IMPORT_NBTYPES
+};
+
+/* Available export types. */
+enum export_type {
+  IO_EXPORT_ICAL,
+  IO_EXPORT_PCAL,
+  IO_EXPORT_NBTYPES
+};
+
+/* To customize the display when saving data. */
+enum save_display {
+  IO_SAVE_DISPLAY_BAR,
+  IO_SAVE_DISPLAY_MARK,
+  IO_SAVE_DISPLAY_NONE
+};
+
+/* apoint.c */
+extern struct apoint_list  *alist_p;
+void               apoint_free_bkp (enum eraseflg);
+void               apoint_llist_init (void);
+void               apoint_llist_free (void);
+void               apoint_hilt_set (int);
+void               apoint_hilt_decrease (void);
+void               apoint_hilt_increase (void);
+int                apoint_hilt (void);
+struct apoint     *apoint_new (char *, char *, long, long, char);
+void               apoint_add (void);
+void               apoint_delete (struct conf *, unsigned *, unsigned *);
+int                apoint_cut (unsigned *, unsigned *);
+void               apoint_paste (unsigned *, unsigned *, int);
+unsigned           apoint_inday (struct apoint *, long);
+void               apoint_sec2str (struct apoint *, int, long, char *, char *);
+void               apoint_write (struct apoint *, FILE *);
+struct apoint     *apoint_scan (FILE *, struct tm, struct tm, char, char *);
+struct apoint     *apoint_get (long, int);
+void               apoint_delete_bynum (long, unsigned, enum eraseflg);
+void               apoint_scroll_pad_down (int, int);
+void               apoint_scroll_pad_up (int);
+struct notify_app *apoint_check_next (struct notify_app *, long);
+struct apoint     *apoint_recur_s2apoint_s (struct recur_apoint *);
+void               apoint_switch_notify (void);
+void               apoint_update_panel (int);
+void               apoint_paste_item (void);
+
+/* args.c */
+int parse_args (int, char **, struct conf *);
+
+/* calendar.c */
+void          calendar_view_next (void);
+void          calendar_view_prev (void);
+void          calendar_set_view (int);
+int           calendar_get_view (void);
+void          calendar_start_date_thread (void);
+void          calendar_stop_date_thread (void);
+void          calendar_set_current_date (void);
+void          calendar_set_first_day_of_week (enum wday);
+void          calendar_change_first_day_of_week (void);
+unsigned      calendar_week_begins_on_monday (void);
+void          calendar_store_current_date (struct date *);
+void          calendar_init_slctd_day (void);
+struct date  *calendar_get_slctd_day (void);
+long          calendar_get_slctd_day_sec (void);
+void          calendar_update_panel (struct window *);
+void          calendar_goto_today (void);
+void          calendar_change_day (int);
+void          calendar_move (enum move);
+long          calendar_start_of_year (void);
+long          calendar_end_of_year (void);
+char         *calendar_get_pom (time_t);
+
+/* custom.c */
+void custom_init_attr (void);
+void custom_apply_attr (WINDOW *, int);
+void custom_remove_attr (WINDOW *, int);
+void custom_load_conf (struct conf *, int);
+void custom_config_bar (void);
+void custom_layout_config (void);
+void custom_color_config (void);
+void custom_color_theme_name (char *);
+void custom_confwin_init (struct window *, char *);
+void custom_set_swsiz (struct scrollwin *);
+void custom_general_config (struct conf *);
+void custom_keys_config (void);
+
+/* day.c */
+void                  day_free_list (void);
+struct day_items_nb  *day_process_storage (struct date *, unsigned,
+                                           struct day_items_nb *);
+void                  day_write_pad (long, int, int, int);
+void                  day_popup_item (void);
+int                   day_check_if_item (struct date);
+unsigned              day_chk_busy_slices (struct date, int, int *);
+void                  day_edit_item (struct conf *);
+int                   day_erase_item (long, int, enum eraseflg);
+int                   day_cut_item (long, int);
+int                   day_paste_item (long, int);
+struct day_item      *day_get_item (int);
+int                   day_item_nb (long, int, int);
+void                  day_edit_note (char *);
+void                  day_view_note (char *);
+
+/* dmon.c */
+void   dmon_start (int);
+void   dmon_stop (void);
+
+/* event.c */
+extern struct event *eventlist;
+void          event_free_bkp (enum eraseflg);
+void          event_llist_free (void);
+struct event *event_new (char *, char *, long, int);
+unsigned      event_inday (struct event *, long);
+void          event_write (struct event *, FILE *);
+struct event *event_scan (FILE *, struct tm, int, char *);
+struct event *event_get (long, int);
+void          event_delete_bynum (long, unsigned, enum eraseflg);
+void          event_paste_item (void);
+
+/* help.c */
+void help_wins_init (struct scrollwin *, int, int, int, int);
+void help_screen (void);
+
+/* io.c */
+unsigned         io_fprintln (const char *, const char *, ...);
+void             io_init (char *, char *);
+void             io_extract_data (char *, const char *, int);
+unsigned         io_save_conf (struct conf *);
+unsigned         io_save_apts (void);
+unsigned         io_save_todo (void);
+unsigned         io_save_keys (void);
+void             io_save_cal (struct conf *, enum save_display);
+void             io_load_app (void);
+void             io_load_todo (void);
+void             io_load_keys (char *);
+void             io_check_dir (char *, int *);
+unsigned         io_file_exist (char *);
+void             io_check_file (char *, int *);
+int              io_check_data_files (void);
+void             io_startup_screen (unsigned, int);
+void             io_export_data (enum export_type, struct conf *);
+void             io_export_bar (void);
+void             io_import_data (enum import_type, struct conf *, char *);
+struct io_file  *io_log_init (void);
+void             io_log_print (struct io_file *, int, char *);
+void             io_log_display (struct io_file *, char *, char *);
+void             io_log_free (struct io_file *);
+void             io_start_psave_thread (struct conf *);
+void             io_stop_psave_thread (void);
+void             io_set_lock (void);
+unsigned         io_dump_pid (char *);
+unsigned         io_get_pid (char *);
+
+/* keys.c */
+void      keys_init (void);
+void      keys_free (void);
+void      keys_dump_defaults (char *);
+char     *keys_get_label (enum key);
+enum key  keys_get_action (int);
+enum key  keys_getch (WINDOW *win);
+int       keys_assign_binding (int, enum key);
+void      keys_remove_binding (int, enum key);
+int       keys_str2int (char *);
+char     *keys_int2str (int);
+int       keys_action_count_keys (enum key);
+char     *keys_action_firstkey (enum key);
+char     *keys_action_nkey (enum key, int);
+char     *keys_action_allkeys (enum key);
+void      keys_display_bindings_bar (WINDOW *, struct binding **, int, int);
+void      keys_popup_info (enum key);
+void      keys_save_bindings (FILE *);
+int       keys_check_missing_bindings (void);
+void      keys_fill_missing (void);
+
+/* mem.c */
+void  *xmalloc (size_t);
+void  *xcalloc (size_t, size_t);
+void  *xrealloc (void *, size_t, size_t);
+char  *xstrdup (const char *);
+void   xfree (void *);
+void  *dbg_malloc (size_t, const char *);
+void  *dbg_calloc (size_t, size_t, const char *);
+void  *dbg_realloc (void *, size_t, size_t, const char *);
+char  *dbg_strdup (const char *, const char *);
+void   dbg_free (void *, const char *);
+void   mem_stats (void);
+
+/* notify.c */
+int       notify_time_left (void);
+unsigned  notify_needs_reminder (void);
+void      notify_update_app (long, char, char *);
+int       notify_bar (void);
+void      notify_init_vars (void);
+void      notify_init_bar (void);
+void      notify_free_app (void);
+void      notify_start_main_thread (void);
+void      notify_stop_main_thread (void);
+void      notify_reinit_bar (void);
+unsigned  notify_launch_cmd (void);
+void      notify_update_bar (void);
+unsigned  notify_get_next (struct notify_app *);
+unsigned  notify_get_next_bkgd (void);
+char     *notify_app_txt (void);
+void      notify_check_next_app (void);
+void      notify_check_added (char *, long, char);
+void      notify_check_repeated (struct recur_apoint *);
+int       notify_same_item (long);
+int       notify_same_recur_item (struct recur_apoint *);
+void      notify_config_bar (void);
+
+/* recur.c */
+extern struct recur_apoint_list  *recur_alist_p;
+extern struct recur_event        *recur_elist;
+void                  recur_event_free_bkp (enum eraseflg);
+void                  recur_apoint_free_bkp (enum eraseflg);
+void                  recur_apoint_llist_init (void);
+void                  recur_apoint_llist_free (void);
+void                  recur_event_llist_free (void);
+struct recur_apoint  *recur_apoint_new (char *, char *, long, long, char,
+                                       int, int, long, struct days **);
+struct recur_event   *recur_event_new (char *, char *, long, int, int, int,
+                                       long, struct days **);
+char                  recur_def2char (enum recur_type);
+int                   recur_char2def (char);
+struct recur_apoint *recur_apoint_scan (FILE *, struct tm, struct tm,
+                                        char, int, struct tm, char *,
+                                        struct days **, char);
+struct recur_event  *recur_event_scan (FILE *, struct tm, int, char,
+                                       int, struct tm, char *,
+                                       struct days **);
+void                 recur_save_data (FILE *);
+unsigned             recur_item_inday (long, struct days *, int, int,
+                                       long, long);
+void                 recur_event_erase (long, unsigned, unsigned,
+                                        enum eraseflg);
+void                 recur_apoint_erase (long, unsigned, unsigned,
+                                         enum eraseflg);
+void                 recur_repeat_item (struct conf *);
+struct days         *recur_exc_scan (FILE *);
+struct notify_app   *recur_apoint_check_next (struct notify_app *, long, long);
+struct recur_apoint *recur_get_apoint (long, int);
+struct recur_event  *recur_get_event (long, int);
+void                 recur_apoint_switch_notify (long, int);
+void                 recur_event_paste_item (void);
+void                 recur_apoint_paste_item (void);
+
+/* sigs.c */
+void      sigs_init (void);
+unsigned  sigs_set_hdlr (int, void (*)(int));
+
+/* todo.c */
+extern struct todo *todolist;
+void          todo_hilt_set (int);
+void          todo_hilt_decrease (void);
+void          todo_hilt_increase (void);
+int           todo_hilt (void);
+int           todo_nb (void);
+void          todo_set_nb (int);
+void          todo_set_first (int);
+void          todo_first_increase (void);
+void          todo_first_decrease (void);
+int           todo_hilt_pos (void);
+char         *todo_saved_mesg (void);
+void          todo_new_item (void);
+struct todo  *todo_add (char *, int, char *);
+void          todo_flag (void);
+void          todo_delete (struct conf *);
+void          todo_chg_priority (int);
+void          todo_edit_item (void);
+void          todo_update_panel (int);
+void          todo_edit_note (char *);
+void          todo_view_note (char *);
+void          todo_free_list (void);
+
+/* utils.c */
+void         exit_calcurse (int);
+void         free_user_data (void);
+void         fatalbox (const char *);
+void         warnbox (const char *);
+void         status_mesg (char *, char *);
+void         erase_window_part (WINDOW *, int, int, int, int);
+WINDOW      *popup (int, int, int, int, char *, char *, int);
+void         print_in_middle (WINDOW *, int, int, int, char *);
+enum getstr  getstring (WINDOW *, char *, int, int, int);
+int          updatestring (WINDOW *, char **, int, int);
+int          is_all_digit (char *);
+long         get_item_time (long);
+int          get_item_hour (long);
+int          get_item_min (long);
+long         date2sec (struct date, unsigned, unsigned);
+char        *date_sec2hour_str (long);
+char        *date_sec2date_str (long, 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);
+long         min2sec (unsigned);
+int          check_time (char *);
+void         draw_scrollbar (WINDOW *, int, int, int, int, int, unsigned);
+void         item_in_popup (char *, char *, char *, char *);
+long         get_today (void);
+long         now (void);
+char        *nowstr (void);
+long         mystrtol (const char *);
+void         print_bool_option_incolor (WINDOW *, unsigned, int, int);
+char        *new_tempfile (const char *, int);
+void         erase_note (char **, enum eraseflg);
+int          parse_date (char *, enum datefmt, int *, int *, int *);
+char        *str_toupper (char *);
+void         file_close (FILE *, const char *);
+void         psleep (unsigned);
+
+/* vars.c */
+extern int               col, row;
+extern unsigned          colorize;
+extern enum ui_mode      ui_mode;
+extern int               days[12];
+extern char             *monthnames[12];
+extern char             *daynames[8];
+extern char              path_dir[BUFSIZ];
+extern char              path_todo[BUFSIZ];
+extern char              path_apts[BUFSIZ];
+extern char              path_conf[BUFSIZ];
+extern char              path_keys[BUFSIZ];
+extern char              path_notes[BUFSIZ];
+extern char              path_cpid[BUFSIZ];
+extern char              path_dpid[BUFSIZ];
+extern char              path_dmon_log[BUFSIZ];
+extern struct pad        apad;
+extern struct nbar       nbar;
+extern struct dmon_conf  dmon;
+void vars_init (struct conf *);
+
+/* wins.c */
+extern struct window win[NBWINS];
+int       wins_layout (void);
+void      wins_set_layout (int);
+void      wins_slctd_init (void);
+enum win  wins_slctd (void);
+void      wins_slctd_set (enum win);
+void      wins_slctd_next (void);
+void      wins_init (void);
+void      wins_scrollwin_init (struct scrollwin *);
+void      wins_scrollwin_delete (struct scrollwin *);
+void      wins_scrollwin_display (struct scrollwin *);
+void      wins_scrollwin_up (struct scrollwin *, int);
+void      wins_scrollwin_down (struct scrollwin *, int);
+void      wins_reinit (void);
+void      wins_show (WINDOW *, char *);
+void      wins_get_config (void);
+void      wins_update (void);
+void      wins_reset (void);
+void      wins_launch_external (const char *, const char *);
+void      wins_status_bar (void);
+void      wins_erase_status_bar (void);
+void      wins_other_status_page (int);
+void      wins_reset_status_page (void);
+
+#endif /* CALCURSE_H */
diff --git a/src/calendar.c b/src/calendar.c
index 2be7c62..bd318e3 100755
--- a/src/calendar.c
+++ b/src/calendar.c
@@ -1,4 +1,4 @@
-/*	$calcurse: calendar.c,v 1.32 2010/03/08 08:44:44 culot Exp $	*/
+/*	$calcurse: calendar.c,v 1.33 2010/03/20 10:54:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -43,15 +43,7 @@
 #include <time.h>
 #include <math.h>
 
-#include "i18n.h"
-#include "day.h"
-#include "apoint.h"
-#include "event.h"
-#include "custom.h"
-#include "vars.h"
-#include "keys.h"
-#include "utils.h"
-#include "calendar.h"
+#include "calcurse.h"
 
 #ifndef M_PI
 #define	M_PI	  3.14159265358979323846
@@ -73,14 +65,24 @@ enum {
   CAL_VIEWS
 };
 
-static date_t today, slctd_day;
+enum pom {
+  NO_POM,
+  FIRST_QUARTER,
+  FULL_MOON,
+  LAST_QUARTER,
+  NEW_MOON,
+  MOON_PHASES
+};
+
+static struct date today, slctd_day;
 static unsigned calendar_view, week_begins_on_monday;
 static pthread_mutex_t date_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_t calendar_t_date;
 
-static void draw_monthly_view (window_t *, date_t *, unsigned);
-static void draw_weekly_view (window_t *, date_t *, unsigned);
-static void (*draw_calendar[CAL_VIEWS]) (window_t *, date_t *, unsigned) =
+static void draw_monthly_view (struct window *, struct date *, unsigned);
+static void draw_weekly_view (struct window *, struct date *, unsigned);
+static void (*draw_calendar[CAL_VIEWS]) (struct window *, struct date *,
+                                         unsigned) =
   {draw_monthly_view, draw_weekly_view};
 
 /* Switch between calendar views (monthly view is selected by default). */
@@ -167,7 +169,7 @@ calendar_set_current_date (void)
 
 /* Needed to display sunday or monday as the first day of week in calendar. */
 void
-calendar_set_first_day_of_week (wday_e first_day)
+calendar_set_first_day_of_week (enum wday first_day)
 {
   switch (first_day)
     {
@@ -200,7 +202,7 @@ calendar_week_begins_on_monday (void)
 
 /* Fill in the given variable with the current date. */
 void
-calendar_store_current_date (date_t *date)
+calendar_store_current_date (struct date *date)
 {
   pthread_mutex_lock (&date_thread_mutex);
   *date = today;
@@ -215,7 +217,7 @@ calendar_init_slctd_day (void)
 }
 
 /* Return the selected day in calendar */
-date_t *
+struct date *
 calendar_get_slctd_day (void)
 {
   return (&slctd_day);
@@ -229,7 +231,7 @@ calendar_get_slctd_day_sec (void)
 }
 
 static int
-calendar_get_wday (date_t *date)
+calendar_get_wday (struct date *date)
 {
   struct tm t;
 
@@ -300,9 +302,9 @@ date_change (struct tm *date, int delta_month, int delta_day)
 
 /* Draw the monthly view inside calendar panel. */
 static void
-draw_monthly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
+draw_monthly_view (struct window *cwin, struct date *current_day, unsigned sunday_first)
 {
-  date_t check_day;
+  struct date check_day;
   int c_day, c_day_1, day_1_sav, numdays, j;
   unsigned yr, mo;
   int ofs_x, ofs_y;
@@ -472,7 +474,7 @@ ISO8601weeknum (const struct tm *t)
 
 /* Draw the weekly view inside calendar panel. */
 static void
-draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
+draw_weekly_view (struct window *cwin, struct date *current_day, unsigned sunday_first)
 {
   int j, c_wday, days_to_remove, weeknum;
   struct tm t;
@@ -502,7 +504,7 @@ draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
   /* Now draw calendar view. */
   for (j = 0; j < WEEKINDAYS; j++)
     {
-      date_t date;
+      struct date date;
       unsigned attr, item_this_day;
       int i, slices[DAYSLICESNO];
       
@@ -577,9 +579,9 @@ draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
 
 /* Function used to display the calendar panel. */
 void
-calendar_update_panel (window_t *cwin)
+calendar_update_panel (struct window *cwin)
 {
-  date_t current_day;
+  struct date current_day;
   unsigned sunday_first;
 
   calendar_store_current_date (&current_day);
@@ -596,7 +598,7 @@ calendar_update_panel (window_t *cwin)
 void
 calendar_goto_today (void)
 {
-  date_t today;
+  struct date today;
 
   calendar_store_current_date (&today);
   slctd_day.dd = today.dd;
@@ -661,7 +663,7 @@ calendar_change_day (int datefmt)
 }
 
 void
-calendar_move (move_t move)
+calendar_move (enum move move)
 {
   int ret, days_to_remove, days_to_add;
   struct tm t;
@@ -882,7 +884,7 @@ pom (time_t tmpt)
   struct tm *GMT;
   double days;
   int cnt;
-  pom_e pom;
+  enum pom pom;
 
   pom = NO_POM;
   GMT = gmtime (&tmpt);
@@ -906,7 +908,7 @@ char *
 calendar_get_pom (time_t date)
 {
   char *pom_pict[MOON_PHASES] = { "   ", "|) ", "(|)", "(| ", " | " };
-  pom_e phase = NO_POM;
+  enum pom phase = NO_POM;
   double pom_today, relative_pom, pom_yesterday, pom_tomorrow;
   const double half = 50.0;
 
diff --git a/src/calendar.h b/src/calendar.h
deleted file mode 100755
index e900bcd..0000000
--- a/src/calendar.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*	$calcurse: calendar.h,v 1.19 2010/03/08 08:44:44 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_CALENDAR_H
-#define CALCURSE_CALENDAR_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#elif defined HAVE_NCURSES_NCURSES_H
-#include <ncurses/ncurses.h>
-#elif defined HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#error "Missing ncurses header. Aborting..."
-#endif
-
-#include <time.h>
-
-#include "wins.h"
-
-#define	CALHEIGHT	12
-#define	CALWIDTH	30
-
-#define DAYINSEC        86400
-#define HOURINSEC       3600
-#define MININSEC        60
-#define YEARINDAYS      365
-#define YEARINMONTHS    12
-#define WEEKINDAYS      7
-#define TM_YEAR_BASE    1900
-
-typedef enum
-{				/* days of week */
-  SUNDAY,
-  MONDAY,
-  TUESDAY,
-  WEDNESDAY,
-  THURSDAY,
-  FRIDAY,
-  SATURDAY,
-  WDAYS
-}
-wday_e;
-
-typedef struct
-{
-  unsigned dd;
-  unsigned mm;
-  unsigned yyyy;
-}
-date_t;
-
-typedef enum
-{
-  NO_POM,
-  FIRST_QUARTER,
-  FULL_MOON,
-  LAST_QUARTER,
-  NEW_MOON,
-  MOON_PHASES
-}
-pom_e;
-
-typedef enum
-{
-  UP,
-  DOWN,
-  LEFT,
-  RIGHT,
-  WEEK_START,
-  WEEK_END,
-  MOVES
-}
-move_t;
-
-void       calendar_view_next (void);
-void       calendar_view_prev (void);
-void       calendar_set_view (int);
-int        calendar_get_view (void);
-void       calendar_start_date_thread (void);
-void       calendar_stop_date_thread (void);
-void       calendar_set_current_date (void);
-void       calendar_set_first_day_of_week (wday_e);
-void       calendar_change_first_day_of_week (void);
-unsigned   calendar_week_begins_on_monday (void);
-void       calendar_store_current_date (date_t *);
-void       calendar_init_slctd_day (void);
-date_t    *calendar_get_slctd_day (void);
-long       calendar_get_slctd_day_sec (void);
-void       calendar_update_panel (window_t *);
-void       calendar_goto_today (void);
-void       calendar_change_day (int);
-void       calendar_move (move_t);
-long       calendar_start_of_year (void);
-long       calendar_end_of_year (void);
-char      *calendar_get_pom (time_t);
-
-#endif /* CALCURSE_CALENDAR_H */
diff --git a/src/custom.c b/src/custom.c
index 34470c9..82a4057 100755
--- a/src/custom.c
+++ b/src/custom.c
@@ -1,9 +1,9 @@
-/*	$calcurse: custom.c,v 1.45 2009/10/28 15:15:44 culot Exp $	*/
+/*	$calcurse: custom.c,v 1.46 2010/03/20 10:54:43 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,20 +40,39 @@
 #include <stdlib.h>
 #include <math.h>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include "i18n.h"
-#include "io.h"
-#include "utils.h"
-#include "keys.h"
-#include "apoint.h"
-#include "help.h"
-#include "mem.h"
-#include "custom.h"
-
-static struct attribute_s attr;
+#include "calcurse.h"
+
+/* Available configuration variables. */
+enum {
+  CUSTOM_CONF_NOVARIABLE,
+  CUSTOM_CONF_AUTOSAVE,
+  CUSTOM_CONF_PERIODICSAVE,
+  CUSTOM_CONF_CONFIRMQUIT,
+  CUSTOM_CONF_CONFIRMDELETE,
+  CUSTOM_CONF_SKIPSYSTEMDIALOGS,
+  CUSTOM_CONF_SKIPPROGRESSBAR,
+  CUSTOM_CONF_CALENDAR_DEFAULTVIEW,
+  CUSTOM_CONF_WEEKBEGINSONMONDAY,
+  CUSTOM_CONF_COLORTHEME,
+  CUSTOM_CONF_LAYOUT,
+  CUSTOM_CONF_NOTIFYBARSHOW,
+  CUSTOM_CONF_NOTIFYBARDATE,
+  CUSTOM_CONF_NOTIFYBARCLOCK,
+  CUSTOM_CONF_NOTIFYBARWARNING,
+  CUSTOM_CONF_NOTIFYBARCOMMAND,
+  CUSTOM_CONF_OUTPUTDATEFMT,
+  CUSTOM_CONF_INPUTDATEFMT,
+  CUSTOM_CONF_DMON_ENABLE,
+  CUSTOM_CONF_DMON_LOG,
+  CUSTOM_CONF_VARIABLES
+};
+
+struct attribute {
+  int color[7];
+  int nocolor[7];
+};
+
+static struct attribute attr;
 
 static unsigned
 fill_config_var (char *string)
@@ -217,7 +236,7 @@ custom_remove_attr (WINDOW *win, int attr_num)
 
 /* Load the user configuration. */
 void
-custom_load_conf (conf_t *conf, int background)
+custom_load_conf (struct conf *conf, int background)
 {
   FILE *data_file;
   char *mesg_line1 = _("Failed to open config file");
@@ -412,15 +431,15 @@ custom_config_bar (void)
 static void
 layout_selection_bar (void)
 {
-  binding_t quit    = {_("Exit"),     KEY_GENERIC_QUIT};
-  binding_t select  = {_("Select"),   KEY_GENERIC_SELECT};
-  binding_t up      = {_("Up"),       KEY_MOVE_UP};
-  binding_t down    = {_("Down"),     KEY_MOVE_DOWN};
-  binding_t left    = {_("Left"),     KEY_MOVE_LEFT};
-  binding_t right   = {_("Right"),    KEY_MOVE_RIGHT};
-  binding_t help    = {_("Help"),     KEY_GENERIC_HELP};
+  struct binding quit    = {_("Exit"),     KEY_GENERIC_QUIT};
+  struct binding select  = {_("Select"),   KEY_GENERIC_SELECT};
+  struct binding up      = {_("Up"),       KEY_MOVE_UP};
+  struct binding down    = {_("Down"),     KEY_MOVE_DOWN};
+  struct binding left    = {_("Left"),     KEY_MOVE_LEFT};
+  struct binding right   = {_("Right"),    KEY_MOVE_RIGHT};
+  struct binding help    = {_("Help"),     KEY_GENERIC_HELP};
   
-  binding_t *binding[] = {&quit, &select, &up, &down, &left, &right, &help};
+  struct binding *binding[] = {&quit, &select, &up, &down, &left, &right, &help};
   int binding_size = sizeof (binding) / sizeof (binding[0]);
 
   keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
@@ -431,7 +450,8 @@ layout_selection_bar (void)
 
 /* Used to display available layouts in layout configuration menu. */
 static void
-display_layout_config (window_t *lwin, int mark, int cursor, int need_reset)
+display_layout_config (struct window *lwin, int mark, int cursor,
+                       int need_reset)
 {
 #define CURSOR			(32 | A_REVERSE)
 #define MARK			88
@@ -500,8 +520,8 @@ display_layout_config (window_t *lwin, int mark, int cursor, int need_reset)
 void
 custom_layout_config (void)
 {
-  scrollwin_t hwin;
-  window_t conf_win;
+  struct scrollwin hwin;
+  struct window conf_win;
   int ch, mark, cursor, need_reset;
   char *help_text =
     _("With this configuration menu, one can choose where panels will be\n"
@@ -572,7 +592,7 @@ custom_layout_config (void)
 #undef LAYOUTSPERCOL
 
 static void
-set_confwin_attr (window_t *cwin)
+set_confwin_attr (struct window *cwin)
 {
   cwin->h = (notify_bar ())? row - 3 : row - 2;
   cwin->w = col;
@@ -584,7 +604,7 @@ set_confwin_attr (window_t *cwin)
  * (useful in case of window resize).
  */
 void
-custom_confwin_init (window_t *confwin, char *label)
+custom_confwin_init (struct window *confwin, char *label)
 {
   if (confwin->p)
     {
@@ -611,16 +631,16 @@ custom_confwin_init (window_t *confwin, char *label)
 static void
 color_selection_bar (void)
 {
-  binding_t quit    = {_("Exit"),     KEY_GENERIC_QUIT};
-  binding_t select  = {_("Select"),   KEY_GENERIC_SELECT};
-  binding_t nocolor = {_("No color"), KEY_GENERIC_CANCEL};
-  binding_t up      = {_("Up"),       KEY_MOVE_UP};
-  binding_t down    = {_("Down"),     KEY_MOVE_DOWN};
-  binding_t left    = {_("Left"),     KEY_MOVE_LEFT};
-  binding_t right   = {_("Right"),    KEY_MOVE_RIGHT};
+  struct binding quit    = {_("Exit"),     KEY_GENERIC_QUIT};
+  struct binding select  = {_("Select"),   KEY_GENERIC_SELECT};
+  struct binding nocolor = {_("No color"), KEY_GENERIC_CANCEL};
+  struct binding up      = {_("Up"),       KEY_MOVE_UP};
+  struct binding down    = {_("Down"),     KEY_MOVE_DOWN};
+  struct binding left    = {_("Left"),     KEY_MOVE_LEFT};
+  struct binding right   = {_("Right"),    KEY_MOVE_RIGHT};
 
   
-  binding_t *binding[] = {
+  struct binding *binding[] = {
     &quit, &nocolor, &up, &down, &left, &right, &select
   };
   int binding_size = sizeof (binding) / sizeof (binding[0]);
@@ -633,7 +653,7 @@ color_selection_bar (void)
  * This is useful for window resizing.
  */
 static void
-display_color_config (window_t *cwin, int *mark_fore, int *mark_back,
+display_color_config (struct window *cwin, int *mark_fore, int *mark_back,
 		      int cursor, int need_reset, int theme_changed)
 {
 #define	SIZE 			(2 * (NBUSERCOLORS + 1))
@@ -761,7 +781,7 @@ display_color_config (window_t *cwin, int *mark_fore, int *mark_back,
 void
 custom_color_config (void)
 {
-  window_t conf_win;
+  struct window conf_win;
   int ch, cursor, need_reset, theme_changed;
   int mark_fore, mark_back;
 
@@ -886,7 +906,7 @@ custom_color_theme_name (char *theme_name)
 
 /* Prints the general options. */
 static int
-print_general_options (WINDOW *win, conf_t *conf)
+print_general_options (WINDOW *win, struct conf *conf)
 {
   enum {
     AUTO_SAVE,
@@ -986,7 +1006,7 @@ print_general_options (WINDOW *win, conf_t *conf)
 }
 
 void
-custom_set_swsiz (scrollwin_t *sw)
+custom_set_swsiz (struct scrollwin *sw)
 {
   sw->win.x = 0;
   sw->win.y = 0;
@@ -1001,9 +1021,9 @@ custom_set_swsiz (scrollwin_t *sw)
                           
 /* General configuration. */
 void
-custom_general_config (conf_t *conf)
+custom_general_config (struct conf *conf)
 {
-  scrollwin_t cwin;
+  struct scrollwin cwin;
   char *number_str =
     _("Enter an option number to change its value");
   char *keys =
@@ -1188,16 +1208,16 @@ print_keys_bindings (WINDOW *win, int selected_row, int selected_elm, int yoff)
 static void
 custom_keys_config_bar (void)
 {
-  binding_t quit  = {_("Exit"),     KEY_GENERIC_QUIT};
-  binding_t info  = {_("Key info"), KEY_GENERIC_HELP};
-  binding_t add   = {_("Add key"),  KEY_ADD_ITEM};
-  binding_t del   = {_("Del key"),  KEY_DEL_ITEM};
-  binding_t up    = {_("Up"),       KEY_MOVE_UP};
-  binding_t down  = {_("Down"),     KEY_MOVE_DOWN};
-  binding_t left  = {_("Prev Key"), KEY_MOVE_LEFT};
-  binding_t right = {_("Next Key"), KEY_MOVE_RIGHT};
+  struct binding quit  = {_("Exit"),     KEY_GENERIC_QUIT};
+  struct binding info  = {_("Key info"), KEY_GENERIC_HELP};
+  struct binding add   = {_("Add key"),  KEY_ADD_ITEM};
+  struct binding del   = {_("Del key"),  KEY_DEL_ITEM};
+  struct binding up    = {_("Up"),       KEY_MOVE_UP};
+  struct binding down  = {_("Down"),     KEY_MOVE_DOWN};
+  struct binding left  = {_("Prev Key"), KEY_MOVE_LEFT};
+  struct binding right = {_("Next Key"), KEY_MOVE_RIGHT};
     
-  binding_t *binding[] = {
+  struct binding *binding[] = {
     &quit, &info, &add, &del, &up, &down, &left, &right
   };
   int binding_size = sizeof (binding) / sizeof (binding[0]);
@@ -1208,7 +1228,7 @@ custom_keys_config_bar (void)
 void
 custom_keys_config (void)
 {
-  scrollwin_t kwin;
+  struct scrollwin kwin;
   int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed;
   int keyval, used, not_recognized;
   char *keystr;
@@ -1303,7 +1323,7 @@ custom_keys_config (void)
               used = keys_assign_binding (keyval, selrow);
               if (used)
                 {
-                  keys_e action;
+                  enum key action;
                   
                   action = keys_get_action (keyval);
                   WARN_MSG (_("This key is already in use for %s, "
diff --git a/src/custom.h b/src/custom.h
deleted file mode 100755
index bedcdc9..0000000
--- a/src/custom.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*	$calcurse: custom.h,v 1.19 2009/10/28 15:15:44 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_CUSTOM_H
-#define CALCURSE_CUSTOM_H
-
-#include "vars.h"
-#include "wins.h"
-
-#define NBUSERCOLORS	6
-
-enum
-{				/* Color pairs */
-  COLR_RED = 1,
-  COLR_GREEN,
-  COLR_YELLOW,
-  COLR_BLUE,
-  COLR_MAGENTA,
-  COLR_CYAN,
-  COLR_DEFAULT,
-  COLR_HIGH,
-  COLR_CUSTOM
-};
-
-enum
-{				/* Configuration variables */
-  CUSTOM_CONF_NOVARIABLE,
-  CUSTOM_CONF_AUTOSAVE,
-  CUSTOM_CONF_PERIODICSAVE,
-  CUSTOM_CONF_CONFIRMQUIT,
-  CUSTOM_CONF_CONFIRMDELETE,
-  CUSTOM_CONF_SKIPSYSTEMDIALOGS,
-  CUSTOM_CONF_SKIPPROGRESSBAR,
-  CUSTOM_CONF_CALENDAR_DEFAULTVIEW,
-  CUSTOM_CONF_WEEKBEGINSONMONDAY,
-  CUSTOM_CONF_COLORTHEME,
-  CUSTOM_CONF_LAYOUT,
-  CUSTOM_CONF_NOTIFYBARSHOW,
-  CUSTOM_CONF_NOTIFYBARDATE,
-  CUSTOM_CONF_NOTIFYBARCLOCK,
-  CUSTOM_CONF_NOTIFYBARWARNING,
-  CUSTOM_CONF_NOTIFYBARCOMMAND,
-  CUSTOM_CONF_OUTPUTDATEFMT,
-  CUSTOM_CONF_INPUTDATEFMT,
-  CUSTOM_CONF_DMON_ENABLE,
-  CUSTOM_CONF_DMON_LOG,
-  CUSTOM_CONF_VARIABLES
-};
-
-struct attribute_s
-{
-  int color[7];
-  int nocolor[7];
-};
-
-void custom_init_attr (void);
-void custom_apply_attr (WINDOW *, int);
-void custom_remove_attr (WINDOW *, int);
-void custom_load_conf (conf_t *, int);
-void custom_config_bar (void);
-void custom_layout_config (void);
-void custom_color_config (void);
-void custom_color_theme_name (char *);
-void custom_confwin_init (window_t *, char *);
-void custom_set_swsiz (scrollwin_t *);
-void custom_general_config (conf_t *);
-void custom_keys_config (void);
-
-#endif /* CALCURSE_CUSTOM_H */
diff --git a/src/day.c b/src/day.c
index 0cd1d76..4bcb5ec 100755
--- a/src/day.c
+++ b/src/day.c
@@ -1,9 +1,9 @@
-/*	$calcurse: day.c,v 1.52 2009/10/16 15:51:33 culot Exp $	*/
+/*	$calcurse: day.c,v 1.53 2010/03/20 10:54:44 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,16 +42,18 @@
 #include <ctype.h>
 #include <time.h>
 
-#include "i18n.h"
-#include "apoint.h"
-#include "event.h"
-#include "custom.h"
-#include "keys.h"
-#include "mem.h"
-#include "day.h"
+#include "calcurse.h"
 
-static struct day_item_s        *day_items_ptr;
-static struct day_saved_item_s   day_saved_item;
+struct day_saved_item {
+  char  start[BUFSIZ];
+  char  end[BUFSIZ];
+  char  state;
+  char  type;
+  char *mesg;
+};
+
+static struct day_item        *day_items_ptr;
+static struct day_saved_item   day_saved_item;
 
 /*
  * Free the current day linked list containing the events and appointments.
@@ -61,7 +63,7 @@ static struct day_saved_item_s   day_saved_item;
 void
 day_free_list (void)
 {
-  struct day_item_s *o, **i;
+  struct day_item *o, **i;
 
   i = &day_items_ptr;
   while (*i)
@@ -74,12 +76,12 @@ day_free_list (void)
 }
 
 /* Add an event in the current day list */
-static struct day_item_s *
+static struct day_item *
 day_add_event (int type, char *mesg, char *note, long day, int id)
 {
-  struct day_item_s *o, **i;
+  struct day_item *o, **i;
   
-  o = mem_malloc (sizeof (struct day_item_s));
+  o = mem_malloc (sizeof (struct day_item));
   o->mesg = mesg;
   o->note = note;
   o->type = type;
@@ -102,14 +104,14 @@ day_add_event (int type, char *mesg, char *note, long day, int id)
 }
 
 /* Add an appointment in the current day list. */
-static struct day_item_s *
+static struct day_item *
 day_add_apoint (int type, char *mesg, char *note, long start, long dur,
 		char state, int real_pos)
 {
-  struct day_item_s *o, **i;
+  struct day_item *o, **i;
   int insert_item = 0;
 
-  o = mem_malloc (sizeof (struct day_item_s));
+  o = mem_malloc (sizeof (struct day_item));
   o->mesg = mesg;
   o->note = note;
   o->start = start;
@@ -150,8 +152,8 @@ day_add_apoint (int type, char *mesg, char *note, long start, long dur,
 static int
 day_store_events (long date)
 {
-  struct event_s *j;
-  struct day_item_s *ptr;
+  struct event *j;
+  struct day_item *ptr;
   int e_nb = 0;
 
   for (j = eventlist; j != 0; j = j->next)
@@ -176,8 +178,8 @@ day_store_events (long date)
 static int
 day_store_recur_events (long date)
 {
-  struct recur_event_s *j;
-  struct day_item_s *ptr;
+  struct recur_event *j;
+  struct day_item *ptr;
   int e_nb = 0;
 
   for (j = recur_elist; j != 0; j = j->next)
@@ -203,8 +205,8 @@ day_store_recur_events (long date)
 static int
 day_store_apoints (long date)
 {
-  apoint_llist_node_t *j;
-  struct day_item_s *ptr;
+  struct apoint *j;
+  struct day_item *ptr;
   int a_nb = 0;
 
   pthread_mutex_lock (&(alist_p->mutex));
@@ -232,8 +234,8 @@ day_store_apoints (long date)
 static int
 day_store_recur_apoints (long date)
 {
-  recur_apoint_llist_node_t *j;
-  struct day_item_s *ptr;
+  struct recur_apoint *j;
+  struct day_item *ptr;
   long real_start;
   int a_nb = 0, n = 0;
 
@@ -294,12 +296,12 @@ day_store_items (long date, unsigned *pnb_events, unsigned *pnb_apoints)
  * 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, unsigned day_changed,
-		     day_items_nb_t *inday)
+struct day_items_nb *
+day_process_storage (struct date *slctd_date, unsigned day_changed,
+		     struct day_items_nb *inday)
 {
   long date;
-  date_t day;
+  struct date day;
 
   if (slctd_date)
     day = *slctd_date;
@@ -328,7 +330,7 @@ day_process_storage (date_t *slctd_date, unsigned day_changed,
  * day_item_s 
  */
 static void
-day_item_s2apoint_s (apoint_llist_node_t *a, struct day_item_s *p)
+day_item_s2apoint_s (struct apoint *a, struct day_item *p)
 {
   a->state = p->state;
   a->start = p->start;
@@ -340,7 +342,7 @@ day_item_s2apoint_s (apoint_llist_node_t *a, struct day_item_s *p)
  * Print an item date in the appointment panel.
  */
 static void
-display_item_date (int incolor, apoint_llist_node_t *i, int type, long date,
+display_item_date (int incolor, struct apoint *i, int type, long date,
 		   int y, int x)
 {
   WINDOW *win;
@@ -404,8 +406,8 @@ display_item (int incolor, char *msg, int recur, int note, int len, int y,
 void
 day_write_pad (long date, int width, int length, int incolor)
 {
-  struct day_item_s *p;
-  apoint_llist_node_t a;
+  struct day_item *p;
+  struct apoint a;
   int line, item_number, max_pos, recur;
   const int x_pos = 0;
   unsigned draw_line = 0;
@@ -481,12 +483,12 @@ day_popup_item (void)
  * calendar. This is used to put the correct colors inside calendar panel.
  */
 int
-day_check_if_item (date_t day)
+day_check_if_item (struct date day)
 {
-  struct recur_event_s *re;
-  recur_apoint_llist_node_t *ra;
-  struct event_s *e;
-  apoint_llist_node_t *a;
+  struct recur_event *re;
+  struct recur_apoint *ra;
+  struct event *e;
+  struct apoint *a;
   const long date = date2sec (day, 0, 0);
 
   for (re = recur_elist; re != 0; re = re->next)
@@ -543,10 +545,10 @@ fill_slices (int *slices, int slicesno, int first, int last)
  * A 24 hours day is divided into 'slicesno' number of time slices.
  */
 unsigned
-day_chk_busy_slices (date_t day, int slicesno, int *slices)
+day_chk_busy_slices (struct date day, int slicesno, int *slices)
 {
-  recur_apoint_llist_node_t *ra;
-  apoint_llist_node_t *a;
+  struct recur_apoint *ra;
+  struct apoint *a;
   int slicelen;  
   const long date = date2sec (day, 0, 0);
 
@@ -669,7 +671,7 @@ update_desc (char **desc)
 }
 
 static void
-update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
+update_rept (struct rpt **rpt, const long start, struct conf *conf)
 {
   const int SINGLECHAR = 2;
   int ch, cancel, newfreq, date_entered;
@@ -689,7 +691,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
   do
     {
       status_mesg (msg_rpt_type, msg_rpt_ans);
-      typstr = (char *) mem_calloc (SINGLECHAR, sizeof (char));
+      typstr = mem_calloc (SINGLECHAR, sizeof (char));
       (void)snprintf (typstr, SINGLECHAR, "%c", recur_def2char ((*rpt)->type));
       cancel = updatestring (win[STA].p, &typstr, 0, 1);
       if (cancel)
@@ -708,7 +710,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
   do
     {
       status_mesg (_("Enter the new repetition frequence:"), "");
-      freqstr = (char *) mem_malloc (BUFSIZ);
+      freqstr = mem_malloc (BUFSIZ);
       (void)snprintf (freqstr, BUFSIZ, "%d", (*rpt)->freq);
       cancel = updatestring (win[STA].p, &freqstr, 0, 1);
       if (cancel)
@@ -751,7 +753,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
 	{
 	  struct tm *lt;
 	  time_t t;
-	  date_t new_date;
+	  struct date new_date;
 	  int newmonth, newday, newyear;
 
 	  if (parse_date (timstr, conf->input_datefmt,
@@ -792,18 +794,18 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
 
 /* Edit an already existing item. */
 void
-day_edit_item (conf_t *conf)
+day_edit_item (struct conf *conf)
 {
 #define STRT		'1'
 #define END		'2'
 #define DESC		'3'
 #define REPT		'4'
 
-  struct day_item_s *p;
-  struct recur_event_s *re;
-  struct event_s *e;
-  recur_apoint_llist_node_t *ra;
-  apoint_llist_node_t *a;
+  struct day_item *p;
+  struct recur_event *re;
+  struct event *e;
+  struct recur_apoint *ra;
+  struct apoint *a;
   long date;
   int item_num, ch;
 
@@ -891,9 +893,9 @@ day_edit_item (conf_t *conf)
  * type of the item to be deleted.
  */
 int
-day_erase_item (long date, int item_number, erase_flag_e flag)
+day_erase_item (long date, int item_number, enum eraseflg flag)
 {
-  struct day_item_s *p;
+  struct day_item *p;
   char *erase_warning =
       _("This item is recurrent. "
 	"Delete (a)ll occurences or just this (o)ne ?");
@@ -972,7 +974,7 @@ int
 day_cut_item (long date, int item_number)
 {
   const int DELETE_WHOLE = 1;
-  struct day_item_s *p;
+  struct day_item *p;
   
   p = day_get_item (item_number);
   switch (p->type)
@@ -1032,10 +1034,10 @@ day_paste_item (long date, int cut_item_type)
 }
 
 /* Returns a structure containing the selected item. */
-struct day_item_s *
+struct day_item *
 day_get_item (int item_number)
 {
-  struct day_item_s *o;
+  struct day_item *o;
   int i;
 
   o = day_items_ptr;
@@ -1051,7 +1053,7 @@ int
 day_item_nb (long date, int day_num, int type)
 {
   int i, nb_item[MAX_TYPES];
-  struct day_item_s *p;
+  struct day_item *p;
 
   for (i = 0; i < MAX_TYPES; i++)
     nb_item[i] = 0;
@@ -1071,11 +1073,11 @@ day_item_nb (long date, int day_num, int type)
 void
 day_edit_note (char *editor)
 {
-  struct day_item_s *p;
-  recur_apoint_llist_node_t *ra;
-  apoint_llist_node_t *a;
-  struct recur_event_s *re;
-  struct event_s *e;
+  struct day_item *p;
+  struct recur_apoint *ra;
+  struct apoint *a;
+  struct recur_event *re;
+  struct event *e;
   char fullname[BUFSIZ];
   char *filename;
   long date;
@@ -1119,7 +1121,7 @@ day_edit_note (char *editor)
 void
 day_view_note (char *pager)
 {
-  struct day_item_s *p;
+  struct day_item *p;
   char fullname[BUFSIZ];
 
   p = day_get_item (apoint_hilt ());
diff --git a/src/day.h b/src/day.h
deleted file mode 100755
index a1b69d3..0000000
--- a/src/day.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*	$calcurse: day.h,v 1.25 2009/10/08 16:28:06 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_DAY_H
-#define CALCURSE_DAY_H
-
-#include "vars.h"
-#include "utils.h"
-#include "calendar.h"
-
-#define MAX_TYPES	4
-
-#define RECUR_EVNT	1
-#define EVNT		2
-#define RECUR_APPT	3
-#define APPT		4
-
-typedef struct
-{
-  unsigned nb_events;
-  unsigned nb_apoints;
-}
-day_items_nb_t;
-
-struct day_item_s
-{
-  struct day_item_s *next;
-  long               start;	/* seconds since 1 jan 1970 */
-  long               appt_dur;  /* appointment duration in seconds */
-  int                type;	/* (recursive or normal) event or appointment */
-  int                evnt_id;   /* event identifier */
-  int                appt_pos;  /* real position in recurrent list */
-  char               state;	/* appointment state */
-  char              *mesg;	/* item description */
-  char              *note;	/* note attached to item */
-};
-
-struct day_saved_item_s
-{
-  char  start[BUFSIZ];
-  char  end[BUFSIZ];
-  char  state;
-  char  type;
-  char *mesg;
-};
-
-void               day_free_list (void);
-day_items_nb_t    *day_process_storage (date_t *, unsigned, day_items_nb_t *);
-void               day_write_pad (long, int, int, int);
-void               day_popup_item (void);
-int                day_check_if_item (date_t);
-unsigned           day_chk_busy_slices (date_t, int, int *);
-void               day_edit_item (conf_t *);
-int                day_erase_item (long, int, erase_flag_e);
-int                day_cut_item (long, int);
-int                day_paste_item (long, int);
-struct day_item_s *day_get_item (int);
-int                day_item_nb (long, int, int);
-void               day_edit_note (char *);
-void               day_view_note (char *);
-
-#endif /* CALCURSE_DAY_H */
diff --git a/src/dmon.c b/src/dmon.c
index 9913361..46f4c22 100644
--- a/src/dmon.c
+++ b/src/dmon.c
@@ -1,9 +1,9 @@
-/*	$calcurse: dmon.c,v 1.11 2009/08/01 20:29:49 culot Exp $	*/
+/*	$calcurse: dmon.c,v 1.12 2010/03/20 10:54:44 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2009-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,15 +43,9 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <string.h>
+#include <signal.h>
 
-#include "utils.h"
-#include "i18n.h"
-#include "sigs.h"
-#include "mem.h"
-#include "io.h"
-#include "custom.h"
-#include "notify.h"
-#include "dmon.h"
+#include "calcurse.h"
 
 #define DMON_SLEEP_TIME  60
 
@@ -162,7 +156,7 @@ daemonize (int status)
 void
 dmon_start (int parent_exit_status)
 {
-  conf_t conf;
+  struct conf conf;
   
   if (!daemonize (parent_exit_status))
     DMON_ABRT (_("Cannot daemonize, aborting\n"));
diff --git a/src/dmon.h b/src/dmon.h
deleted file mode 100644
index 7236360..0000000
--- a/src/dmon.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*	$calcurse: dmon.h,v 1.2 2009/07/26 20:38:36 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_DMON_H
-#define CALCURSE_DMON_H
-
-void   dmon_start (int);
-void   dmon_stop (void);
-
-#endif /* CALCURSE_DMON_H */
diff --git a/src/event.c b/src/event.c
index 9b1cd63..3c827c4 100755
--- a/src/event.c
+++ b/src/event.c
@@ -1,9 +1,9 @@
-/*	$calcurse: event.c,v 1.15 2009/07/19 08:20:00 culot Exp $	*/
+/*	$calcurse: event.c,v 1.16 2010/03/20 10:54:44 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,16 +41,13 @@
 #include <sys/types.h>
 #include <time.h>
 
-#include "vars.h"
-#include "i18n.h"
-#include "mem.h"
-#include "event.h"
+#include "calcurse.h"
 
-struct event_s        *eventlist;
-static struct event_s  bkp_cut_event;
+struct event        *eventlist;
+static struct event  bkp_cut_event;
 
 void
-event_free_bkp (erase_flag_e flag)
+event_free_bkp (enum eraseflg flag)
 {
   if (bkp_cut_event.mesg)
     {
@@ -61,7 +58,7 @@ event_free_bkp (erase_flag_e flag)
 }
 
 static void
-event_dup (struct event_s *in, struct event_s *bkp)
+event_dup (struct event *in, struct event *bkp)
 {
   EXIT_IF (!in || !bkp, _("null pointer"));
 
@@ -75,7 +72,7 @@ event_dup (struct event_s *in, struct event_s *bkp)
 void
 event_llist_free (void)
 {
-  struct event_s *o, **i;
+  struct event *o, **i;
 
   i = &eventlist;
   while (*i)
@@ -89,11 +86,11 @@ event_llist_free (void)
 }
 
 /* Create a new event */
-struct event_s *
+struct event *
 event_new (char *mesg, char *note, long day, int id)
 {
-  struct event_s *o, **i;
-  o = (struct event_s *) mem_malloc (sizeof (struct event_s));
+  struct event *o, **i;
+  o = mem_malloc (sizeof (struct event));
   o->mesg = mem_strdup (mesg);
   o->day = day;
   o->id = id;
@@ -114,7 +111,7 @@ event_new (char *mesg, char *note, long day, int id)
 
 /* Check if the event belongs to the selected day */
 unsigned
-event_inday (struct event_s *i, long start)
+event_inday (struct event *i, long start)
 {
   if (i->day <= start + DAYINSEC && i->day > start)
     {
@@ -125,7 +122,7 @@ event_inday (struct event_s *i, long start)
 
 /* Write to file the event in user-friendly format */
 void
-event_write (struct event_s *o, FILE *f)
+event_write (struct event *o, FILE *f)
 {
   struct tm *lt;
   time_t t;
@@ -140,7 +137,7 @@ event_write (struct event_s *o, FILE *f)
 }
 
 /* Load the events from file */
-struct event_s *
+struct event *
 event_scan (FILE *f, struct tm start, int id, char *note)
 {
   char buf[BUFSIZ], *nl;
@@ -170,10 +167,10 @@ event_scan (FILE *f, struct tm start, int id, char *note)
 }
 
 /* Retrieve an event from the list, given the day and item position. */
-struct event_s *
+struct event *
 event_get (long day, int pos)
 {
-  struct event_s *o;
+  struct event *o;
   int n;
 
   n = 0;
@@ -193,10 +190,10 @@ event_get (long day, int pos)
 
 /* Delete an event from the list. */
 void
-event_delete_bynum (long start, unsigned num, erase_flag_e flag)
+event_delete_bynum (long start, unsigned num, enum eraseflg flag)
 {
   unsigned n;
-  struct event_s *i, **iptr;
+  struct event *i, **iptr;
 
   n = 0;
   iptr = &eventlist;
diff --git a/src/event.h b/src/event.h
deleted file mode 100755
index 2c8173f..0000000
--- a/src/event.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*	$calcurse: event.h,v 1.10 2009/07/05 20:33:19 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_EVENT_H
-#define CALCURSE_EVENT_H
-
-#include "utils.h"
-
-#define HRMIN_SIZE 6
-
-struct event_s
-{
-  struct event_s *next;
-  int             id;		/* event identifier */
-  long            day;		/* seconds since 1 jan 1970 */
-  char           *mesg;
-  char           *note;
-};
-
-extern struct event_s *eventlist;
-
-void            event_free_bkp (erase_flag_e);
-void            event_llist_free (void);
-struct event_s *event_new (char *, char *, long, int);
-unsigned        event_inday (struct event_s *, long);
-void            event_write (struct event_s *, FILE *);
-struct event_s *event_scan (FILE *, struct tm, int, char *);
-struct event_s *event_get (long, int);
-void            event_delete_bynum (long, unsigned, erase_flag_e);
-void            event_paste_item (void);
-
-#endif /* CALCURSE_EVENT_H */
diff --git a/src/help.c b/src/help.c
index eb94354..e4f7d48 100755
--- a/src/help.c
+++ b/src/help.c
@@ -1,9 +1,9 @@
-/*	$calcurse: help.c,v 1.42 2009/10/28 13:44:41 culot Exp $	*/
+/*	$calcurse: help.c,v 1.43 2010/03/20 10:54:45 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,16 +41,14 @@
 #include <ctype.h>
 #include <sys/types.h>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
+#include "calcurse.h"
 
-#include "i18n.h"
-#include "custom.h"
-#include "utils.h"
-#include "keys.h"
-#include "notify.h"
-#include "help.h"
+#define HELPTEXTSIZ 4096
+
+typedef struct {
+  char *title;
+  char text[HELPTEXTSIZ];
+} help_page_t;
 
 typedef enum
 {
@@ -100,7 +98,7 @@ get_help_lines (char *text)
  * of lines that were written. 
  */
 static int
-help_write_pad (window_t *win, char *title, char *text, keys_e action)
+help_write_pad (struct window *win, char *title, char *text, enum key action)
 {
   int colnum, rownum;
   char *bindings_title = "key bindings: %s";
@@ -150,7 +148,7 @@ help_write_pad (window_t *win, char *title, char *text, keys_e action)
  * faster. 
  */
 void
-help_wins_init (scrollwin_t *hwin, int x, int y, int h, int w)
+help_wins_init (struct scrollwin *hwin, int x, int y, int h, int w)
 {
   const int PADOFFSET = 4;
   const int TITLELINES = 3;
@@ -175,7 +173,7 @@ help_wins_init (scrollwin_t *hwin, int x, int y, int h, int w)
  * size and placement.
  */
 static void
-help_wins_reinit (scrollwin_t *hwin)
+help_wins_reinit (struct scrollwin *hwin)
 {
   wins_scrollwin_delete (hwin);
   wins_get_config ();
@@ -184,7 +182,7 @@ help_wins_reinit (scrollwin_t *hwin)
 
 /* Reset the screen, needed when resizing terminal for example. */
 static void
-help_wins_reset (scrollwin_t *hwin)
+help_wins_reset (struct scrollwin *hwin)
 {
   endwin ();
   refresh ();
@@ -326,9 +324,9 @@ help_screen (void)
     MOVE_RIGHT,
     DIRECTIONS
   };
-  scrollwin_t hwin;
+  struct scrollwin hwin;
   int need_resize;
-  keys_e ch = KEY_GENERIC_HELP;
+  enum key ch = KEY_GENERIC_HELP;
   int page, oldpage;
   help_page_t hscr[HELPSCREENS];
   char keystr[DIRECTIONS][BUFSIZ];
diff --git a/src/help.h b/src/help.h
deleted file mode 100755
index b5ac6be..0000000
--- a/src/help.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*	$calcurse: help.h,v 1.10 2009/07/05 20:33:20 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2008 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_HELP_H
-#define CALCURSE_HELP_H
-
-#include "wins.h"
-
-#define HELPTEXTSIZ 4096
-
-typedef struct {
-  char *title;
-  char text[HELPTEXTSIZ];
-} help_page_t;
-
-void help_wins_init (scrollwin_t *, int, int, int, int);
-void help_screen (void);
-
-#endif /* CALCURSE_HELP_H */
diff --git a/src/i18n.h b/src/i18n.h
deleted file mode 100755
index 3526ee7..0000000
--- a/src/i18n.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*	$calcurse: i18n.h,v 1.4 2009/07/05 20:33:20 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2006 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_I18N_H
-#define CALCURSE_I18N_H
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#if ENABLE_NLS
-#include <locale.h>
-#include <libintl.h>
-#undef _
-#define _(String) gettext(String)
-#ifdef gettext_noop
-#define N_(String) gettext_noop(String)
-#else
-#define N_(String) (String)
-#endif
-#else /* NLS disabled */
-#define _(String) (String)
-#define N_(String) (String)
-#define textdomain(String) (String)
-#define gettext(String) (String)
-#define dgettext(String) (String)
-#define dcgettext(String) (String)
-#define bindtextdomain(String) (String)
-#define bind_textdomain_codeset(Domain,Codeset) (Codeset)
-#endif /* ENABLE_NLS */
-
-#endif /* CALCURSE_I18N_H */
diff --git a/src/io.c b/src/io.c
index 1ef3c6f..28b6bdb 100755
--- a/src/io.c
+++ b/src/io.c
@@ -1,9 +1,9 @@
-/*	$calcurse: io.c,v 1.80 2009/11/01 11:06:37 culot Exp $	*/
+/*	$calcurse: io.c,v 1.81 2010/03/20 10:54:46 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -45,21 +45,7 @@
 #include <unistd.h>
 #include <errno.h>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include "i18n.h"
-#include "utils.h"
-#include "custom.h"
-#include "todo.h"
-#include "event.h"
-#include "apoint.h"
-#include "recur.h"
-#include "keys.h"
-#include "htable.h"
-#include "mem.h"
-#include "io.h"
+#include "calcurse.h"
 
 #define ICALDATEFMT      "%Y%m%d"
 #define ICALDATETIMEFMT  "%Y%m%dT%H%M%S"
@@ -96,15 +82,15 @@ typedef enum {
 } ical_vevent_e;
 
 typedef struct {
-  recur_types_t type;
-  int           freq;
-  long          until;
-  unsigned      count;
+  enum recur_type type;
+  int             freq;
+  long            until;
+  unsigned        count;
 } ical_rpt_t;
 
 struct ht_keybindings_s {
-  char *label;
-  keys_e key;
+  char     *label;
+  enum key  key;
   HTABLE_ENTRY (ht_keybindings_s);
 };
 
@@ -218,7 +204,7 @@ progress_bar (progress_bar_t type, int progress)
 
 /* Ask user for a file name to export data to. */
 static FILE *
-get_export_stream (export_type_t type)
+get_export_stream (enum export_type type)
 {
   FILE *stream;
   int cancel;
@@ -263,7 +249,7 @@ get_export_stream (export_type_t type)
  * (mainly used to export data).
  */
 static void
-foreach_date_dump (const long date_end, struct rpt_s *rpt, struct days_s *exc,
+foreach_date_dump (const long date_end, struct rpt *rpt, struct days *exc,
                    long item_first_date, long item_dur, char *item_mesg,
                    cb_dump_t cb_dump, FILE *stream)
 {
@@ -357,8 +343,8 @@ pcal_export_footer (FILE *stream)
 static void
 ical_export_recur_events (FILE *stream)
 {
-  struct recur_event_s *i;
-  struct days_s *day;
+  struct recur_event *i;
+  struct days *day;
   char ical_date[BUFSIZ];
 
   for (i = recur_elist; i != 0; i = i->next)
@@ -422,7 +408,7 @@ pcal_dump_apoint (FILE *stream, long apoint_date, long apoint_dur,
 static void
 pcal_export_recur_events (FILE *stream)
 {
-  struct recur_event_s *i;
+  struct recur_event *i;
   char pcal_date[BUFSIZ];
 
   (void)fprintf (stream, "\n# =============");
@@ -476,7 +462,7 @@ pcal_export_recur_events (FILE *stream)
 static void
 ical_export_events (FILE *stream)
 {
-  struct event_s *i;
+  struct event *i;
   char ical_date[BUFSIZ];
 
   for (i = eventlist; i != 0; i = i->next)
@@ -492,7 +478,7 @@ ical_export_events (FILE *stream)
 static void
 pcal_export_events (FILE *stream)
 {
-  struct event_s *i;
+  struct event *i;
   
   (void)fprintf (stream, "\n# ======\n# Events\n# ======\n");
   for (i = eventlist; i != 0; i = i->next)
@@ -504,8 +490,8 @@ pcal_export_events (FILE *stream)
 static void
 ical_export_recur_apoints (FILE *stream)
 {
-  recur_apoint_llist_node_t *i;
-  struct days_s *day;
+  struct recur_apoint *i;
+  struct days *day;
   char ical_datetime[BUFSIZ];
   char ical_date[BUFSIZ];
 
@@ -550,7 +536,7 @@ ical_export_recur_apoints (FILE *stream)
 static void
 pcal_export_recur_apoints (FILE *stream)
 {
-  recur_apoint_llist_node_t *i;
+  struct recur_apoint *i;
   char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ];
   
   (void)fprintf (stream, "\n# ==============");
@@ -609,7 +595,7 @@ pcal_export_recur_apoints (FILE *stream)
 static void
 ical_export_apoints (FILE *stream)
 {
-  apoint_llist_node_t *i;
+  struct apoint *i;
   char ical_datetime[BUFSIZ];
 
   pthread_mutex_lock (&(alist_p->mutex));
@@ -630,7 +616,7 @@ ical_export_apoints (FILE *stream)
 static void
 pcal_export_apoints (FILE *stream)
 {
-  apoint_llist_node_t *i;
+  struct apoint *i;
 
   (void)fprintf (stream, "\n# ============\n# Appointments\n# ============\n");
   pthread_mutex_lock (&(alist_p->mutex));
@@ -644,7 +630,7 @@ pcal_export_apoints (FILE *stream)
 static void
 ical_export_todo (FILE *stream)
 {
-  struct todo_s *i;
+  struct todo *i;
 
   for (i = todolist; i != 0; i = i->next)
     {
@@ -661,7 +647,7 @@ ical_export_todo (FILE *stream)
 static void
 pcal_export_todo (FILE *stream)
 {
-  struct todo_s *i;
+  struct todo *i;
 
   (void)fprintf (stream, "#\n# Todos\n#\n");
   for (i = todolist; i != 0; i = i->next)
@@ -831,7 +817,7 @@ static pthread_mutex_t io_save_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 /* Save the user configuration. */
 unsigned
-io_save_conf (conf_t *conf)
+io_save_conf (struct conf *conf)
 {
   char *config_txt =
     "#\n"
@@ -969,8 +955,8 @@ io_save_conf (conf_t *conf)
 unsigned
 io_save_apts (void)
 {
-  apoint_llist_node_t *a;
-  struct event_s *e;  
+  struct apoint *a;
+  struct event *e;  
   FILE *fp;
 
   if ((fp = fopen (path_apts, "w")) == 0)
@@ -996,7 +982,7 @@ io_save_apts (void)
 unsigned
 io_save_todo (void)
 {
-  struct todo_s *t;  
+  struct todo *t;  
   FILE *fp;
   
   if ((fp = fopen (path_todo, "w")) == 0)
@@ -1031,7 +1017,7 @@ io_save_keys (void)
 
 /* Save the calendar data */
 void
-io_save_cal (conf_t *conf, io_save_display_t display)
+io_save_cal (struct conf *conf, enum save_display display)
 {
   char *access_pb = _("Problems accessing data file ...");
   char *save_success = _("The data files were successfully saved");
@@ -1089,7 +1075,7 @@ io_load_app (void)
   FILE *data_file;
   int c, is_appointment, is_event, is_recursive;
   struct tm start, end, until, *lt;
-  struct days_s *exc;
+  struct days *exc;
   time_t t;
   int id = 0;
   int freq;
@@ -1367,7 +1353,7 @@ io_load_keys (char *pager)
   struct ht_keybindings_s keys[NBKEYS];
   FILE *keyfp;
   char buf[BUFSIZ];
-  io_file_t *log;
+  struct io_file *log;
   int i, skipped, loaded, line;
   const int MAX_ERRORS = 5;
 
@@ -1382,8 +1368,8 @@ io_load_keys (char *pager)
 
   for (i = 0; i < NBKEYS; i++)
     {
-      keys[i].key = (keys_e)i;
-      keys[i].label = keys_get_label ((keys_e)i);
+      keys[i].key = (enum key)i;
+      keys[i].label = keys_get_label ((enum key)i);
       HTABLE_INSERT (ht_keybindings, &ht_keys, &keys[i]);
     }
 
@@ -1611,7 +1597,7 @@ io_startup_screen (unsigned skip_dialogs, int no_data_file)
 
 /* Export calcurse data. */
 void
-io_export_data (export_type_t type, conf_t *conf)
+io_export_data (enum export_type type, struct conf *conf)
 {
   FILE *stream;
   char *success = _("The data were successfully exported");
@@ -1739,7 +1725,7 @@ ical_store_todo (int priority, char *mesg, char *note)
 
 static void
 ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
-                  days_t *exc)
+                  struct days *exc)
 {
   const int EVENTID = 1;
   
@@ -1771,7 +1757,7 @@ ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
 
 static void
 ical_store_apoint (char *mesg, char *note, long start, long dur,
-                   ical_rpt_t *rpt, days_t *exc, int has_alarm)
+                   ical_rpt_t *rpt, struct days *exc, int has_alarm)
 {
   char state = 0L;
 
@@ -1922,7 +1908,7 @@ static float
 ical_chk_header (FILE *fd, unsigned *lineno)
 {
   const int HEADER_MALFORMED = -1;
-  const string_t icalheader = STRING_BUILD ("BEGIN:VCALENDAR");
+  const struct string icalheader = STRING_BUILD ("BEGIN:VCALENDAR");
   char buf[BUFSIZ];
 
   (void)fgets (buf, BUFSIZ, fd);
@@ -1971,7 +1957,7 @@ static long
 ical_datetime2long (char *datestr, ical_vevent_e *type)
 {
   const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 5;
-  date_t date;
+  struct date date;
   unsigned hour, min;
   long datelong;
   int format;
@@ -2174,12 +2160,12 @@ static ical_rpt_t *
 ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
                  const int itemline)
 {
-  const string_t daily = STRING_BUILD ("DAILY");
-  const string_t weekly = STRING_BUILD ("WEEKLY");
-  const string_t monthly = STRING_BUILD ("MONTHLY");
-  const string_t yearly = STRING_BUILD ("YEARLY");
-  const string_t count = STRING_BUILD ("COUNT=");
-  const string_t interv = STRING_BUILD ("INTERVAL=");
+  const struct string daily = STRING_BUILD ("DAILY");
+  const struct string weekly = STRING_BUILD ("WEEKLY");
+  const struct string monthly = STRING_BUILD ("MONTHLY");
+  const struct string yearly = STRING_BUILD ("YEARLY");
+  const struct string count = STRING_BUILD ("COUNT=");
+  const struct string interv = STRING_BUILD ("INTERVAL=");
   unsigned interval;
   ical_rpt_t *rpt;
   char *p;
@@ -2285,15 +2271,15 @@ ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
 }
 
 static void
-ical_add_exc (days_t **exc_head, long date)
+ical_add_exc (struct days **exc_head, long date)
 {
   if (date == 0)
     return;
   else
     {
-      struct days_s *exc;
+      struct days *exc;
       
-      exc = mem_malloc (sizeof (struct days_s));
+      exc = mem_malloc (sizeof (struct days));
       exc->st = date;
       exc->next = *exc_head;
       *exc_head = exc;
@@ -2304,11 +2290,11 @@ ical_add_exc (days_t **exc_head, long date)
  * This property defines the list of date/time exceptions for a
  * recurring calendar component.
  */
-static days_t *
+static struct days *
 ical_read_exdate (FILE *log, char *exstr, unsigned *noskipped,
                   const int itemline)
 {
-  days_t *exc;
+  struct days *exc;
   char *p, *q;
   long date;
 
@@ -2394,7 +2380,6 @@ ical_read_note (char *first_line, FILE *fdi, unsigned *noskipped,
 
 /* Returns an allocated string containing the ical item summary. */
 static char *
-
 ical_read_summary (char *first_line, FILE *fdi, unsigned *lineno)
 {
   char *p, *summary;
@@ -2414,20 +2399,20 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints,
                  unsigned *noskipped, unsigned *lineno)
 {
   const int ITEMLINE = *lineno;
-  const string_t endevent = STRING_BUILD ("END:VEVENT");
-  const string_t summary  = STRING_BUILD ("SUMMARY:");
-  const string_t dtstart  = STRING_BUILD ("DTSTART");
-  const string_t dtend    = STRING_BUILD ("DTEND");
-  const string_t duration = STRING_BUILD ("DURATION:");
-  const string_t rrule    = STRING_BUILD ("RRULE");
-  const string_t exdate   = STRING_BUILD ("EXDATE");
-  const string_t alarm    = STRING_BUILD ("BEGIN:VALARM");
-  const string_t endalarm = STRING_BUILD ("END:VALARM");  
-  const string_t desc     = STRING_BUILD ("DESCRIPTION");
+  const struct string endevent = STRING_BUILD ("END:VEVENT");
+  const struct string summary  = STRING_BUILD ("SUMMARY:");
+  const struct string dtstart  = STRING_BUILD ("DTSTART");
+  const struct string dtend    = STRING_BUILD ("DTEND");
+  const struct string duration = STRING_BUILD ("DURATION:");
+  const struct string rrule    = STRING_BUILD ("RRULE");
+  const struct string exdate   = STRING_BUILD ("EXDATE");
+  const struct string alarm    = STRING_BUILD ("BEGIN:VALARM");
+  const struct string endalarm = STRING_BUILD ("END:VALARM");  
+  const struct string desc     = STRING_BUILD ("DESCRIPTION");
   ical_vevent_e vevent_type;
   char *p, buf[BUFSIZ], buf_upper[BUFSIZ];
   struct {
-    days_t       *exc;
+    struct days  *exc;
     ical_rpt_t   *rpt;
     char         *mesg, *note;
     long          start, end, dur;
@@ -2607,11 +2592,11 @@ static void
 ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped,
                 unsigned *lineno)
 {
-  const string_t endtodo  = STRING_BUILD ("END:VTODO");
-  const string_t summary  = STRING_BUILD ("SUMMARY");
-  const string_t alarm    = STRING_BUILD ("BEGIN:VALARM");
-  const string_t endalarm = STRING_BUILD ("END:VALARM");
-  const string_t desc     = STRING_BUILD ("DESCRIPTION");
+  const struct string endtodo  = STRING_BUILD ("END:VTODO");
+  const struct string summary  = STRING_BUILD ("SUMMARY");
+  const struct string alarm    = STRING_BUILD ("BEGIN:VALARM");
+  const struct string endalarm = STRING_BUILD ("END:VALARM");
+  const struct string desc     = STRING_BUILD ("DESCRIPTION");
   const int LOWEST = 9;
   const int ITEMLINE = *lineno;
   char buf[BUFSIZ], buf_upper[BUFSIZ];
@@ -2701,7 +2686,7 @@ cleanup:
 }
 
 static FILE *
-get_import_stream (export_type_t type)
+get_import_stream (enum export_type type)
 {
   FILE *stream;
   char *stream_name;
@@ -2742,10 +2727,10 @@ get_import_stream (export_type_t type)
  * and is cleared at the end.
  */
 void
-io_import_data (import_type_t type, conf_t *conf, char *stream_name)
+io_import_data (enum import_type type, struct conf *conf, char *stream_name)
 {
-  const string_t vevent = STRING_BUILD ("BEGIN:VEVENT");
-  const string_t vtodo = STRING_BUILD ("BEGIN:VTODO");
+  const struct string vevent = STRING_BUILD ("BEGIN:VEVENT");
+  const struct string vtodo = STRING_BUILD ("BEGIN:VTODO");
   char *proc_report = _("Import process report: %04d lines read ");
   char *lines_stats =
     _("%d apps / %d events / %d todos / %d skipped ");
@@ -2753,7 +2738,7 @@ io_import_data (import_type_t type, conf_t *conf, char *stream_name)
     _("%d apps / %d events / %d todos / %d skipped ([ENTER] to continue)");
   char buf[BUFSIZ];
   FILE *stream = NULL;
-  io_file_t *log;
+  struct io_file *log;
   float ical_version;
   struct {
     unsigned events, apoints, todos, lines, skipped;
@@ -2844,17 +2829,17 @@ io_import_data (import_type_t type, conf_t *conf, char *stream_name)
   io_log_free (log);
 }
 
-io_file_t *
+struct io_file *
 io_log_init (void)
 {
   const char *logprefix = "/tmp/calcurse_log.";
   char *logname;
-  io_file_t *log;
+  struct io_file *log;
 
   logname = new_tempfile (logprefix, NOTESIZ);
   RETVAL_IF (logname == 0, 0,
              _("Warning: could not create temporary log file, Aborting..."));
-  log = mem_malloc (sizeof (io_file_t));
+  log = mem_malloc (sizeof (struct io_file));
   RETVAL_IF (log == 0, 0,
              _("Warning: could not open temporary log file, Aborting..."));
   (void)snprintf (log->name, sizeof (log->name), "%s%s", logprefix, logname);
@@ -2871,14 +2856,14 @@ io_log_init (void)
 }
 
 void
-io_log_print (io_file_t *log, int line, char *msg)
+io_log_print (struct io_file *log, int line, char *msg)
 {
   if (log && log->fd)
     (void)fprintf (log->fd, "line %d: %s\n", line, msg);
 }
 
 void
-io_log_display (io_file_t *log, char *msg, char *pager)
+io_log_display (struct io_file *log, char *msg, char *pager)
 {
   char *choices = "[y/n] ";
   int ans;
@@ -2913,7 +2898,7 @@ io_log_display (io_file_t *log, char *msg, char *pager)
 }
 
 void
-io_log_free (io_file_t *log)
+io_log_free (struct io_file *log)
 {
   if (!log)
     return;
@@ -2929,10 +2914,10 @@ static pthread_t io_t_psave;
 static void *
 io_psave_thread (void *arg)
 {
-  conf_t *config;
+  struct conf *config;
   int delay;
 
-  config = (conf_t *)arg;
+  config = (struct conf *)arg;
   delay = config->periodic_save;
   EXIT_IF (delay < 0, _("Invalid delay"));
   
@@ -2945,7 +2930,7 @@ io_psave_thread (void *arg)
 
 /* Launch the thread which handles periodic saves. */
 void
-io_start_psave_thread (conf_t *conf)
+io_start_psave_thread (struct conf *conf)
 {
   pthread_create (&io_t_psave, NULL, io_psave_thread, (void *)conf);
 }
diff --git a/src/io.h b/src/io.h
deleted file mode 100755
index 82b6f69..0000000
--- a/src/io.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*	$calcurse: io.h,v 1.27 2009/11/01 11:06:37 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_IO_H
-#define CALCURSE_IO_H
-
-#include "vars.h"
-
-typedef enum {
-  IO_IMPORT_ICAL,
-  IO_IMPORT_NBTYPES
-} import_type_t;
-
-typedef enum {
-  IO_EXPORT_ICAL,
-  IO_EXPORT_PCAL,
-  IO_EXPORT_NBTYPES
-} export_type_t;
-
-typedef enum {
-  IO_SAVE_DISPLAY_BAR,
-  IO_SAVE_DISPLAY_MARK,
-  IO_SAVE_DISPLAY_NONE
-} io_save_display_t;
-
-typedef struct {
-  FILE *fd;
-  char name[BUFSIZ];
-} io_file_t;
-
-unsigned    io_fprintln (const char *, const char *, ...);
-void        io_init (char *, char *);
-void        io_extract_data (char *, const char *, int);
-unsigned    io_save_conf (conf_t *);
-unsigned    io_save_apts (void);
-unsigned    io_save_todo (void);
-unsigned    io_save_keys (void);
-void        io_save_cal (conf_t *, io_save_display_t);
-void        io_load_app (void);
-void        io_load_todo (void);
-void        io_load_keys (char *);
-void        io_check_dir (char *, int *);
-unsigned    io_file_exist (char *);
-void        io_check_file (char *, int *);
-int         io_check_data_files (void);
-void        io_startup_screen (unsigned, int);
-void        io_export_data (export_type_t, conf_t *);
-void        io_export_bar (void);
-void        io_import_data (import_type_t, conf_t *, char *);
-io_file_t  *io_log_init (void);
-void        io_log_print (io_file_t *, int, char *);
-void        io_log_display (io_file_t *, char *, char *);
-void        io_log_free (io_file_t *);
-void        io_start_psave_thread (conf_t *);
-void        io_stop_psave_thread (void);
-void        io_set_lock (void);
-unsigned    io_dump_pid (char *);
-unsigned    io_get_pid (char *);
-
-#endif /* !CALCURSE_IO_H */
diff --git a/src/keys.c b/src/keys.c
index ef94efc..16a81d8 100755
--- a/src/keys.c
+++ b/src/keys.c
@@ -1,9 +1,9 @@
-/*	$calcurse: keys.c,v 1.17 2009/07/05 20:33:21 culot Exp $	*/
+/*	$calcurse: keys.c,v 1.18 2010/03/20 10:54:46 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2008-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2008-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,11 +39,7 @@
 #include <string.h>
 #include <math.h>
 
-#include "i18n.h"
-#include "utils.h"
-#include "custom.h"
-#include "mem.h"
-#include "keys.h"
+#include "calcurse.h"
 
 #define MAXKEYVAL   KEY_MAX  /* ncurses defines KEY_MAX as maximum key value */
 
@@ -59,7 +55,7 @@ struct key_str_s {
 
 static struct key_str_s *keys[NBKEYS];
 
-static keys_e actions[MAXKEYVAL];
+static enum key actions[MAXKEYVAL];
 
 static struct keydef_s keydef[NBKEYS] = {
   {"generic-cancel", "ESC"},
@@ -181,7 +177,7 @@ keys_dump_defaults (char *file)
 }
 
 char *
-keys_get_label (keys_e key)
+keys_get_label (enum key key)
 {
   EXIT_IF (key < 0 || key > NBKEYS,
            _("FATAL ERROR: key value out of bounds"));
@@ -189,7 +185,7 @@ keys_get_label (keys_e key)
   return keydef[key].label;
 }
 
-keys_e
+enum key
 keys_get_action (int pressed)
 {
   if (pressed < 0 || pressed > MAXKEYVAL)
@@ -198,7 +194,7 @@ keys_get_action (int pressed)
     return actions[pressed];
 }
 
-keys_e
+enum key
 keys_getch (WINDOW *win)
 {
   int ch;
@@ -214,7 +210,7 @@ keys_getch (WINDOW *win)
 }
 
 static void
-add_key_str (keys_e action, int key)
+add_key_str (enum key action, int key)
 {
   struct key_str_s *new, **i;
   
@@ -242,7 +238,7 @@ add_key_str (keys_e action, int key)
 }
 
 int
-keys_assign_binding (int key, keys_e action)
+keys_assign_binding (int key, enum key action)
 {
   if (key < 0 || key > MAXKEYVAL || actions[key] != KEY_UNDEF)
     return 1;
@@ -256,7 +252,7 @@ keys_assign_binding (int key, keys_e action)
 }
 
 static void
-del_key_str (keys_e action, int key)
+del_key_str (enum key action, int key)
 {
   struct key_str_s *old, **i;
   char oldstr[BUFSIZ];
@@ -279,7 +275,7 @@ del_key_str (keys_e action, int key)
 }
 
 void
-keys_remove_binding (int key, keys_e action)
+keys_remove_binding (int key, enum key action)
 {
   if (key < 0 || key > MAXKEYVAL)
     return;
@@ -293,16 +289,16 @@ keys_remove_binding (int key, keys_e action)
 int
 keys_str2int (char *key)
 {
-  const string_t CONTROL_KEY = STRING_BUILD ("C-");
-  const string_t TAB_KEY = STRING_BUILD ("TAB");
-  const string_t SPACE_KEY = STRING_BUILD ("SPC");  
-  const string_t ESCAPE_KEY = STRING_BUILD ("ESC");
-  const string_t CURSES_KEY_UP = STRING_BUILD ("UP");
-  const string_t CURSES_KEY_DOWN = STRING_BUILD ("DWN");
-  const string_t CURSES_KEY_LEFT = STRING_BUILD ("LFT");
-  const string_t CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
-  const string_t CURSES_KEY_HOME = STRING_BUILD ("KEY_HOME");
-  const string_t CURSES_KEY_END = STRING_BUILD ("KEY_END");
+  const struct string CONTROL_KEY = STRING_BUILD ("C-");
+  const struct string TAB_KEY = STRING_BUILD ("TAB");
+  const struct string SPACE_KEY = STRING_BUILD ("SPC");  
+  const struct string ESCAPE_KEY = STRING_BUILD ("ESC");
+  const struct string CURSES_KEY_UP = STRING_BUILD ("UP");
+  const struct string CURSES_KEY_DOWN = STRING_BUILD ("DWN");
+  const struct string CURSES_KEY_LEFT = STRING_BUILD ("LFT");
+  const struct string CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
+  const struct string CURSES_KEY_HOME = STRING_BUILD ("KEY_HOME");
+  const struct string CURSES_KEY_END = STRING_BUILD ("KEY_END");
 
   if (!key)
     return -1;
@@ -366,7 +362,7 @@ keys_int2str (int key)
 }
 
 int
-keys_action_count_keys (keys_e action)
+keys_action_count_keys (enum key action)
 {
   struct key_str_s *key;
   int i;
@@ -379,13 +375,13 @@ keys_action_count_keys (keys_e action)
 }
 
 char *
-keys_action_firstkey (keys_e action)
+keys_action_firstkey (enum key action)
 {
   return (keys[action] != NULL) ? keys[action]->str : "XXX"; 
 }
 
 char *
-keys_action_nkey (keys_e action, int keynum)
+keys_action_nkey (enum key action, int keynum)
 {
   struct key_str_s *key;
   int i;
@@ -401,7 +397,7 @@ keys_action_nkey (keys_e action, int keynum)
 }
 
 char *
-keys_action_allkeys (keys_e action)
+keys_action_allkeys (enum key action)
 {
   static char keystr[BUFSIZ];
   struct key_str_s *i;
@@ -451,7 +447,7 @@ keys_format_label (char *key, int keylen)
 }
 
 void
-keys_display_bindings_bar (WINDOW *win, binding_t **binding, int first_key,
+keys_display_bindings_bar (WINDOW *win, struct binding **binding, int first_key,
                            int last_key)
 {
   int i, j, cmdlen, space_between_cmds;
@@ -495,7 +491,7 @@ keys_display_bindings_bar (WINDOW *win, binding_t **binding, int first_key,
  * (could not add the keys descriptions to keydef variable, because of i18n).
  */
 void
-keys_popup_info (keys_e key)
+keys_popup_info (enum key key)
 {
   char *info[NBKEYS];
   WINDOW *infowin;
diff --git a/src/keys.h b/src/keys.h
deleted file mode 100755
index fd3a7cd..0000000
--- a/src/keys.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*	$calcurse: keys.h,v 1.11 2009/07/05 20:33:21 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2008-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_KEYS_H
-#define CALCURSE_KEYS_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#elif defined HAVE_NCURSES_NCURSES_H
-#include <ncurses/ncurses.h>
-#elif defined HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#error "Missing ncurses header. Aborting..."
-#endif
-
-#define CTRLVAL                 0x1F
-#define CTRL(x)                 ((x) & CTRLVAL)
-#define ESCAPE		        27
-#define TAB       		9
-#define SPACE                   32
-
-#define KEYS_KEYLEN		3 /* length of each keybinding */  
-#define KEYS_LABELEN		8 /* length of command description */
-#define KEYS_CMDS_PER_LINE	6 /* max number of commands per line */
-
-typedef enum
-  {
-    KEY_GENERIC_CANCEL,
-    KEY_GENERIC_SELECT,
-    KEY_GENERIC_CREDITS,
-    KEY_GENERIC_HELP,
-    KEY_GENERIC_QUIT,
-    KEY_GENERIC_SAVE,
-    KEY_GENERIC_CUT,
-    KEY_GENERIC_PASTE,
-    KEY_GENERIC_CHANGE_VIEW,
-    KEY_GENERIC_IMPORT,
-    KEY_GENERIC_EXPORT,
-    KEY_GENERIC_GOTO,
-    KEY_GENERIC_OTHER_CMD,
-    KEY_GENERIC_CONFIG_MENU,
-    KEY_GENERIC_REDRAW,
-    KEY_GENERIC_ADD_APPT,
-    KEY_GENERIC_ADD_TODO,
-    KEY_GENERIC_NEXT_DAY,
-    KEY_GENERIC_PREV_DAY,
-    KEY_GENERIC_NEXT_WEEK,
-    KEY_GENERIC_PREV_WEEK,
-    KEY_GENERIC_SCROLL_DOWN,
-    KEY_GENERIC_SCROLL_UP,
-    KEY_GENERIC_GOTO_TODAY,
-        
-    KEY_MOVE_RIGHT,
-    KEY_MOVE_LEFT,
-    KEY_MOVE_DOWN,
-    KEY_MOVE_UP,
-    KEY_START_OF_WEEK,
-    KEY_END_OF_WEEK,
-    KEY_ADD_ITEM,
-    KEY_DEL_ITEM,
-    KEY_EDIT_ITEM,
-    KEY_VIEW_ITEM,
-    KEY_FLAG_ITEM,
-    KEY_REPEAT_ITEM,
-    KEY_EDIT_NOTE,
-    KEY_VIEW_NOTE,
-    KEY_RAISE_PRIORITY,
-    KEY_LOWER_PRIORITY,
-
-    NBKEYS,
-    KEY_UNDEF
-  }
-keys_e;
-
-typedef struct {
-  char    *label;
-  keys_e   action;
-} binding_t;
-
-void    keys_init (void);
-void    keys_free (void);
-void    keys_dump_defaults (char *);
-char   *keys_get_label (keys_e);
-keys_e  keys_get_action (int);
-keys_e  keys_getch (WINDOW *win);
-int     keys_assign_binding (int, keys_e);
-void    keys_remove_binding (int, keys_e);
-int     keys_str2int (char *);
-char   *keys_int2str (int);
-int     keys_action_count_keys (keys_e);
-char   *keys_action_firstkey (keys_e);
-char   *keys_action_nkey (keys_e, int);
-char   *keys_action_allkeys (keys_e);
-void    keys_display_bindings_bar (WINDOW *, binding_t **, int, int);
-void    keys_popup_info (keys_e);
-void    keys_save_bindings (FILE *);
-int     keys_check_missing_bindings (void);
-void    keys_fill_missing (void);
-
-#endif /* CALCURSE_KEYS_H */
diff --git a/src/mem.c b/src/mem.c
index 7939e2b..482c7e0 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -1,9 +1,9 @@
-/*	$calcurse: mem.c,v 1.6 2009/07/19 07:44:59 culot Exp $	*/
+/*	$calcurse: mem.c,v 1.7 2010/03/20 10:54:46 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2008-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2008-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,9 +41,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 
-#include "i18n.h"
-#include "utils.h"
-#include "mem.h"
+#include "calcurse.h"
 
 enum {
   BLK_STATE,
@@ -58,26 +56,26 @@ enum {
 #define MAGIC_ALLOC        0xda
 #define MAGIC_FREE         0xdf
 
-struct mem_blk_s {
+struct mem_blk {
   unsigned id, size;
   const char *pos;
-  struct mem_blk_s *next;
+  struct mem_blk *next;
 };
 
-typedef struct {
+struct mem_stats {
   unsigned ncall, nalloc, nfree;
-  struct mem_blk_s *blk;
-} mem_stats_t;
+  struct mem_blk *blk;
+};
 
-static mem_stats_t mstats;
+static struct mem_stats mstats;
 
 
 static unsigned
 stats_add_blk (size_t size, const char *pos)
 {
-  struct mem_blk_s *o, **i;
+  struct mem_blk *o, **i;
 
-  o = malloc (sizeof (struct mem_blk_s));
+  o = malloc (sizeof (*o));
   EXIT_IF (o == 0, _("could not allocate memory to store block info"));
 
   mstats.ncall++;
@@ -98,7 +96,7 @@ stats_add_blk (size_t size, const char *pos)
 static void
 stats_del_blk (unsigned id)
 {
-  struct mem_blk_s *o, **i;
+  struct mem_blk *o, **i;
 
   EXIT_IF (id < 0, _("Incorrect block id"));
 
@@ -289,7 +287,7 @@ dbg_free (void *ptr, const char *pos)
 #ifdef CALCURSE_MEMORY_DEBUG
 
 static void
-dump_block_info (struct mem_blk_s *blk)
+dump_block_info (struct mem_blk *blk)
 {
   if (blk == 0)
     return;
@@ -315,7 +313,7 @@ mem_stats (void)
 
   if (mstats.nfree < mstats.nalloc)
     {
-      struct mem_blk_s *blk;
+      struct mem_blk *blk;
 
       for (blk = mstats.blk; blk; blk = blk->next)
         dump_block_info (blk);
diff --git a/src/mem.h b/src/mem.h
deleted file mode 100644
index 62f8220..0000000
--- a/src/mem.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*	$calcurse: mem.h,v 1.3 2009/07/12 17:48:13 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2008-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_MEM_H
-#define CALCURSE_MEM_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include "utils.h"
-
-
-void  *xmalloc (size_t);
-void  *xcalloc (size_t, size_t);
-void  *xrealloc (void *, size_t, size_t);
-char  *xstrdup (const char *);
-void   xfree (void *);
-
-#ifdef CALCURSE_MEMORY_DEBUG
-
-#define mem_malloc(s)         dbg_malloc ((s), __FILE_POS__)
-#define mem_calloc(n, s)      dbg_calloc ((n), (s), __FILE_POS__)
-#define mem_realloc(p, n, s)  dbg_realloc ((p), (n), (s), __FILE_POS__)
-#define mem_strdup(s)         dbg_strdup ((s), __FILE_POS__)
-#define mem_free(p)           dbg_free ((p), __FILE_POS__)
-
-void  *dbg_malloc (size_t, const char *);
-void  *dbg_calloc (size_t, size_t, const char *);
-void  *dbg_realloc (void *, size_t, size_t, const char *);
-char  *dbg_strdup (const char *, const char *);
-void   dbg_free (void *, const char *);
-void   mem_stats (void);
-
-#else /* !CALCURSE_MEMORY_DEBUG */
-
-#define mem_malloc(s)         xmalloc ((s))
-#define mem_calloc(n, s)      xcalloc ((n), (s))
-#define mem_realloc(p, n, s)  xrealloc ((p), (n), (s))
-#define mem_strdup(s)         xstrdup ((s))
-#define mem_free(p)           xfree ((p))
-#define mem_stats()        
-
-#endif /* CALCURSE_MEMORY_DEBUG */
-
-#endif /* CALCURSE_MEM_H */
diff --git a/src/notify.c b/src/notify.c
index 364b4d2..1695faf 100755
--- a/src/notify.c
+++ b/src/notify.c
@@ -1,9 +1,9 @@
-/*	$calcurse: notify.c,v 1.48 2010/02/14 17:29:16 culot Exp $	*/
+/*	$calcurse: notify.c,v 1.49 2010/03/20 10:54:47 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,19 +41,20 @@
 #include <string.h>
 #include <unistd.h>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
+#include "calcurse.h"
 
-#include "i18n.h"
-#include "utils.h"
-#include "custom.h"
-#include "keys.h"
-#include "mem.h"
-#include "notify.h"
+#define NOTIFY_FIELD_LENGTH	25
 
-static struct notify_vars_s   notify;
-static struct notify_app_s    notify_app;
+struct notify_vars {
+  WINDOW *win;
+  char *apts_file;
+  char time[NOTIFY_FIELD_LENGTH];
+  char date[NOTIFY_FIELD_LENGTH];
+  pthread_mutex_t mutex;
+};
+
+static struct notify_vars     notify;
+static struct notify_app      notify_app;
 static pthread_attr_t         detached_thread_attr;
 static pthread_t              notify_t_main;
 
@@ -364,7 +365,7 @@ notify_main_thread (void *arg)
 
 /* Fill the given structure with information about next appointment. */
 unsigned
-notify_get_next (struct notify_app_s *a)
+notify_get_next (struct notify_app *a)
 {
   time_t current_time;
   
@@ -390,7 +391,7 @@ notify_get_next (struct notify_app_s *a)
 unsigned
 notify_get_next_bkgd (void)
 {
-  struct notify_app_s a;
+  struct notify_app a;
 
   a.txt = (char *)0;
   if (!notify_get_next (&a))
@@ -429,7 +430,7 @@ notify_app_txt (void)
 static void *
 notify_thread_app (void *arg)
 {
-  struct notify_app_s tmp_app;
+  struct notify_app tmp_app;
 
   if (!notify_get_next (&tmp_app))
     pthread_exit ((void *)0);
@@ -501,7 +502,7 @@ notify_check_added (char *mesg, long start, char state)
 
 /* Check if the newly repeated appointment is to be notified. */
 void
-notify_check_repeated (recur_apoint_llist_node_t *i)
+notify_check_repeated (struct recur_apoint *i)
 {
   long real_app_time;
   int update_notify = 0;
@@ -549,7 +550,7 @@ notify_same_item (long time)
 }
 
 int
-notify_same_recur_item (recur_apoint_llist_node_t *i)
+notify_same_recur_item (struct recur_apoint *i)
 {
   int same = 0;
   long item_start = 0;
@@ -684,7 +685,7 @@ print_config_options (WINDOW *optwin)
 }
 
 static void
-reinit_conf_win (scrollwin_t *win)
+reinit_conf_win (struct scrollwin *win)
 {
   unsigned first_line;
 
@@ -700,7 +701,7 @@ reinit_conf_win (scrollwin_t *win)
 void
 notify_config_bar (void)
 {
-  scrollwin_t cwin;
+  struct scrollwin cwin;
   char *buf;
   char *number_str =
     _("Enter an option number to change its value");
diff --git a/src/notify.h b/src/notify.h
deleted file mode 100755
index 0e21198..0000000
--- a/src/notify.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*	$calcurse: notify.h,v 1.21 2009/08/01 20:29:50 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_NOTIFY_H
-#define CALCURSE_NOTIFY_H
-
-#include "wins.h"
-#include "apoint.h"
-#include "recur.h"
-
-#define NOTIFY_FIELD_LENGTH	25
-
-struct notify_vars_s
-{
-  WINDOW *win;
-  char *apts_file;
-  char time[NOTIFY_FIELD_LENGTH];
-  char date[NOTIFY_FIELD_LENGTH];
-  pthread_mutex_t mutex;
-};
-
-struct notify_app_s
-{
-  long time;
-  int got_app;
-  char *txt;
-  char state;
-  pthread_mutex_t mutex;
-};
-
-int       notify_time_left (void);
-unsigned  notify_needs_reminder (void);
-void      notify_update_app (long, char, char *);
-int       notify_bar (void);
-void      notify_init_vars (void);
-void      notify_init_bar (void);
-void      notify_free_app (void);
-void      notify_start_main_thread (void);
-void      notify_stop_main_thread (void);
-void      notify_reinit_bar (void);
-unsigned  notify_launch_cmd (void);
-void      notify_update_bar (void);
-unsigned  notify_get_next (struct notify_app_s *);
-unsigned  notify_get_next_bkgd (void);
-char     *notify_app_txt (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_config_bar (void);
-
-#endif /* CALCURSE_NOTIFY_H */
diff --git a/src/recur.c b/src/recur.c
index 5d06726..34910a4 100755
--- a/src/recur.c
+++ b/src/recur.c
@@ -1,4 +1,4 @@
-/*	$calcurse: recur.c,v 1.53 2010/03/08 08:44:44 culot Exp $	*/
+/*	$calcurse: recur.c,v 1.54 2010/03/20 10:54:47 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
@@ -42,24 +42,18 @@
 #include <sys/types.h>
 #include <time.h>
 
-#include "i18n.h"
-#include "utils.h"
-#include "notify.h"
-#include "day.h"
-#include "keys.h"
-#include "mem.h"
-#include "recur.h"
+#include "calcurse.h"
 
-recur_apoint_llist_t             *recur_alist_p;
-struct recur_event_s             *recur_elist;
-static struct recur_event_s       bkp_cut_recur_event;
-static recur_apoint_llist_node_t  bkp_cut_recur_apoint;
+struct recur_apoint_list         *recur_alist_p;
+struct recur_event               *recur_elist;
+static struct recur_event         bkp_cut_recur_event;
+static struct recur_apoint        bkp_cut_recur_apoint;
 
 
 static void
-free_exc (struct days_s *exc)
+free_exc (struct days *exc)
 {
-  struct days_s *o, **i;
+  struct days *o, **i;
 
   i = &exc;
   while (*i)
@@ -71,11 +65,11 @@ free_exc (struct days_s *exc)
 }
 
 static void
-recur_add_exc (struct days_s **exc, long day)
+recur_add_exc (struct days **exc, long day)
 {
-  struct days_s **i, *o;
+  struct days **i, *o;
   
-  o = mem_malloc (sizeof (struct days_s));
+  o = mem_malloc (sizeof (struct days));
   o->st = day;
   i = exc;
   for (;;)
@@ -91,16 +85,16 @@ recur_add_exc (struct days_s **exc, long day)
 }
 
 static void
-exc_dup (struct days_s **in, struct days_s *exc)
+exc_dup (struct days **in, struct days *exc)
 {
-  struct days_s *p;
+  struct days *p;
   
   for (p = exc; p; p = p->next)
     recur_add_exc (in, p->st);
 }
 
 void
-recur_event_free_bkp (erase_flag_e flag)
+recur_event_free_bkp (enum eraseflg flag)
 {
   if (bkp_cut_recur_event.mesg)
     {
@@ -121,7 +115,7 @@ recur_event_free_bkp (erase_flag_e flag)
 }
 
 void
-recur_apoint_free_bkp (erase_flag_e flag)
+recur_apoint_free_bkp (enum eraseflg flag)
 {
   if (bkp_cut_recur_apoint.mesg)
     {
@@ -142,7 +136,7 @@ recur_apoint_free_bkp (erase_flag_e flag)
 }
 
 static void
-recur_event_dup (struct recur_event_s *in, struct recur_event_s *bkp)
+recur_event_dup (struct recur_event *in, struct recur_event *bkp)
 {
   EXIT_IF (!in || !bkp, _("null pointer"));
 
@@ -150,7 +144,7 @@ recur_event_dup (struct recur_event_s *in, struct recur_event_s *bkp)
   bkp->day = in->day;
   bkp->mesg = mem_strdup (in->mesg);
   
-  bkp->rpt = mem_malloc (sizeof (struct rpt_s));
+  bkp->rpt = mem_malloc (sizeof (struct rpt));
   bkp->rpt->type = in->rpt->type;
   bkp->rpt->freq = in->rpt->freq;
   bkp->rpt->until = in->rpt->until;
@@ -163,7 +157,7 @@ recur_event_dup (struct recur_event_s *in, struct recur_event_s *bkp)
 }
 
 static void
-recur_apoint_dup (recur_apoint_llist_node_t *in, recur_apoint_llist_node_t *bkp)
+recur_apoint_dup (struct recur_apoint *in, struct recur_apoint *bkp)
 {
   EXIT_IF (!in || !bkp, _("null pointer"));
 
@@ -172,7 +166,7 @@ recur_apoint_dup (recur_apoint_llist_node_t *in, recur_apoint_llist_node_t *bkp)
   bkp->state = in->state;
   bkp->mesg = mem_strdup (in->mesg);
   
-  bkp->rpt = mem_malloc (sizeof (struct rpt_s));
+  bkp->rpt = mem_malloc (sizeof (struct rpt));
   bkp->rpt->type = in->rpt->type;
   bkp->rpt->freq = in->rpt->freq;
   bkp->rpt->until = in->rpt->until;
@@ -187,7 +181,7 @@ recur_apoint_dup (recur_apoint_llist_node_t *in, recur_apoint_llist_node_t *bkp)
 void
 recur_apoint_llist_init (void)
 {
-  recur_alist_p = mem_malloc (sizeof (recur_apoint_llist_t));
+  recur_alist_p = mem_malloc (sizeof (struct recur_apoint_list));
   recur_alist_p->root = NULL;
   pthread_mutex_init (&(recur_alist_p->mutex), NULL);
 }
@@ -195,7 +189,7 @@ recur_apoint_llist_init (void)
 void
 recur_apoint_llist_free (void)
 {
-  recur_apoint_llist_node_t *o, **i;
+  struct recur_apoint *o, **i;
 
   i = &recur_alist_p->root;
   while (*i)
@@ -220,7 +214,7 @@ recur_apoint_llist_free (void)
 void
 recur_event_llist_free (void)
 {
-  struct recur_event_s *o, **i;
+  struct recur_event *o, **i;
 
   i = &recur_elist;
   while (*i)
@@ -242,14 +236,14 @@ recur_event_llist_free (void)
 }
 
 /* Insert a new recursive appointment in the general linked list */
-recur_apoint_llist_node_t *
+struct recur_apoint *
 recur_apoint_new (char *mesg, char *note, long start, long dur, char state,
-		  int type, int freq, long until, struct days_s **except)
+		  int type, int freq, long until, struct days **except)
 {
-  recur_apoint_llist_node_t *o, **i;
+  struct recur_apoint *o, **i;
   
-  o = mem_malloc (sizeof (recur_apoint_llist_node_t));
-  o->rpt = mem_malloc (sizeof (struct rpt_s));
+  o = mem_malloc (sizeof (struct recur_apoint));
+  o->rpt = mem_malloc (sizeof (struct rpt));
   o->mesg = mem_strdup (mesg);
   o->note = (note != 0) ? mem_strdup (note) : 0;
   o->start = start;
@@ -284,14 +278,14 @@ recur_apoint_new (char *mesg, char *note, long start, long dur, char state,
 }
 
 /* Insert a new recursive event in the general linked list */
-struct recur_event_s *
+struct recur_event *
 recur_event_new (char *mesg, char *note, long day, int id, int type, int freq,
-		 long until, struct days_s **except)
+		 long until, struct days **except)
 {
-  struct recur_event_s *o, **i;
+  struct recur_event *o, **i;
   
-  o = mem_malloc (sizeof (struct recur_event_s));
-  o->rpt = mem_malloc (sizeof (struct rpt_s));
+  o = mem_malloc (sizeof (struct recur_event));
+  o->rpt = mem_malloc (sizeof (struct rpt));
   o->mesg = mem_strdup (mesg);
   o->note = (note != 0) ? mem_strdup (note) : 0;  
   o->day = day;
@@ -326,7 +320,7 @@ recur_event_new (char *mesg, char *note, long day, int id, int type, int freq,
  * and the letter to be written in file. 
  */
 char
-recur_def2char (recur_types_t define)
+recur_def2char (enum recur_type define)
 {
   char recur_char;
 
@@ -384,7 +378,7 @@ recur_char2def (char type)
 
 /* Write days for which recurrent items should not be repeated. */
 static void
-recur_write_exc (struct days_s *exc, FILE *f)
+recur_write_exc (struct days *exc, FILE *f)
 {
   struct tm *lt;
   time_t t;
@@ -403,9 +397,9 @@ recur_write_exc (struct days_s *exc, FILE *f)
 }
 
 /* Load the recursive appointment description */
-recur_apoint_llist_node_t *
+struct recur_apoint *
 recur_apoint_scan (FILE *f, struct tm start, struct tm end, char type,
-		   int freq, struct tm until, char *note, struct days_s **exc,
+		   int freq, struct tm until, char *note, struct days **exc,
 		   char state)
 {
   struct tm *lt;
@@ -453,9 +447,9 @@ recur_apoint_scan (FILE *f, struct tm start, struct tm end, char type,
 }
 
 /* Load the recursive events from file */
-struct recur_event_s *
+struct recur_event *
 recur_event_scan (FILE *f, struct tm start, int id, char type, int freq,
-		  struct tm until, char *note, struct days_s **exc)
+		  struct tm until, char *note, struct days **exc)
 {
   char buf[BUFSIZ], *nl;
   time_t tstart, tuntil;
@@ -493,7 +487,7 @@ recur_event_scan (FILE *f, struct tm start, int id, char type, int freq,
 
 /* Writting of a recursive appointment into file. */
 static void
-recur_apoint_write (recur_apoint_llist_node_t *o, FILE *f)
+recur_apoint_write (struct recur_apoint *o, FILE *f)
 {
   struct tm *lt;
   time_t t;
@@ -536,7 +530,7 @@ recur_apoint_write (recur_apoint_llist_node_t *o, FILE *f)
 
 /* Writting of a recursive event into file. */
 static void
-recur_event_write (struct recur_event_s *o, FILE *f)
+recur_event_write (struct recur_event *o, FILE *f)
 {
   struct tm *lt;
   time_t t;
@@ -578,8 +572,8 @@ recur_event_write (struct recur_event_s *o, FILE *f)
 void
 recur_save_data (FILE *f)
 {
-  struct recur_event_s *re;
-  recur_apoint_llist_node_t *ra;
+  struct recur_event *re;
+  struct recur_apoint *ra;
 
   for (re = recur_elist; re != 0; re = re->next)
     recur_event_write (re, f);
@@ -664,13 +658,13 @@ diff_years (struct tm lt_start, struct tm lt_end)
  * calculation of recurrent dates after a turn of years.
  */
 unsigned
-recur_item_inday (long item_start, struct days_s *item_exc, int rpt_type,
+recur_item_inday (long item_start, struct days *item_exc, int rpt_type,
 		  int rpt_freq, long rpt_until, long day_start)
 {
-  date_t start_date;
+  struct date start_date;
   long day_end, diff;
   struct tm lt_item, lt_day;
-  struct days_s *exc;
+  struct days *exc;
   time_t t;
 
   day_end = day_start + DAYINSEC;
@@ -746,10 +740,10 @@ recur_item_inday (long item_start, struct days_s *item_exc, int rpt_type,
  */
 void
 recur_event_erase (long start, unsigned num, unsigned delete_whole,
-		   erase_flag_e flag)
+		   enum eraseflg flag)
 {
   unsigned n = 0;
-  struct recur_event_s *i, **iptr;
+  struct recur_event *i, **iptr;
 
   iptr = &recur_elist;
   for (i = recur_elist; i != 0; i = i->next)
@@ -811,10 +805,10 @@ recur_event_erase (long start, unsigned num, unsigned delete_whole,
  */
 void
 recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
-		    erase_flag_e flag)
+		    enum eraseflg flag)
 {
   unsigned n = 0;
-  recur_apoint_llist_node_t *i, **iptr;
+  struct recur_apoint *i, **iptr;
   int need_check_notify = 0;
 
   pthread_mutex_lock (&(recur_alist_p->mutex));
@@ -888,14 +882,14 @@ recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
  * and then delete the selected item to recreate it as a recurrent one
  */
 void
-recur_repeat_item (conf_t *conf)
+recur_repeat_item (struct conf *conf)
 {
   struct tm *lt;
   time_t t;
   int ch = 0;
   int date_entered = 0;
   int year = 0, month = 0, day = 0;
-  date_t until_date;
+  struct date until_date;
   char outstr[BUFSIZ];
   char user_input[BUFSIZ] = "";
   char *mesg_type_1 =
@@ -914,9 +908,9 @@ recur_repeat_item (conf_t *conf)
     _("Sorry, the date you entered is older than the item start time.");
   int type = 0, freq = 0;
   int item_nb;
-  struct day_item_s *p;
-  recur_apoint_llist_node_t *ra;
-  struct recur_event_s *re;
+  struct day_item *p;
+  struct recur_apoint *ra;
+  struct recur_event *re;
   long until, date;
 
   item_nb = apoint_hilt ();
@@ -1035,12 +1029,12 @@ recur_repeat_item (conf_t *conf)
  * Read days for which recurrent items must not be repeated
  * (such days are called exceptions).
  */
-struct days_s *
+struct days *
 recur_exc_scan (FILE *data_file)
 {
   int c = 0;
   struct tm day;
-  struct days_s *exc_head, *exc;
+  struct days *exc_head, *exc;
 
   exc_head = 0;
   while ((c = getc (data_file)) == '!')
@@ -1056,7 +1050,7 @@ recur_exc_scan (FILE *data_file)
       day.tm_isdst = -1;
       day.tm_year -= 1900;
       day.tm_mon--;
-      exc = mem_malloc (sizeof (struct days_s));
+      exc = mem_malloc (sizeof (struct days));
       exc->st = mktime (&day);
       exc->next = exc_head;
       exc_head = exc;
@@ -1068,10 +1062,10 @@ recur_exc_scan (FILE *data_file)
  * Look in the appointment list if we have an item which starts before the item
  * stored in the notify_app structure (which is the next item to be notified).
  */
-struct notify_app_s *
-recur_apoint_check_next (struct notify_app_s *app, long start, long day)
+struct notify_app *
+recur_apoint_check_next (struct notify_app *app, long start, long day)
 {
-  recur_apoint_llist_node_t *i;
+  struct recur_apoint *i;
   long real_recur_start_time;
 
   pthread_mutex_lock (&(recur_alist_p->mutex));
@@ -1102,10 +1096,10 @@ recur_apoint_check_next (struct notify_app_s *app, long start, long day)
 }
 
 /* Returns a structure containing the selected recurrent appointment. */
-recur_apoint_llist_node_t *
+struct recur_apoint *
 recur_get_apoint (long date, int num)
 {
-  recur_apoint_llist_node_t *o;
+  struct recur_apoint *o;
   int n = 0;
 
   pthread_mutex_lock (&(recur_alist_p->mutex));
@@ -1128,10 +1122,10 @@ recur_get_apoint (long date, int num)
 }
 
 /* Returns a structure containing the selected recurrent event. */
-struct recur_event_s *
+struct recur_event *
 recur_get_event (long date, int num)
 {
-  struct recur_event_s *o;
+  struct recur_event *o;
   int n = 0;
 
   for (o = recur_elist; o != 0; o = o->next)
@@ -1156,7 +1150,7 @@ void
 recur_apoint_switch_notify (long date, int recur_nb)
 {
   int n, need_chk_notify;
-  recur_apoint_llist_node_t *o;
+  struct recur_apoint *o;
 
   n = 0;
   need_chk_notify = 0;
@@ -1199,7 +1193,7 @@ recur_event_paste_item (void)
     bkp_cut_recur_event.rpt->until += time_shift;
   if (bkp_cut_recur_event.exc)
     {
-      struct days_s *exc;
+      struct days *exc;
       
       for (exc = bkp_cut_recur_event.exc; exc != 0; exc = exc->next)
         exc->st += time_shift;
@@ -1229,7 +1223,7 @@ recur_apoint_paste_item (void)
     bkp_cut_recur_apoint.rpt->until += time_shift;
   if (bkp_cut_recur_apoint.exc)
     {
-      struct days_s *exc;
+      struct days *exc;
       
       for (exc = bkp_cut_recur_apoint.exc; exc != 0; exc = exc->next)
         exc->st += time_shift;
diff --git a/src/recur.h b/src/recur.h
deleted file mode 100755
index 5d5195a..0000000
--- a/src/recur.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*	$calcurse: recur.h,v 1.27 2009/07/05 20:33:23 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_RECUR_H
-#define CALCURSE_RECUR_H
-
-typedef enum
-{ RECUR_NO,
-  RECUR_DAILY,
-  RECUR_WEEKLY,
-  RECUR_MONTHLY,
-  RECUR_YEARLY,
-  RECUR_TYPES
-}
-recur_types_t;
-
-typedef struct days_s
-{
-  struct days_s *next;
-  long           st;	/* beggining of the considered day, in seconds */
-} days_t;
-
-struct rpt_s
-{
-  int  type;		/* repetition type, see RECUR_* defines */
-  int  freq;		/* repetition frequence */
-  long until;		/* ending date for repeated event */
-};
-
-typedef struct recur_apoint_llist_node
-{
-  struct recur_apoint_llist_node *next;
-  struct rpt_s  *rpt;		/* information about repetition */
-  struct days_s *exc;		/* days when the item should not be repeated */
-  long           start;		/* beggining of the appointment */
-  long           dur;		/* duration of the appointment */
-  char           state;		/* 8 bits to store item state */
-  char          *mesg;		/* appointment description */
-  char          *note;		/* note attached to appointment */
-}
-recur_apoint_llist_node_t;
-
-typedef struct recur_apoint_llist
-{
-  recur_apoint_llist_node_t *root;
-  pthread_mutex_t            mutex;
-}
-recur_apoint_llist_t;
-
-struct recur_event_s
-{
-  struct recur_event_s *next;
-  struct rpt_s         *rpt;	/* information about repetition */
-  struct days_s        *exc;	/* days when the item should not be repeated */
-  int                   id;	/* event type */
-  long                  day;	/* day at which event occurs */
-  char                 *mesg;	/* event description */
-  char                 *note;	/* note attached to event */
-};
-
-typedef void (*recur_cb_foreach_date_t)(FILE *, long, char *);
-
-extern recur_apoint_llist_t *recur_alist_p;
-extern struct recur_event_s *recur_elist;
-
-void                       recur_event_free_bkp (erase_flag_e);
-void                       recur_apoint_free_bkp (erase_flag_e);
-void                       recur_apoint_llist_init (void);
-void                       recur_apoint_llist_free (void);
-void                       recur_event_llist_free (void);
-recur_apoint_llist_node_t *recur_apoint_new (char *, char *, long, long, char,
-                                             int, int, long, struct days_s **);
-struct recur_event_s      *recur_event_new (char *, char *, long, int, int, int,
-                                            long, struct days_s **);
-char                       recur_def2char (recur_types_t);
-int                        recur_char2def (char);
-recur_apoint_llist_node_t *recur_apoint_scan (FILE *, struct tm, struct tm,
-					      char, int, struct tm, char *,
-					      struct days_s **, char);
-struct recur_event_s      *recur_event_scan (FILE *, struct tm, int, char,
-                                             int, struct tm, char *,
-                                             struct days_s **);
-void                       recur_save_data (FILE *);
-unsigned                   recur_item_inday (long, struct days_s *, int, int,
-                                             long, long);
-void                       recur_event_erase (long, unsigned, unsigned,
-                                              erase_flag_e);
-void                       recur_apoint_erase (long, unsigned, unsigned,
-                                               erase_flag_e);
-void                       recur_repeat_item (conf_t *);
-struct days_s             *recur_exc_scan (FILE *);
-struct notify_app_s       *recur_apoint_check_next (struct notify_app_s *,
-					      long, long);
-recur_apoint_llist_node_t *recur_get_apoint (long, int);
-struct recur_event_s      *recur_get_event (long, int);
-void                       recur_apoint_switch_notify (long, int);
-void                       recur_event_paste_item (void);
-void                       recur_apoint_paste_item (void);
-
-#endif /* CALCURSE_RECUR_H */
diff --git a/src/sigs.c b/src/sigs.c
index bfe6ee1..2a24492 100755
--- a/src/sigs.c
+++ b/src/sigs.c
@@ -1,9 +1,9 @@
-/*	$calcurse: sigs.c,v 1.10 2009/08/09 15:49:58 culot Exp $	*/
+/*	$calcurse: sigs.c,v 1.11 2010/03/20 10:54:48 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2007-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2007-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,10 +41,9 @@
 #include <unistd.h>
 #include <errno.h>
 #include <string.h>
+#include <signal.h>
 
-#include "i18n.h"
-#include "utils.h"
-#include "sigs.h"
+#include "calcurse.h"
 
 /* 
  * General signal handling routine.
diff --git a/src/sigs.h b/src/sigs.h
deleted file mode 100755
index 5f1a6d2..0000000
--- a/src/sigs.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*	$calcurse: sigs.h,v 1.5 2009/07/19 16:51:36 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2007-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_SIGS_H
-#define CALCURSE_SIGS_H
-
-#include <signal.h>
-
-void      sigs_init (void);
-unsigned  sigs_set_hdlr (int, void (*)(int));
-
-#endif /* CALCURSE_SIGS_H */
diff --git a/src/todo.c b/src/todo.c
index 3d5ff10..8771e4e 100755
--- a/src/todo.c
+++ b/src/todo.c
@@ -1,9 +1,9 @@
-/*	$calcurse: todo.c,v 1.35 2009/07/19 08:20:01 culot Exp $	*/
+/*	$calcurse: todo.c,v 1.36 2010/03/20 10:54:48 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,24 +40,19 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "utils.h"
-#include "custom.h"
-#include "keys.h"
-#include "i18n.h"
-#include "mem.h"
-#include "todo.h"
+#include "calcurse.h"
 
-struct todo_s *todolist;
+struct todo *todolist;
 static int hilt = 0;
 static int todos = 0;
 static int first = 1;
 static char *msgsav;
 
 /* Returns a structure containing the selected item. */
-static struct todo_s *
+static struct todo *
 todo_get_item (int item_number)
 {
-  struct todo_s *o;
+  struct todo *o;
   int i;
 
   o = todolist;
@@ -169,13 +164,13 @@ todo_new_item (void)
 /*
  * Add an item in the todo linked list.
  */
-struct todo_s *
+struct todo *
 todo_add (char *mesg, int id, char *note)
 {
-  struct todo_s *o, **i;
+  struct todo *o, **i;
   int absid;
   
-  o = (struct todo_s *) mem_malloc (sizeof (struct todo_s));
+  o = mem_malloc (sizeof (struct todo));
   o->mesg = mem_strdup (mesg);
   o->id = id;
   o->note = (note != NULL && note[0] != '\0') ? mem_strdup (note) : NULL;
@@ -205,7 +200,7 @@ static void
 todo_delete_note_bynum (unsigned num)
 {
   unsigned n;
-  struct todo_s *i, **iptr;
+  struct todo *i, **iptr;
 
   n = 0;
   iptr = &todolist;
@@ -227,10 +222,10 @@ todo_delete_note_bynum (unsigned num)
 
 /* Delete an item from the todo linked list. */
 static void
-todo_delete_bynum (unsigned num, erase_flag_e flag)
+todo_delete_bynum (unsigned num, enum eraseflg flag)
 {
   unsigned n;
-  struct todo_s *i, **iptr;
+  struct todo *i, **iptr;
 
   n = 0;
   iptr = &todolist;
@@ -260,7 +255,7 @@ todo_delete_bynum (unsigned num, erase_flag_e flag)
 void
 todo_flag (void)
 {
-  struct todo_s *t;
+  struct todo *t;
 
   t = todo_get_item (hilt);
   t->id = -t->id;
@@ -268,7 +263,7 @@ todo_flag (void)
 
 /* Delete an item from the ToDo list. */
 void
-todo_delete (conf_t *conf)
+todo_delete (struct conf *conf)
 {
   char *choices = "[y/n] ";
   char *del_todo_str = _("Do you really want to delete this task ?");
@@ -336,12 +331,12 @@ todo_delete (conf_t *conf)
 
 /* 
  * Returns the position into the linked list corresponding to the
- * given todo_s item.
+ * given todo item.
  */
 static int
-todo_get_position (struct todo_s *i)
+todo_get_position (struct todo *i)
 {
-  struct todo_s *o;
+  struct todo *o;
   int n = 1, found = 0;
 
   for (o = todolist; o; o = o->next)
@@ -368,7 +363,7 @@ todo_get_position (struct todo_s *i)
 void
 todo_chg_priority (int action)
 {
-  struct todo_s *backup;
+  struct todo *backup;
   char backup_mesg[BUFSIZ];
   int backup_id;
   char backup_note[NOTESIZ + 1];
@@ -405,7 +400,7 @@ todo_chg_priority (int action)
 void
 todo_edit_item (void)
 {
-  struct todo_s *i;
+  struct todo *i;
   char *mesg = _("Enter the new ToDo description :");
 
   status_mesg (mesg, "");
@@ -447,7 +442,7 @@ display_todo_item (int incolor, char *msg, int prio, int note, int len, int y,
 void
 todo_update_panel (int which_pan)
 {
-  struct todo_s *i;
+  struct todo *i;
   int len = win[TOD].w - 8;
   int num_todo = 0;
   int y_offset = 3, x_offset = 1;
@@ -498,7 +493,7 @@ todo_update_panel (int which_pan)
 void
 todo_edit_note (char *editor)
 {
-  struct todo_s *i;
+  struct todo *i;
   char fullname[BUFSIZ];
   char *filename;
 
@@ -518,7 +513,7 @@ todo_edit_note (char *editor)
 void
 todo_view_note (char *pager)
 {
-  struct todo_s *i;
+  struct todo *i;
   char fullname[BUFSIZ];
 
   i = todo_get_item (hilt);
@@ -531,7 +526,7 @@ todo_view_note (char *pager)
 void
 todo_free_list (void)
 {
-  struct todo_s *o, **i;
+  struct todo *o, **i;
 
   i = &todolist;
   while (*i)
diff --git a/src/todo.h b/src/todo.h
deleted file mode 100755
index 7cc3475..0000000
--- a/src/todo.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*	$calcurse: todo.h,v 1.15 2009/07/05 20:33:24 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_TODO_H
-#define CALCURSE_TODO_H
-
-struct todo_s
-{
-  struct todo_s *next;
-  char          *mesg;
-  int            id;
-  char          *note;
-};
-
-extern struct todo_s *todolist;
-
-void           todo_hilt_set (int);
-void           todo_hilt_decrease (void);
-void           todo_hilt_increase (void);
-int            todo_hilt (void);
-int            todo_nb (void);
-void           todo_set_nb (int);
-void           todo_set_first (int);
-void           todo_first_increase (void);
-void           todo_first_decrease (void);
-int            todo_hilt_pos (void);
-char          *todo_saved_mesg (void);
-void           todo_new_item (void);
-struct todo_s *todo_add (char *, int, char *);
-void           todo_flag (void);
-void           todo_delete (conf_t *);
-void           todo_chg_priority (int);
-void           todo_edit_item (void);
-void           todo_update_panel (int);
-void           todo_edit_note (char *);
-void           todo_view_note (char *);
-void           todo_free_list (void);
-
-#endif /* CALCURSE_TODO_H */
diff --git a/src/utils.c b/src/utils.c
index 2354ad1..ce976e6 100755
--- a/src/utils.c
+++ b/src/utils.c
@@ -1,9 +1,9 @@
-/*	$calcurse: utils.c,v 1.82 2009/08/01 17:53:11 culot Exp $	*/
+/*	$calcurse: utils.c,v 1.83 2010/03/20 10:54:49 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -45,20 +45,7 @@
 #include <sys/types.h>
 #include <errno.h>
 
-#include "utils.h"
-#include "i18n.h"
-#include "wins.h"
-#include "custom.h"
-#include "keys.h"
-#include "io.h"
-#include "recur.h"
-#include "event.h"
-#include "apoint.h"
-#include "todo.h"
-#include "day.h"
-#include "keys.h"
-#include "dmon.h"
-#include "mem.h"
+#include "calcurse.h"
 
 /* General routine to exit calcurse properly. */
 void
@@ -331,7 +318,7 @@ add_char (int pos, int ch, char *str)
  * environment, otherwise the cursor would move from place to place without
  * control.
  */
-int
+enum getstr
 getstring (WINDOW *win, char *str, int l, int x, int y)
 {
   int ch, newpos, len = 0;
@@ -503,7 +490,7 @@ get_item_min (long date)
 }
 
 long
-date2sec (date_t day, unsigned hour, unsigned min)
+date2sec (struct date day, unsigned hour, unsigned min)
 {
   struct tm start, *lt;
   time_t tstart, t;
@@ -622,7 +609,7 @@ update_time_in_date (long date, unsigned hr, unsigned mn)
  * If no date is entered, current date is chosen.
  */
 long
-get_sec_date (date_t date)
+get_sec_date (struct date date)
 {
   struct tm *ptrtime;
   time_t timer;
@@ -752,7 +739,7 @@ get_today (void)
   struct tm *lt;
   time_t current_time;
   long current_day;
-  date_t day;
+  struct date day;
 
   current_time = time (NULL);
   lt = localtime (&current_time);
@@ -866,7 +853,7 @@ new_tempfile (const char *prefix, int trailing_len)
 
 /* Erase a note previously attached to a todo, event or appointment. */
 void
-erase_note (char **note, erase_flag_e flag)
+erase_note (char **note, enum eraseflg flag)
 {
   char fullname[BUFSIZ];
 
@@ -888,7 +875,8 @@ erase_note (char **note, erase_flag_e flag)
  * Returns 1 if sucessfully converted or 0 if the string is an invalid date.
  */
 int
-parse_date (char *date_string, int datefmt, int *year, int *month, int *day)
+parse_date (char *date_string, enum datefmt datefmt, int *year, int *month,
+            int *day)
 {
   int in1, in2, in3;
   int lyear, lmonth, lday;
diff --git a/src/utils.h b/src/utils.h
deleted file mode 100755
index 3f5e36f..0000000
--- a/src/utils.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*	$calcurse: utils.h,v 1.49 2009/07/27 19:35:09 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_UTILS_H
-#define CALCURSE_UTILS_H
-
-#include <stdlib.h>
-
-#include "calendar.h"
-#include "vars.h"
-
-#define MAX(x,y) 	((x)>(y)?(x):(y))
-#define MIN(x,y) 	((x)<(y)?(x):(y))
-
-#define STRING_BUILD(str) {str, sizeof (str) - 1}
-
-#define ERROR_MSG(...) do {                                             \
-  char msg[BUFSIZ];                                                     \
-  int len;                                                              \
-                                                                        \
-  len = snprintf (msg, BUFSIZ, "%s: %d: ", __FILE__, __LINE__);         \
-  (void)snprintf (msg + len, BUFSIZ - len, __VA_ARGS__);                \
-  if (ui_mode == UI_CURSES)                                             \
-    fatalbox (msg);                                                     \
-  else                                                                  \
-    (void)fprintf (stderr, "%s\n", msg);                                \
-} while (0)
-
-#define WARN_MSG(...) do {                                              \
-  char msg[BUFSIZ];                                                     \
-                                                                        \
-  (void)snprintf (msg, BUFSIZ, __VA_ARGS__);                            \
-  if (ui_mode == UI_CURSES)                                             \
-    warnbox (msg);                                                      \
-  else                                                                  \
-    (void)fprintf (stderr, "%s\n", msg);                                \
-} while (0)
-
-#define EXIT(...) do {                                                  \
-          ERROR_MSG(__VA_ARGS__);                                       \
-          if (ui_mode == UI_CURSES)                                     \
-            exit_calcurse (EXIT_FAILURE);                               \
-          else                                                          \
-            exit (EXIT_FAILURE);                                        \
-} while (0)
-
-#define EXIT_IF(cond, ...) do {                                         \
-  if ((cond))                                                           \
-    EXIT(__VA_ARGS__);                                                  \
-} while (0)
-
-#define RETURN_IF(cond, ...) do {                                       \
-  if ((cond))                                                           \
-    {                                                                   \
-      ERROR_MSG(__VA_ARGS__);                                           \
-      return;                                                           \
-    }                                                                   \
-} while (0)
-
-#define RETVAL_IF(cond, val, ...) do {                                  \
-  if ((cond))                                                           \
-    {                                                                   \
-      ERROR_MSG(__VA_ARGS__);                                           \
-      return (val);                                                     \
-    }                                                                   \
-} while (0)
-
-#define STRINGIFY(x)  #x
-#define TOSTRING(x)   STRINGIFY(x)
-#define __FILE_POS__   __FILE__ ":" TOSTRING(__LINE__)
-
-#define GETSTRING_VALID	0   /* value returned by getstring() if text is valid */
-#define GETSTRING_ESC	1   /* user pressed escape to cancel editing */
-#define GETSTRING_RET	2   /* return was pressed without entering any text */
-
-typedef struct {
-  const char *str;
-  const int len;
-} string_t;
-
-typedef enum
-{
-  ERASE_DONT_FORCE,
-  ERASE_FORCE,
-  ERASE_FORCE_KEEP_NOTE,
-  ERASE_FORCE_ONLY_NOTE,
-  ERASE_CUT
-}
-erase_flag_e;
-
-void      exit_calcurse (int);
-void      free_user_data (void);
-void      fatalbox (const char *);
-void      warnbox (const char *);
-void      status_mesg (char *, char *);
-void      erase_window_part (WINDOW *, int, int, int, int);
-WINDOW   *popup (int, int, int, int, char *, char *, int);
-void      print_in_middle (WINDOW *, int, int, int, char *);
-int       getstring (WINDOW *, char *, int, int, int);
-int       updatestring (WINDOW *, char **, int, int);
-int       is_all_digit (char *);
-long      get_item_time (long);
-int       get_item_hour (long);
-int       get_item_min (long);
-long      date2sec (date_t, unsigned, unsigned);
-char     *date_sec2hour_str (long);
-char     *date_sec2date_str (long, 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 (date_t);
-long      min2sec (unsigned);
-int       check_time (char *);
-void      draw_scrollbar (WINDOW *, int, int, int, int, int, unsigned);
-void      item_in_popup (char *, char *, char *, char *);
-long      get_today (void);
-long      now (void);
-char     *nowstr (void);
-long      mystrtol (const char *);
-void      print_bool_option_incolor (WINDOW *, unsigned, int, int);
-char     *new_tempfile (const char *, int);
-void      erase_note (char **, erase_flag_e);
-int       parse_date (char *, int, int *, int *, int *);
-char     *str_toupper (char *);
-void      file_close (FILE *, const char *);
-void      psleep (unsigned);
-
-#endif /* CALCURSE_UTILS_H */
diff --git a/src/vars.c b/src/vars.c
index fcc002c..5fbb1ba 100755
--- a/src/vars.c
+++ b/src/vars.c
@@ -1,9 +1,9 @@
-/*	$calcurse: vars.c,v 1.20 2009/08/01 13:31:21 culot Exp $	*/
+/*	$calcurse: vars.c,v 1.21 2010/03/20 10:54:49 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2004-2008 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2004-2008, 2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,13 +39,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "i18n.h"
-#include "calendar.h"
-#include "custom.h"
-#include "wins.h"
-#include "keys.h"
-#include "mem.h"
-#include "vars.h"
+#include "calcurse.h"
 
 /*
  * variables to store window size
@@ -60,7 +54,7 @@ unsigned colorize = 0;
  * calcurse is running in command-line mode).
  * This is useful to konw how to display messages on the screen.
  */
-ui_mode_e ui_mode = UI_CMDLINE;
+enum ui_mode ui_mode = UI_CMDLINE;
 
 /*
  * variables to store calendar names
@@ -107,19 +101,19 @@ char path_dpid[] = "";
 char path_dmon_log[] = "";
 
 /* Variable to handle pads. */
-struct pad_s apad;
+struct pad apad;
 
 /* Variable to store notify-bar settings. */
-struct nbar_s nbar;
+struct nbar nbar;
 
 /* Variable to store daemon configuration. */
-struct dmon_conf_s dmon;
+struct dmon_conf dmon;
 
 /*
  * Variables init 
  */
 void
-vars_init (conf_t *conf)
+vars_init (struct conf *conf)
 {
   char *PATH_VI = "/usr/bin/vi";
   char *PATH_LESS = "/usr/bin/less";
diff --git a/src/vars.h b/src/vars.h
deleted file mode 100755
index fbb88c1..0000000
--- a/src/vars.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*	$calcurse: vars.h,v 1.38 2010/03/08 08:44:44 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_VARS_H
-#define CALCURSE_VARS_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#elif defined HAVE_NCURSES_NCURSES_H
-#include <ncurses/ncurses.h>
-#elif defined HAVE_NCURSESW_NCURSES_H
-#include <ncursesw/ncurses.h>
-#else
-#error "Missing ncurses header. Aborting..."
-#endif
-
-#include <pthread.h>
-
-#define DIR_NAME         ".calcurse/"
-#define TODO_PATH_NAME   "todo"
-#define APTS_PATH_NAME   "apts"
-#define CONF_PATH_NAME   "conf"
-#define KEYS_PATH_NAME   "keys"
-#define CPID_PATH_NAME   ".calcurse.pid"
-#define DPID_PATH_NAME   ".daemon.pid"
-#define DLOG_PATH_NAME   "daemon.log"
-#define NOTES_DIR_NAME   "notes/"
-
-#define TODO_PATH        DIR_NAME TODO_PATH_NAME
-#define APTS_PATH        DIR_NAME APTS_PATH_NAME
-#define CONF_PATH        DIR_NAME CONF_PATH_NAME
-#define KEYS_PATH        DIR_NAME KEYS_PATH_NAME
-#define CPID_PATH        DIR_NAME CPID_PATH_NAME
-#define DLOG_PATH        DIR_NAME DLOG_PATH_NAME
-#define DPID_PATH        DIR_NAME DPID_PATH_NAME
-#define NOTES_DIR        DIR_NAME NOTES_DIR_NAME
-
-#define ATTR_FALSE	0
-#define ATTR_TRUE	1
-#define ATTR_LOWEST	2
-#define ATTR_LOW	3
-#define ATTR_MIDDLE	4
-#define ATTR_HIGH	5
-#define ATTR_HIGHEST	6
-
-#define STATUSHEIGHT	2
-#define	NOTESIZ		6
-
-enum {
-  DATEFMT_MMDDYYYY = 1,
-  DATEFMT_DDMMYYYY,
-  DATEFMT_YYYYMMDD,
-  DATEFMT_ISO,
-  DATE_FORMATS
-};
-
-#define DATEFMT(datefmt) (datefmt == DATEFMT_MMDDYYYY ? "%m/%d/%Y" :          \
-		(datefmt == DATEFMT_DDMMYYYY ? "%d/%m/%Y" :                   \
-                (datefmt == DATEFMT_YYYYMMDD ? "%Y/%m/%d" : "%Y-%m-%d")))
-
-#define DATEFMT_DESC(datefmt) (datefmt == DATEFMT_MMDDYYYY ?                  \
-                               _("mm/dd/yyyy") :                              \
-		               (datefmt == DATEFMT_DDMMYYYY ?                 \
-                               _("dd/mm/yyyy") :                              \
-                               (datefmt == DATEFMT_YYYYMMDD ?                 \
-                               _("yyyy/mm/dd") : _("yyyy-mm-dd"))))
-
-typedef enum {
-  UI_CURSES,
-  UI_CMDLINE,
-  UI_MODES
-} ui_mode_e;
-
-struct pad_s
-{
-  int     width;
-  int     length;
-  int     first_onscreen;	/* first line to be displayed inside window */
-  WINDOW *ptrwin;		/* pointer to the pad window */
-};
-
-struct nbar_s
-{
-  int              show;	     /* display or hide the notify-bar */
-  int              cntdwn;	     /* warn when time left before next app
-				      * becomes lesser than cntdwn */
-  char             datefmt[BUFSIZ];  /* format for displaying date */
-  char             timefmt[BUFSIZ];  /* format for displaying time */
-  char             cmd[BUFSIZ];	     /* notification command */
-  char            *shell;	     /* user shell to launch notif. cmd */
-  pthread_mutex_t  mutex;
-};
-
-struct dmon_conf_s
-{
-  unsigned  enable;   /* launch daemon automatically when exiting */
-  unsigned  log;      /* log daemon activity */
-};
-
-/* General configuration variables */
-typedef struct
-{
-  unsigned   auto_save;
-  unsigned   periodic_save;
-  unsigned   confirm_quit;
-  unsigned   confirm_delete;
-  unsigned   skip_system_dialogs;
-  unsigned   skip_progress_bar;
-  char      *editor;
-  char      *pager;
-  char       output_datefmt[BUFSIZ];	/* format for displaying date */
-  int        input_datefmt;		/* format for reading date */
-}
-conf_t;
-
-extern int            col, row;
-extern unsigned       colorize;
-extern ui_mode_e      ui_mode;
-extern int            days[12];
-extern char          *monthnames[12];
-extern char          *daynames[8];
-extern char           path_dir[BUFSIZ];
-extern char           path_todo[BUFSIZ];
-extern char           path_apts[BUFSIZ];
-extern char           path_conf[BUFSIZ];
-extern char           path_keys[BUFSIZ];
-extern char           path_notes[BUFSIZ];
-extern char           path_cpid[BUFSIZ];
-extern char           path_dpid[BUFSIZ];
-extern char           path_dmon_log[BUFSIZ];
-
-extern struct pad_s   apad;
-extern struct nbar_s  nbar;
-extern struct dmon_conf_s dmon;
-
-void vars_init (conf_t *);
-
-#endif /* CALCURSE_VARS_H */
diff --git a/src/wins.c b/src/wins.c
index 3387a97..8d45c13 100755
--- a/src/wins.c
+++ b/src/wins.c
@@ -1,9 +1,9 @@
-/*	$calcurse: wins.c,v 1.28 2009/10/28 13:23:05 culot Exp $	*/
+/*	$calcurse: wins.c,v 1.29 2010/03/20 10:54:49 culot Exp $	*/
 
 /*
  * Calcurse - text-based organizer
  *
- * Copyright (c) 2007-2009 Frederic Culot <frederic@culot.org>
+ * Copyright (c) 2007-2010 Frederic Culot <frederic@culot.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,19 +40,12 @@
 #include <string.h>
 #include <math.h>
 
-#include "i18n.h"
-#include "keys.h"
-#include "notify.h"
-#include "utils.h"
-#include "todo.h"
-#include "custom.h"
-#include "mem.h"
-#include "wins.h"
+#include "calcurse.h"
 
 /* Variables to handle calcurse windows. */
-window_t win[NBWINS];
+struct window win[NBWINS];
 
-static window_e slctd_win;
+static enum win slctd_win;
 static int layout;
 
 /* Get the current layout. */
@@ -77,7 +70,7 @@ wins_slctd_init (void)
 }
 
 /* Returns an enum which corresponds to the window which is selected. */
-window_e
+enum win
 wins_slctd (void)
 {
   return (slctd_win);
@@ -85,7 +78,7 @@ wins_slctd (void)
 
 /* Sets the selected window. */
 void
-wins_slctd_set (window_e window)
+wins_slctd_set (enum win window)
 {
   slctd_win = window;
 }
@@ -141,7 +134,7 @@ wins_init (void)
  * scrolling faster.
  */
 void
-wins_scrollwin_init (scrollwin_t *sw)
+wins_scrollwin_init (struct scrollwin *sw)
 {
   EXIT_IF (sw == 0, "null pointer");
   sw->win.p = newwin (sw->win.h, sw->win.w, sw->win.y, sw->win.x);
@@ -152,7 +145,7 @@ wins_scrollwin_init (scrollwin_t *sw)
 
 /* Free an already created scrollwin. */
 void
-wins_scrollwin_delete (scrollwin_t *sw)
+wins_scrollwin_delete (struct scrollwin *sw)
 {
   EXIT_IF (sw == 0, "null pointer");
   delwin(sw->win.p);
@@ -161,7 +154,7 @@ wins_scrollwin_delete (scrollwin_t *sw)
 
 /* Display a scrolling window. */
 void
-wins_scrollwin_display (scrollwin_t *sw)
+wins_scrollwin_display (struct scrollwin *sw)
 {
   const int visible_lines = sw->win.h - sw->pad.y - 1;
   
@@ -185,14 +178,14 @@ wins_scrollwin_display (scrollwin_t *sw)
 }
 
 void
-wins_scrollwin_up (scrollwin_t *sw, int amount)
+wins_scrollwin_up (struct scrollwin *sw, int amount)
 {
   if (sw->first_visible_line > 0)
     sw->first_visible_line -= amount;
 }
 
 void
-wins_scrollwin_down (scrollwin_t *sw, int amount)
+wins_scrollwin_down (struct scrollwin *sw, int amount)
 {
   if (sw->total_lines
       > (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
@@ -512,50 +505,50 @@ void
 wins_status_bar (void)
 {
 #define NB_PANELS	3	/* 3 panels: CALENDAR, APPOINTMENT, TODO */
-  window_e which_pan;
+  enum win which_pan;
   int start, end;
   const int pos[NB_PANELS + 1] =
       { 0, NB_CAL_CMDS, NB_CAL_CMDS + NB_APP_CMDS, TOTAL_CMDS };
 
-  binding_t help   = {_("Help"),     KEY_GENERIC_HELP};
-  binding_t quit   = {_("Quit"),     KEY_GENERIC_QUIT};
-  binding_t save   = {_("Save"),     KEY_GENERIC_SAVE};
-  binding_t cut    = {_("Cut"),      KEY_GENERIC_CUT};
-  binding_t paste  = {_("Paste"),    KEY_GENERIC_PASTE};    
-  binding_t chgvu  = {_("Chg Win"), KEY_GENERIC_CHANGE_VIEW};
-  binding_t import = {_("Import"),   KEY_GENERIC_IMPORT};  
-  binding_t export = {_("Export"),   KEY_GENERIC_EXPORT};
-  binding_t togo   = {_("Go to"),    KEY_GENERIC_GOTO};
-  binding_t othr   = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
-  binding_t conf   = {_("Config"),   KEY_GENERIC_CONFIG_MENU};  
-  binding_t draw   = {_("Redraw"),   KEY_GENERIC_REDRAW};
-  binding_t appt   = {_("Add Appt"), KEY_GENERIC_ADD_APPT};
-  binding_t todo   = {_("Add Todo"), KEY_GENERIC_ADD_TODO};
-  binding_t gnday  = {_("+1 Day"),   KEY_GENERIC_NEXT_DAY};
-  binding_t gpday  = {_("-1 Day"),   KEY_GENERIC_PREV_DAY};
-  binding_t gnweek = {_("+1 Week"),  KEY_GENERIC_NEXT_WEEK};
-  binding_t gpweek = {_("-1 Week"),  KEY_GENERIC_PREV_WEEK};
-  binding_t today  = {_("Today"),    KEY_GENERIC_GOTO_TODAY};
-  binding_t nview  = {_("Nxt View"), KEY_GENERIC_SCROLL_DOWN};
-  binding_t pview  = {_("Prv View"), KEY_GENERIC_SCROLL_UP};
-  binding_t up     = {_("Up"),       KEY_MOVE_UP};
-  binding_t down   = {_("Down"),     KEY_MOVE_DOWN};  
-  binding_t left   = {_("Left"),     KEY_MOVE_LEFT};
-  binding_t right  = {_("Right"),    KEY_MOVE_RIGHT};  
-  binding_t weekb  = {_("beg Week"), KEY_START_OF_WEEK};
-  binding_t weeke  = {_("end Week"), KEY_END_OF_WEEK};
-  binding_t add    = {_("Add Item"), KEY_ADD_ITEM};
-  binding_t del    = {_("Del Item"), KEY_DEL_ITEM};
-  binding_t edit   = {_("Edit Itm"), KEY_EDIT_ITEM};
-  binding_t view   = {_("View"),     KEY_VIEW_ITEM};  
-  binding_t flag   = {_("Flag Itm"), KEY_FLAG_ITEM};
-  binding_t rept   = {_("Repeat"),   KEY_REPEAT_ITEM};
-  binding_t enote  = {_("EditNote"), KEY_EDIT_NOTE};
-  binding_t vnote  = {_("ViewNote"), KEY_VIEW_NOTE};
-  binding_t rprio  = {_("Prio.+"),   KEY_RAISE_PRIORITY};
-  binding_t lprio  = {_("Prio.-"),   KEY_LOWER_PRIORITY};
+  struct binding help   = {_("Help"),     KEY_GENERIC_HELP};
+  struct binding quit   = {_("Quit"),     KEY_GENERIC_QUIT};
+  struct binding save   = {_("Save"),     KEY_GENERIC_SAVE};
+  struct binding cut    = {_("Cut"),      KEY_GENERIC_CUT};
+  struct binding paste  = {_("Paste"),    KEY_GENERIC_PASTE};    
+  struct binding chgvu  = {_("Chg Win"), KEY_GENERIC_CHANGE_VIEW};
+  struct binding import = {_("Import"),   KEY_GENERIC_IMPORT};  
+  struct binding export = {_("Export"),   KEY_GENERIC_EXPORT};
+  struct binding togo   = {_("Go to"),    KEY_GENERIC_GOTO};
+  struct binding othr   = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
+  struct binding conf   = {_("Config"),   KEY_GENERIC_CONFIG_MENU};  
+  struct binding draw   = {_("Redraw"),   KEY_GENERIC_REDRAW};
+  struct binding appt   = {_("Add Appt"), KEY_GENERIC_ADD_APPT};
+  struct binding todo   = {_("Add Todo"), KEY_GENERIC_ADD_TODO};
+  struct binding gnday  = {_("+1 Day"),   KEY_GENERIC_NEXT_DAY};
+  struct binding gpday  = {_("-1 Day"),   KEY_GENERIC_PREV_DAY};
+  struct binding gnweek = {_("+1 Week"),  KEY_GENERIC_NEXT_WEEK};
+  struct binding gpweek = {_("-1 Week"),  KEY_GENERIC_PREV_WEEK};
+  struct binding today  = {_("Today"),    KEY_GENERIC_GOTO_TODAY};
+  struct binding nview  = {_("Nxt View"), KEY_GENERIC_SCROLL_DOWN};
+  struct binding pview  = {_("Prv View"), KEY_GENERIC_SCROLL_UP};
+  struct binding up     = {_("Up"),       KEY_MOVE_UP};
+  struct binding down   = {_("Down"),     KEY_MOVE_DOWN};  
+  struct binding left   = {_("Left"),     KEY_MOVE_LEFT};
+  struct binding right  = {_("Right"),    KEY_MOVE_RIGHT};  
+  struct binding weekb  = {_("beg Week"), KEY_START_OF_WEEK};
+  struct binding weeke  = {_("end Week"), KEY_END_OF_WEEK};
+  struct binding add    = {_("Add Item"), KEY_ADD_ITEM};
+  struct binding del    = {_("Del Item"), KEY_DEL_ITEM};
+  struct binding edit   = {_("Edit Itm"), KEY_EDIT_ITEM};
+  struct binding view   = {_("View"),     KEY_VIEW_ITEM};  
+  struct binding flag   = {_("Flag Itm"), KEY_FLAG_ITEM};
+  struct binding rept   = {_("Repeat"),   KEY_REPEAT_ITEM};
+  struct binding enote  = {_("EditNote"), KEY_EDIT_NOTE};
+  struct binding vnote  = {_("ViewNote"), KEY_VIEW_NOTE};
+  struct binding rprio  = {_("Prio.+"),   KEY_RAISE_PRIORITY};
+  struct binding lprio  = {_("Prio.-"),   KEY_LOWER_PRIORITY};
   
-  binding_t *binding[TOTAL_CMDS] = {
+  struct binding *binding[TOTAL_CMDS] = {
     /* calendar keys */
     &help, &quit, &save, &chgvu, &nview, &pview, &up, &down, &left, &right,
     &togo, &othr, &import, &export, &weekb, &weeke, &appt, &todo,
diff --git a/src/wins.h b/src/wins.h
deleted file mode 100755
index 22833c2..0000000
--- a/src/wins.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*	$calcurse: wins.h,v 1.12 2009/07/05 20:33:26 culot Exp $	*/
-
-/*
- * Calcurse - text-based organizer
- *
- * Copyright (c) 2007-2009 Frederic Culot <frederic@culot.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the
- *        following disclaimer in the documentation and/or other
- *        materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Send your feedback or comments to : calcurse@culot.org
- * Calcurse home page : http://culot.org/calcurse
- *
- */
-
-#ifndef CALCURSE_WINS_H
-#define CALCURSE_WINS_H
-
-#include "vars.h"
-
-typedef enum
-{
-  CAL,
-  APP,
-  TOD,
-  NOT,
-  STA,
-  NBWINS
-}
-window_e;
-
-/* Generic window structure. */
-typedef struct
-{
-  WINDOW   *p;			/* pointer to window */
-  unsigned  w;			/* width */
-  unsigned  h;			/* height */
-  int       x;			/* x position */
-  int       y;			/* y position */
-} window_t;
-
-/* Generic scrolling window structure. */
-typedef struct
-{
-  window_t  win;
-  window_t  pad;
-  unsigned  first_visible_line;
-  unsigned  total_lines;
-  char      label[BUFSIZ];
-} scrollwin_t;
-
-extern window_t win[NBWINS];
-
-int          wins_layout (void);
-void         wins_set_layout (int);
-void         wins_slctd_init (void);
-window_e     wins_slctd (void);
-void         wins_slctd_set (window_e);
-void         wins_slctd_next (void);
-void         wins_init (void);
-void         wins_scrollwin_init (scrollwin_t *);
-void         wins_scrollwin_delete (scrollwin_t *);
-void         wins_scrollwin_display (scrollwin_t *);
-void         wins_scrollwin_up (scrollwin_t *, int);
-void         wins_scrollwin_down (scrollwin_t *, int);
-void         wins_reinit (void);
-void         wins_show (WINDOW *, char *);
-void         wins_get_config (void);
-void         wins_update (void);
-void         wins_reset (void);
-void         wins_launch_external (const char *, const char *);
-void         wins_status_bar (void);
-void         wins_erase_status_bar (void);
-void         wins_other_status_page (int);
-void         wins_reset_status_page (void);
-
-#endif /* CALCURSE_WINS_H */
-- 
cgit v1.2.3-70-g09d2