From ff60394c8e42d44e27dbde963db8b226d4cb164e Mon Sep 17 00:00:00 2001 From: Frederic Culot Date: Sat, 4 Aug 2007 14:34:03 +0000 Subject: error handling while in ncurses mode improved --- ChangeLog | 6 ++++++ src/apoint.c | 20 ++++++++------------ src/calcurse.c | 6 +++--- src/day.c | 9 ++++----- src/io.c | 34 ++++++++++++---------------------- src/notify.c | 16 ++++++---------- src/wins.c | 6 ++---- 7 files changed, 41 insertions(+), 56 deletions(-) diff --git a/ChangeLog b/ChangeLog index 36cf91b..4e16ab2 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +04 Aug 2007: + ASSERT macro created + aerror() and ierror() created to improve error handling while in ncurses + mode + exit_calcurse() updated to take exit code as argument + 29 Jul 2007: compiler warnings fixed diff --git a/src/apoint.c b/src/apoint.c index d949cb9..82dc8fc 100755 --- a/src/apoint.c +++ b/src/apoint.c @@ -1,4 +1,4 @@ -/* $calcurse: apoint.c,v 1.14 2007/07/29 20:59:09 culot Exp $ */ +/* $calcurse: apoint.c,v 1.15 2007/08/04 14:34:03 culot Exp $ */ /* * Calcurse - text-based organizer @@ -186,10 +186,11 @@ apoint_delete(conf_t *conf, unsigned *nb_events, unsigned *nb_apoints, { char *choices = "[y/n] "; char *del_app_str = _("Do you really want to delete this item ?"); + const char *errmsg = _("FATAL ERROR in apoint_delete: no such type\n"); long date; int nb_items = *nb_apoints + *nb_events; bool go_for_deletion = false; - int to_be_removed; + int to_be_removed = 0; int answer = 0; int deleted_item_type = 0; @@ -222,12 +223,9 @@ apoint_delete(conf_t *conf, unsigned *nb_events, unsigned *nb_apoints, to_be_removed = 3; } else if (deleted_item_type == 0) { to_be_removed = 0; - } else { - fputs(_("FATAL ERROR in apoint_delete: no such type\n"), - stderr); - exit(EXIT_FAILURE); + } else + ierror(errmsg); /* NOTREACHED */ - } if (*hilt_app > 1) (*hilt_app)--; @@ -365,8 +363,7 @@ void apoint_delete_bynum(long start, unsigned num) pthread_mutex_unlock(&(alist_p->mutex)); /* NOTREACHED */ - fputs(_("FATAL ERROR in apoint_delete_bynum: no such appointment\n"), stderr); - exit(EXIT_FAILURE); + ierror(_("FATAL ERROR in apoint_delete_bynum: no such appointment")); } /* @@ -542,9 +539,8 @@ apoint_switch_notify(int item_num) pthread_mutex_unlock(&(alist_p->mutex)); /* NOTREACHED */ - fputs(_("FATAL ERROR in apoint_switch_notify: no such appointment\n"), - stderr); - exit(EXIT_FAILURE); + ierror( + _("FATAL ERROR in apoint_switch_notify: no such appointment")); } /* Updates the Appointment panel */ diff --git a/src/calcurse.c b/src/calcurse.c index 95edc0f..63466a5 100755 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -1,4 +1,4 @@ -/* $calcurse: calcurse.c,v 1.52 2007/07/29 20:59:09 culot Exp $ */ +/* $calcurse: calcurse.c,v 1.53 2007/08/04 14:34:03 culot Exp $ */ /* * Calcurse - text-based organizer @@ -472,13 +472,13 @@ main(int argc, char **argv) status_mesg(_(quit_message), choices); ch = wgetch(swin); if ( ch == 'y' ) - exit_calcurse(); + exit_calcurse(EXIT_SUCCESS); else { erase_status_bar(); break; } } else - exit_calcurse(); + exit_calcurse(EXIT_SUCCESS); break; } diff --git a/src/day.c b/src/day.c index c00c150..8537f01 100755 --- a/src/day.c +++ b/src/day.c @@ -1,4 +1,4 @@ -/* $calcurse: day.c,v 1.26 2007/07/29 20:59:09 culot Exp $ */ +/* $calcurse: day.c,v 1.27 2007/08/04 14:34:03 culot Exp $ */ /* * Calcurse - text-based organizer @@ -387,10 +387,9 @@ void day_popup_item(void) day_saved_item->type == RECUR_APPT) item_in_popup(day_saved_item->start, day_saved_item->end, day_saved_item->mesg, _("Appointment :")); - else { /* NOT REACHED */ - fputs(error, stderr); - exit(EXIT_FAILURE); - } + else + ierror(error); + /* NOTREACHED */ } /* diff --git a/src/io.c b/src/io.c index 8cb1f10..4f294ae 100755 --- a/src/io.c +++ b/src/io.c @@ -1,4 +1,4 @@ -/* $calcurse: io.c,v 1.19 2007/07/29 20:59:09 culot Exp $ */ +/* $calcurse: io.c,v 1.20 2007/08/04 14:34:03 culot Exp $ */ /* * Calcurse - text-based organizer @@ -45,19 +45,9 @@ typedef enum { PROGRESS_BAR_EXPORT } progress_bar_t; -static void progress_bar(progress_bar_t type, int progress); -static FILE *io_get_export_stream(void); -static void io_export_valarm(FILE *stream); -static void io_export_header(FILE *stream); -static void io_export_footer(FILE *stream); -static void io_export_recur_events(FILE *stream); -static void io_export_events(FILE *stream); -static void io_export_apoints(FILE *stream); -static void io_export_todo(FILE *stream); -static char *io_recur_type(int type); /* Draw a progress bar while saving, loading or exporting data. */ -void +static void progress_bar(progress_bar_t type, int progress) { #define SLEEPTIME 125000 @@ -114,7 +104,7 @@ progress_bar(progress_bar_t type, int progress) } /* Return the recurrence type to dump in iCal format. */ -char * +static char * io_recur_type(int type) { char *recur_type[RECUR_TYPES] = @@ -124,7 +114,7 @@ io_recur_type(int type) } /* Ask user for a file name to export data to. */ -FILE * +static FILE * io_get_export_stream(void) { FILE *stream; @@ -158,7 +148,7 @@ io_get_export_stream(void) } /* iCal alarm notification. */ -void +static void io_export_valarm(FILE *stream) { fprintf(stream, "BEGIN:VALARM\n"); @@ -170,7 +160,7 @@ io_export_valarm(FILE *stream) } /* Export header. */ -void +static void io_export_header(FILE *stream) { fprintf(stream, "BEGIN:VCALENDAR\n"); @@ -180,14 +170,14 @@ io_export_header(FILE *stream) } /* Export footer. */ -void +static void io_export_footer(FILE *stream) { fprintf(stream, "END:VCALENDAR\n"); } /* Export recurrent events. */ -void +static void io_export_recur_events(FILE *stream) { struct recur_event_s *i; @@ -223,7 +213,7 @@ io_export_recur_events(FILE *stream) } /* Export events. */ -void +static void io_export_events(FILE *stream) { struct event_s *i; @@ -239,7 +229,7 @@ io_export_events(FILE *stream) } /* Export recurrent appointments. */ -void +static void io_export_recur_apoints(FILE *stream) { recur_apoint_llist_node_t *i; @@ -282,7 +272,7 @@ io_export_recur_apoints(FILE *stream) } /* Export appointments. */ -void +static void io_export_apoints(FILE *stream) { apoint_llist_node_t *i; @@ -303,7 +293,7 @@ io_export_apoints(FILE *stream) } /* Export todo items. */ -void +static void io_export_todo(FILE *stream) { struct todo_s *i; diff --git a/src/notify.c b/src/notify.c index 86b6745..6033bcd 100755 --- a/src/notify.c +++ b/src/notify.c @@ -1,4 +1,4 @@ -/* $calcurse: notify.c,v 1.17 2007/07/29 20:59:09 culot Exp $ */ +/* $calcurse: notify.c,v 1.18 2007/08/04 14:34:03 culot Exp $ */ /* * Calcurse - text-based organizer @@ -124,16 +124,12 @@ launch_cmd(char *cmd, char *shell) pid = fork(); - if (pid < 0) { - fputs(_("FATAL ERROR in launch_cmd: could not fork\n"), - stderr); - exit(EXIT_FAILURE); - } else if (pid == 0) { /* Child: launch user defined command */ + if (pid < 0) + ierror(_("FATAL ERROR in launch_cmd: could not fork")); + else if (pid == 0) /* Child: launch user defined command */ if (execlp(shell, shell, "-c", cmd, (char *)NULL) < 0) - fputs(_("FATAL ERROR in launch_cmd: could not " - "launch user command\n"), stderr); - exit(EXIT_FAILURE); - } + ierror(_("FATAL ERROR in launch_cmd: could not " + "launch user command")); } /* diff --git a/src/wins.c b/src/wins.c index 17b6230..be375ab 100755 --- a/src/wins.c +++ b/src/wins.c @@ -1,4 +1,4 @@ -/* $Id: wins.c,v 1.3 2007/07/28 13:11:43 culot Exp $ */ +/* $Id: wins.c,v 1.4 2007/08/04 14:34:03 culot Exp $ */ /* * Calcurse - text-based organizer @@ -321,9 +321,7 @@ wins_update(conf_t *conf, window_t *winbar, window_t *winapp, window_t *wintod, break; default: - fputs(_("FATAL ERROR in wins_update: no window selected\n"), - stderr); - exit(EXIT_FAILURE); + ierror(_("FATAL ERROR in wins_update: no window selected\n")); /* NOTREACHED */ } -- cgit v1.2.3