summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2012-05-21 10:13:05 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2012-05-21 10:13:05 +0200
commitcfd8ede2b3c7248bd3b78e71ef17bdc9eb819aae (patch)
tree1ba7b4f15c9a36cd5d9aab803ed4e9defb8222d2
parent47c52ae7bbfec87a80fb583fb0753b4d77b0ba1d (diff)
downloadcalcurse-cfd8ede2b3c7248bd3b78e71ef17bdc9eb819aae.zip
Switch to Linux kernel coding style
Convert our code base to adhere to Linux kernel coding style using Lindent, with the following exceptions: * Use spaces, instead of tabs, for indentation. * Use 2-character indentations (instead of 8 characters). Rationale: We currently have too much levels of indentation. Using 8-character tabs would make huge code parts unreadable. These need to be cleaned up before we can switch to 8 characters. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r--src/apoint.c622
-rw-r--r--src/args.c1177
-rw-r--r--src/calcurse.c891
-rw-r--r--src/calcurse.h952
-rw-r--r--src/calendar.c821
-rw-r--r--src/config.c554
-rw-r--r--src/custom.c1520
-rw-r--r--src/day.c1272
-rw-r--r--src/dmon.c179
-rw-r--r--src/event.c162
-rw-r--r--src/getstring.c275
-rw-r--r--src/help.c1172
-rw-r--r--src/htable.h2
-rw-r--r--src/ical.c1471
-rw-r--r--src/io.c1573
-rw-r--r--src/keys.c613
-rw-r--r--src/llist.c200
-rw-r--r--src/llist.h30
-rw-r--r--src/llist_ts.h7
-rw-r--r--src/mem.c196
-rw-r--r--src/note.c220
-rw-r--r--src/notify.c834
-rw-r--r--src/pcal.c368
-rw-r--r--src/recur.c1213
-rw-r--r--src/sha1.c224
-rw-r--r--src/sha1.h10
-rw-r--r--src/sigs.c67
-rw-r--r--src/todo.c421
-rw-r--r--src/utf8.c545
-rw-r--r--src/utils.c1438
-rw-r--r--src/vars.c20
-rw-r--r--src/wins.c785
-rw-r--r--test/run-test.c211
33 files changed, 9268 insertions, 10777 deletions
diff --git a/src/apoint.c b/src/apoint.c
index 9bcde1b..1483beb 100644
--- a/src/apoint.c
+++ b/src/apoint.c
@@ -41,46 +41,41 @@
#include "calcurse.h"
-llist_ts_t alist_p;
-static struct apoint bkp_cut_apoint;
-static int hilt;
+llist_ts_t alist_p;
+static struct apoint bkp_cut_apoint;
+static int hilt;
-void
-apoint_free_bkp (void)
+void apoint_free_bkp(void)
{
- if (bkp_cut_apoint.mesg)
- {
- mem_free (bkp_cut_apoint.mesg);
- bkp_cut_apoint.mesg = 0;
- }
- erase_note (&bkp_cut_apoint.note);
+ if (bkp_cut_apoint.mesg) {
+ mem_free(bkp_cut_apoint.mesg);
+ bkp_cut_apoint.mesg = 0;
+ }
+ erase_note(&bkp_cut_apoint.note);
}
-static void
-apoint_free (struct apoint *apt)
+static void apoint_free(struct apoint *apt)
{
- mem_free (apt->mesg);
- erase_note (&apt->note);
- mem_free (apt);
+ mem_free(apt->mesg);
+ erase_note(&apt->note);
+ mem_free(apt);
}
-static void
-apoint_dup (struct apoint *in, struct apoint *bkp)
+static void apoint_dup(struct apoint *in, struct apoint *bkp)
{
- EXIT_IF (!in || !bkp, _("null pointer"));
+ EXIT_IF(!in || !bkp, _("null pointer"));
bkp->start = in->start;
bkp->dur = in->dur;
bkp->state = in->state;
- bkp->mesg = mem_strdup (in->mesg);
+ bkp->mesg = mem_strdup(in->mesg);
if (in->note)
- bkp->note = mem_strdup (in->note);
+ bkp->note = mem_strdup(in->note);
}
-void
-apoint_llist_init (void)
+void apoint_llist_init(void)
{
- LLIST_TS_INIT (&alist_p);
+ LLIST_TS_INIT(&alist_p);
}
/*
@@ -88,60 +83,54 @@ apoint_llist_init (void)
* list. No need to be thread safe, as only the main process remains when
* calling this function.
*/
-void
-apoint_llist_free (void)
+void apoint_llist_free(void)
{
- LLIST_TS_FREE_INNER (&alist_p, apoint_free);
- LLIST_TS_FREE (&alist_p);
+ LLIST_TS_FREE_INNER(&alist_p, apoint_free);
+ LLIST_TS_FREE(&alist_p);
}
/* Sets which appointment is highlighted. */
-void
-apoint_hilt_set (int highlighted)
+void apoint_hilt_set(int highlighted)
{
hilt = highlighted;
}
-void
-apoint_hilt_decrease (int n)
+void apoint_hilt_decrease(int n)
{
hilt -= n;
}
-void
-apoint_hilt_increase (int n)
+void apoint_hilt_increase(int n)
{
hilt += n;
}
/* Return which appointment is highlighted. */
-int
-apoint_hilt (void)
+int apoint_hilt(void)
{
return hilt;
}
-static int
-apoint_cmp_start (struct apoint *a, struct apoint *b)
+static int apoint_cmp_start(struct apoint *a, struct apoint *b)
{
return a->start < b->start ? -1 : (a->start == b->start ? 0 : 1);
}
-struct apoint *
-apoint_new (char *mesg, char *note, long start, long dur, char state)
+struct apoint *apoint_new(char *mesg, char *note, long start, long dur,
+ char state)
{
struct apoint *apt;
- apt = mem_malloc (sizeof (struct apoint));
- apt->mesg = mem_strdup (mesg);
- apt->note = (note != NULL) ? mem_strdup (note) : NULL;
+ apt = mem_malloc(sizeof(struct apoint));
+ apt->mesg = mem_strdup(mesg);
+ apt->note = (note != NULL) ? mem_strdup(note) : NULL;
apt->state = state;
apt->start = start;
apt->dur = dur;
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_ADD_SORTED (&alist_p, apt, apoint_cmp_start);
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_ADD_SORTED(&alist_p, apt, apoint_cmp_start);
+ LLIST_TS_UNLOCK(&alist_p);
return apt;
}
@@ -150,20 +139,21 @@ apoint_new (char *mesg, char *note, long start, long dur, char state)
* Add an item in either the appointment or the event list,
* depending if the start time is entered or not.
*/
-void
-apoint_add (void)
+void apoint_add(void)
{
#define LTIME 6
#define LDUR 12
const char *mesg_1 =
- _("Enter start time ([hh:mm]), leave blank for an all-day event : ");
+ _("Enter start time ([hh:mm]), leave blank for an all-day event : ");
const char *mesg_2 =
- _("Enter end time ([hh:mm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : ");
+ _
+ ("Enter end time ([hh:mm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : ");
const char *mesg_3 = _("Enter description :");
const char *format_message_1 =
- _("You entered an invalid start time, should be [hh:mm]");
+ _("You entered an invalid start time, should be [hh:mm]");
const char *format_message_2 =
- _("Invalid end time/duration, should be [hh:mm], [+hh:mm], [+xxxdxxhxxm] or [+mm]");
+ _
+ ("Invalid end time/duration, should be [hh:mm], [+hh:mm], [+xxxdxxhxxm] or [+mm]");
const char *enter_str = _("Press [Enter] to continue");
int Id = 1;
char item_time[LDUR] = "";
@@ -175,147 +165,122 @@ apoint_add (void)
int is_appointment = 1;
/* Get the starting time */
- for (;;)
- {
- status_mesg (mesg_1, "");
- if (getstring (win[STA].p, item_time, LTIME, 0, 1) != GETSTRING_ESC)
- {
- if (strlen (item_time) == 0)
- {
- is_appointment = 0;
- break;
- }
-
- if (parse_time (item_time, &heures, &minutes) == 1)
- break;
- else
- {
- status_mesg (format_message_1, enter_str);
- wgetch (win[STA].p);
- }
- }
- else
- return;
- }
+ for (;;) {
+ status_mesg(mesg_1, "");
+ if (getstring(win[STA].p, item_time, LTIME, 0, 1) != GETSTRING_ESC) {
+ if (strlen(item_time) == 0) {
+ is_appointment = 0;
+ break;
+ }
+
+ if (parse_time(item_time, &heures, &minutes) == 1)
+ break;
+ else {
+ status_mesg(format_message_1, enter_str);
+ wgetch(win[STA].p);
+ }
+ } else
+ return;
+ }
/*
* Check if an event or appointment is entered,
* depending on the starting time, and record the
* corresponding item.
*/
- if (is_appointment)
- { /* Get the appointment duration */
- item_time[0] = '\0';
- for (;;)
- {
- status_mesg (mesg_2, "");
- if (getstring (win[STA].p, item_time, LDUR, 0, 1) != GETSTRING_ESC)
- {
- if (*item_time == '+' && parse_duration (item_time + 1,
- &apoint_duration) == 1)
- break;
- else if (parse_time (item_time, &end_h, &end_m) == 1)
- {
- if (end_h < heures || ((end_h == heures) && (end_m < minutes)))
- {
- apoint_duration = MININSEC - minutes + end_m
- + (24 + end_h - (heures + 1)) * MININSEC;
- }
- else
- {
- apoint_duration = MININSEC - minutes
- + end_m + (end_h - (heures + 1)) * MININSEC;
- }
- break;
- }
- else
- {
- status_mesg (format_message_2, enter_str);
- wgetch (win[STA].p);
- }
- }
- else
- return;
+ if (is_appointment) { /* Get the appointment duration */
+ item_time[0] = '\0';
+ for (;;) {
+ status_mesg(mesg_2, "");
+ if (getstring(win[STA].p, item_time, LDUR, 0, 1) != GETSTRING_ESC) {
+ if (*item_time == '+' && parse_duration(item_time + 1,
+ &apoint_duration) == 1)
+ break;
+ else if (parse_time(item_time, &end_h, &end_m) == 1) {
+ if (end_h < heures || ((end_h == heures) && (end_m < minutes))) {
+ apoint_duration = MININSEC - minutes + end_m
+ + (24 + end_h - (heures + 1)) * MININSEC;
+ } else {
+ apoint_duration = MININSEC - minutes
+ + end_m + (end_h - (heures + 1)) * MININSEC;
+ }
+ break;
+ } else {
+ status_mesg(format_message_2, enter_str);
+ wgetch(win[STA].p);
}
+ } else
+ return;
}
- else /* Insert the event Id */
+ } else /* Insert the event Id */
Id = 1;
- status_mesg (mesg_3, "");
- if (getstring (win[STA].p, item_mesg, BUFSIZ, 0, 1) == GETSTRING_VALID)
- {
- if (is_appointment)
- {
- apoint_start = date2sec (*calendar_get_slctd_day (), heures, minutes);
- apoint_new (item_mesg, 0L, apoint_start, min2sec (apoint_duration), 0L);
- if (notify_bar ())
- notify_check_added (item_mesg, apoint_start, 0L);
- }
- else
- event_new (item_mesg, 0L, date2sec (*calendar_get_slctd_day (), 0, 0), Id);
-
- if (hilt == 0)
- hilt++;
- }
- wins_erase_status_bar ();
+ status_mesg(mesg_3, "");
+ if (getstring(win[STA].p, item_mesg, BUFSIZ, 0, 1) == GETSTRING_VALID) {
+ if (is_appointment) {
+ apoint_start = date2sec(*calendar_get_slctd_day(), heures, minutes);
+ apoint_new(item_mesg, 0L, apoint_start, min2sec(apoint_duration), 0L);
+ if (notify_bar())
+ notify_check_added(item_mesg, apoint_start, 0L);
+ } else
+ event_new(item_mesg, 0L, date2sec(*calendar_get_slctd_day(), 0, 0), Id);
+
+ if (hilt == 0)
+ hilt++;
+ }
+ wins_erase_status_bar();
}
/* Delete an item from the appointment list. */
-void
-apoint_delete (unsigned *nb_events, unsigned *nb_apoints)
+void apoint_delete(unsigned *nb_events, unsigned *nb_apoints)
{
const char *del_app_str = _("Do you really want to delete this item ?");
long date;
int nb_items = *nb_apoints + *nb_events;
int to_be_removed = 0;
- date = calendar_get_slctd_day_sec ();
+ date = calendar_get_slctd_day_sec();
if (nb_items == 0)
return;
- if (conf.confirm_delete)
- {
- if (status_ask_bool (del_app_str) != 1)
- {
- wins_erase_status_bar ();
- return;
- }
+ if (conf.confirm_delete) {
+ if (status_ask_bool(del_app_str) != 1) {
+ wins_erase_status_bar();
+ return;
}
+ }
- if (nb_items != 0)
- {
- switch (day_erase_item (date, hilt, ERASE_DONT_FORCE))
- {
- case EVNT:
- case RECUR_EVNT:
- (*nb_events)--;
- to_be_removed = 1;
- break;
- case APPT:
- case RECUR_APPT:
- (*nb_apoints)--;
- to_be_removed = 3;
- break;
- case 0:
- return;
- default:
- EXIT (_("no such type"));
- /* NOTREACHED */
- }
+ if (nb_items != 0) {
+ switch (day_erase_item(date, hilt, ERASE_DONT_FORCE)) {
+ case EVNT:
+ case RECUR_EVNT:
+ (*nb_events)--;
+ to_be_removed = 1;
+ break;
+ case APPT:
+ case RECUR_APPT:
+ (*nb_apoints)--;
+ to_be_removed = 3;
+ break;
+ case 0:
+ return;
+ default:
+ EXIT(_("no such type"));
+ /* NOTREACHED */
+ }
- if (hilt > 1)
- hilt--;
- if (apad.first_onscreen >= to_be_removed)
- apad.first_onscreen = apad.first_onscreen - to_be_removed;
- if (nb_items == 1)
- hilt = 0;
- }
+ if (hilt > 1)
+ hilt--;
+ if (apad.first_onscreen >= to_be_removed)
+ apad.first_onscreen = apad.first_onscreen - to_be_removed;
+ if (nb_items == 1)
+ hilt = 0;
+ }
}
/* Cut an item, so that it can be pasted somewhere else later. */
-int
-apoint_cut (unsigned *nb_events, unsigned *nb_apoints)
+int apoint_cut(unsigned *nb_events, unsigned *nb_apoints)
{
const int NBITEMS = *nb_apoints + *nb_events;
int item_type, to_be_removed;
@@ -324,20 +289,16 @@ apoint_cut (unsigned *nb_events, unsigned *nb_apoints)
if (NBITEMS == 0)
return 0;
- date = calendar_get_slctd_day_sec ();
- item_type = day_cut_item (date, hilt);
- if (item_type == EVNT || item_type == RECUR_EVNT)
- {
- (*nb_events)--;
- to_be_removed = 1;
- }
- else if (item_type == APPT || item_type == RECUR_APPT)
- {
- (*nb_apoints)--;
- to_be_removed = 3;
- }
- else
- EXIT (_("no such type"));
+ date = calendar_get_slctd_day_sec();
+ item_type = day_cut_item(date, hilt);
+ if (item_type == EVNT || item_type == RECUR_EVNT) {
+ (*nb_events)--;
+ to_be_removed = 1;
+ } else if (item_type == APPT || item_type == RECUR_APPT) {
+ (*nb_apoints)--;
+ to_be_removed = 3;
+ } else
+ EXIT(_("no such type"));
/* NOTREACHED */
if (hilt > 1)
@@ -351,14 +312,13 @@ apoint_cut (unsigned *nb_events, unsigned *nb_apoints)
}
/* Paste a previously cut item. */
-void
-apoint_paste (unsigned *nb_events, unsigned *nb_apoints, int cut_item_type)
+void apoint_paste(unsigned *nb_events, unsigned *nb_apoints, int cut_item_type)
{
int item_type;
long date;
- date = calendar_get_slctd_day_sec ();
- item_type = day_paste_item (date, cut_item_type);
+ date = calendar_get_slctd_day_sec();
+ item_type = day_paste_item(date, cut_item_type);
if (item_type == EVNT || item_type == RECUR_EVNT)
(*nb_events)++;
else if (item_type == APPT || item_type == RECUR_APPT)
@@ -370,77 +330,72 @@ apoint_paste (unsigned *nb_events, unsigned *nb_apoints, int cut_item_type)
hilt++;
}
-unsigned
-apoint_inday (struct apoint *i, long start)
+unsigned apoint_inday(struct apoint *i, long start)
{
return (i->start <= start + DAYINSEC && i->start + i->dur > start);
}
-void
-apoint_sec2str (struct apoint *o, long day, char *start, char *end)
+void apoint_sec2str(struct apoint *o, long day, char *start, char *end)
{
struct tm *lt;
time_t t;
if (o->start < day)
- strncpy (start, "..:..", 6);
- else
- {
- t = o->start;
- lt = localtime (&t);
- snprintf (start, HRMIN_SIZE, "%02u:%02u", lt->tm_hour, lt->tm_min);
- }
+ strncpy(start, "..:..", 6);
+ else {
+ t = o->start;
+ lt = localtime(&t);
+ snprintf(start, HRMIN_SIZE, "%02u:%02u", lt->tm_hour, lt->tm_min);
+ }
if (o->start + o->dur > day + DAYINSEC)
- strncpy (end, "..:..", 6);
- else
- {
- t = o->start + o->dur;
- lt = localtime (&t);
- snprintf (end, HRMIN_SIZE, "%02u:%02u", lt->tm_hour, lt->tm_min);
- }
+ strncpy(end, "..:..", 6);
+ else {
+ t = o->start + o->dur;
+ lt = localtime(&t);
+ snprintf(end, HRMIN_SIZE, "%02u:%02u", lt->tm_hour, lt->tm_min);
+ }
}
-void
-apoint_write (struct apoint *o, FILE *f)
+void apoint_write(struct apoint *o, FILE * f)
{
struct tm *lt;
time_t t;
t = o->start;
- lt = localtime (&t);
- fprintf (f, "%02u/%02u/%04u @ %02u:%02u", lt->tm_mon + 1, lt->tm_mday,
- 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
+ lt = localtime(&t);
+ fprintf(f, "%02u/%02u/%04u @ %02u:%02u", lt->tm_mon + 1, lt->tm_mday,
+ 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
t = o->start + o->dur;
- lt = localtime (&t);
- fprintf (f, " -> %02u/%02u/%04u @ %02u:%02u ", lt->tm_mon + 1, lt->tm_mday,
- 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
+ lt = localtime(&t);
+ fprintf(f, " -> %02u/%02u/%04u @ %02u:%02u ", lt->tm_mon + 1, lt->tm_mday,
+ 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
if (o->note != NULL)
- fprintf (f, ">%s ", o->note);
+ fprintf(f, ">%s ", o->note);
if (o->state & APOINT_NOTIFY)
- fputc ('!', f);
+ fputc('!', f);
else
- fputc ('|', f);
+ fputc('|', f);
- fprintf (f, "%s\n", o->mesg);
+ fprintf(f, "%s\n", o->mesg);
}
-struct apoint *
-apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
+struct apoint *apoint_scan(FILE * f, struct tm start, struct tm end, char state,
+ char *note)
{
char buf[BUFSIZ], *newline;
time_t tstart, tend, t;
- t = time (NULL);
- localtime (&t);
+ t = time(NULL);
+ localtime(&t);
/* Read the appointment description */
- if (!fgets (buf, sizeof buf, f))
+ if (!fgets(buf, sizeof buf, f))
return NULL;
- newline = strchr (buf, '\n');
+ newline = strchr(buf, '\n');
if (newline)
*newline = '\0';
@@ -451,61 +406,58 @@ apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
end.tm_year -= 1900;
end.tm_mon--;
- tstart = mktime (&start);
- tend = mktime (&end);
- EXIT_IF (tstart == -1 || tend == -1 || tstart > tend,
- _("date error in appointment"));
- return apoint_new (buf, note, tstart, tend - tstart, state);
+ tstart = mktime(&start);
+ tend = mktime(&end);
+ EXIT_IF(tstart == -1 || tend == -1 || tstart > tend,
+ _("date error in appointment"));
+ return apoint_new(buf, note, tstart, tend - tstart, state);
}
/* Retrieve an appointment from the list, given the day and item position. */
-struct apoint *
-apoint_get (long day, int pos)
+struct apoint *apoint_get(long day, int pos)
{
- llist_item_t *i = LLIST_TS_FIND_NTH (&alist_p, pos, day, apoint_inday);
+ llist_item_t *i = LLIST_TS_FIND_NTH(&alist_p, pos, day, apoint_inday);
if (i)
- return LLIST_TS_GET_DATA (i);
+ return LLIST_TS_GET_DATA(i);
- EXIT (_("item not found"));
+ EXIT(_("item not found"));
/* NOTREACHED */
}
-void
-apoint_delete_bynum (long start, unsigned num, enum eraseflg flag)
+void apoint_delete_bynum(long start, unsigned num, enum eraseflg flag)
{
llist_item_t *i;
int need_check_notify = 0;
- LLIST_TS_LOCK (&alist_p);
- i = LLIST_TS_FIND_NTH (&alist_p, num, start, apoint_inday);
+ LLIST_TS_LOCK(&alist_p);
+ i = LLIST_TS_FIND_NTH(&alist_p, num, start, apoint_inday);
if (!i)
- EXIT (_("no such appointment"));
- struct apoint *apt = LLIST_TS_GET_DATA (i);
-
- switch (flag)
- {
- case ERASE_FORCE_ONLY_NOTE:
- erase_note (&apt->note);
- break;
- case ERASE_CUT:
- apoint_free_bkp ();
- apoint_dup (apt, &bkp_cut_apoint);
- erase_note (&apt->note);
- /* FALLTHROUGH */
- default:
- if (notify_bar ())
- need_check_notify = notify_same_item (apt->start);
- LLIST_TS_REMOVE (&alist_p, i);
- mem_free (apt->mesg);
- mem_free (apt);
- if (need_check_notify)
- notify_check_next_app (0);
- break;
- }
-
- LLIST_TS_UNLOCK (&alist_p);
+ EXIT(_("no such appointment"));
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+
+ switch (flag) {
+ case ERASE_FORCE_ONLY_NOTE:
+ erase_note(&apt->note);
+ break;
+ case ERASE_CUT:
+ apoint_free_bkp();
+ apoint_dup(apt, &bkp_cut_apoint);
+ erase_note(&apt->note);
+ /* FALLTHROUGH */
+ default:
+ if (notify_bar())
+ need_check_notify = notify_same_item(apt->start);
+ LLIST_TS_REMOVE(&alist_p, i);
+ mem_free(apt->mesg);
+ mem_free(apt);
+ if (need_check_notify)
+ notify_check_next_app(0);
+ break;
+ }
+
+ LLIST_TS_UNLOCK(&alist_p);
}
/*
@@ -513,8 +465,7 @@ apoint_delete_bynum (long start, unsigned num, enum eraseflg flag)
* the appointment panel. This is to help the appointment scroll function
* to place beggining of the pad correctly.
*/
-static int
-get_item_line (int item_nb, int nb_events_inday)
+static int get_item_line(int item_nb, int nb_events_inday)
{
int separator = 2;
int line = 0;
@@ -523,7 +474,7 @@ get_item_line (int item_nb, int nb_events_inday)
line = item_nb - 1;
else
line = nb_events_inday + separator
- + (item_nb - (nb_events_inday + 1)) * 3 - 1;
+ + (item_nb - (nb_events_inday + 1)) * 3 - 1;
return line;
}
@@ -531,15 +482,14 @@ get_item_line (int item_nb, int nb_events_inday)
* Update (if necessary) the first displayed pad line to make the
* appointment panel scroll down next time pnoutrefresh is called.
*/
-void
-apoint_scroll_pad_down (int nb_events_inday, int win_length)
+void apoint_scroll_pad_down(int nb_events_inday, int win_length)
{
int pad_last_line = 0;
int item_first_line = 0, item_last_line = 0;
int borders = 6;
int awin_length = win_length - borders;
- item_first_line = get_item_line (hilt, nb_events_inday);
+ item_first_line = get_item_line(hilt, nb_events_inday);
if (hilt < nb_events_inday)
item_last_line = item_first_line;
else
@@ -553,18 +503,16 @@ apoint_scroll_pad_down (int nb_events_inday, int win_length)
* Update (if necessary) the first displayed pad line to make the
* appointment panel scroll up next time pnoutrefresh is called.
*/
-void
-apoint_scroll_pad_up (int nb_events_inday)
+void apoint_scroll_pad_up(int nb_events_inday)
{
int item_first_line = 0;
- item_first_line = get_item_line (hilt, nb_events_inday);
+ item_first_line = get_item_line(hilt, nb_events_inday);
if (item_first_line < apad.first_onscreen)
apad.first_onscreen = item_first_line;
}
-static int
-apoint_starts_after (struct apoint *apt, long time)
+static int apoint_starts_after(struct apoint *apt, long time)
{
return apt->start > time;
}
@@ -573,28 +521,25 @@ apoint_starts_after (struct apoint *apt, long time)
* 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 *
-apoint_check_next (struct notify_app *app, long start)
+struct notify_app *apoint_check_next(struct notify_app *app, long start)
{
llist_item_t *i;
- LLIST_TS_LOCK (&alist_p);
- i = LLIST_TS_FIND_FIRST (&alist_p, start, apoint_starts_after);
+ LLIST_TS_LOCK(&alist_p);
+ i = LLIST_TS_FIND_FIRST(&alist_p, start, apoint_starts_after);
- if (i)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
-
- if (apt->start <= app->time)
- {
- app->time = apt->start;
- app->txt = mem_strdup (apt->mesg);
- app->state = apt->state;
- app->got_app = 1;
- }
+ if (i) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+
+ if (apt->start <= app->time) {
+ app->time = apt->start;
+ app->txt = mem_strdup(apt->mesg);
+ app->state = apt->state;
+ app->got_app = 1;
}
+ }
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_UNLOCK(&alist_p);
return app;
}
@@ -602,44 +547,40 @@ apoint_check_next (struct notify_app *app, long start)
/*
* Switch notification state.
*/
-void
-apoint_switch_notify (void)
+void apoint_switch_notify(void)
{
struct day_item *p;
long date;
int apoint_nb = 0, need_chk_notify;
- p = day_get_item (hilt);
+ p = day_get_item(hilt);
if (p->type != APPT && p->type != RECUR_APPT)
return;
- date = calendar_get_slctd_day_sec ();
+ date = calendar_get_slctd_day_sec();
- if (p->type == RECUR_APPT)
- {
- recur_apoint_switch_notify (date, p->appt_pos);
- return;
- }
- else if (p->type == APPT)
- apoint_nb = day_item_nb (date, hilt, APPT);
+ if (p->type == RECUR_APPT) {
+ recur_apoint_switch_notify(date, p->appt_pos);
+ return;
+ } else if (p->type == APPT)
+ apoint_nb = day_item_nb(date, hilt, APPT);
need_chk_notify = 0;
- LLIST_TS_LOCK (&alist_p);
+ LLIST_TS_LOCK(&alist_p);
- struct apoint *apt = apoint_get (date, apoint_nb);
+ struct apoint *apt = apoint_get(date, apoint_nb);
apt->state ^= APOINT_NOTIFY;
- if (notify_bar ())
- notify_check_added (apt->mesg, apt->start, apt->state);
+ if (notify_bar())
+ notify_check_added(apt->mesg, apt->start, apt->state);
if (need_chk_notify)
- notify_check_next_app (0);
+ notify_check_next_app(0);
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_UNLOCK(&alist_p);
}
/* Updates the Appointment panel */
-void
-apoint_update_panel (int which_pan)
+void apoint_update_panel(int which_pan)
{
int title_xpos;
int bordr = 1;
@@ -650,56 +591,53 @@ apoint_update_panel (int which_pan)
struct date slctd_date;
/* variable inits */
- slctd_date = *calendar_get_slctd_day ();
- title_xpos = win[APP].w - (strlen (_(monthnames[slctd_date.mm - 1])) + 16);
+ slctd_date = *calendar_get_slctd_day();
+ title_xpos = win[APP].w - (strlen(_(monthnames[slctd_date.mm - 1])) + 16);
if (slctd_date.dd < 10)
title_xpos++;
- date = date2sec (slctd_date, 0, 0);
- day_write_pad (date, app_width, app_length, (which_pan == APP) ? hilt : 0);
+ date = date2sec(slctd_date, 0, 0);
+ day_write_pad(date, app_width, app_length, (which_pan == APP) ? hilt : 0);
/* Print current date in the top right window corner. */
- erase_window_part (win[APP].p, 1, title_lines, win[APP].w - 2,
- win[APP].h - 2);
- custom_apply_attr (win[APP].p, ATTR_HIGHEST);
- mvwprintw (win[APP].p, title_lines, title_xpos, "%s %s %d, %d",
- calendar_get_pom (date), _(monthnames[slctd_date.mm - 1]),
- slctd_date.dd, slctd_date.yyyy);
- custom_remove_attr (win[APP].p, ATTR_HIGHEST);
+ erase_window_part(win[APP].p, 1, title_lines, win[APP].w - 2, win[APP].h - 2);
+ custom_apply_attr(win[APP].p, ATTR_HIGHEST);
+ mvwprintw(win[APP].p, title_lines, title_xpos, "%s %s %d, %d",
+ calendar_get_pom(date), _(monthnames[slctd_date.mm - 1]),
+ slctd_date.dd, slctd_date.yyyy);
+ custom_remove_attr(win[APP].p, ATTR_HIGHEST);
/* Draw the scrollbar if necessary. */
- if ((apad.length >= app_length) || (apad.first_onscreen > 0))
- {
- float ratio = ((float) app_length) / ((float) apad.length);
- int sbar_length = (int) (ratio * app_length);
- int highend = (int) (ratio * apad.first_onscreen);
- unsigned hilt_bar = (which_pan == APP) ? 1 : 0;
- int sbar_top = highend + title_lines + 1;
-
- if ((sbar_top + sbar_length) > win[APP].h - 1)
- sbar_length = win[APP].h - 1 - sbar_top;
- draw_scrollbar (win[APP].p, sbar_top, win[APP].w - 2, sbar_length,
- title_lines + 1, win[APP].h - 1, hilt_bar);
- }
-
- wnoutrefresh (win[APP].p);
- pnoutrefresh (apad.ptrwin, apad.first_onscreen, 0,
- win[APP].y + title_lines + 1, win[APP].x + bordr,
- win[APP].y + win[APP].h - 2 * bordr,
- win[APP].x + win[APP].w - 3 * bordr);
+ if ((apad.length >= app_length) || (apad.first_onscreen > 0)) {
+ float ratio = ((float)app_length) / ((float)apad.length);
+ int sbar_length = (int)(ratio * app_length);
+ int highend = (int)(ratio * apad.first_onscreen);
+ unsigned hilt_bar = (which_pan == APP) ? 1 : 0;
+ int sbar_top = highend + title_lines + 1;
+
+ if ((sbar_top + sbar_length) > win[APP].h - 1)
+ sbar_length = win[APP].h - 1 - sbar_top;
+ draw_scrollbar(win[APP].p, sbar_top, win[APP].w - 2, sbar_length,
+ title_lines + 1, win[APP].h - 1, hilt_bar);
+ }
+
+ wnoutrefresh(win[APP].p);
+ pnoutrefresh(apad.ptrwin, apad.first_onscreen, 0,
+ win[APP].y + title_lines + 1, win[APP].x + bordr,
+ win[APP].y + win[APP].h - 2 * bordr,
+ win[APP].x + win[APP].w - 3 * bordr);
}
-void
-apoint_paste_item (void)
+void apoint_paste_item(void)
{
long bkp_time, bkp_start;
- bkp_time = get_item_time (bkp_cut_apoint.start);
- bkp_start = calendar_get_slctd_day_sec () + bkp_time;
- apoint_new (bkp_cut_apoint.mesg, bkp_cut_apoint.note, bkp_start,
- bkp_cut_apoint.dur, bkp_cut_apoint.state);
+ bkp_time = get_item_time(bkp_cut_apoint.start);
+ bkp_start = calendar_get_slctd_day_sec() + bkp_time;
+ apoint_new(bkp_cut_apoint.mesg, bkp_cut_apoint.note, bkp_start,
+ bkp_cut_apoint.dur, bkp_cut_apoint.state);
- if (notify_bar ())
- notify_check_added (bkp_cut_apoint.mesg, bkp_start, bkp_cut_apoint.state);
+ if (notify_bar())
+ notify_check_added(bkp_cut_apoint.mesg, bkp_start, bkp_cut_apoint.state);
- apoint_free_bkp ();
+ apoint_free_bkp();
}
diff --git a/src/args.c b/src/args.c
index cab1952..99c468f 100644
--- a/src/args.c
+++ b/src/args.c
@@ -58,105 +58,101 @@ enum {
/*
* Print Calcurse usage and exit.
*/
-static void
-usage (void)
+static void usage(void)
{
const char *arg_usage =
- _("Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i<file>] [-x[format]]\n"
- " [-d <date>|<num>] [-s[date]] [-r[range]]\n"
- " [-c<file> | -D<dir>] [-S<regex>] [--status]\n"
- " [--read-only]\n");
- fputs (arg_usage, stdout);
+ _("Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i<file>] [-x[format]]\n"
+ " [-d <date>|<num>] [-s[date]] [-r[range]]\n"
+ " [-c<file> | -D<dir>] [-S<regex>] [--status]\n"
+ " [--read-only]\n");
+ fputs(arg_usage, stdout);
}
-static void
-usage_try (void)
+static void usage_try(void)
{
const char *arg_usage_try = _("Try 'calcurse -h' for more information.\n");
- fputs (arg_usage_try, stdout);
+ fputs(arg_usage_try, stdout);
}
/*
* Print Calcurse version with a short copyright text and exit.
*/
-static void
-version_arg (void)
+static void version_arg(void)
{
const char *vtext =
_("\nCopyright (c) 2004-2012 calcurse Development Team.\n"
"This is free software; see the source for copying conditions.\n");
- fprintf (stdout, _("Calcurse %s - text-based organizer\n"), VERSION);
- fputs (vtext, stdout);
+ fprintf(stdout, _("Calcurse %s - text-based organizer\n"), VERSION);
+ fputs(vtext, stdout);
}
/*
* Print the command line options and exit.
*/
-static void
-help_arg (void)
+static void help_arg(void)
{
const char *htext =
- _("\nMiscellaneous:\n"
- " -h, --help\n"
- " print this help and exit.\n"
- "\n -v, --version\n"
- " print calcurse version and exit.\n"
- "\n --status\n"
- " display the status of running instances of calcurse.\n"
- "\n --read-only\n"
- " Don't save configuration nor appointments/todos. Use with care.\n"
- "\nFiles:\n"
- " -c <file>, --calendar <file>\n"
- " specify the calendar <file> to use (incompatible with '-D').\n"
- "\n -D <dir>, --directory <dir>\n"
- " specify the data directory to use (incompatible with '-c').\n"
- "\tIf not specified, the default directory is ~/.calcurse\n"
- "\nNon-interactive:\n"
- " -a, --appointment\n"
- " print events and appointments for current day and exit.\n"
- "\n -d <date|num>, --day <date|num>\n"
- " print events and appointments for <date> or <num> upcoming days and"
- "\n\texit. To specify both a starting date and a range, use the\n"
- "\t'--startday' and the '--range' option.\n"
- "\n -g, --gc\n"
- " run the garbage collector for note files and exit. \n"
- "\n -i <file>, --import <file>\n"
- " import the icalendar data contained in <file>. \n"
- "\n -n, --next\n"
- " print next appointment within upcoming 24 hours "
- "and exit. Also given\n\tis the remaining time before this "
- "next appointment.\n"
- "\n -r[num], --range[=num]\n"
- " print events and appointments for the [num] number of days"
- "\n\tand exit. If no [num] is given, a range of 1 day is considered.\n"
- "\n -s[date], --startday[=date]\n"
- " print events and appointments from [date] and exit.\n"
- "\tIf no [date] is given, the current day is considered.\n"
- "\n -S<regex>, --search=<regex>\n"
- " search for the given regular expression within events, appointments,\n"
- "\tand todos description.\n"
- "\n -t[num], --todo[=num]\n"
- " print todo list and exit. If the optional number [num] is given,\n"
- "\tthen only todos having a priority equal to [num] will be returned.\n"
- "\tThe priority number must be between 1 (highest) and 9 (lowest).\n"
- "\tIt is also possible to specify '0' for the priority, in which case\n"
- "\tonly completed tasks will be shown.\n"
- "\n -x[format], --export[=format]\n"
- " export user data to the specified format. Events, appointments and\n"
- "\ttodos are converted and echoed to stdout.\n"
- "\tTwo possible formats are available: 'ical' and 'pcal'.\n"
- "\tIf the optional argument format is not given, ical format is\n"
- "\tselected by default.\n"
- "\tnote: redirect standard output to export data to a file,\n"
- "\tby issuing a command such as: calcurse --export > calcurse.dat\n"
- "\nFor more information, type '?' from within Calcurse, "
- "or read the manpage.\n"
- "Mail bug reports and suggestions to <misc@calcurse.org>.\n");
-
- fprintf (stdout, _("Calcurse %s - text-based organizer\n"), VERSION);
- usage ();
- fputs (htext, stdout);
+ _("\nMiscellaneous:\n"
+ " -h, --help\n"
+ " print this help and exit.\n"
+ "\n -v, --version\n"
+ " print calcurse version and exit.\n"
+ "\n --status\n"
+ " display the status of running instances of calcurse.\n"
+ "\n --read-only\n"
+ " Don't save configuration nor appointments/todos. Use with care.\n"
+ "\nFiles:\n"
+ " -c <file>, --calendar <file>\n"
+ " specify the calendar <file> to use (incompatible with '-D').\n"
+ "\n -D <dir>, --directory <dir>\n"
+ " specify the data directory to use (incompatible with '-c').\n"
+ "\tIf not specified, the default directory is ~/.calcurse\n"
+ "\nNon-interactive:\n"
+ " -a, --appointment\n"
+ " print events and appointments for current day and exit.\n"
+ "\n -d <date|num>, --day <date|num>\n"
+ " print events and appointments for <date> or <num> upcoming days and"
+ "\n\texit. To specify both a starting date and a range, use the\n"
+ "\t'--startday' and the '--range' option.\n"
+ "\n -g, --gc\n"
+ " run the garbage collector for note files and exit. \n"
+ "\n -i <file>, --import <file>\n"
+ " import the icalendar data contained in <file>. \n"
+ "\n -n, --next\n"
+ " print next appointment within upcoming 24 hours "
+ "and exit. Also given\n\tis the remaining time before this "
+ "next appointment.\n"
+ "\n -r[num], --range[=num]\n"
+ " print events and appointments for the [num] number of days"
+ "\n\tand exit. If no [num] is given, a range of 1 day is considered.\n"
+ "\n -s[date], --startday[=date]\n"
+ " print events and appointments from [date] and exit.\n"
+ "\tIf no [date] is given, the current day is considered.\n"
+ "\n -S<regex>, --search=<regex>\n"
+ " search for the given regular expression within events, appointments,\n"
+ "\tand todos description.\n"
+ "\n -t[num], --todo[=num]\n"
+ " print todo list and exit. If the optional number [num] is given,\n"
+ "\tthen only todos having a priority equal to [num] will be returned.\n"
+ "\tThe priority number must be between 1 (highest) and 9 (lowest).\n"
+ "\tIt is also possible to specify '0' for the priority, in which case\n"
+ "\tonly completed tasks will be shown.\n"
+ "\n -x[format], --export[=format]\n"
+ " export user data to the specified format. Events, appointments and\n"
+ "\ttodos are converted and echoed to stdout.\n"
+ "\tTwo possible formats are available: 'ical' and 'pcal'.\n"
+ "\tIf the optional argument format is not given, ical format is\n"
+ "\tselected by default.\n"
+ "\tnote: redirect standard output to export data to a file,\n"
+ "\tby issuing a command such as: calcurse --export > calcurse.dat\n"
+ "\nFor more information, type '?' from within Calcurse, "
+ "or read the manpage.\n"
+ "Mail bug reports and suggestions to <misc@calcurse.org>.\n");
+
+ fprintf(stdout, _("Calcurse %s - text-based organizer\n"), VERSION);
+ usage();
+ fputs(htext, stdout);
}
/*
@@ -170,26 +166,24 @@ help_arg (void)
* The status is obtained by looking at pid files in user data directory
* (.calcurse.pid and .daemon.pid).
*/
-static void
-status_arg (void)
+static void status_arg(void)
{
int cpid, dpid;
- cpid = io_get_pid (path_cpid);
- dpid = io_get_pid (path_dpid);
+ cpid = io_get_pid(path_cpid);
+ dpid = io_get_pid(path_dpid);
- EXIT_IF (cpid && dpid,
- _("Error: both calcurse (pid: %d) and its daemon (pid: %d)\n"
- "seem to be running at the same time!\n"
- "Please check manually and restart calcurse.\n"),
- cpid, dpid);
+ EXIT_IF(cpid && dpid,
+ _("Error: both calcurse (pid: %d) and its daemon (pid: %d)\n"
+ "seem to be running at the same time!\n"
+ "Please check manually and restart calcurse.\n"), cpid, dpid);
if (cpid)
- fprintf (stdout, _("calcurse is running (pid %d)\n"), cpid);
+ fprintf(stdout, _("calcurse is running (pid %d)\n"), cpid);
else if (dpid)
- fprintf (stdout, _("calcurse is running in background (pid %d)\n"), dpid);
+ fprintf(stdout, _("calcurse is running in background (pid %d)\n"), dpid);
else
- puts (_("calcurse is not running\n"));
+ puts(_("calcurse is not running\n"));
}
/*
@@ -199,8 +193,7 @@ status_arg (void)
* If priority == 0, only completed tasks will be displayed.
* If regex is not null, only the matching todos are printed.
*/
-static void
-todo_arg (int priority, const char *format, regex_t *regex)
+static void todo_arg(int priority, const char *format, regex_t * regex)
{
llist_item_t *i;
int title = 1;
@@ -218,39 +211,32 @@ todo_arg (int priority, const char *format, regex_t *regex)
} \
} while (0)
- LLIST_FOREACH (&todolist, i)
- {
- struct todo *todo = LLIST_TS_GET_DATA (i);
- if (regex && regexec (regex, todo->mesg, 0, 0, 0) != 0)
- continue;
-
- if (todo->id < 0) /* completed task */
- {
- if (priority == 0)
- {
- DISPLAY_TITLE;
- print_todo (format, todo);
- }
- }
- else
- {
- if (priority < 0 || todo->id == priority)
- {
- DISPLAY_TITLE;
- print_todo (format, todo);
- }
- }
+ LLIST_FOREACH(&todolist, i) {
+ struct todo *todo = LLIST_TS_GET_DATA(i);
+ if (regex && regexec(regex, todo->mesg, 0, 0, 0) != 0)
+ continue;
+
+ if (todo->id < 0) { /* completed task */
+ if (priority == 0) {
+ DISPLAY_TITLE;
+ print_todo(format, todo);
+ }
+ } else {
+ if (priority < 0 || todo->id == priority) {
+ DISPLAY_TITLE;
+ print_todo(format, todo);
+ }
}
+ }
#undef DISPLAY_TITLE
}
/* Print the next appointment within the upcoming 24 hours. */
-static void
-next_arg (void)
+static void next_arg(void)
{
struct notify_app next_app;
- const long current_time = now ();
+ const long current_time = now();
int time_left, hours_left, min_left;
char mesg[BUFSIZ];
@@ -258,37 +244,35 @@ next_arg (void)
next_app.got_app = 0;
next_app.txt = NULL;
- next_app = *recur_apoint_check_next (&next_app, current_time, get_today ());
- next_app = *apoint_check_next (&next_app, current_time);
-
- if (next_app.got_app)
- {
- time_left = next_app.time - current_time;
- hours_left = (time_left / HOURINSEC);
- min_left = (time_left - hours_left * HOURINSEC) / MININSEC;
- fputs (_("next appointment:\n"), stdout);
- snprintf (mesg, BUFSIZ, " [%02d:%02d] %s\n", hours_left, min_left,
- next_app.txt);
- fputs (mesg, stdout);
- mem_free (next_app.txt);
- }
+ next_app = *recur_apoint_check_next(&next_app, current_time, get_today());
+ next_app = *apoint_check_next(&next_app, current_time);
+
+ if (next_app.got_app) {
+ time_left = next_app.time - current_time;
+ hours_left = (time_left / HOURINSEC);
+ min_left = (time_left - hours_left * HOURINSEC) / MININSEC;
+ fputs(_("next appointment:\n"), stdout);
+ snprintf(mesg, BUFSIZ, " [%02d:%02d] %s\n", hours_left, min_left,
+ next_app.txt);
+ fputs(mesg, stdout);
+ mem_free(next_app.txt);
+ }
}
/*
* Print the date on stdout.
*/
-static void
-arg_print_date (long date)
+static void arg_print_date(long date)
{
char date_str[BUFSIZ];
time_t t;
struct tm *lt;
t = date;
- lt = localtime (&t);
- strftime (date_str, BUFSIZ, conf.output_datefmt, lt);
- fputs (date_str, stdout);
- fputs (":\n", stdout);
+ lt = localtime(&t);
+ strftime(date_str, BUFSIZ, conf.output_datefmt, lt);
+ fputs(date_str, stdout);
+ fputs(":\n", stdout);
}
/*
@@ -298,9 +282,9 @@ arg_print_date (long date)
* If regex is not null, only the matching appointments or events are printed.
*/
static int
-app_arg (int add_line, struct date *day, long date, const char *fmt_apt,
- const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev,
- regex_t *regex)
+app_arg(int add_line, struct date *day, long date, const char *fmt_apt,
+ const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev,
+ regex_t * regex)
{
llist_item_t *i, *j;
long today;
@@ -308,7 +292,7 @@ app_arg (int add_line, struct date *day, long date, const char *fmt_apt,
int app_found = 0;
if (date == 0)
- today = get_sec_date (*day);
+ today = get_sec_date(*day);
else
today = date;
@@ -317,132 +301,114 @@ app_arg (int add_line, struct date *day, long date, const char *fmt_apt,
* that date and it is the first one, and then print all the events for
* that date.
*/
- LLIST_FIND_FOREACH (&recur_elist, today, recur_event_inday, i)
- {
- struct recur_event *re = LLIST_GET_DATA (i);
- if (regex && regexec (regex, re->mesg, 0, 0, 0) != 0)
- continue;
-
- app_found = 1;
- if (add_line)
- {
- fputs ("\n", stdout);
- add_line = 0;
- }
- if (print_date)
- {
- arg_print_date (today);
- print_date = 0;
- }
- print_recur_event (fmt_rev, today, re);
+ LLIST_FIND_FOREACH(&recur_elist, today, recur_event_inday, i) {
+ struct recur_event *re = LLIST_GET_DATA(i);
+ if (regex && regexec(regex, re->mesg, 0, 0, 0) != 0)
+ continue;
+
+ app_found = 1;
+ if (add_line) {
+ fputs("\n", stdout);
+ add_line = 0;
}
-
- LLIST_FIND_FOREACH_CONT (&eventlist, today, event_inday, i)
- {
- struct event *ev = LLIST_TS_GET_DATA (i);
- if (regex && regexec (regex, ev->mesg, 0, 0, 0) != 0)
- continue;
-
- app_found = 1;
- if (add_line)
- {
- fputs ("\n", stdout);
- add_line = 0;
- }
- if (print_date)
- {
- arg_print_date (today);
- print_date = 0;
- }
- print_event (fmt_ev, today, ev);
+ if (print_date) {
+ arg_print_date(today);
+ print_date = 0;
+ }
+ print_recur_event(fmt_rev, today, re);
+ }
+
+ LLIST_FIND_FOREACH_CONT(&eventlist, today, event_inday, i) {
+ struct event *ev = LLIST_TS_GET_DATA(i);
+ if (regex && regexec(regex, ev->mesg, 0, 0, 0) != 0)
+ continue;
+
+ app_found = 1;
+ if (add_line) {
+ fputs("\n", stdout);
+ add_line = 0;
}
+ if (print_date) {
+ arg_print_date(today);
+ print_date = 0;
+ }
+ print_event(fmt_ev, today, ev);
+ }
/* Same process is performed but this time on the appointments. */
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_LOCK (&recur_alist_p);
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_LOCK(&recur_alist_p);
/*
* Iterate over regular appointments and recurrent ones simultaneously (fixes
* http://lists.calcurse.org/bugs/msg00002.html).
*/
- i = LLIST_TS_FIND_FIRST (&alist_p, today, apoint_inday);
- j = LLIST_TS_FIND_FIRST (&recur_alist_p, today, recur_apoint_inday);
- while (i || j)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
- struct recur_apoint *ra = LLIST_TS_GET_DATA (j);
- unsigned occurrence;
-
- while (i && regex && regexec (regex, apt->mesg, 0, 0, 0) != 0)
- {
- i = LLIST_TS_FIND_NEXT (i, today, apoint_inday);
- apt = LLIST_TS_GET_DATA (i);
- }
+ i = LLIST_TS_FIND_FIRST(&alist_p, today, apoint_inday);
+ j = LLIST_TS_FIND_FIRST(&recur_alist_p, today, recur_apoint_inday);
+ while (i || j) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+ struct recur_apoint *ra = LLIST_TS_GET_DATA(j);
+ unsigned occurrence;
+
+ while (i && regex && regexec(regex, apt->mesg, 0, 0, 0) != 0) {
+ i = LLIST_TS_FIND_NEXT(i, today, apoint_inday);
+ apt = LLIST_TS_GET_DATA(i);
+ }
- while (j && regex && regexec (regex, ra->mesg, 0, 0, 0) != 0)
- {
- j = LLIST_TS_FIND_NEXT (j, today, recur_apoint_inday);
- ra = LLIST_TS_GET_DATA (j);
- }
+ while (j && regex && regexec(regex, ra->mesg, 0, 0, 0) != 0) {
+ j = LLIST_TS_FIND_NEXT(j, today, recur_apoint_inday);
+ ra = LLIST_TS_GET_DATA(j);
+ }
- if (apt && ra)
- {
- if (recur_apoint_find_occurrence (ra, today, &occurrence) &&
- apt->start <= occurrence)
- ra = NULL;
- else
- apt = NULL;
- }
+ if (apt && ra) {
+ if (recur_apoint_find_occurrence(ra, today, &occurrence) &&
+ apt->start <= occurrence)
+ ra = NULL;
+ else
+ apt = NULL;
+ }
- if (apt)
- {
- app_found = 1;
- if (add_line)
- {
- fputs ("\n", stdout);
- add_line = 0;
- }
- if (print_date)
- {
- arg_print_date (today);
- print_date = 0;
- }
- print_apoint (fmt_apt, today, apt);
- i = LLIST_TS_FIND_NEXT (i, today, apoint_inday);
- }
- else if (ra)
- {
- app_found = 1;
- if (add_line)
- {
- fputs ("\n", stdout);
- add_line = 0;
- }
- if (print_date)
- {
- arg_print_date (today);
- print_date = 0;
- }
- recur_apoint_find_occurrence (ra, today, &occurrence);
- print_recur_apoint (fmt_rapt, today, occurrence, ra);
- apt = NULL;
- j = LLIST_TS_FIND_NEXT (j, today, recur_apoint_inday);
- }
+ if (apt) {
+ app_found = 1;
+ if (add_line) {
+ fputs("\n", stdout);
+ add_line = 0;
+ }
+ if (print_date) {
+ arg_print_date(today);
+ print_date = 0;
+ }
+ print_apoint(fmt_apt, today, apt);
+ i = LLIST_TS_FIND_NEXT(i, today, apoint_inday);
+ } else if (ra) {
+ app_found = 1;
+ if (add_line) {
+ fputs("\n", stdout);
+ add_line = 0;
+ }
+ if (print_date) {
+ arg_print_date(today);
+ print_date = 0;
+ }
+ recur_apoint_find_occurrence(ra, today, &occurrence);
+ print_recur_apoint(fmt_rapt, today, occurrence, ra);
+ apt = NULL;
+ j = LLIST_TS_FIND_NEXT(j, today, recur_apoint_inday);
}
+ }
- LLIST_TS_UNLOCK (&recur_alist_p);
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_UNLOCK(&recur_alist_p);
+ LLIST_TS_UNLOCK(&alist_p);
return app_found;
}
-static void
-more_info (void)
+static void more_info(void)
{
- fputs (_("\nFor more information, type '?' from within Calcurse, "
- "or read the manpage.\n"), stdout);
- fputs (_("Mail bug reports and suggestions to "
- "<misc@calcurse.org>.\n"), stdout);
+ fputs(_("\nFor more information, type '?' from within Calcurse, "
+ "or read the manpage.\n"), stdout);
+ fputs(_("Mail bug reports and suggestions to "
+ "<misc@calcurse.org>.\n"), stdout);
}
/*
@@ -451,25 +417,24 @@ more_info (void)
* to format the output correctly.
*/
static void
-display_app (struct tm *t, int numdays, int add_line, const char *fmt_apt,
- const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev,
- regex_t *regex)
+display_app(struct tm *t, int numdays, int add_line, const char *fmt_apt,
+ const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev,
+ regex_t * regex)
{
int i, app_found;
struct date day;
- for (i = 0; i < numdays; i++)
- {
- day.dd = t->tm_mday;
- day.mm = t->tm_mon + 1;
- day.yyyy = t->tm_year + 1900;
- app_found = app_arg (add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev,
- fmt_rev, regex);
- if (app_found)
- add_line = 1;
- t->tm_mday++;
- mktime (t);
- }
+ for (i = 0; i < numdays; i++) {
+ day.dd = t->tm_mday;
+ day.mm = t->tm_mon + 1;
+ day.yyyy = t->tm_year + 1900;
+ app_found = app_arg(add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev,
+ fmt_rev, regex);
+ if (app_found)
+ add_line = 1;
+ t->tm_mday++;
+ mktime(t);
+ }
}
/*
@@ -477,9 +442,9 @@ display_app (struct tm *t, int numdays, int add_line, const char *fmt_apt,
* days.
*/
static void
-date_arg (const char *ddate, int add_line, const char *fmt_apt,
- const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev,
- regex_t *regex)
+date_arg(const char *ddate, int add_line, const char *fmt_apt,
+ const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev,
+ regex_t * regex)
{
int i;
struct date day;
@@ -492,45 +457,38 @@ date_arg (const char *ddate, int add_line, const char *fmt_apt,
* Check (with the argument length) if a date or a number of days
* was entered, and then call app_arg() to print appointments
*/
- arg_len = strlen (ddate);
- if (arg_len <= 4)
- { /* a number of days was entered */
- for (i = 0; i <= arg_len - 1; i++)
- {
- if (isdigit (ddate[i]))
- num_digit++;
- }
- if (num_digit == arg_len)
- numdays = atoi (ddate);
-
- /*
- * Get current date, and print appointments for each day
- * in the chosen interval. app_found and add_line are used
- * to format the output correctly.
- */
- timer = time (NULL);
- t = *localtime (&timer);
- display_app (&t, numdays, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev,
- regex);
+ arg_len = strlen(ddate);
+ if (arg_len <= 4) { /* a number of days was entered */
+ for (i = 0; i <= arg_len - 1; i++) {
+ if (isdigit(ddate[i]))
+ num_digit++;
}
- else
- { /* a date was entered */
- if (parse_date (ddate, conf.input_datefmt, (int *)&day.yyyy,
- (int *)&day.mm, (int *)&day.dd, NULL))
- {
- app_arg (add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, regex);
- }
- else
- {
- char outstr[BUFSIZ];
- fputs (_("Argument to the '-d' flag is not valid\n"), stderr);
- snprintf (outstr, BUFSIZ,
- "Possible argument format are: '%s' or 'n'\n",
- DATEFMT_DESC (conf.input_datefmt));
- fputs (_(outstr), stdout);
- more_info ();
- }
+ if (num_digit == arg_len)
+ numdays = atoi(ddate);
+
+ /*
+ * Get current date, and print appointments for each day
+ * in the chosen interval. app_found and add_line are used
+ * to format the output correctly.
+ */
+ timer = time(NULL);
+ t = *localtime(&timer);
+ display_app(&t, numdays, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev,
+ regex);
+ } else { /* a date was entered */
+ if (parse_date(ddate, conf.input_datefmt, (int *)&day.yyyy,
+ (int *)&day.mm, (int *)&day.dd, NULL)) {
+ app_arg(add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, regex);
+ } else {
+ char outstr[BUFSIZ];
+ fputs(_("Argument to the '-d' flag is not valid\n"), stderr);
+ snprintf(outstr, BUFSIZ,
+ "Possible argument format are: '%s' or 'n'\n",
+ DATEFMT_DESC(conf.input_datefmt));
+ fputs(_(outstr), stdout);
+ more_info();
}
+ }
}
/*
@@ -542,9 +500,9 @@ date_arg (const char *ddate, int add_line, const char *fmt_apt,
* Many thanks to Erik Saule for providing this function.
*/
static void
-date_arg_extended (const char *startday, const char *range, int add_line,
- const char *fmt_apt, const char *fmt_rapt,
- const char *fmt_ev, const char *fmt_rev, regex_t *regex)
+date_arg_extended(const char *startday, const char *range, int add_line,
+ const char *fmt_apt, const char *fmt_rapt,
+ const char *fmt_ev, const char *fmt_rev, regex_t * regex)
{
int i, numdays = 1, error = 0, arg_len = 0;
static struct tm t;
@@ -553,76 +511,65 @@ date_arg_extended (const char *startday, const char *range, int add_line,
/*
* Check arguments and extract information
*/
- if (range != NULL)
- {
- arg_len = strlen (range);
- for (i = 0; i <= arg_len - 1; i++)
- {
- if (!isdigit (range[i]))
- error = 1;
- }
- if (!error)
- numdays = atoi (range);
- }
- timer = time (NULL);
- t = *localtime (&timer);
- if (startday != NULL)
- {
- if (parse_date (startday, conf.input_datefmt, (int *)&t.tm_year,
- (int *)&t.tm_mon, (int *)&t.tm_mday, NULL))
- {
- t.tm_year -= 1900;
- t.tm_mon--;
- mktime (&t);
- }
- else
- {
- error = 1;
- }
+ if (range != NULL) {
+ arg_len = strlen(range);
+ for (i = 0; i <= arg_len - 1; i++) {
+ if (!isdigit(range[i]))
+ error = 1;
}
- if (!error)
- {
- display_app (&t, numdays, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev,
- regex);
- }
- else
- {
- char outstr[BUFSIZ];
- fputs (_("Argument is not valid\n"), stderr);
- snprintf (outstr, BUFSIZ,
- "Argument format for -s and --startday is: '%s'\n",
- DATEFMT_DESC (conf.input_datefmt));
- fputs (_(outstr), stdout);
- fputs (_("Argument format for -r and --range is: 'n'\n"), stdout);
- more_info ();
+ if (!error)
+ numdays = atoi(range);
+ }
+ timer = time(NULL);
+ t = *localtime(&timer);
+ if (startday != NULL) {
+ if (parse_date(startday, conf.input_datefmt, (int *)&t.tm_year,
+ (int *)&t.tm_mon, (int *)&t.tm_mday, NULL)) {
+ t.tm_year -= 1900;
+ t.tm_mon--;
+ mktime(&t);
+ } else {
+ error = 1;
}
+ }
+ if (!error) {
+ display_app(&t, numdays, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev,
+ regex);
+ } else {
+ char outstr[BUFSIZ];
+ fputs(_("Argument is not valid\n"), stderr);
+ snprintf(outstr, BUFSIZ,
+ "Argument format for -s and --startday is: '%s'\n",
+ DATEFMT_DESC(conf.input_datefmt));
+ fputs(_(outstr), stdout);
+ fputs(_("Argument format for -r and --range is: 'n'\n"), stdout);
+ more_info();
+ }
}
-
/*
* Parse the command-line arguments and call the appropriate
* routines to handle those arguments. Also initialize the data paths.
*/
-int
-parse_args (int argc, char **argv)
+int parse_args(int argc, char **argv)
{
int ch, add_line = 0;
int unknown_flag = 0;
/* Command-line flags */
- int aflag = 0; /* -a: print appointments for current day */
- int cflag = 0; /* -c: specify the calendar file to use */
- int dflag = 0; /* -d: print appointments for a specified days */
- int Dflag = 0; /* -D: specify data directory to use */
- int hflag = 0; /* -h: print help text */
- int gflag = 0; /* -g: run garbage collector */
- int iflag = 0; /* -i: import data */
- int nflag = 0; /* -n: print next appointment */
- int rflag = 0; /* -r: specify the range of days to consider */
- int sflag = 0; /* -s: specify the first day to consider */
- int Sflag = 0; /* -S: specify a regex to search for */
- int tflag = 0; /* -t: print todo list */
- int vflag = 0; /* -v: print version number */
- int xflag = 0; /* -x: export data */
+ int aflag = 0; /* -a: print appointments for current day */
+ int cflag = 0; /* -c: specify the calendar file to use */
+ int dflag = 0; /* -d: print appointments for a specified days */
+ int Dflag = 0; /* -D: specify data directory to use */
+ int hflag = 0; /* -h: print help text */
+ int gflag = 0; /* -g: run garbage collector */
+ int iflag = 0; /* -i: import data */
+ int nflag = 0; /* -n: print next appointment */
+ int rflag = 0; /* -r: specify the range of days to consider */
+ int sflag = 0; /* -s: specify the first day to consider */
+ int Sflag = 0; /* -S: specify a regex to search for */
+ int tflag = 0; /* -t: print todo list */
+ int vflag = 0; /* -v: print version number */
+ int xflag = 0; /* -x: export data */
/* Format strings */
const char *fmt_apt = " - %S -> %E\n\t%m\n";
const char *fmt_rapt = " - %S -> %E\n\t%m\n";
@@ -636,9 +583,8 @@ parse_args (int argc, char **argv)
regex_t reg, *preg = NULL;
/* Long options only */
- int statusflag = 0; /* --status: get the status of running instances */
- enum
- {
+ int statusflag = 0; /* --status: get the status of running instances */
+ enum {
STATUS_OPT = CHAR_MAX + 1
};
@@ -671,284 +617,243 @@ parse_args (int argc, char **argv)
{NULL, no_argument, NULL, 0}
};
- while ((ch = getopt_long (argc, argv, optstr, longopts, NULL)) != -1)
- {
- switch (ch)
- {
- case STATUS_OPT:
- statusflag = 1;
- break;
- case 'a':
- aflag = 1;
- multiple_flag++;
- load_data++;
- break;
- case 'c':
- cflag = 1;
- multiple_flag++;
- cfile = optarg;
- load_data++;
- break;
- case 'd':
- dflag = 1;
- multiple_flag++;
- load_data++;
- ddate = optarg;
- break;
- case 'D':
- Dflag = 1;
- datadir = optarg;
- break;
- case 'h':
- hflag = 1;
- break;
- case 'g':
- gflag = 1;
- break;
- case 'i':
- iflag = 1;
- multiple_flag++;
- load_data++;
- ifile = optarg;
- break;
- case 'n':
- nflag = 1;
- multiple_flag++;
- load_data++;
- break;
- case 'r':
- rflag = 1;
- multiple_flag++;
- load_data++;
- range = optarg;
- break;
- case 's':
- sflag = 1;
- multiple_flag++;
- load_data++;
- startday = optarg;
- break;
- case 'S':
- EXIT_IF (Sflag > 0,
- _("Can not handle more than one regular expression."));
- Sflag = 1;
- if (regcomp (&reg, optarg, REG_EXTENDED))
- EXIT (_("Could not compile regular expression."));
- preg = &reg;
- break;
- case 't':
- tflag = 1;
- multiple_flag++;
- load_data++;
- add_line = 1;
- if (optarg != NULL)
- {
- tnum = atoi (optarg);
- if (tnum < 0 || tnum > 9)
- {
- usage ();
- usage_try ();
- return EXIT_FAILURE;
- }
- }
- else
- tnum = -1;
- break;
- case 'v':
- vflag = 1;
- break;
- case 'x':
- xflag = 1;
- multiple_flag++;
- load_data++;
- if (optarg != NULL)
- {
- if (strcmp (optarg, "ical") == 0)
- xfmt = IO_EXPORT_ICAL;
- else if (strcmp (optarg, "pcal") == 0)
- xfmt = IO_EXPORT_PCAL;
- else
- {
- fputs (_("Argument for '-x' should be either "
- "'ical' or 'pcal'\n"), stderr);
- usage ();
- usage_try ();
- return EXIT_FAILURE;
- }
- }
- else
- {
- xfmt = IO_EXPORT_ICAL;
- }
- break;
- case OPT_FMT_APT:
- fmt_apt = optarg;
- break;
- case OPT_FMT_RAPT:
- fmt_rapt = optarg;
- break;
- case OPT_FMT_EV:
- fmt_ev = optarg;
- break;
- case OPT_FMT_REV:
- fmt_rev = optarg;
- break;
- case OPT_FMT_TODO:
- fmt_todo = optarg;
- break;
- case OPT_READ_ONLY:
- read_only = 1;
- break;
- default:
- usage ();
- usage_try ();
- unknown_flag = 1;
- non_interactive = 1;
- /* NOTREACHED */
+ while ((ch = getopt_long(argc, argv, optstr, longopts, NULL)) != -1) {
+ switch (ch) {
+ case STATUS_OPT:
+ statusflag = 1;
+ break;
+ case 'a':
+ aflag = 1;
+ multiple_flag++;
+ load_data++;
+ break;
+ case 'c':
+ cflag = 1;
+ multiple_flag++;
+ cfile = optarg;
+ load_data++;
+ break;
+ case 'd':
+ dflag = 1;
+ multiple_flag++;
+ load_data++;
+ ddate = optarg;
+ break;
+ case 'D':
+ Dflag = 1;
+ datadir = optarg;
+ break;
+ case 'h':
+ hflag = 1;
+ break;
+ case 'g':
+ gflag = 1;
+ break;
+ case 'i':
+ iflag = 1;
+ multiple_flag++;
+ load_data++;
+ ifile = optarg;
+ break;
+ case 'n':
+ nflag = 1;
+ multiple_flag++;
+ load_data++;
+ break;
+ case 'r':
+ rflag = 1;
+ multiple_flag++;
+ load_data++;
+ range = optarg;
+ break;
+ case 's':
+ sflag = 1;
+ multiple_flag++;
+ load_data++;
+ startday = optarg;
+ break;
+ case 'S':
+ EXIT_IF(Sflag > 0, _("Can not handle more than one regular expression."));
+ Sflag = 1;
+ if (regcomp(&reg, optarg, REG_EXTENDED))
+ EXIT(_("Could not compile regular expression."));
+ preg = &reg;
+ break;
+ case 't':
+ tflag = 1;
+ multiple_flag++;
+ load_data++;
+ add_line = 1;
+ if (optarg != NULL) {
+ tnum = atoi(optarg);
+ if (tnum < 0 || tnum > 9) {
+ usage();
+ usage_try();
+ return EXIT_FAILURE;
+ }
+ } else
+ tnum = -1;
+ break;
+ case 'v':
+ vflag = 1;
+ break;
+ case 'x':
+ xflag = 1;
+ multiple_flag++;
+ load_data++;
+ if (optarg != NULL) {
+ if (strcmp(optarg, "ical") == 0)
+ xfmt = IO_EXPORT_ICAL;
+ else if (strcmp(optarg, "pcal") == 0)
+ xfmt = IO_EXPORT_PCAL;
+ else {
+ fputs(_("Argument for '-x' should be either "
+ "'ical' or 'pcal'\n"), stderr);
+ usage();
+ usage_try();
+ return EXIT_FAILURE;
}
+ } else {
+ xfmt = IO_EXPORT_ICAL;
+ }
+ break;
+ case OPT_FMT_APT:
+ fmt_apt = optarg;
+ break;
+ case OPT_FMT_RAPT:
+ fmt_rapt = optarg;
+ break;
+ case OPT_FMT_EV:
+ fmt_ev = optarg;
+ break;
+ case OPT_FMT_REV:
+ fmt_rev = optarg;
+ break;
+ case OPT_FMT_TODO:
+ fmt_todo = optarg;
+ break;
+ case OPT_READ_ONLY:
+ read_only = 1;
+ break;
+ default:
+ usage();
+ usage_try();
+ unknown_flag = 1;
+ non_interactive = 1;
+ /* NOTREACHED */
}
+ }
argc -= optind;
- if (argc >= 1)
- {
- usage ();
- usage_try ();
- return EXIT_FAILURE;
- /* Incorrect arguments */
- }
- else if (Dflag && cflag)
- {
- fputs (_("Options '-D' and '-c' cannot be used at the same time\n"),
- stderr);
- usage ();
- usage_try ();
- return EXIT_FAILURE;
- }
- else if (Sflag && !(aflag || dflag || rflag || sflag || tflag))
- {
- fputs (_("Option '-S' must be used with either '-d', '-r', '-s', "
- "'-a' or '-t'\n"), stderr);
- usage ();
- usage_try ();
- return EXIT_FAILURE;
- }
- else
- {
- if (unknown_flag)
- {
- non_interactive = 1;
- }
- else if (hflag)
- {
- help_arg ();
- non_interactive = 1;
- }
- else if (vflag)
- {
- version_arg ();
- non_interactive = 1;
- }
- else if (statusflag)
- {
- io_init (cfile, datadir);
- status_arg ();
- non_interactive = 1;
- }
- else if (gflag)
- {
- io_init (cfile, datadir);
- io_check_dir (path_dir, NULL);
- io_check_dir (path_notes, NULL);
- io_check_file (path_apts, NULL);
- io_check_file (path_todo, NULL);
- io_load_app ();
- io_load_todo ();
- note_gc ();
- non_interactive = 1;
- }
- else if (multiple_flag)
- {
- if (load_data)
- {
- io_init (cfile, datadir);
- io_check_dir (path_dir, NULL);
- io_check_dir (path_notes, NULL);
- }
- if (iflag)
- {
- io_check_file (path_apts, NULL);
- io_check_file (path_todo, NULL);
- /* Get default pager in case we need to show a log file. */
- vars_init ();
- io_load_app ();
- io_load_todo ();
- io_import_data (IO_IMPORT_ICAL, ifile);
- io_save_apts ();
- io_save_todo ();
- non_interactive = 1;
- }
- if (xflag)
- {
- io_check_file (path_apts, NULL);
- io_check_file (path_todo, NULL);
- io_load_app ();
- io_load_todo ();
- io_export_data (xfmt);
- non_interactive = 1;
- return non_interactive;
- }
- if (tflag)
- {
- io_check_file (path_todo, NULL);
- io_load_todo ();
- todo_arg (tnum, fmt_todo, preg);
- non_interactive = 1;
- }
- if (nflag)
- {
- io_check_file (path_apts, NULL);
- io_load_app ();
- next_arg ();
- non_interactive = 1;
- }
- if (dflag || rflag || sflag)
- {
- io_check_file (path_apts, NULL);
- io_check_file (path_conf, NULL);
- io_load_app ();
- config_load (); /* To get output date format. */
- if (dflag)
- date_arg (ddate, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev,
- preg);
- if (rflag || sflag)
- date_arg_extended (startday, range, add_line, fmt_apt,
- fmt_rapt, fmt_ev, fmt_rev, preg);
- non_interactive = 1;
- }
- else if (aflag)
- {
- struct date day;
-
- io_check_file (path_apts, NULL);
- io_check_file (path_conf, NULL);
- vars_init ();
- config_load (); /* To get output date format. */
- io_load_app ();
- day.dd = day.mm = day.yyyy = 0;
- app_arg (add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev,
- preg);
- non_interactive = 1;
- }
- }
- else
- {
- non_interactive = 0;
- io_init (cfile, datadir);
- }
+ if (argc >= 1) {
+ usage();
+ usage_try();
+ return EXIT_FAILURE;
+ /* Incorrect arguments */
+ } else if (Dflag && cflag) {
+ fputs(_("Options '-D' and '-c' cannot be used at the same time\n"), stderr);
+ usage();
+ usage_try();
+ return EXIT_FAILURE;
+ } else if (Sflag && !(aflag || dflag || rflag || sflag || tflag)) {
+ fputs(_("Option '-S' must be used with either '-d', '-r', '-s', "
+ "'-a' or '-t'\n"), stderr);
+ usage();
+ usage_try();
+ return EXIT_FAILURE;
+ } else {
+ if (unknown_flag) {
+ non_interactive = 1;
+ } else if (hflag) {
+ help_arg();
+ non_interactive = 1;
+ } else if (vflag) {
+ version_arg();
+ non_interactive = 1;
+ } else if (statusflag) {
+ io_init(cfile, datadir);
+ status_arg();
+ non_interactive = 1;
+ } else if (gflag) {
+ io_init(cfile, datadir);
+ io_check_dir(path_dir, NULL);
+ io_check_dir(path_notes, NULL);
+ io_check_file(path_apts, NULL);
+ io_check_file(path_todo, NULL);
+ io_load_app();
+ io_load_todo();
+ note_gc();
+ non_interactive = 1;
+ } else if (multiple_flag) {
+ if (load_data) {
+ io_init(cfile, datadir);
+ io_check_dir(path_dir, NULL);
+ io_check_dir(path_notes, NULL);
+ }
+ if (iflag) {
+ io_check_file(path_apts, NULL);
+ io_check_file(path_todo, NULL);
+ /* Get default pager in case we need to show a log file. */
+ vars_init();
+ io_load_app();
+ io_load_todo();
+ io_import_data(IO_IMPORT_ICAL, ifile);
+ io_save_apts();
+ io_save_todo();
+ non_interactive = 1;
+ }
+ if (xflag) {
+ io_check_file(path_apts, NULL);
+ io_check_file(path_todo, NULL);
+ io_load_app();
+ io_load_todo();
+ io_export_data(xfmt);
+ non_interactive = 1;
+ return non_interactive;
+ }
+ if (tflag) {
+ io_check_file(path_todo, NULL);
+ io_load_todo();
+ todo_arg(tnum, fmt_todo, preg);
+ non_interactive = 1;
+ }
+ if (nflag) {
+ io_check_file(path_apts, NULL);
+ io_load_app();
+ next_arg();
+ non_interactive = 1;
+ }
+ if (dflag || rflag || sflag) {
+ io_check_file(path_apts, NULL);
+ io_check_file(path_conf, NULL);
+ io_load_app();
+ config_load(); /* To get output date format. */
+ if (dflag)
+ date_arg(ddate, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, preg);
+ if (rflag || sflag)
+ date_arg_extended(startday, range, add_line, fmt_apt,
+ fmt_rapt, fmt_ev, fmt_rev, preg);
+ non_interactive = 1;
+ } else if (aflag) {
+ struct date day;
+
+ io_check_file(path_apts, NULL);
+ io_check_file(path_conf, NULL);
+ vars_init();
+ config_load(); /* To get output date format. */
+ io_load_app();
+ day.dd = day.mm = day.yyyy = 0;
+ app_arg(add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, preg);
+ non_interactive = 1;
+ }
+ } else {
+ non_interactive = 0;
+ io_init(cfile, datadir);
}
+ }
if (preg)
- regfree (preg);
+ regfree(preg);
return non_interactive;
}
diff --git a/src/calcurse.c b/src/calcurse.c
index ee85ea7..9e42eee 100644
--- a/src/calcurse.c
+++ b/src/calcurse.c
@@ -42,14 +42,13 @@
* Store the events and appointments for the selected day and reset the
* appointment highlight pointer if a new day was selected.
*/
-static struct day_items_nb
-do_storage (int day_changed)
+static struct day_items_nb do_storage(int day_changed)
{
- struct day_items_nb inday = *day_process_storage (calendar_get_slctd_day (),
- day_changed, &inday);
+ struct day_items_nb inday = *day_process_storage(calendar_get_slctd_day(),
+ day_changed, &inday);
if (day_changed)
- apoint_hilt_set (1);
+ apoint_hilt_set(1);
return inday;
}
@@ -61,8 +60,7 @@ do_storage (int day_changed)
* and one can choose between different color schemes and layouts.
* All of the commands are documented within an online help system.
*/
-int
-main (int argc, char **argv)
+int main(int argc, char **argv)
{
struct day_items_nb inday;
int no_data_file = 1;
@@ -70,504 +68,455 @@ main (int argc, char **argv)
int count;
#if ENABLE_NLS
- setlocale (LC_ALL, "");
- bindtextdomain (PACKAGE, LOCALEDIR);
- textdomain (PACKAGE);
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
#endif /* ENABLE_NLS */
/* Thread-safe data structure init */
- apoint_llist_init ();
- recur_apoint_llist_init ();
+ apoint_llist_init();
+ recur_apoint_llist_init();
/* Initialize non-thread-safe data structures. */
- event_llist_init ();
- todo_init_list ();
+ event_llist_init();
+ todo_init_list();
/*
* Begin by parsing and handling command line arguments.
* The data path is also initialized here.
*/
- if (parse_args (argc, argv))
- {
- /* Non-interactive mode. */
- exit_calcurse (EXIT_SUCCESS);
- }
- else
- {
- no_data_file = io_check_data_files ();
- dmon_stop ();
- io_set_lock ();
- }
+ if (parse_args(argc, argv)) {
+ /* Non-interactive mode. */
+ exit_calcurse(EXIT_SUCCESS);
+ } else {
+ no_data_file = io_check_data_files();
+ dmon_stop();
+ io_set_lock();
+ }
/* Begin of interactive mode with ncurses interface. */
- sigs_init (); /* signal handling init */
- initscr (); /* start the curses mode */
- cbreak (); /* control chars generate a signal */
- noecho (); /* controls echoing of typed chars */
- curs_set (0); /* make cursor invisible */
- calendar_set_current_date ();
- notify_init_vars ();
- wins_get_config ();
+ sigs_init(); /* signal handling init */
+ initscr(); /* start the curses mode */
+ cbreak(); /* control chars generate a signal */
+ noecho(); /* controls echoing of typed chars */
+ curs_set(0); /* make cursor invisible */
+ calendar_set_current_date();
+ notify_init_vars();
+ wins_get_config();
/* Check if terminal supports color. */
- if (has_colors ())
- {
- colorize = 1;
- background = COLOR_BLACK;
- foreground = COLOR_WHITE;
- start_color ();
+ if (has_colors()) {
+ colorize = 1;
+ background = COLOR_BLACK;
+ foreground = COLOR_WHITE;
+ start_color();
#ifdef NCURSES_VERSION
- if (use_default_colors () != ERR)
- {
- background = -1;
- foreground = -1;
- }
-#endif /* NCURSES_VERSION */
-
- /* Color assignment */
- init_pair (COLR_RED, COLOR_RED, background);
- init_pair (COLR_GREEN, COLOR_GREEN, background);
- init_pair (COLR_YELLOW, COLOR_YELLOW, background);
- init_pair (COLR_BLUE, COLOR_BLUE, background);
- init_pair (COLR_MAGENTA, COLOR_MAGENTA, background);
- init_pair (COLR_CYAN, COLOR_CYAN, background);
- init_pair (COLR_DEFAULT, foreground, background);
- init_pair (COLR_HIGH, COLOR_BLACK, COLOR_GREEN);
- init_pair (COLR_CUSTOM, COLOR_RED, background);
- }
- else
- {
- colorize = 0;
- background = COLOR_BLACK;
+ if (use_default_colors() != ERR) {
+ background = -1;
+ foreground = -1;
}
+#endif /* NCURSES_VERSION */
- vars_init ();
- wins_init ();
- wins_slctd_init ();
- notify_init_bar ();
- wins_reset_status_page ();
+ /* Color assignment */
+ init_pair(COLR_RED, COLOR_RED, background);
+ init_pair(COLR_GREEN, COLOR_GREEN, background);
+ init_pair(COLR_YELLOW, COLOR_YELLOW, background);
+ init_pair(COLR_BLUE, COLOR_BLUE, background);
+ init_pair(COLR_MAGENTA, COLOR_MAGENTA, background);
+ init_pair(COLR_CYAN, COLOR_CYAN, background);
+ init_pair(COLR_DEFAULT, foreground, background);
+ init_pair(COLR_HIGH, COLOR_BLACK, COLOR_GREEN);
+ init_pair(COLR_CUSTOM, COLOR_RED, background);
+ } else {
+ colorize = 0;
+ background = COLOR_BLACK;
+ }
+
+ vars_init();
+ wins_init();
+ wins_slctd_init();
+ notify_init_bar();
+ wins_reset_status_page();
/*
* Read the data from files : first the user
* configuration (the display is then updated), and then
* the todo list, appointments and events.
*/
- config_load ();
- wins_erase_status_bar ();
- io_load_keys (conf.pager);
- io_load_todo ();
- io_load_app ();
- wins_reinit ();
- if (conf.system_dialogs)
- {
- wins_update (FLAG_ALL);
- io_startup_screen (no_data_file);
- }
- inday = *day_process_storage (0, 0, &inday);
- wins_slctd_set (CAL);
- wins_update (FLAG_ALL);
+ config_load();
+ wins_erase_status_bar();
+ io_load_keys(conf.pager);
+ io_load_todo();
+ io_load_app();
+ wins_reinit();
+ if (conf.system_dialogs) {
+ wins_update(FLAG_ALL);
+ io_startup_screen(no_data_file);
+ }
+ inday = *day_process_storage(0, 0, &inday);
+ wins_slctd_set(CAL);
+ wins_update(FLAG_ALL);
/* Start miscellaneous threads. */
- if (notify_bar ())
- notify_start_main_thread ();
- calendar_start_date_thread ();
+ if (notify_bar())
+ notify_start_main_thread();
+ calendar_start_date_thread();
if (conf.periodic_save > 0)
- io_start_psave_thread ();
+ io_start_psave_thread();
/* User input */
- for (;;)
- {
- int key;
-
- if (resize)
- {
- resize = 0;
- wins_reset ();
- }
-
- key = keys_getch (win[STA].p, &count);
- switch (key)
- {
- case KEY_GENERIC_REDRAW:
- resize = 1;
- break;
-
- case KEY_GENERIC_CHANGE_VIEW:
- wins_reset_status_page ();
- wins_slctd_next ();
-
- /* Select the event to highlight. */
- switch (wins_slctd ())
- {
- case TOD:
- if ((todo_hilt () == 0) && (todo_nb () > 0))
- todo_hilt_set (1);
- break;
- case APP:
- if ((apoint_hilt () == 0) &&
- ((inday.nb_events + inday.nb_apoints) > 0))
- apoint_hilt_set (1);
- break;
- default:
- break;
- }
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_OTHER_CMD:
- wins_other_status_page (wins_slctd ());
- wins_update (FLAG_STA);
- break;
-
- case KEY_GENERIC_GOTO:
- case KEY_GENERIC_GOTO_TODAY:
- wins_erase_status_bar ();
- calendar_set_current_date ();
- if (key == KEY_GENERIC_GOTO_TODAY)
- calendar_goto_today ();
- else
- calendar_change_day (conf.input_datefmt);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP | FLAG_STA);
- break;
-
- case KEY_VIEW_ITEM:
- if ((wins_slctd () == APP) && (apoint_hilt () != 0))
- day_popup_item ();
- else if ((wins_slctd () == TOD) && (todo_hilt () != 0))
- item_in_popup (NULL, NULL, todo_saved_mesg (), _("To do :"));
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_CONFIG_MENU:
- wins_erase_status_bar ();
- custom_config_main ();
- inday = do_storage (0);
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_ADD_APPT:
- apoint_add ();
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP | FLAG_STA);
- break;
-
- case KEY_GENERIC_ADD_TODO:
- todo_new_item ();
- if (todo_hilt () == 0 && todo_nb () == 1)
- todo_hilt_increase (1);
- wins_update (FLAG_TOD | FLAG_STA);
- break;
-
- case KEY_ADD_ITEM:
- switch (wins_slctd ())
- {
- case APP:
- apoint_add ();
- inday = do_storage (0);
- wins_update (FLAG_CAL | FLAG_APP | FLAG_STA);
- break;
- case TOD:
- todo_new_item ();
- if (todo_hilt () == 0 && todo_nb () == 1)
- todo_hilt_increase (1);
- wins_update (FLAG_TOD | FLAG_STA);
- break;
- default:
- break;
- }
- break;
-
- case KEY_EDIT_ITEM:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- {
- day_edit_item ();
- inday = do_storage (0);
- wins_update (FLAG_CAL | FLAG_APP | FLAG_STA);
- }
- else if (wins_slctd () == TOD && todo_hilt () != 0)
- {
- todo_edit_item ();
- wins_update (FLAG_TOD | FLAG_STA);
- }
- break;
-
- case KEY_DEL_ITEM:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- {
- apoint_delete (&inday.nb_events, &inday.nb_apoints);
- inday = do_storage (0);
- wins_update (FLAG_CAL | FLAG_APP | FLAG_STA);
- }
- else if (wins_slctd () == TOD && todo_hilt () != 0)
- {
- todo_delete ();
- wins_update (FLAG_TOD | FLAG_STA);
- }
- break;
-
- case KEY_GENERIC_CUT:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- {
- cut_item = apoint_cut (&inday.nb_events, &inday.nb_apoints);
- inday = do_storage (0);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
-
- case KEY_GENERIC_PASTE:
- if (wins_slctd () == APP)
- {
- apoint_paste (&inday.nb_events, &inday.nb_apoints, cut_item);
- cut_item = 0;
- inday = do_storage (0);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
-
- case KEY_REPEAT_ITEM:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- recur_repeat_item ();
- inday = do_storage (0);
- wins_update (FLAG_CAL | FLAG_APP | FLAG_STA);
- break;
-
- case KEY_FLAG_ITEM:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- {
- apoint_switch_notify ();
- inday = do_storage (0);
- wins_update (FLAG_APP);
- }
- else if (wins_slctd () == TOD && todo_hilt () != 0)
- {
- todo_flag ();
- wins_update (FLAG_TOD);
- }
- break;
-
- case KEY_PIPE_ITEM:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- day_pipe_item ();
- else if (wins_slctd () == TOD && todo_hilt () != 0)
- todo_pipe_item ();
- wins_update (FLAG_ALL);
- break;
-
- case KEY_RAISE_PRIORITY:
- case KEY_LOWER_PRIORITY:
- if (wins_slctd () == TOD && todo_hilt () != 0)
- {
- todo_chg_priority (key);
- if (todo_hilt_pos () < 0)
- todo_set_first (todo_hilt ());
- else if (todo_hilt_pos () >= win[TOD].h - 4)
- todo_set_first (todo_hilt () - win[TOD].h + 5);
- wins_update (FLAG_TOD);
- }
- break;
-
- case KEY_EDIT_NOTE:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- {
- day_edit_note (conf.editor);
- inday = do_storage (0);
- }
- else if (wins_slctd () == TOD && todo_hilt () != 0)
- todo_edit_note (conf.editor);
- wins_update (FLAG_ALL);
- break;
-
- case KEY_VIEW_NOTE:
- if (wins_slctd () == APP && apoint_hilt () != 0)
- day_view_note (conf.pager);
- else if (wins_slctd () == TOD && todo_hilt () != 0)
- todo_view_note (conf.pager);
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_HELP:
- wins_status_bar ();
- help_screen ();
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_SAVE:
- io_save_cal (IO_SAVE_DISPLAY_BAR);
- wins_update (FLAG_STA);
- break;
-
- case KEY_GENERIC_IMPORT:
- wins_erase_status_bar ();
- io_import_data (IO_IMPORT_ICAL, NULL);
- inday = do_storage (0);
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_EXPORT:
- wins_erase_status_bar ();
- io_export_bar ();
- while ((key = wgetch (win[STA].p)) != 'q')
- {
- switch (key)
- {
- case 'I':
- case 'i':
- io_export_data (IO_EXPORT_ICAL);
- break;
- case 'P':
- case 'p':
- io_export_data (IO_EXPORT_PCAL);
- break;
- }
- wins_reset ();
- wins_update (FLAG_ALL);
- wins_erase_status_bar ();
- io_export_bar ();
- }
- inday = do_storage (0);
- wins_update (FLAG_ALL);
- break;
-
- case KEY_GENERIC_NEXT_DAY:
- case KEY_MOVE_RIGHT:
- if (wins_slctd () == CAL || key == KEY_GENERIC_NEXT_DAY)
- {
- calendar_move (RIGHT, count);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
+ for (;;) {
+ int key;
- case KEY_GENERIC_PREV_DAY:
- case KEY_MOVE_LEFT:
- if (wins_slctd () == CAL || key == KEY_GENERIC_PREV_DAY)
- {
- calendar_move (LEFT, count);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
-
- case KEY_GENERIC_PREV_WEEK:
- case KEY_MOVE_UP:
- if (wins_slctd () == CAL || key == KEY_GENERIC_PREV_WEEK)
- {
- calendar_move (UP, count);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- else if (wins_slctd () == APP)
- {
- if (count >= apoint_hilt ())
- count = apoint_hilt () - 1;
- apoint_hilt_decrease (count);
- apoint_scroll_pad_up (inday.nb_events);
- wins_update (FLAG_APP);
- }
- else if (wins_slctd () == TOD)
- {
- if (count >= todo_hilt ())
- count = todo_hilt () - 1;
- todo_hilt_decrease (count);
- if (todo_hilt_pos () < 0)
- todo_first_increase (todo_hilt_pos ());
- wins_update (FLAG_TOD);
- }
- break;
-
- case KEY_GENERIC_NEXT_WEEK:
- case KEY_MOVE_DOWN:
- if (wins_slctd () == CAL || key == KEY_GENERIC_NEXT_WEEK)
- {
- calendar_move (DOWN, count);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- else if (wins_slctd () == APP)
- {
- if (count > inday.nb_events + inday.nb_apoints - apoint_hilt ())
- count = inday.nb_events + inday.nb_apoints - apoint_hilt ();
- apoint_hilt_increase (count);
- apoint_scroll_pad_down (inday.nb_events, win[APP].h);
- wins_update (FLAG_APP);
- }
- else if (wins_slctd () == TOD)
- {
- if (count > todo_nb () - todo_hilt ())
- count = todo_nb () - todo_hilt ();
- todo_hilt_increase (count);
- if (todo_hilt_pos () >= win[TOD].h - 4)
- todo_first_increase (todo_hilt_pos () - win[TOD].h + 5);
- wins_update (FLAG_TOD);
- }
- break;
-
- case KEY_START_OF_WEEK:
- if (wins_slctd () == CAL)
- {
- calendar_move (WEEK_START, count);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
-
- case KEY_END_OF_WEEK:
- if (wins_slctd () == CAL)
- {
- calendar_move (WEEK_END, count);
- inday = do_storage (1);
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
-
- case KEY_GENERIC_SCROLL_UP:
- if (wins_slctd () == CAL)
- {
- calendar_view_prev ();
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
-
- case KEY_GENERIC_SCROLL_DOWN:
- if (wins_slctd () == CAL)
- {
- calendar_view_next ();
- wins_update (FLAG_CAL | FLAG_APP);
- }
- break;
+ if (resize) {
+ resize = 0;
+ wins_reset();
+ }
- case KEY_GENERIC_QUIT:
- if (conf.auto_save)
- io_save_cal (IO_SAVE_DISPLAY_BAR);
- if (conf.auto_gc)
- note_gc ();
-
- if (conf.confirm_quit)
- {
- if (status_ask_bool (_("Do you really want to quit ?")) == 1)
- exit_calcurse (EXIT_SUCCESS);
- else
- {
- wins_erase_status_bar ();
- wins_update (FLAG_STA);
- break;
- }
- }
- else
- exit_calcurse (EXIT_SUCCESS);
+ key = keys_getch(win[STA].p, &count);
+ switch (key) {
+ case KEY_GENERIC_REDRAW:
+ resize = 1;
+ break;
+
+ case KEY_GENERIC_CHANGE_VIEW:
+ wins_reset_status_page();
+ wins_slctd_next();
+
+ /* Select the event to highlight. */
+ switch (wins_slctd()) {
+ case TOD:
+ if ((todo_hilt() == 0) && (todo_nb() > 0))
+ todo_hilt_set(1);
+ break;
+ case APP:
+ if ((apoint_hilt() == 0) && ((inday.nb_events + inday.nb_apoints) > 0))
+ apoint_hilt_set(1);
+ break;
+ default:
+ break;
+ }
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_OTHER_CMD:
+ wins_other_status_page(wins_slctd());
+ wins_update(FLAG_STA);
+ break;
+
+ case KEY_GENERIC_GOTO:
+ case KEY_GENERIC_GOTO_TODAY:
+ wins_erase_status_bar();
+ calendar_set_current_date();
+ if (key == KEY_GENERIC_GOTO_TODAY)
+ calendar_goto_today();
+ else
+ calendar_change_day(conf.input_datefmt);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP | FLAG_STA);
+ break;
+
+ case KEY_VIEW_ITEM:
+ if ((wins_slctd() == APP) && (apoint_hilt() != 0))
+ day_popup_item();
+ else if ((wins_slctd() == TOD) && (todo_hilt() != 0))
+ item_in_popup(NULL, NULL, todo_saved_mesg(), _("To do :"));
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_CONFIG_MENU:
+ wins_erase_status_bar();
+ custom_config_main();
+ inday = do_storage(0);
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_ADD_APPT:
+ apoint_add();
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP | FLAG_STA);
+ break;
+
+ case KEY_GENERIC_ADD_TODO:
+ todo_new_item();
+ if (todo_hilt() == 0 && todo_nb() == 1)
+ todo_hilt_increase(1);
+ wins_update(FLAG_TOD | FLAG_STA);
+ break;
+
+ case KEY_ADD_ITEM:
+ switch (wins_slctd()) {
+ case APP:
+ apoint_add();
+ inday = do_storage(0);
+ wins_update(FLAG_CAL | FLAG_APP | FLAG_STA);
+ break;
+ case TOD:
+ todo_new_item();
+ if (todo_hilt() == 0 && todo_nb() == 1)
+ todo_hilt_increase(1);
+ wins_update(FLAG_TOD | FLAG_STA);
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case KEY_EDIT_ITEM:
+ if (wins_slctd() == APP && apoint_hilt() != 0) {
+ day_edit_item();
+ inday = do_storage(0);
+ wins_update(FLAG_CAL | FLAG_APP | FLAG_STA);
+ } else if (wins_slctd() == TOD && todo_hilt() != 0) {
+ todo_edit_item();
+ wins_update(FLAG_TOD | FLAG_STA);
+ }
+ break;
+
+ case KEY_DEL_ITEM:
+ if (wins_slctd() == APP && apoint_hilt() != 0) {
+ apoint_delete(&inday.nb_events, &inday.nb_apoints);
+ inday = do_storage(0);
+ wins_update(FLAG_CAL | FLAG_APP | FLAG_STA);
+ } else if (wins_slctd() == TOD && todo_hilt() != 0) {
+ todo_delete();
+ wins_update(FLAG_TOD | FLAG_STA);
+ }
+ break;
+
+ case KEY_GENERIC_CUT:
+ if (wins_slctd() == APP && apoint_hilt() != 0) {
+ cut_item = apoint_cut(&inday.nb_events, &inday.nb_apoints);
+ inday = do_storage(0);
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_GENERIC_PASTE:
+ if (wins_slctd() == APP) {
+ apoint_paste(&inday.nb_events, &inday.nb_apoints, cut_item);
+ cut_item = 0;
+ inday = do_storage(0);
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_REPEAT_ITEM:
+ if (wins_slctd() == APP && apoint_hilt() != 0)
+ recur_repeat_item();
+ inday = do_storage(0);
+ wins_update(FLAG_CAL | FLAG_APP | FLAG_STA);
+ break;
+
+ case KEY_FLAG_ITEM:
+ if (wins_slctd() == APP && apoint_hilt() != 0) {
+ apoint_switch_notify();
+ inday = do_storage(0);
+ wins_update(FLAG_APP);
+ } else if (wins_slctd() == TOD && todo_hilt() != 0) {
+ todo_flag();
+ wins_update(FLAG_TOD);
+ }
+ break;
+
+ case KEY_PIPE_ITEM:
+ if (wins_slctd() == APP && apoint_hilt() != 0)
+ day_pipe_item();
+ else if (wins_slctd() == TOD && todo_hilt() != 0)
+ todo_pipe_item();
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_RAISE_PRIORITY:
+ case KEY_LOWER_PRIORITY:
+ if (wins_slctd() == TOD && todo_hilt() != 0) {
+ todo_chg_priority(key);
+ if (todo_hilt_pos() < 0)
+ todo_set_first(todo_hilt());
+ else if (todo_hilt_pos() >= win[TOD].h - 4)
+ todo_set_first(todo_hilt() - win[TOD].h + 5);
+ wins_update(FLAG_TOD);
+ }
+ break;
+
+ case KEY_EDIT_NOTE:
+ if (wins_slctd() == APP && apoint_hilt() != 0) {
+ day_edit_note(conf.editor);
+ inday = do_storage(0);
+ } else if (wins_slctd() == TOD && todo_hilt() != 0)
+ todo_edit_note(conf.editor);
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_VIEW_NOTE:
+ if (wins_slctd() == APP && apoint_hilt() != 0)
+ day_view_note(conf.pager);
+ else if (wins_slctd() == TOD && todo_hilt() != 0)
+ todo_view_note(conf.pager);
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_HELP:
+ wins_status_bar();
+ help_screen();
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_SAVE:
+ io_save_cal(IO_SAVE_DISPLAY_BAR);
+ wins_update(FLAG_STA);
+ break;
+
+ case KEY_GENERIC_IMPORT:
+ wins_erase_status_bar();
+ io_import_data(IO_IMPORT_ICAL, NULL);
+ inday = do_storage(0);
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_EXPORT:
+ wins_erase_status_bar();
+ io_export_bar();
+ while ((key = wgetch(win[STA].p)) != 'q') {
+ switch (key) {
+ case 'I':
+ case 'i':
+ io_export_data(IO_EXPORT_ICAL);
+ break;
+ case 'P':
+ case 'p':
+ io_export_data(IO_EXPORT_PCAL);
break;
-
- case KEY_RESIZE:
- case ERR:
- /* Do not reset the count parameter on resize or error. */
- continue;
-
- default:
+ }
+ wins_reset();
+ wins_update(FLAG_ALL);
+ wins_erase_status_bar();
+ io_export_bar();
+ }
+ inday = do_storage(0);
+ wins_update(FLAG_ALL);
+ break;
+
+ case KEY_GENERIC_NEXT_DAY:
+ case KEY_MOVE_RIGHT:
+ if (wins_slctd() == CAL || key == KEY_GENERIC_NEXT_DAY) {
+ calendar_move(RIGHT, count);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_GENERIC_PREV_DAY:
+ case KEY_MOVE_LEFT:
+ if (wins_slctd() == CAL || key == KEY_GENERIC_PREV_DAY) {
+ calendar_move(LEFT, count);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_GENERIC_PREV_WEEK:
+ case KEY_MOVE_UP:
+ if (wins_slctd() == CAL || key == KEY_GENERIC_PREV_WEEK) {
+ calendar_move(UP, count);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP);
+ } else if (wins_slctd() == APP) {
+ if (count >= apoint_hilt())
+ count = apoint_hilt() - 1;
+ apoint_hilt_decrease(count);
+ apoint_scroll_pad_up(inday.nb_events);
+ wins_update(FLAG_APP);
+ } else if (wins_slctd() == TOD) {
+ if (count >= todo_hilt())
+ count = todo_hilt() - 1;
+ todo_hilt_decrease(count);
+ if (todo_hilt_pos() < 0)
+ todo_first_increase(todo_hilt_pos());
+ wins_update(FLAG_TOD);
+ }
+ break;
+
+ case KEY_GENERIC_NEXT_WEEK:
+ case KEY_MOVE_DOWN:
+ if (wins_slctd() == CAL || key == KEY_GENERIC_NEXT_WEEK) {
+ calendar_move(DOWN, count);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP);
+ } else if (wins_slctd() == APP) {
+ if (count > inday.nb_events + inday.nb_apoints - apoint_hilt())
+ count = inday.nb_events + inday.nb_apoints - apoint_hilt();
+ apoint_hilt_increase(count);
+ apoint_scroll_pad_down(inday.nb_events, win[APP].h);
+ wins_update(FLAG_APP);
+ } else if (wins_slctd() == TOD) {
+ if (count > todo_nb() - todo_hilt())
+ count = todo_nb() - todo_hilt();
+ todo_hilt_increase(count);
+ if (todo_hilt_pos() >= win[TOD].h - 4)
+ todo_first_increase(todo_hilt_pos() - win[TOD].h + 5);
+ wins_update(FLAG_TOD);
+ }
+ break;
+
+ case KEY_START_OF_WEEK:
+ if (wins_slctd() == CAL) {
+ calendar_move(WEEK_START, count);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_END_OF_WEEK:
+ if (wins_slctd() == CAL) {
+ calendar_move(WEEK_END, count);
+ inday = do_storage(1);
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_GENERIC_SCROLL_UP:
+ if (wins_slctd() == CAL) {
+ calendar_view_prev();
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_GENERIC_SCROLL_DOWN:
+ if (wins_slctd() == CAL) {
+ calendar_view_next();
+ wins_update(FLAG_CAL | FLAG_APP);
+ }
+ break;
+
+ case KEY_GENERIC_QUIT:
+ if (conf.auto_save)
+ io_save_cal(IO_SAVE_DISPLAY_BAR);
+ if (conf.auto_gc)
+ note_gc();
+
+ if (conf.confirm_quit) {
+ if (status_ask_bool(_("Do you really want to quit ?")) == 1)
+ exit_calcurse(EXIT_SUCCESS);
+ else {
+ wins_erase_status_bar();
+ wins_update(FLAG_STA);
break;
}
+ } else
+ exit_calcurse(EXIT_SUCCESS);
+ break;
- count = 0;
+ case KEY_RESIZE:
+ case ERR:
+ /* Do not reset the count parameter on resize or error. */
+ continue;
+
+ default:
+ break;
}
+
+ count = 0;
+ }
}
diff --git a/src/calcurse.h b/src/calcurse.h
index dad9f44..9efb4fd 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -40,13 +40,13 @@
#include "config.h"
#ifdef HAVE_NCURSES_H
-# include <ncurses.h>
+#include <ncurses.h>
#elif defined HAVE_NCURSES_NCURSES_H
-# include <ncurses/ncurses.h>
+#include <ncurses/ncurses.h>
#elif defined HAVE_NCURSESW_NCURSES_H
-# include <ncursesw/ncurses.h>
+#include <ncursesw/ncurses.h>
#else
-# error "Missing ncurses header. Aborting..."
+#error "Missing ncurses header. Aborting..."
#endif
#include <pthread.h>
@@ -60,24 +60,24 @@
/* 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
+#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)
+#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 */
/* Paths configuration. */
@@ -152,9 +152,9 @@
#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 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 */
/* Size of the hash table the note garbage collector uses. */
#define NOTE_GC_HSIZE 1024
@@ -228,23 +228,23 @@
/* General configuration variables. */
struct conf {
- unsigned auto_save;
- unsigned auto_gc;
- unsigned periodic_save;
- unsigned confirm_quit;
- unsigned confirm_delete;
- unsigned system_dialogs;
- unsigned progress_bar;
+ unsigned auto_save;
+ unsigned auto_gc;
+ unsigned periodic_save;
+ unsigned confirm_quit;
+ unsigned confirm_delete;
+ unsigned system_dialogs;
+ unsigned progress_bar;
const char *editor;
const char *pager;
- char output_datefmt[BUFSIZ]; /* format for displaying date */
- int input_datefmt; /* format for reading date */
+ 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 */
+ unsigned enable; /* launch daemon automatically when exiting */
+ unsigned log; /* log daemon activity */
};
enum datefmt {
@@ -270,33 +270,32 @@ struct date {
};
/* Appointment definition. */
-struct apoint
-{
- long start; /* seconds since 1 jan 1970 */
- long dur; /* duration of the appointment in seconds */
+struct apoint {
+ 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;
+#define APOINT_NOTIFY 0x1 /* Item needs to be notified */
+#define APOINT_NOTIFIED 0x2 /* Item was already notified */
+ int state;
- char *mesg;
- char *note;
+ char *mesg;
+ char *note;
};
/* Event definition. */
struct event {
- int id; /* event identifier */
- long day; /* seconds since 1 jan 1970 */
- char *mesg;
- char *note;
+ int id; /* event identifier */
+ long day; /* seconds since 1 jan 1970 */
+ char *mesg;
+ char *note;
};
/* Todo item definition. */
struct todo {
- char *mesg;
- int id;
- char *note;
+ char *mesg;
+ int id;
+ char *note;
};
/* Number of items in current day. */
@@ -307,18 +306,18 @@ struct day_items_nb {
/* Generic item description (to hold appointments, events...). */
struct day_item {
- 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 */
+ 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 excp {
- long st; /* beggining of the considered day, in seconds */
+ long st; /* beggining of the considered day, in seconds */
};
enum recur_type {
@@ -332,43 +331,43 @@ enum recur_type {
/* 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 */
+ enum recur_type type; /* repetition type */
+ int freq; /* repetition frequence */
+ long until; /* ending date for repeated event */
};
/* Recurrent appointment definition. */
struct recur_apoint {
- struct rpt *rpt; /* information about repetition */
- llist_t 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 */
+ struct rpt *rpt; /* information about repetition */
+ llist_t 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 */
};
/* Reccurent event definition. */
struct recur_event {
- struct rpt *rpt; /* information about repetition */
- llist_t 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 rpt *rpt; /* information about repetition */
+ llist_t 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;
+ long time;
+ int got_app;
+ char *txt;
+ char state;
+ pthread_mutex_t mutex;
};
struct io_file {
FILE *fd;
- char name[BUFSIZ];
+ char name[BUFSIZ];
};
/* Available keys. */
@@ -422,8 +421,8 @@ enum key {
/* To describe a key binding. */
struct binding {
- char *label;
- enum key action;
+ char *label;
+ enum key action;
};
enum win {
@@ -450,41 +449,41 @@ enum ui_mode {
/* Generic window structure. */
struct window {
- WINDOW *p; /* pointer to window */
- unsigned w; /* width */
- unsigned h; /* height */
- int x; /* x position */
- int y; /* y position */
+ 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;
- const char *label;
+ struct window win;
+ struct window pad;
+ unsigned first_visible_line;
+ unsigned total_lines;
+ const char *label;
};
/* 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 */
+ 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 {
- unsigned 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 */
- const char *shell; /* user shell to launch notif. cmd */
- unsigned notify_all; /* notify all appointments */
- pthread_mutex_t mutex;
+ unsigned 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 */
+ const char *shell; /* user shell to launch notif. cmd */
+ unsigned notify_all; /* notify all appointments */
+ pthread_mutex_t mutex;
};
/* Available types of items. */
@@ -507,8 +506,8 @@ enum eraseflg {
/* 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. */
+ GETSTRING_ESC, /* user pressed escape to cancel editing. */
+ GETSTRING_RET /* return was pressed without entering any text. */
};
/* Week days. */
@@ -569,438 +568,429 @@ enum save_display {
/* apoint.c */
extern llist_ts_t alist_p;
-void apoint_free_bkp (void);
-void apoint_llist_init (void);
-void apoint_llist_free (void);
-void apoint_hilt_set (int);
-void apoint_hilt_decrease (int);
-void apoint_hilt_increase (int);
-int apoint_hilt (void);
-struct apoint *apoint_new (char *, char *, long, long, char);
-void apoint_add (void);
-void apoint_delete (unsigned *, unsigned *);
-int apoint_cut (unsigned *, unsigned *);
-void apoint_paste (unsigned *, unsigned *, int);
-unsigned apoint_inday (struct apoint *, long);
-void apoint_sec2str (struct apoint *, 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);
-void apoint_switch_notify (void);
-void apoint_update_panel (int);
-void apoint_paste_item (void);
+void apoint_free_bkp(void);
+void apoint_llist_init(void);
+void apoint_llist_free(void);
+void apoint_hilt_set(int);
+void apoint_hilt_decrease(int);
+void apoint_hilt_increase(int);
+int apoint_hilt(void);
+struct apoint *apoint_new(char *, char *, long, long, char);
+void apoint_add(void);
+void apoint_delete(unsigned *, unsigned *);
+int apoint_cut(unsigned *, unsigned *);
+void apoint_paste(unsigned *, unsigned *, int);
+unsigned apoint_inday(struct apoint *, long);
+void apoint_sec2str(struct apoint *, 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);
+void apoint_switch_notify(void);
+void apoint_update_panel(int);
+void apoint_paste_item(void);
/* args.c */
-int parse_args (int, char **);
+int parse_args(int, char **);
/* 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, int);
-long calendar_start_of_year (void);
-long calendar_end_of_year (void);
-const char *calendar_get_pom (time_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(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, int);
+long calendar_start_of_year(void);
+long calendar_end_of_year(void);
+const char *calendar_get_pom(time_t);
/* config.c */
-void config_load (void);
-unsigned config_save (void);
+void config_load(void);
+unsigned config_save(void);
/* custom.c */
-void custom_init_attr (void);
-void custom_apply_attr (WINDOW *, int);
-void custom_remove_attr (WINDOW *, int);
-void custom_config_bar (void);
-void custom_layout_config (void);
-void custom_sidebar_config (void);
-void custom_color_config (void);
-void custom_color_theme_name (char *);
-void custom_confwin_init (struct window *, const char *);
-void custom_set_swsiz (struct scrollwin *);
-void custom_general_config (void);
-void custom_keys_config (void);
-void custom_config_main (void);
+void custom_init_attr(void);
+void custom_apply_attr(WINDOW *, int);
+void custom_remove_attr(WINDOW *, int);
+void custom_config_bar(void);
+void custom_layout_config(void);
+void custom_sidebar_config(void);
+void custom_color_config(void);
+void custom_color_theme_name(char *);
+void custom_confwin_init(struct window *, const char *);
+void custom_set_swsiz(struct scrollwin *);
+void custom_general_config(void);
+void custom_keys_config(void);
+void custom_config_main(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 (void);
-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 (const char *);
-void day_view_note (const char *);
-void day_pipe_item (void);
+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(void);
+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(const char *);
+void day_view_note(const char *);
+void day_pipe_item(void);
/* dmon.c */
-void dmon_start (int);
-void dmon_stop (void);
+void dmon_start(int);
+void dmon_stop(void);
/* event.c */
extern llist_t eventlist;
-void event_free_bkp (void);
-void event_llist_init (void);
-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);
+void event_free_bkp(void);
+void event_llist_init(void);
+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);
+void help_wins_init(struct scrollwin *, int, int, int, int);
+void help_screen(void);
/* getstring.c */
-enum getstr getstring (WINDOW *, char *, int, int, int);
-int updatestring (WINDOW *, char **, int, int);
+enum getstr getstring(WINDOW *, char *, int, int, int);
+int updatestring(WINDOW *, char **, int, int);
/* ical.c */
-void ical_import_data (FILE *, FILE *, unsigned *, unsigned *, unsigned *,
- unsigned *, unsigned *);
-void ical_export_data (FILE *);
+void ical_import_data(FILE *, FILE *, unsigned *, unsigned *, unsigned *,
+ unsigned *, unsigned *);
+void ical_export_data(FILE *);
/* io.c */
-unsigned io_fprintln (const char *, const char *, ...);
-void io_init (const char *, const char *);
-void io_extract_data (char *, const char *, int);
-unsigned io_save_apts (void);
-unsigned io_save_todo (void);
-unsigned io_save_keys (void);
-void io_save_cal (enum save_display);
-void io_load_app (void);
-void io_load_todo (void);
-void io_load_keys (const 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 (int);
-void io_export_data (enum export_type);
-void io_export_bar (void);
-void io_import_data (enum import_type, const char *);
-struct io_file *io_log_init (void);
-void io_log_print (struct io_file *, int, const char *);
-void io_log_display (struct io_file *, const char *, const char *);
-void io_log_free (struct io_file *);
-void io_start_psave_thread (void);
-void io_stop_psave_thread (void);
-void io_set_lock (void);
-unsigned io_dump_pid (char *);
-unsigned io_get_pid (char *);
-int io_file_is_empty (char *);
-int io_file_cp (const char *, const char *);
+unsigned io_fprintln(const char *, const char *, ...);
+void io_init(const char *, const char *);
+void io_extract_data(char *, const char *, int);
+unsigned io_save_apts(void);
+unsigned io_save_todo(void);
+unsigned io_save_keys(void);
+void io_save_cal(enum save_display);
+void io_load_app(void);
+void io_load_todo(void);
+void io_load_keys(const 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(int);
+void io_export_data(enum export_type);
+void io_export_bar(void);
+void io_import_data(enum import_type, const char *);
+struct io_file *io_log_init(void);
+void io_log_print(struct io_file *, int, const char *);
+void io_log_display(struct io_file *, const char *, const char *);
+void io_log_free(struct io_file *);
+void io_start_psave_thread(void);
+void io_stop_psave_thread(void);
+void io_set_lock(void);
+unsigned io_dump_pid(char *);
+unsigned io_get_pid(char *);
+int io_file_is_empty(char *);
+int io_file_cp(const char *, const char *);
/* keys.c */
-void keys_init (void);
-void keys_free (void);
-void keys_dump_defaults (char *);
-const char *keys_get_label (enum key);
-enum key keys_get_action (int);
-enum key keys_getch (WINDOW *win, int *);
-int keys_assign_binding (int, enum key);
-void keys_remove_binding (int, enum key);
-int keys_str2int (const char *);
-const char *keys_int2str (int);
-int keys_action_count_keys (enum key);
-const char *keys_action_firstkey (enum key);
-const char *keys_action_nkey (enum key, int);
-char *keys_action_allkeys (enum key);
-void keys_display_bindings_bar (WINDOW *, struct binding *[], int, int,
- int, struct binding *);
-void keys_popup_info (enum key);
-void keys_save_bindings (FILE *);
-int keys_check_missing_bindings (void);
-void keys_fill_missing (void);
+void keys_init(void);
+void keys_free(void);
+void keys_dump_defaults(char *);
+const char *keys_get_label(enum key);
+enum key keys_get_action(int);
+enum key keys_getch(WINDOW * win, int *);
+int keys_assign_binding(int, enum key);
+void keys_remove_binding(int, enum key);
+int keys_str2int(const char *);
+const char *keys_int2str(int);
+int keys_action_count_keys(enum key);
+const char *keys_action_firstkey(enum key);
+const char *keys_action_nkey(enum key, int);
+char *keys_action_allkeys(enum key);
+void keys_display_bindings_bar(WINDOW *, struct binding *[], int, int,
+ int, struct binding *);
+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 *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__)
+#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);
+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 /* 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()
+#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 */
/* note.c */
-char *generate_note (const char *);
-void edit_note (char **, const char *);
-void view_note (const char *, const char *);
-void erase_note (char **);
-void note_read (char *, FILE *);
-void note_gc (void);
+char *generate_note(const char *);
+void edit_note(char **, const char *);
+void view_note(const char *, const char *);
+void erase_note(char **);
+void note_read(char *, FILE *);
+void note_gc(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 (int);
-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);
+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(int);
+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);
/* pcal.c */
-void pcal_export_data (FILE *);
+void pcal_export_data(FILE *);
/* recur.c */
extern llist_ts_t recur_alist_p;
extern llist_t recur_elist;
-void recur_event_free_bkp (void);
-void recur_apoint_free_bkp (void);
-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, llist_t *);
-struct recur_event *recur_event_new (char *, char *, long, int, int, int,
- long, llist_t *);
-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 *,
- llist_t *, char);
-struct recur_event *recur_event_scan (FILE *, struct tm, int, char,
- int, struct tm, char *,
- llist_t *);
-void recur_apoint_write (struct recur_apoint *, FILE *);
-void recur_event_write (struct recur_event *, FILE *);
-void recur_save_data (FILE *);
-unsigned recur_item_find_occurrence (long, long, llist_t *, int,
- int, long, long, unsigned *);
-unsigned recur_apoint_find_occurrence (struct recur_apoint *,
- long, unsigned *);
-unsigned recur_event_find_occurrence (struct recur_event *, long,
- unsigned *);
-unsigned recur_item_inday (long, long, llist_t *, int, int, long,
- long);
-unsigned recur_apoint_inday(struct recur_apoint *, long);
-unsigned recur_event_inday(struct recur_event *, long);
-void recur_event_erase (long, unsigned, unsigned,
- enum eraseflg);
-void recur_apoint_erase (long, unsigned, unsigned,
- enum eraseflg);
-void recur_repeat_item (void);
-void recur_exc_scan (llist_t *, 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);
+void recur_event_free_bkp(void);
+void recur_apoint_free_bkp(void);
+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, llist_t *);
+struct recur_event *recur_event_new(char *, char *, long, int, int, int,
+ long, llist_t *);
+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 *,
+ llist_t *, char);
+struct recur_event *recur_event_scan(FILE *, struct tm, int, char,
+ int, struct tm, char *, llist_t *);
+void recur_apoint_write(struct recur_apoint *, FILE *);
+void recur_event_write(struct recur_event *, FILE *);
+void recur_save_data(FILE *);
+unsigned recur_item_find_occurrence(long, long, llist_t *, int,
+ int, long, long, unsigned *);
+unsigned recur_apoint_find_occurrence(struct recur_apoint *, long, unsigned *);
+unsigned recur_event_find_occurrence(struct recur_event *, long, unsigned *);
+unsigned recur_item_inday(long, long, llist_t *, int, int, long, long);
+unsigned recur_apoint_inday(struct recur_apoint *, long);
+unsigned recur_event_inday(struct recur_event *, long);
+void recur_event_erase(long, unsigned, unsigned, enum eraseflg);
+void recur_apoint_erase(long, unsigned, unsigned, enum eraseflg);
+void recur_repeat_item(void);
+void recur_exc_scan(llist_t *, 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));
+void sigs_init(void);
+unsigned sigs_set_hdlr(int, void (*)(int));
/* todo.c */
extern llist_t todolist;
-void todo_hilt_set (int);
-void todo_hilt_decrease (int);
-void todo_hilt_increase (int);
-int todo_hilt (void);
-int todo_nb (void);
-void todo_set_nb (int);
-void todo_set_first (int);
-void todo_first_increase (int);
-void todo_first_decrease (int);
-int todo_hilt_pos (void);
-char *todo_saved_mesg (void);
-void todo_new_item (void);
-struct todo *todo_add (char *, int, char *);
-void todo_write (struct todo *, FILE *);
-void todo_flag (void);
-void todo_delete (void);
-void todo_chg_priority (int);
-void todo_edit_item (void);
-void todo_update_panel (int);
-void todo_edit_note (const char *);
-void todo_view_note (const char *);
-void todo_pipe_item (void);
-void todo_init_list (void);
-void todo_free_list (void);
+void todo_hilt_set(int);
+void todo_hilt_decrease(int);
+void todo_hilt_increase(int);
+int todo_hilt(void);
+int todo_nb(void);
+void todo_set_nb(int);
+void todo_set_first(int);
+void todo_first_increase(int);
+void todo_first_decrease(int);
+int todo_hilt_pos(void);
+char *todo_saved_mesg(void);
+void todo_new_item(void);
+struct todo *todo_add(char *, int, char *);
+void todo_write(struct todo *, FILE *);
+void todo_flag(void);
+void todo_delete(void);
+void todo_chg_priority(int);
+void todo_edit_item(void);
+void todo_update_panel(int);
+void todo_edit_note(const char *);
+void todo_view_note(const char *);
+void todo_pipe_item(void);
+void todo_init_list(void);
+void todo_free_list(void);
/* utf8.c */
-int utf8_width (char *);
-int utf8_strwidth (char *);
+int utf8_width(char *);
+int utf8_strwidth(char *);
/* utils.c */
-void exit_calcurse (int) __attribute__((__noreturn__));
-void free_user_data (void);
-void fatalbox (const char *);
-void warnbox (const char *);
-void status_mesg (const char *, const char *);
-int status_ask_choice (const char *, const char[], int);
-int status_ask_bool (const char *);
-int status_ask_simplechoice (const char *, const char *[], int);
-void erase_window_part (WINDOW *, int, int, int, int);
-WINDOW *popup (int, int, int, int, const char *, const char *, int);
-void print_in_middle (WINDOW *, int, int, int, const char *);
-int is_all_digit (const char *);
-long get_item_time (long);
-int get_item_hour (long);
-int get_item_min (long);
-long date2sec (struct date, unsigned, unsigned);
-char *date_sec2date_str (long, const char *);
-void date_sec2date_fmt (long, const char *, char *);
-long date_sec_change (long, int, int);
-long update_time_in_date (long, unsigned, unsigned);
-long get_sec_date (struct date);
-long min2sec (unsigned);
-void draw_scrollbar (WINDOW *, int, int, int, int, int, unsigned);
-void item_in_popup (const char *, const char *, const char *,
- const char *);
-long get_today (void);
-long now (void);
-char *nowstr (void);
-long mystrtol (const char *);
-void print_bool_option_incolor (WINDOW *, unsigned, int, int);
-const char *get_tempdir (void);
-char *new_tempfile (const char *, int);
-int parse_date (const char *, enum datefmt, int *, int *, int *,
- struct date *);
-int parse_time (const char *, unsigned *, unsigned *);
-int parse_duration (const char *, unsigned *);
-void str_toupper (char *);
-void file_close (FILE *, const char *);
-void psleep (unsigned);
-int fork_exec (int *, int *, const char *, const char *const *);
-int shell_exec (int *, int *, const char *, const char *const *);
-int child_wait (int *, int *, int);
-void press_any_key (void);
-void print_apoint (const char *, long, struct apoint *);
-void print_event (const char *, long, struct event *);
-void print_recur_apoint (const char *, long, unsigned,
- struct recur_apoint *);
-void print_recur_event (const char *, long, struct recur_event *);
-void print_todo (const char *, struct todo *);
+void exit_calcurse(int) __attribute__ ((__noreturn__));
+void free_user_data(void);
+void fatalbox(const char *);
+void warnbox(const char *);
+void status_mesg(const char *, const char *);
+int status_ask_choice(const char *, const char[], int);
+int status_ask_bool(const char *);
+int status_ask_simplechoice(const char *, const char *[], int);
+void erase_window_part(WINDOW *, int, int, int, int);
+WINDOW *popup(int, int, int, int, const char *, const char *, int);
+void print_in_middle(WINDOW *, int, int, int, const char *);
+int is_all_digit(const char *);
+long get_item_time(long);
+int get_item_hour(long);
+int get_item_min(long);
+long date2sec(struct date, unsigned, unsigned);
+char *date_sec2date_str(long, const char *);
+void date_sec2date_fmt(long, const char *, char *);
+long date_sec_change(long, int, int);
+long update_time_in_date(long, unsigned, unsigned);
+long get_sec_date(struct date);
+long min2sec(unsigned);
+void draw_scrollbar(WINDOW *, int, int, int, int, int, unsigned);
+void item_in_popup(const char *, const char *, const char *, const char *);
+long get_today(void);
+long now(void);
+char *nowstr(void);
+long mystrtol(const char *);
+void print_bool_option_incolor(WINDOW *, unsigned, int, int);
+const char *get_tempdir(void);
+char *new_tempfile(const char *, int);
+int parse_date(const char *, enum datefmt, int *, int *, int *, struct date *);
+int parse_time(const char *, unsigned *, unsigned *);
+int parse_duration(const char *, unsigned *);
+void str_toupper(char *);
+void file_close(FILE *, const char *);
+void psleep(unsigned);
+int fork_exec(int *, int *, const char *, const char *const *);
+int shell_exec(int *, int *, const char *, const char *const *);
+int child_wait(int *, int *, int);
+void press_any_key(void);
+void print_apoint(const char *, long, struct apoint *);
+void print_event(const char *, long, struct event *);
+void print_recur_apoint(const char *, long, unsigned, struct recur_apoint *);
+void print_recur_event(const char *, long, struct recur_event *);
+void print_todo(const char *, struct todo *);
/* vars.c */
-extern int col, row;
-extern int resize;
-extern unsigned colorize;
-extern int foreground, background;
-extern enum ui_mode ui_mode;
-extern int read_only;
-extern int days[12];
-extern const char *monthnames[12];
-extern const 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 conf conf;
-extern struct pad apad;
-extern struct nbar nbar;
-extern struct dmon_conf dmon;
-void vars_init (void);
+extern int col, row;
+extern int resize;
+extern unsigned colorize;
+extern int foreground, background;
+extern enum ui_mode ui_mode;
+extern int read_only;
+extern int days[12];
+extern const char *monthnames[12];
+extern const 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 conf conf;
+extern struct pad apad;
+extern struct nbar nbar;
+extern struct dmon_conf dmon;
+void vars_init(void);
/* wins.c */
extern struct window win[NBWINS];
-int wins_refresh (void);
-int wins_wrefresh (WINDOW *);
-int wins_doupdate (void);
-int wins_layout (void);
-void wins_set_layout (int);
-unsigned wins_sbar_width (void);
-unsigned wins_sbar_wperc (void);
-void wins_set_sbar_width (unsigned);
-void wins_sbar_winc (void);
-void wins_sbar_wdec (void);
-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_reinit_panels (void);
-void wins_show (WINDOW *, const char *);
-void wins_get_config (void);
-void wins_update_border (int);
-void wins_update_panels (int);
-void wins_update (int);
-void wins_reset (void);
-void wins_prepare_external (void);
-void wins_unprepare_external (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);
+int wins_refresh(void);
+int wins_wrefresh(WINDOW *);
+int wins_doupdate(void);
+int wins_layout(void);
+void wins_set_layout(int);
+unsigned wins_sbar_width(void);
+unsigned wins_sbar_wperc(void);
+void wins_set_sbar_width(unsigned);
+void wins_sbar_winc(void);
+void wins_sbar_wdec(void);
+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_reinit_panels(void);
+void wins_show(WINDOW *, const char *);
+void wins_get_config(void);
+void wins_update_border(int);
+void wins_update_panels(int);
+void wins_update(int);
+void wins_reset(void);
+void wins_prepare_external(void);
+void wins_unprepare_external(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 564ee70..7328718 100644
--- a/src/calendar.c
+++ b/src/calendar.c
@@ -48,12 +48,12 @@
#endif
#define EPOCH 90
-#define EPSILONg 279.403303 /* solar ecliptic long at EPOCH */
-#define RHOg 282.768422 /* solar ecliptic long of perigee at EPOCH */
-#define ECCEN 0.016713 /* solar orbit eccentricity */
-#define lzero 318.351648 /* lunar mean long at EPOCH */
-#define Pzero 36.340410 /* lunar mean long of perigee at EPOCH */
-#define Nzero 318.510107 /* lunar mean long of node at EPOCH */
+#define EPSILONg 279.403303 /* solar ecliptic long at EPOCH */
+#define RHOg 282.768422 /* solar ecliptic long of perigee at EPOCH */
+#define ECCEN 0.016713 /* solar orbit eccentricity */
+#define lzero 318.351648 /* lunar mean long at EPOCH */
+#define Pzero 36.340410 /* lunar mean long of perigee at EPOCH */
+#define Nzero 318.510107 /* lunar mean long of node at EPOCH */
#define ISLEAP(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
@@ -77,198 +77,175 @@ 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 (struct window *, struct date *, unsigned);
-static void draw_weekly_view (struct window *, struct date *, 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};
+ unsigned) = {
+draw_monthly_view, draw_weekly_view};
/* Switch between calendar views (monthly view is selected by default). */
-void
-calendar_view_next (void)
+void calendar_view_next(void)
{
calendar_view++;
if (calendar_view == CAL_VIEWS)
calendar_view = 0;
}
-void
-calendar_view_prev (void)
+void calendar_view_prev(void)
{
if (calendar_view == 0)
calendar_view = CAL_VIEWS;
calendar_view--;
}
-void
-calendar_set_view (int view)
+void calendar_set_view(int view)
{
calendar_view = (view < 0 || view >= CAL_VIEWS) ? CAL_MONTH_VIEW : view;
}
-int
-calendar_get_view (void)
+int calendar_get_view(void)
{
return (int)calendar_view;
}
/* Thread needed to update current date in calendar. */
/* ARGSUSED0 */
-static void *
-calendar_date_thread (void *arg)
+static void *calendar_date_thread(void *arg)
{
time_t actual, tomorrow;
- for (;;)
- {
- tomorrow = (time_t) (get_today () + DAYINSEC);
+ for (;;) {
+ tomorrow = (time_t) (get_today() + DAYINSEC);
- while ((actual = time (NULL)) < tomorrow)
- sleep (tomorrow - actual);
+ while ((actual = time(NULL)) < tomorrow)
+ sleep(tomorrow - actual);
- calendar_set_current_date ();
- calendar_update_panel (&win[CAL]);
- }
+ calendar_set_current_date();
+ calendar_update_panel(&win[CAL]);
+ }
return NULL;
}
/* Launch the calendar date thread. */
-void
-calendar_start_date_thread (void)
+void calendar_start_date_thread(void)
{
- pthread_create (&calendar_t_date, NULL, calendar_date_thread, NULL);
+ pthread_create(&calendar_t_date, NULL, calendar_date_thread, NULL);
}
/* Stop the calendar date thread. */
-void
-calendar_stop_date_thread (void)
+void calendar_stop_date_thread(void)
{
- if (calendar_t_date)
- {
- pthread_cancel (calendar_t_date);
- pthread_join (calendar_t_date, NULL);
- }
+ if (calendar_t_date) {
+ pthread_cancel(calendar_t_date);
+ pthread_join(calendar_t_date, NULL);
+ }
}
/* Set static variable today to current date */
-void
-calendar_set_current_date (void)
+void calendar_set_current_date(void)
{
time_t timer;
struct tm *tm;
- timer = time (NULL);
- tm = localtime (&timer);
+ timer = time(NULL);
+ tm = localtime(&timer);
- pthread_mutex_lock (&date_thread_mutex);
+ pthread_mutex_lock(&date_thread_mutex);
today.dd = tm->tm_mday;
today.mm = tm->tm_mon + 1;
today.yyyy = tm->tm_year + 1900;
- pthread_mutex_unlock (&date_thread_mutex);
+ pthread_mutex_unlock(&date_thread_mutex);
}
/* Needed to display sunday or monday as the first day of week in calendar. */
-void
-calendar_set_first_day_of_week (enum wday first_day)
-{
- switch (first_day)
- {
- case SUNDAY:
- week_begins_on_monday = 0;
- break;
- case MONDAY:
- week_begins_on_monday = 1;
- break;
- default:
- ERROR_MSG (_("ERROR setting first day of week"));
- week_begins_on_monday = 0;
- /* NOTREACHED */
- }
+void calendar_set_first_day_of_week(enum wday first_day)
+{
+ switch (first_day) {
+ case SUNDAY:
+ week_begins_on_monday = 0;
+ break;
+ case MONDAY:
+ week_begins_on_monday = 1;
+ break;
+ default:
+ ERROR_MSG(_("ERROR setting first day of week"));
+ week_begins_on_monday = 0;
+ /* NOTREACHED */
+ }
}
/* Swap first day of week in calendar. */
-void
-calendar_change_first_day_of_week (void)
+void calendar_change_first_day_of_week(void)
{
week_begins_on_monday = !week_begins_on_monday;
}
/* Return 1 if week begins on monday, 0 otherwise. */
-unsigned
-calendar_week_begins_on_monday (void)
+unsigned calendar_week_begins_on_monday(void)
{
return week_begins_on_monday;
}
/* Fill in the given variable with the current date. */
-void
-calendar_store_current_date (struct date *date)
+void calendar_store_current_date(struct date *date)
{
- pthread_mutex_lock (&date_thread_mutex);
+ pthread_mutex_lock(&date_thread_mutex);
*date = today;
- pthread_mutex_unlock (&date_thread_mutex);
+ pthread_mutex_unlock(&date_thread_mutex);
}
/* This is to start at the current date in calendar. */
-void
-calendar_init_slctd_day (void)
+void calendar_init_slctd_day(void)
{
- calendar_store_current_date (&slctd_day);
+ calendar_store_current_date(&slctd_day);
}
/* Return the selected day in calendar */
-struct date *
-calendar_get_slctd_day (void)
+struct date *calendar_get_slctd_day(void)
{
return &slctd_day;
}
/* Returned value represents the selected day in calendar (in seconds) */
-long
-calendar_get_slctd_day_sec (void)
+long calendar_get_slctd_day_sec(void)
{
- return date2sec (slctd_day, 0, 0);
+ return date2sec(slctd_day, 0, 0);
}
-static int
-calendar_get_wday (struct date *date)
+static int calendar_get_wday(struct date *date)
{
struct tm t;
- memset (&t, 0, sizeof (struct tm));
+ memset(&t, 0, sizeof(struct tm));
t.tm_mday = date->dd;
t.tm_mon = date->mm - 1;
t.tm_year = date->yyyy - 1900;
- mktime (&t);
+ mktime(&t);
return t.tm_wday;
}
-static unsigned
-months_to_days (unsigned month)
+static unsigned months_to_days(unsigned month)
{
return (month * 3057 - 3007) / 100;
}
-
-static long
-years_to_days (unsigned year)
+static long years_to_days(unsigned year)
{
return year * 365L + year / 4 - year / 100 + year / 400;
}
-static long
-ymd_to_scalar (unsigned year, unsigned month, unsigned day)
+static long ymd_to_scalar(unsigned year, unsigned month, unsigned day)
{
long scalar;
- scalar = day + months_to_days (month);
+ scalar = day + months_to_days(month);
if (month > 2)
- scalar -= ISLEAP (year) ? 1 : 2;
+ scalar -= ISLEAP(year) ? 1 : 2;
year--;
- scalar += years_to_days (year);
+ scalar += years_to_days(year);
return scalar;
}
@@ -277,8 +254,7 @@ ymd_to_scalar (unsigned year, unsigned month, unsigned day)
* Used to change date by adding a certain amount of days or weeks.
* Returns 0 on success, 1 otherwise.
*/
-static int
-date_change (struct tm *date, int delta_month, int delta_day)
+static int date_change(struct tm *date, int delta_month, int delta_day)
{
struct tm t;
@@ -286,19 +262,18 @@ date_change (struct tm *date, int delta_month, int delta_day)
t.tm_mon += delta_month;
t.tm_mday += delta_day;
- if (mktime (&t) == -1)
+ if (mktime(&t) == -1)
return 1;
- else
- {
- *date = t;
- return 0;
- }
+ else {
+ *date = t;
+ return 0;
+ }
}
/* Draw the monthly view inside calendar panel. */
static void
-draw_monthly_view (struct window *cwin, struct date *current_day,
- unsigned sunday_first)
+draw_monthly_view(struct window *cwin, struct date *current_day,
+ unsigned sunday_first)
{
const int OFFY = 2 + (CALHEIGHT - 9) / 2;
struct date check_day;
@@ -311,106 +286,92 @@ draw_monthly_view (struct window *cwin, struct date *current_day,
yr = slctd_day.yyyy;
/* offset for centering calendar in window */
- SBAR_WIDTH = wins_sbar_width ();
+ SBAR_WIDTH = wins_sbar_width();
OFFX = (SBAR_WIDTH - 27) / 2;
ofs_y = OFFY;
ofs_x = OFFX;
/* checking the number of days in february */
numdays = days[mo - 1];
- if (2 == mo && ISLEAP (yr))
+ if (2 == mo && ISLEAP(yr))
++numdays;
/*
* the first calendar day will be monday or sunday, depending on
* 'week_begins_on_monday' value
*/
- c_day_1 = (int) ((ymd_to_scalar (yr, mo, 1 + sunday_first) - (long) 1) % 7L);
+ c_day_1 = (int)((ymd_to_scalar(yr, mo, 1 + sunday_first) - (long)1) % 7L);
/* Write the current month and year on top of the calendar */
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- mvwprintw (cwin->p, ofs_y,
- (SBAR_WIDTH - (strlen (_(monthnames[mo - 1])) + 5)) / 2,
- "%s %d", _(monthnames[mo - 1]), slctd_day.yyyy);
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ mvwprintw(cwin->p, ofs_y,
+ (SBAR_WIDTH - (strlen(_(monthnames[mo - 1])) + 5)) / 2,
+ "%s %d", _(monthnames[mo - 1]), slctd_day.yyyy);
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
++ofs_y;
/* print the days, with regards to the first day of the week */
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- for (j = 0; j < WEEKINDAYS; j++)
- {
- mvwprintw (cwin->p, ofs_y, ofs_x + 4 * j, "%s",
- _(daynames[1 + j - sunday_first]));
- }
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ for (j = 0; j < WEEKINDAYS; j++) {
+ mvwprintw(cwin->p, ofs_y, ofs_x + 4 * j, "%s",
+ _(daynames[1 + j - sunday_first]));
+ }
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
day_1_sav = (c_day_1 + 1) * 3 + c_day_1 - 7;
- for (c_day = 1; c_day <= numdays; ++c_day, ++c_day_1, c_day_1 %= 7)
- {
- check_day.dd = c_day;
- check_day.mm = slctd_day.mm;
- check_day.yyyy = slctd_day.yyyy;
-
- /* check if the day contains an event or an appointment */
- item_this_day = day_check_if_item (check_day);
+ for (c_day = 1; c_day <= numdays; ++c_day, ++c_day_1, c_day_1 %= 7) {
+ check_day.dd = c_day;
+ check_day.mm = slctd_day.mm;
+ check_day.yyyy = slctd_day.yyyy;
- /* Go to next line, the week is over. */
- if (!c_day_1 && 1 != c_day)
- {
- ofs_y++;
- ofs_x = OFFX - day_1_sav - 4 * c_day;
- }
+ /* check if the day contains an event or an appointment */
+ item_this_day = day_check_if_item(check_day);
- /* This is today, so print it in yellow. */
- if (c_day == current_day->dd
- && current_day->mm == slctd_day.mm
- && current_day->yyyy == slctd_day.yyyy
- && current_day->dd != slctd_day.dd)
- {
- custom_apply_attr (cwin->p, ATTR_LOWEST);
- mvwprintw (cwin->p, ofs_y + 1,
- ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day);
- custom_remove_attr (cwin->p, ATTR_LOWEST);
- }
- else if (c_day == slctd_day.dd)
- {
- /* This is the selected day, print it according to user's theme. */
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- mvwprintw (cwin->p, ofs_y + 1,
- ofs_x + day_1_sav + 4 * c_day + 1, "%2d",
- c_day);
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
- }
- else if (item_this_day)
- {
- custom_apply_attr (cwin->p, ATTR_LOW);
- mvwprintw (cwin->p, ofs_y + 1,
- ofs_x + day_1_sav + 4 * c_day + 1, "%2d",
- c_day);
- custom_remove_attr (cwin->p, ATTR_LOW);
- }
- else
- /* otherwise, print normal days in black */
- mvwprintw (cwin->p, ofs_y + 1,
- ofs_x + day_1_sav + 4 * c_day + 1, "%2d",
- c_day);
+ /* Go to next line, the week is over. */
+ if (!c_day_1 && 1 != c_day) {
+ ofs_y++;
+ ofs_x = OFFX - day_1_sav - 4 * c_day;
}
-}
-static int
-weeknum (const struct tm *t, int firstweekday)
+ /* This is today, so print it in yellow. */
+ if (c_day == current_day->dd
+ && current_day->mm == slctd_day.mm
+ && current_day->yyyy == slctd_day.yyyy
+ && current_day->dd != slctd_day.dd) {
+ custom_apply_attr(cwin->p, ATTR_LOWEST);
+ mvwprintw(cwin->p, ofs_y + 1,
+ ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day);
+ custom_remove_attr(cwin->p, ATTR_LOWEST);
+ } else if (c_day == slctd_day.dd) {
+ /* This is the selected day, print it according to user's theme. */
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ mvwprintw(cwin->p, ofs_y + 1,
+ ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day);
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
+ } else if (item_this_day) {
+ custom_apply_attr(cwin->p, ATTR_LOW);
+ mvwprintw(cwin->p, ofs_y + 1,
+ ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day);
+ custom_remove_attr(cwin->p, ATTR_LOW);
+ } else
+ /* otherwise, print normal days in black */
+ mvwprintw(cwin->p, ofs_y + 1,
+ ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day);
+ }
+}
+
+static int weeknum(const struct tm *t, int firstweekday)
{
int wday, wnum;
wday = t->tm_wday;
- if (firstweekday == MONDAY)
- {
- if (wday == SUNDAY)
- wday = 6;
- else
- wday--;
- }
+ if (firstweekday == MONDAY) {
+ if (wday == SUNDAY)
+ wday = 6;
+ else
+ wday--;
+ }
wnum = ((t->tm_yday + WEEKINDAYS - wday) / WEEKINDAYS);
if (wnum < 0)
wnum = 0;
@@ -421,64 +382,60 @@ weeknum (const struct tm *t, int firstweekday)
/*
* Compute the week number according to ISO 8601.
*/
-static int
-ISO8601weeknum (const struct tm *t)
+static int ISO8601weeknum(const struct tm *t)
{
int wnum, jan1day;
- wnum = weeknum (t, MONDAY);
+ wnum = weeknum(t, MONDAY);
jan1day = t->tm_wday - (t->tm_yday % WEEKINDAYS);
if (jan1day < 0)
jan1day += WEEKINDAYS;
- switch (jan1day)
- {
- case MONDAY:
- break;
- case TUESDAY:
- case WEDNESDAY:
- case THURSDAY:
- wnum++;
- break;
- case FRIDAY:
- case SATURDAY:
- case SUNDAY:
- if (wnum == 0)
- {
- /* Get week number of last week of last year. */
- struct tm dec31ly; /* 12/31 last year */
-
- dec31ly = *t;
- dec31ly.tm_year--;
- dec31ly.tm_mon = 11;
- dec31ly.tm_mday = 31;
- dec31ly.tm_wday = (jan1day == SUNDAY) ? 6 : jan1day - 1;
- dec31ly.tm_yday = 364 + ISLEAP (dec31ly.tm_year + 1900);
- wnum = ISO8601weeknum (&dec31ly);
- }
- break;
+ switch (jan1day) {
+ case MONDAY:
+ break;
+ case TUESDAY:
+ case WEDNESDAY:
+ case THURSDAY:
+ wnum++;
+ break;
+ case FRIDAY:
+ case SATURDAY:
+ case SUNDAY:
+ if (wnum == 0) {
+ /* Get week number of last week of last year. */
+ struct tm dec31ly; /* 12/31 last year */
+
+ dec31ly = *t;
+ dec31ly.tm_year--;
+ dec31ly.tm_mon = 11;
+ dec31ly.tm_mday = 31;
+ dec31ly.tm_wday = (jan1day == SUNDAY) ? 6 : jan1day - 1;
+ dec31ly.tm_yday = 364 + ISLEAP(dec31ly.tm_year + 1900);
+ wnum = ISO8601weeknum(&dec31ly);
}
+ break;
+ }
- if (t->tm_mon == 11)
- {
- int wday, mday;
+ if (t->tm_mon == 11) {
+ int wday, mday;
- wday = t->tm_wday;
- mday = t->tm_mday;
- if ((wday == MONDAY && (mday >= 29 && mday <= 31))
- || (wday == TUESDAY && (mday == 30 || mday == 31))
- || (wday == WEDNESDAY && mday == 31))
- wnum = 1;
- }
+ wday = t->tm_wday;
+ mday = t->tm_mday;
+ if ((wday == MONDAY && (mday >= 29 && mday <= 31))
+ || (wday == TUESDAY && (mday == 30 || mday == 31))
+ || (wday == WEDNESDAY && mday == 31))
+ wnum = 1;
+ }
return wnum;
}
/* Draw the weekly view inside calendar panel. */
static void
-draw_weekly_view (struct window *cwin, struct date *current_day,
- unsigned sunday_first)
+draw_weekly_view(struct window *cwin, struct date *current_day,
+ unsigned sunday_first)
{
#define DAYSLICESNO 6
const int WCALWIDTH = 30;
@@ -486,129 +443,123 @@ draw_weekly_view (struct window *cwin, struct date *current_day,
struct tm t;
int OFFX, j, c_wday, days_to_remove, weeknum;
- OFFX = (wins_sbar_width () - WCALWIDTH) / 2 + 1;
+ OFFX = (wins_sbar_width() - WCALWIDTH) / 2 + 1;
/* Fill in a tm structure with the first day of the selected week. */
- c_wday = calendar_get_wday (&slctd_day);
+ c_wday = calendar_get_wday(&slctd_day);
if (sunday_first)
days_to_remove = c_wday;
else
days_to_remove = c_wday == 0 ? WEEKINDAYS - 1 : c_wday - 1;
- memset (&t, 0, sizeof (struct tm));
+ memset(&t, 0, sizeof(struct tm));
t.tm_mday = slctd_day.dd;
t.tm_mon = slctd_day.mm - 1;
t.tm_year = slctd_day.yyyy - 1900;
- mktime (&t);
- date_change (&t, 0, -days_to_remove);
+ mktime(&t);
+ date_change(&t, 0, -days_to_remove);
/* Print the week number. */
- weeknum = ISO8601weeknum (&t);
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- mvwprintw (cwin->p, 2, cwin->w - 9, "(# %02d)", weeknum);
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
+ weeknum = ISO8601weeknum(&t);
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ mvwprintw(cwin->p, 2, cwin->w - 9, "(# %02d)", weeknum);
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
/* Now draw calendar view. */
- for (j = 0; j < WEEKINDAYS; j++)
- {
- struct date date;
- unsigned attr, item_this_day;
- int i, slices[DAYSLICESNO];
-
- /* print the day names, with regards to the first day of the week */
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- mvwprintw (cwin->p, OFFY, OFFX + 4 * j, "%s",
- _(daynames[1 + j - sunday_first]));
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
-
- /* Check if the day to be printed has an item or not. */
- date.dd = t.tm_mday;
- date.mm = t.tm_mon + 1;
- date.yyyy = t.tm_year + 1900;
- item_this_day = day_check_if_item (date);
-
- /* Print the day numbers with appropriate decoration. */
- if (t.tm_mday == current_day->dd
- && current_day->mm == slctd_day.mm
- && current_day->yyyy == slctd_day.yyyy
- && current_day->dd != slctd_day.dd)
- attr = ATTR_LOWEST; /* today, but not selected */
- else if (t.tm_mday == slctd_day.dd)
- attr = ATTR_HIGHEST; /* selected day */
- else if (item_this_day)
- attr = ATTR_LOW;
- else
- attr = 0;
-
- if (attr)
- custom_apply_attr (cwin->p, attr);
- mvwprintw (cwin->p, OFFY + 1, OFFX + 1 + 4 * j, "%02d", t.tm_mday);
- if (attr)
- custom_remove_attr (cwin->p, attr);
-
- /* Draw slices indicating appointment times. */
- memset (slices, 0, DAYSLICESNO * sizeof *slices);
- if (day_chk_busy_slices (date, DAYSLICESNO, slices))
- {
- for (i = 0; i < DAYSLICESNO; i++)
- {
- if (j != WEEKINDAYS - 1 && i != DAYSLICESNO - 1)
- mvwhline (cwin->p, OFFY + 2 + i, OFFX + 3 + 4 * j, ACS_S9, 2);
- if (slices[i])
- {
- int highlight;
-
- highlight = (t.tm_mday == slctd_day.dd) ? 1 : 0;
- if (highlight)
- custom_apply_attr (cwin->p, attr);
- wattron (cwin->p, A_REVERSE);
- mvwprintw (cwin->p, OFFY + 2 + i, OFFX + 1 + 4 * j, " ");
- mvwprintw (cwin->p, OFFY + 2 + i, OFFX + 2 + 4 * j, " ");
- wattroff (cwin->p, A_REVERSE);
- if (highlight)
- custom_remove_attr (cwin->p, attr);
- }
- }
+ for (j = 0; j < WEEKINDAYS; j++) {
+ struct date date;
+ unsigned attr, item_this_day;
+ int i, slices[DAYSLICESNO];
+
+ /* print the day names, with regards to the first day of the week */
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ mvwprintw(cwin->p, OFFY, OFFX + 4 * j, "%s",
+ _(daynames[1 + j - sunday_first]));
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
+
+ /* Check if the day to be printed has an item or not. */
+ date.dd = t.tm_mday;
+ date.mm = t.tm_mon + 1;
+ date.yyyy = t.tm_year + 1900;
+ item_this_day = day_check_if_item(date);
+
+ /* Print the day numbers with appropriate decoration. */
+ if (t.tm_mday == current_day->dd
+ && current_day->mm == slctd_day.mm
+ && current_day->yyyy == slctd_day.yyyy
+ && current_day->dd != slctd_day.dd)
+ attr = ATTR_LOWEST; /* today, but not selected */
+ else if (t.tm_mday == slctd_day.dd)
+ attr = ATTR_HIGHEST; /* selected day */
+ else if (item_this_day)
+ attr = ATTR_LOW;
+ else
+ attr = 0;
+
+ if (attr)
+ custom_apply_attr(cwin->p, attr);
+ mvwprintw(cwin->p, OFFY + 1, OFFX + 1 + 4 * j, "%02d", t.tm_mday);
+ if (attr)
+ custom_remove_attr(cwin->p, attr);
+
+ /* Draw slices indicating appointment times. */
+ memset(slices, 0, DAYSLICESNO * sizeof *slices);
+ if (day_chk_busy_slices(date, DAYSLICESNO, slices)) {
+ for (i = 0; i < DAYSLICESNO; i++) {
+ if (j != WEEKINDAYS - 1 && i != DAYSLICESNO - 1)
+ mvwhline(cwin->p, OFFY + 2 + i, OFFX + 3 + 4 * j, ACS_S9, 2);
+ if (slices[i]) {
+ int highlight;
+
+ highlight = (t.tm_mday == slctd_day.dd) ? 1 : 0;
+ if (highlight)
+ custom_apply_attr(cwin->p, attr);
+ wattron(cwin->p, A_REVERSE);
+ mvwprintw(cwin->p, OFFY + 2 + i, OFFX + 1 + 4 * j, " ");
+ mvwprintw(cwin->p, OFFY + 2 + i, OFFX + 2 + 4 * j, " ");
+ wattroff(cwin->p, A_REVERSE);
+ if (highlight)
+ custom_remove_attr(cwin->p, attr);
}
-
- /* get next day */
- date_change (&t, 0, 1);
+ }
}
+ /* get next day */
+ date_change(&t, 0, 1);
+ }
+
/* Draw marks to indicate midday on the sides of the calendar. */
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- mvwhline (cwin->p, OFFY + 1 + DAYSLICESNO / 2, OFFX, ACS_S9, 1);
- mvwhline (cwin->p, OFFY + 1 + DAYSLICESNO / 2,
- OFFX + WCALWIDTH - 3, ACS_S9, 1);
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ mvwhline(cwin->p, OFFY + 1 + DAYSLICESNO / 2, OFFX, ACS_S9, 1);
+ mvwhline(cwin->p, OFFY + 1 + DAYSLICESNO / 2,
+ OFFX + WCALWIDTH - 3, ACS_S9, 1);
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
#undef DAYSLICESNO
}
/* Function used to display the calendar panel. */
-void
-calendar_update_panel (struct window *cwin)
+void calendar_update_panel(struct window *cwin)
{
struct date current_day;
unsigned sunday_first;
- calendar_store_current_date (&current_day);
- erase_window_part (cwin->p, 1, 3, cwin->w - 2, cwin->h - 2);
- mvwhline (cwin->p, 2, 1, ACS_HLINE, cwin->w - 2);
- sunday_first = calendar_week_begins_on_monday () ? 0 : 1;
+ calendar_store_current_date(&current_day);
+ erase_window_part(cwin->p, 1, 3, cwin->w - 2, cwin->h - 2);
+ mvwhline(cwin->p, 2, 1, ACS_HLINE, cwin->w - 2);
+ sunday_first = calendar_week_begins_on_monday()? 0 : 1;
draw_calendar[calendar_view] (cwin, &current_day, sunday_first);
- wnoutrefresh (cwin->p);
+ wnoutrefresh(cwin->p);
}
/* Set the selected day in calendar to current day. */
-void
-calendar_goto_today (void)
+void calendar_goto_today(void)
{
struct date today;
- calendar_store_current_date (&today);
+ calendar_store_current_date(&today);
slctd_day.dd = today.dd;
slctd_day.mm = today.mm;
slctd_day.yyyy = today.yyyy;
@@ -620,8 +571,7 @@ calendar_goto_today (void)
* If the entered date is empty, automatically jump to the current date.
* slctd_day is updated with the newly selected date.
*/
-void
-calendar_change_day (int datefmt)
+void calendar_change_day(int datefmt)
{
#define LDAY 11
char selected_day[LDAY] = "";
@@ -629,149 +579,135 @@ calendar_change_day (int datefmt)
int dday, dmonth, dyear;
int wrong_day = 1;
const char *mesg_line1 =
- _("The day you entered is not valid "
- "(should be between 01/01/1902 and 12/31/2037)");
+ _("The day you entered is not valid "
+ "(should be between 01/01/1902 and 12/31/2037)");
const char *mesg_line2 = _("Press [ENTER] to continue");
const char *request_date = "Enter the day to go to [ENTER for today] : %s";
- while (wrong_day)
- {
- snprintf (outstr, BUFSIZ, request_date, DATEFMT_DESC (datefmt));
- status_mesg (_(outstr), "");
- if (getstring (win[STA].p, selected_day, LDAY, 0, 1) == GETSTRING_ESC)
- return;
- else
- {
- if (strlen (selected_day) == 0)
- {
- wrong_day = 0;
- calendar_goto_today ();
- }
- else if (parse_date (selected_day, datefmt, &dyear, &dmonth, &dday,
- calendar_get_slctd_day ()))
- {
- wrong_day = 0;
- /* go to chosen day */
- slctd_day.dd = dday;
- slctd_day.mm = dmonth;
- slctd_day.yyyy = dyear;
- }
- if (wrong_day)
- {
- status_mesg (mesg_line1, mesg_line2);
- wgetch (win[STA].p);
- }
- }
+ while (wrong_day) {
+ snprintf(outstr, BUFSIZ, request_date, DATEFMT_DESC(datefmt));
+ status_mesg(_(outstr), "");
+ if (getstring(win[STA].p, selected_day, LDAY, 0, 1) == GETSTRING_ESC)
+ return;
+ else {
+ if (strlen(selected_day) == 0) {
+ wrong_day = 0;
+ calendar_goto_today();
+ } else if (parse_date(selected_day, datefmt, &dyear, &dmonth, &dday,
+ calendar_get_slctd_day())) {
+ wrong_day = 0;
+ /* go to chosen day */
+ slctd_day.dd = dday;
+ slctd_day.mm = dmonth;
+ slctd_day.yyyy = dyear;
+ }
+ if (wrong_day) {
+ status_mesg(mesg_line1, mesg_line2);
+ wgetch(win[STA].p);
+ }
}
+ }
return;
}
-void
-calendar_move (enum move move, int count)
+void calendar_move(enum move move, int count)
{
int ret, days_to_remove, days_to_add;
struct tm t;
- memset (&t, 0, sizeof (struct tm));
+ memset(&t, 0, sizeof(struct tm));
t.tm_mday = slctd_day.dd;
t.tm_mon = slctd_day.mm - 1;
t.tm_year = slctd_day.yyyy - 1900;
- switch (move)
- {
- case UP:
- ret = date_change (&t, 0, -count * WEEKINDAYS);
- break;
- case DOWN:
- ret = date_change (&t, 0, count * WEEKINDAYS);
- break;
- case LEFT:
- ret = date_change (&t, 0, -count);
- break;
- case RIGHT:
- ret = date_change (&t, 0, count);
- break;
- case WEEK_START:
- /* Normalize struct tm to get week day number. */
- mktime (&t);
- if (calendar_week_begins_on_monday ())
- days_to_remove = ((t.tm_wday == 0) ? WEEKINDAYS - 1 : t.tm_wday - 1);
- else
- days_to_remove = ((t.tm_wday == 0) ? 0 : t.tm_wday);
- days_to_remove += (count - 1) * WEEKINDAYS;
- ret = date_change (&t, 0, -days_to_remove);
- break;
- case WEEK_END:
- mktime (&t);
- if (calendar_week_begins_on_monday ())
- days_to_add = ((t.tm_wday == 0) ? 0 : WEEKINDAYS - t.tm_wday);
- else
- days_to_add = ((t.tm_wday == 0) ?
- WEEKINDAYS - 1 : WEEKINDAYS - 1 - t.tm_wday);
- days_to_add += (count - 1) * WEEKINDAYS;
- ret = date_change (&t, 0, days_to_add);
- break;
- default:
- ret = 1;
- /* NOTREACHED */
+ switch (move) {
+ case UP:
+ ret = date_change(&t, 0, -count * WEEKINDAYS);
+ break;
+ case DOWN:
+ ret = date_change(&t, 0, count * WEEKINDAYS);
+ break;
+ case LEFT:
+ ret = date_change(&t, 0, -count);
+ break;
+ case RIGHT:
+ ret = date_change(&t, 0, count);
+ break;
+ case WEEK_START:
+ /* Normalize struct tm to get week day number. */
+ mktime(&t);
+ if (calendar_week_begins_on_monday())
+ days_to_remove = ((t.tm_wday == 0) ? WEEKINDAYS - 1 : t.tm_wday - 1);
+ else
+ days_to_remove = ((t.tm_wday == 0) ? 0 : t.tm_wday);
+ days_to_remove += (count - 1) * WEEKINDAYS;
+ ret = date_change(&t, 0, -days_to_remove);
+ break;
+ case WEEK_END:
+ mktime(&t);
+ if (calendar_week_begins_on_monday())
+ days_to_add = ((t.tm_wday == 0) ? 0 : WEEKINDAYS - t.tm_wday);
+ else
+ days_to_add = ((t.tm_wday == 0) ?
+ WEEKINDAYS - 1 : WEEKINDAYS - 1 - t.tm_wday);
+ days_to_add += (count - 1) * WEEKINDAYS;
+ ret = date_change(&t, 0, days_to_add);
+ break;
+ default:
+ ret = 1;
+ /* NOTREACHED */
+ }
+
+ if (ret == 0) {
+ if (t.tm_year < 2) {
+ t.tm_mday = 1;
+ t.tm_mon = 0;
+ t.tm_year = 2;
+ } else if (t.tm_year > 137) {
+ t.tm_mday = 31;
+ t.tm_mon = 11;
+ t.tm_year = 137;
}
- if (ret == 0)
- {
- if (t.tm_year < 2)
- {
- t.tm_mday = 1;
- t.tm_mon = 0;
- t.tm_year = 2;
- }
- else if (t.tm_year > 137)
- {
- t.tm_mday = 31;
- t.tm_mon = 11;
- t.tm_year = 137;
- }
-
- slctd_day.dd = t.tm_mday;
- slctd_day.mm = t.tm_mon + 1;
- slctd_day.yyyy = t.tm_year + 1900;
- }
+ slctd_day.dd = t.tm_mday;
+ slctd_day.mm = t.tm_mon + 1;
+ slctd_day.yyyy = t.tm_year + 1900;
+ }
}
/* Returns the beginning of current year as a long. */
-long
-calendar_start_of_year (void)
+long calendar_start_of_year(void)
{
time_t timer;
struct tm *tm;
- timer = time (NULL);
- tm = localtime (&timer);
+ timer = time(NULL);
+ tm = localtime(&timer);
tm->tm_mon = 0;
tm->tm_mday = 1;
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
- timer = mktime (tm);
+ timer = mktime(tm);
return (long)timer;
}
-long
-calendar_end_of_year (void)
+long calendar_end_of_year(void)
{
time_t timer;
struct tm *tm;
- timer = time (NULL);
- tm = localtime (&timer);
+ timer = time(NULL);
+ tm = localtime(&timer);
tm->tm_mon = 0;
tm->tm_mday = 1;
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
tm->tm_year++;
- timer = mktime (tm);
+ timer = mktime(tm);
return (long)(timer - 1);
}
@@ -817,8 +753,7 @@ calendar_end_of_year (void)
* dtor --
* convert degrees to radians
*/
-static double
-dtor (double deg)
+static double dtor(double deg)
{
return deg * M_PI / 180;
}
@@ -827,8 +762,7 @@ dtor (double deg)
* adj360 --
* adjust value so 0 <= deg <= 360
*/
-static void
-adj360 (double *deg)
+static void adj360(double *deg)
{
for (;;)
if (*deg < 0.0)
@@ -843,36 +777,35 @@ adj360 (double *deg)
* potm --
* return phase of the moon
*/
-static double
-potm (double days)
+static double potm(double days)
{
double N, Msol, Ec, LambdaSol, l, Mm, Ev, Ac, A3, Mmprime;
double A4, lprime, V, ldprime, D, Nm;
- N = 360.0 * days / 365.242191; /* sec 46 #3 */
- adj360 (&N);
- Msol = N + EPSILONg - RHOg; /* sec 46 #4 */
- adj360 (&Msol);
- Ec = 360 / M_PI * ECCEN * sin (dtor (Msol)); /* sec 46 #5 */
- LambdaSol = N + Ec + EPSILONg; /* sec 46 #6 */
- adj360 (&LambdaSol);
- l = 13.1763966 * days + lzero; /* sec 65 #4 */
- adj360 (&l);
- Mm = l - (0.1114041 * days) - Pzero; /* sec 65 #5 */
- adj360 (&Mm);
- Nm = Nzero - (0.0529539 * days); /* sec 65 #6 */
- adj360 (&Nm);
- Ev = 1.2739 * sin (dtor (2 * (l - LambdaSol) - Mm)); /* sec 65 #7 */
- Ac = 0.1858 * sin (dtor (Msol)); /* sec 65 #8 */
- A3 = 0.37 * sin (dtor (Msol));
- Mmprime = Mm + Ev - Ac - A3; /* sec 65 #9 */
- Ec = 6.2886 * sin (dtor (Mmprime)); /* sec 65 #10 */
- A4 = 0.214 * sin (dtor (2 * Mmprime)); /* sec 65 #11 */
- lprime = l + Ev + Ec - Ac + A4; /* sec 65 #12 */
- V = 0.6583 * sin (dtor (2 * (lprime - LambdaSol))); /* sec 65 #13 */
- ldprime = lprime + V; /* sec 65 #14 */
- D = ldprime - LambdaSol; /* sec 67 #2 */
- return 50.0 * (1 - cos (dtor (D))); /* sec 67 #3 */
+ N = 360.0 * days / 365.242191; /* sec 46 #3 */
+ adj360(&N);
+ Msol = N + EPSILONg - RHOg; /* sec 46 #4 */
+ adj360(&Msol);
+ Ec = 360 / M_PI * ECCEN * sin(dtor(Msol)); /* sec 46 #5 */
+ LambdaSol = N + Ec + EPSILONg; /* sec 46 #6 */
+ adj360(&LambdaSol);
+ l = 13.1763966 * days + lzero; /* sec 65 #4 */
+ adj360(&l);
+ Mm = l - (0.1114041 * days) - Pzero; /* sec 65 #5 */
+ adj360(&Mm);
+ Nm = Nzero - (0.0529539 * days); /* sec 65 #6 */
+ adj360(&Nm);
+ Ev = 1.2739 * sin(dtor(2 * (l - LambdaSol) - Mm)); /* sec 65 #7 */
+ Ac = 0.1858 * sin(dtor(Msol)); /* sec 65 #8 */
+ A3 = 0.37 * sin(dtor(Msol));
+ Mmprime = Mm + Ev - Ac - A3; /* sec 65 #9 */
+ Ec = 6.2886 * sin(dtor(Mmprime)); /* sec 65 #10 */
+ A4 = 0.214 * sin(dtor(2 * Mmprime)); /* sec 65 #11 */
+ lprime = l + Ev + Ec - Ac + A4; /* sec 65 #12 */
+ V = 0.6583 * sin(dtor(2 * (lprime - LambdaSol))); /* sec 65 #13 */
+ ldprime = lprime + V; /* sec 65 #14 */
+ D = ldprime - LambdaSol; /* sec 67 #2 */
+ return 50.0 * (1 - cos(dtor(D))); /* sec 67 #3 */
}
/*
@@ -886,23 +819,22 @@ potm (double days)
* Updated to the Third Edition of Duffett-Smith's book, IX 1998
*
*/
-static double
-pom (time_t tmpt)
+static double pom(time_t tmpt)
{
struct tm *GMT;
double days;
int cnt;
- GMT = gmtime (&tmpt);
+ GMT = gmtime(&tmpt);
days = (GMT->tm_yday + 1) + ((GMT->tm_hour + (GMT->tm_min / 60.0) +
(GMT->tm_sec / 3600.0)) / 24.0);
for (cnt = EPOCH; cnt < GMT->tm_year; ++cnt)
- days += ISLEAP (cnt + TM_YEAR_BASE) ? 366 : 365;
+ days += ISLEAP(cnt + TM_YEAR_BASE) ? 366 : 365;
/* Selected time could be before EPOCH */
for (cnt = GMT->tm_year; cnt < EPOCH; ++cnt)
- days -= ISLEAP (cnt + TM_YEAR_BASE) ? 366 : 365;
+ days -= ISLEAP(cnt + TM_YEAR_BASE) ? 366 : 365;
- return potm (days);
+ return potm(days);
}
/*
@@ -910,24 +842,23 @@ pom (time_t tmpt)
* Careful: date is the selected day in calendar at 00:00, so it represents
* the phase of the moon for previous day.
*/
-const char *
-calendar_get_pom (time_t date)
+const char *calendar_get_pom(time_t date)
{
const char *pom_pict[MOON_PHASES] = { " ", "|) ", "(|)", "(| ", " | " };
enum pom phase = NO_POM;
double pom_today, relative_pom, pom_yesterday, pom_tomorrow;
const double half = 50.0;
- pom_yesterday = pom (date);
- pom_today = pom (date + DAYINSEC);
- relative_pom = abs (pom_today - half);
- pom_tomorrow = pom (date + 2 * DAYINSEC);
+ pom_yesterday = pom(date);
+ pom_today = pom(date + DAYINSEC);
+ relative_pom = abs(pom_today - half);
+ pom_tomorrow = pom(date + 2 * DAYINSEC);
if (pom_today > pom_yesterday && pom_today > pom_tomorrow)
phase = FULL_MOON;
else if (pom_today < pom_yesterday && pom_today < pom_tomorrow)
phase = NEW_MOON;
- else if (relative_pom < abs (pom_yesterday - half)
- && relative_pom < abs (pom_tomorrow - half))
+ else if (relative_pom < abs(pom_yesterday - half)
+ && relative_pom < abs(pom_tomorrow - half))
phase = (pom_tomorrow > pom_today) ? FIRST_QUARTER : LAST_QUARTER;
return pom_pict[phase];
diff --git a/src/config.c b/src/config.c
index 98e622a..edf1f3b 100644
--- a/src/config.c
+++ b/src/config.c
@@ -49,28 +49,28 @@ struct confvar {
void *target;
};
-static int config_parse_bool (unsigned *, const char *);
-static int config_serialize_bool (char *, unsigned *);
-static int config_parse_int (int *, const char *);
-static int config_serialize_int (char *, int *);
-static int config_parse_unsigned (unsigned *, const char *);
-static int config_serialize_unsigned (char *, unsigned *);
-static int config_parse_str (char *, const char *);
-static int config_serialize_str (char *, const char *);
-static int config_parse_calendar_view (void *, const char *);
-static int config_serialize_calendar_view (char *, void *);
-static int config_parse_first_day_of_week (void *, const char *);
-static int config_serialize_first_day_of_week (char *, void *);
-static int config_parse_color_theme (void *, const char *);
-static int config_serialize_color_theme (char *, void *);
-static int config_parse_layout (void *, const char *);
-static int config_serialize_layout (char *, void *);
-static int config_parse_sidebar_width (void *, const char *);
-static int config_serialize_sidebar_width (char *, void *);
-static int config_parse_output_datefmt (void *, const char *);
-static int config_serialize_output_datefmt (char *, void *);
-static int config_parse_input_datefmt (void *, const char *);
-static int config_serialize_input_datefmt (char *, void *);
+static int config_parse_bool(unsigned *, const char *);
+static int config_serialize_bool(char *, unsigned *);
+static int config_parse_int(int *, const char *);
+static int config_serialize_int(char *, int *);
+static int config_parse_unsigned(unsigned *, const char *);
+static int config_serialize_unsigned(char *, unsigned *);
+static int config_parse_str(char *, const char *);
+static int config_serialize_str(char *, const char *);
+static int config_parse_calendar_view(void *, const char *);
+static int config_serialize_calendar_view(char *, void *);
+static int config_parse_first_day_of_week(void *, const char *);
+static int config_serialize_first_day_of_week(char *, void *);
+static int config_parse_color_theme(void *, const char *);
+static int config_serialize_color_theme(char *, void *);
+static int config_parse_layout(void *, const char *);
+static int config_serialize_layout(char *, void *);
+static int config_parse_sidebar_width(void *, const char *);
+static int config_serialize_sidebar_width(char *, void *);
+static int config_parse_output_datefmt(void *, const char *);
+static int config_serialize_output_datefmt(char *, void *);
+static int config_parse_input_datefmt(void *, const char *);
+static int config_serialize_input_datefmt(char *, void *);
#define CONFIG_HANDLER_BOOL(var) (config_fn_parse_t) config_parse_bool, \
(config_fn_serialize_t) config_serialize_bool, &(var)
@@ -82,44 +82,49 @@ static int config_serialize_input_datefmt (char *, void *);
(config_fn_serialize_t) config_serialize_str, &(var)
static const struct confvar confmap[] = {
- { "appearance.calendarview", config_parse_calendar_view, config_serialize_calendar_view, NULL },
- { "appearance.layout", config_parse_layout, config_serialize_layout, NULL },
- { "appearance.notifybar", CONFIG_HANDLER_BOOL (nbar.show) },
- { "appearance.sidebarwidth", config_parse_sidebar_width, config_serialize_sidebar_width, NULL },
- { "appearance.theme", config_parse_color_theme, config_serialize_color_theme, NULL },
- { "daemon.enable", CONFIG_HANDLER_BOOL (dmon.enable) },
- { "daemon.log", CONFIG_HANDLER_BOOL (dmon.log) },
- { "format.inputdate", config_parse_input_datefmt, config_serialize_input_datefmt, NULL },
- { "format.notifydate", CONFIG_HANDLER_STR (nbar.datefmt) },
- { "format.notifytime", CONFIG_HANDLER_STR (nbar.timefmt) },
- { "format.outputdate", config_parse_output_datefmt, config_serialize_output_datefmt, NULL },
- { "general.autogc", CONFIG_HANDLER_BOOL (conf.auto_gc) },
- { "general.autosave", CONFIG_HANDLER_BOOL (conf.auto_save) },
- { "general.confirmdelete", CONFIG_HANDLER_BOOL (conf.confirm_delete) },
- { "general.confirmquit", CONFIG_HANDLER_BOOL (conf.confirm_quit) },
- { "general.firstdayofweek", config_parse_first_day_of_week, config_serialize_first_day_of_week, NULL },
- { "general.periodicsave", CONFIG_HANDLER_UNSIGNED (conf.periodic_save) },
- { "general.progressbar", CONFIG_HANDLER_BOOL (conf.progress_bar) },
- { "general.systemdialogs", CONFIG_HANDLER_BOOL (conf.system_dialogs) },
- { "notification.command", CONFIG_HANDLER_STR (nbar.cmd) },
- { "notification.notifyall", CONFIG_HANDLER_BOOL (nbar.notify_all) },
- { "notification.warning", CONFIG_HANDLER_INT (nbar.cntdwn) }
+ {"appearance.calendarview", config_parse_calendar_view,
+ config_serialize_calendar_view, NULL},
+ {"appearance.layout", config_parse_layout, config_serialize_layout, NULL},
+ {"appearance.notifybar", CONFIG_HANDLER_BOOL(nbar.show)},
+ {"appearance.sidebarwidth", config_parse_sidebar_width,
+ config_serialize_sidebar_width, NULL},
+ {"appearance.theme", config_parse_color_theme, config_serialize_color_theme,
+ NULL},
+ {"daemon.enable", CONFIG_HANDLER_BOOL(dmon.enable)},
+ {"daemon.log", CONFIG_HANDLER_BOOL(dmon.log)},
+ {"format.inputdate", config_parse_input_datefmt,
+ config_serialize_input_datefmt, NULL},
+ {"format.notifydate", CONFIG_HANDLER_STR(nbar.datefmt)},
+ {"format.notifytime", CONFIG_HANDLER_STR(nbar.timefmt)},
+ {"format.outputdate", config_parse_output_datefmt,
+ config_serialize_output_datefmt, NULL},
+ {"general.autogc", CONFIG_HANDLER_BOOL(conf.auto_gc)},
+ {"general.autosave", CONFIG_HANDLER_BOOL(conf.auto_save)},
+ {"general.confirmdelete", CONFIG_HANDLER_BOOL(conf.confirm_delete)},
+ {"general.confirmquit", CONFIG_HANDLER_BOOL(conf.confirm_quit)},
+ {"general.firstdayofweek", config_parse_first_day_of_week,
+ config_serialize_first_day_of_week, NULL},
+ {"general.periodicsave", CONFIG_HANDLER_UNSIGNED(conf.periodic_save)},
+ {"general.progressbar", CONFIG_HANDLER_BOOL(conf.progress_bar)},
+ {"general.systemdialogs", CONFIG_HANDLER_BOOL(conf.system_dialogs)},
+ {"notification.command", CONFIG_HANDLER_STR(nbar.cmd)},
+ {"notification.notifyall", CONFIG_HANDLER_BOOL(nbar.notify_all)},
+ {"notification.warning", CONFIG_HANDLER_INT(nbar.cntdwn)}
};
struct config_save_status {
FILE *fp;
- int done[sizeof (confmap) / sizeof (confmap[0])];
+ int done[sizeof(confmap) / sizeof(confmap[0])];
};
typedef int (*config_fn_walk_cb_t) (const char *, const char *, void *);
typedef int (*config_fn_walk_junk_cb_t) (const char *, void *);
-static int
-config_parse_bool (unsigned *dest, const char *val)
+static int config_parse_bool(unsigned *dest, const char *val)
{
- if (strcmp (val, "yes") == 0)
+ if (strcmp(val, "yes") == 0)
*dest = 1;
- else if (strcmp (val, "no") == 0)
+ else if (strcmp(val, "no") == 0)
*dest = 0;
else
return 0;
@@ -127,55 +132,51 @@ config_parse_bool (unsigned *dest, const char *val)
return 1;
}
-static int
-config_parse_unsigned (unsigned *dest, const char *val)
+static int config_parse_unsigned(unsigned *dest, const char *val)
{
- if (is_all_digit (val))
- *dest = atoi (val);
+ if (is_all_digit(val))
+ *dest = atoi(val);
else
return 0;
return 1;
}
-static int
-config_parse_int (int *dest, const char *val)
+static int config_parse_int(int *dest, const char *val)
{
- if ((*val == '+' || *val == '-' || isdigit (*val)) && is_all_digit (val + 1))
- *dest = atoi (val);
+ if ((*val == '+' || *val == '-' || isdigit(*val)) && is_all_digit(val + 1))
+ *dest = atoi(val);
else
return 0;
return 1;
}
-static int
-config_parse_str (char *dest, const char *val)
+static int config_parse_str(char *dest, const char *val)
{
- strncpy (dest, val, BUFSIZ);
+ strncpy(dest, val, BUFSIZ);
return 1;
}
-static int
-config_parse_color (int *dest, const char *val)
+static int config_parse_color(int *dest, const char *val)
{
- if (!strcmp (val, "black"))
+ if (!strcmp(val, "black"))
*dest = COLOR_BLACK;
- else if (!strcmp (val, "red"))
+ else if (!strcmp(val, "red"))
*dest = COLOR_RED;
- else if (!strcmp (val, "green"))
+ else if (!strcmp(val, "green"))
*dest = COLOR_GREEN;
- else if (!strcmp (val, "yellow"))
+ else if (!strcmp(val, "yellow"))
*dest = COLOR_YELLOW;
- else if (!strcmp (val, "blue"))
+ else if (!strcmp(val, "blue"))
*dest = COLOR_BLUE;
- else if (!strcmp (val, "magenta"))
+ else if (!strcmp(val, "magenta"))
*dest = COLOR_MAGENTA;
- else if (!strcmp (val, "cyan"))
+ else if (!strcmp(val, "cyan"))
*dest = COLOR_CYAN;
- else if (!strcmp (val, "white"))
+ else if (!strcmp(val, "white"))
*dest = COLOR_WHITE;
- else if (!strcmp (val, "default"))
+ else if (!strcmp(val, "default"))
*dest = background;
else
return 0;
@@ -183,137 +184,119 @@ config_parse_color (int *dest, const char *val)
return 1;
}
-static int
-config_parse_color_pair (int *dest1, int *dest2, const char *val)
+static int config_parse_color_pair(int *dest1, int *dest2, const char *val)
{
char s1[BUFSIZ], s2[BUFSIZ];
- if (sscanf (val, "%s on %s", s1, s2) != 2)
+ if (sscanf(val, "%s on %s", s1, s2) != 2)
return 0;
- return (config_parse_color (dest1, s1) && config_parse_color (dest2, s2));
+ return (config_parse_color(dest1, s1) && config_parse_color(dest2, s2));
}
-static int
-config_parse_calendar_view (void *dummy, const char *val)
+static int config_parse_calendar_view(void *dummy, const char *val)
{
- calendar_set_view (atoi (val));
+ calendar_set_view(atoi(val));
return 1;
}
-static int
-config_parse_first_day_of_week (void *dummy, const char *val)
+static int config_parse_first_day_of_week(void *dummy, const char *val)
{
- if (!strcmp (val, "monday"))
- calendar_set_first_day_of_week (MONDAY);
- else if (!strcmp (val, "sunday"))
- calendar_set_first_day_of_week (SUNDAY);
+ if (!strcmp(val, "monday"))
+ calendar_set_first_day_of_week(MONDAY);
+ else if (!strcmp(val, "sunday"))
+ calendar_set_first_day_of_week(SUNDAY);
else
return 0;
return 1;
}
-static int
-config_parse_color_theme (void *dummy, const char *val)
+static int config_parse_color_theme(void *dummy, const char *val)
{
int color1, color2;
- if (!config_parse_color_pair (&color1, &color2, val))
+ if (!config_parse_color_pair(&color1, &color2, val))
return 0;
- init_pair (COLR_CUSTOM, color1, color2);
+ init_pair(COLR_CUSTOM, color1, color2);
return 1;
}
-static int
-config_parse_layout (void *dummy, const char *val)
+static int config_parse_layout(void *dummy, const char *val)
{
- wins_set_layout (atoi (val));
+ wins_set_layout(atoi(val));
return 1;
}
-static int
-config_parse_sidebar_width (void *dummy, const char *val)
+static int config_parse_sidebar_width(void *dummy, const char *val)
{
- wins_set_sbar_width (atoi (val));
+ wins_set_sbar_width(atoi(val));
return 1;
}
-static int
-config_parse_output_datefmt (void *dummy, const char *val)
+static int config_parse_output_datefmt(void *dummy, const char *val)
{
if (val[0] != '\0')
- return config_parse_str (conf.output_datefmt, val);
+ return config_parse_str(conf.output_datefmt, val);
return 1;
}
-static int
-config_parse_input_datefmt (void *dummy, const char *val)
+static int config_parse_input_datefmt(void *dummy, const char *val)
{
- if (config_parse_int (&conf.input_datefmt, val)) {
+ if (config_parse_int(&conf.input_datefmt, val)) {
if (conf.input_datefmt <= 0 || conf.input_datefmt >= DATE_FORMATS)
conf.input_datefmt = 1;
return 1;
- }
- else
+ } else
return 0;
}
/* Set a configuration variable. */
-static int
-config_set_conf (const char *key, const char *value)
+static int config_set_conf(const char *key, const char *value)
{
int i;
if (!key)
return -1;
- for (i = 0; i < sizeof (confmap) / sizeof (confmap[0]); i++)
- {
- if (!strcmp (confmap[i].key, key))
- return confmap[i].fn_parse (confmap[i].target, value);
- }
+ for (i = 0; i < sizeof(confmap) / sizeof(confmap[0]); i++) {
+ if (!strcmp(confmap[i].key, key))
+ return confmap[i].fn_parse(confmap[i].target, value);
+ }
return -1;
}
-static int
-config_serialize_bool (char *dest, unsigned *val)
-{
- if (*val)
- {
- dest[0] = 'y';
- dest[1] = 'e';
- dest[2] = 's';
- dest[3] = '\0';
- }
- else
- {
- dest[0] = 'n';
- dest[1] = 'o';
- dest[2] = '\0';
- }
+static int config_serialize_bool(char *dest, unsigned *val)
+{
+ if (*val) {
+ dest[0] = 'y';
+ dest[1] = 'e';
+ dest[2] = 's';
+ dest[3] = '\0';
+ } else {
+ dest[0] = 'n';
+ dest[1] = 'o';
+ dest[2] = '\0';
+ }
return 1;
}
-static int
-config_serialize_unsigned (char *dest, unsigned *val)
+static int config_serialize_unsigned(char *dest, unsigned *val)
{
- snprintf (dest, BUFSIZ, "%u", *val);
+ snprintf(dest, BUFSIZ, "%u", *val);
return 1;
}
-static int
-config_serialize_int (char *dest, int *val)
+static int config_serialize_int(char *dest, int *val)
{
- snprintf (dest, BUFSIZ, "%d", *val);
+ snprintf(dest, BUFSIZ, "%d", *val);
return 1;
}
-static int
-config_serialize_str (char *dest, const char *val)
+static int config_serialize_str(char *dest, const char *val)
{
- strncpy (dest, val, BUFSIZ);
+ strncpy(dest, val, BUFSIZ);
return 1;
}
@@ -325,8 +308,7 @@ config_serialize_str (char *dest, const char *val)
* If ncurses library was compiled with --enable-ext-funcs,
* then default color is -1.
*/
-static void
-config_color_theme_name (char *theme_name)
+static void config_color_theme_name(char *theme_name)
{
#define MAXCOLORS 8
#define NBCOLORS 2
@@ -349,37 +331,32 @@ config_color_theme_name (char *theme_name)
};
if (!colorize)
- strncpy (theme_name, "0", BUFSIZ);
- else
- {
- pair_content (COLR_CUSTOM, &color[0], &color[1]);
- for (i = 0; i < NBCOLORS; i++)
- {
- if ((color[i] == DEFAULTCOLOR) || (color[i] == DEFAULTCOLOR_EXT))
- color_name[i] = default_color;
- else if (color[i] >= 0 && color[i] <= MAXCOLORS)
- color_name[i] = name[color[i]];
- else
- {
- EXIT (_("unknown color"));
- /* NOTREACHED */
- }
- }
- snprintf (theme_name, BUFSIZ, "%s on %s", color_name[0], color_name[1]);
+ strncpy(theme_name, "0", BUFSIZ);
+ else {
+ pair_content(COLR_CUSTOM, &color[0], &color[1]);
+ for (i = 0; i < NBCOLORS; i++) {
+ if ((color[i] == DEFAULTCOLOR) || (color[i] == DEFAULTCOLOR_EXT))
+ color_name[i] = default_color;
+ else if (color[i] >= 0 && color[i] <= MAXCOLORS)
+ color_name[i] = name[color[i]];
+ else {
+ EXIT(_("unknown color"));
+ /* NOTREACHED */
+ }
}
+ snprintf(theme_name, BUFSIZ, "%s on %s", color_name[0], color_name[1]);
+ }
}
-static int
-config_serialize_calendar_view (char *buf, void *dummy)
+static int config_serialize_calendar_view(char *buf, void *dummy)
{
- int tmp = calendar_get_view ();
- return config_serialize_int (buf, &tmp);
+ int tmp = calendar_get_view();
+ return config_serialize_int(buf, &tmp);
}
-static int
-config_serialize_first_day_of_week (char *buf, void *dummy)
+static int config_serialize_first_day_of_week(char *buf, void *dummy)
{
- if (calendar_week_begins_on_monday ())
+ if (calendar_week_begins_on_monday())
strcpy(buf, "monday");
else
strcpy(buf, "sunday");
@@ -387,195 +364,177 @@ config_serialize_first_day_of_week (char *buf, void *dummy)
return 1;
}
-static int
-config_serialize_color_theme (char *buf, void *dummy)
+static int config_serialize_color_theme(char *buf, void *dummy)
{
- config_color_theme_name (buf);
+ config_color_theme_name(buf);
return 1;
}
-static int
-config_serialize_layout (char *buf, void *dummy)
+static int config_serialize_layout(char *buf, void *dummy)
{
- int tmp = wins_layout ();
- return config_serialize_int (buf, &tmp);
+ int tmp = wins_layout();
+ return config_serialize_int(buf, &tmp);
}
-static int
-config_serialize_sidebar_width (char *buf, void *dummy)
+static int config_serialize_sidebar_width(char *buf, void *dummy)
{
- int tmp = wins_sbar_wperc ();
- return config_serialize_int (buf, &tmp);
+ int tmp = wins_sbar_wperc();
+ return config_serialize_int(buf, &tmp);
}
-static int
-config_serialize_output_datefmt (char *buf, void *dummy)
+static int config_serialize_output_datefmt(char *buf, void *dummy)
{
- return config_serialize_str (buf, conf.output_datefmt);
+ return config_serialize_str(buf, conf.output_datefmt);
}
-static int
-config_serialize_input_datefmt (char *buf, void *dummy)
+static int config_serialize_input_datefmt(char *buf, void *dummy)
{
- return config_serialize_int (buf, &conf.input_datefmt);
+ return config_serialize_int(buf, &conf.input_datefmt);
}
/* Serialize the value of a configuration variable. */
static int
-config_serialize_conf (char *buf, const char *key,
- struct config_save_status *status)
+config_serialize_conf(char *buf, const char *key,
+ struct config_save_status *status)
{
int i;
if (!key)
return -1;
- for (i = 0; i < sizeof (confmap) / sizeof (confmap[0]); i++)
- {
- if (!strcmp (confmap[i].key, key))
- {
- if (confmap[i].fn_serialize (buf, confmap[i].target))
- {
- if (status)
- status->done[i] = 1;
- return 1;
- }
- else
- return 0;
- }
+ for (i = 0; i < sizeof(confmap) / sizeof(confmap[0]); i++) {
+ if (!strcmp(confmap[i].key, key)) {
+ if (confmap[i].fn_serialize(buf, confmap[i].target)) {
+ if (status)
+ status->done[i] = 1;
+ return 1;
+ } else
+ return 0;
}
+ }
return -1;
}
static void
-config_file_walk (config_fn_walk_cb_t fn_cb,
- config_fn_walk_junk_cb_t fn_junk_cb, void *data)
+config_file_walk(config_fn_walk_cb_t fn_cb,
+ config_fn_walk_junk_cb_t fn_junk_cb, void *data)
{
FILE *data_file;
char buf[BUFSIZ], e_conf[BUFSIZ];
char *key, *value;
- data_file = fopen (path_conf, "r");
- EXIT_IF (data_file == NULL, _("failed to open configuration file"));
+ data_file = fopen(path_conf, "r");
+ EXIT_IF(data_file == NULL, _("failed to open configuration file"));
+
+ pthread_mutex_lock(&nbar.mutex);
+ for (;;) {
+ if (fgets(buf, sizeof buf, data_file) == NULL)
+ break;
+ io_extract_data(e_conf, buf, sizeof buf);
- pthread_mutex_lock (&nbar.mutex);
- for (;;)
- {
- if (fgets (buf, sizeof buf, data_file) == NULL)
+ if (*e_conf == '\0') {
+ if (fn_junk_cb)
+ fn_junk_cb(buf, data);
+ continue;
+ }
+
+ key = e_conf;
+ value = strchr(e_conf, '=');
+ if (value) {
+ *value = '\0';
+ value++;
+ }
+
+ if (strcmp(key, "auto_save") == 0 ||
+ strcmp(key, "auto_gc") == 0 ||
+ strcmp(key, "periodic_save") == 0 ||
+ strcmp(key, "confirm_quit") == 0 ||
+ strcmp(key, "confirm_delete") == 0 ||
+ strcmp(key, "skip_system_dialogs") == 0 ||
+ strcmp(key, "skip_progress_bar") == 0 ||
+ strcmp(key, "calendar_default_view") == 0 ||
+ strcmp(key, "week_begins_on_monday") == 0 ||
+ strcmp(key, "color-theme") == 0 ||
+ strcmp(key, "layout") == 0 ||
+ strcmp(key, "side-bar_width") == 0 ||
+ strcmp(key, "notify-bar_show") == 0 ||
+ strcmp(key, "notify-bar_date") == 0 ||
+ strcmp(key, "notify-bar_clock") == 0 ||
+ strcmp(key, "notify-bar_warning") == 0 ||
+ strcmp(key, "notify-bar_command") == 0 ||
+ strcmp(key, "notify-all") == 0 ||
+ strcmp(key, "output_datefmt") == 0 ||
+ strcmp(key, "input_datefmt") == 0 ||
+ strcmp(key, "notify-daemon_enable") == 0 ||
+ strcmp(key, "notify-daemon_log") == 0) {
+ WARN_MSG(_("Pre-3.0.0 configuration file format detected, "
+ "please upgrade running `calcurse-upgrade`."));
+ }
+
+ if (value && (*value == '\0' || *value == '\n')) {
+ /* Backward compatibility mode. */
+ if (fgets(buf, sizeof buf, data_file) == NULL)
break;
- io_extract_data (e_conf, buf, sizeof buf);
-
- if (*e_conf == '\0')
- {
- if (fn_junk_cb)
- fn_junk_cb (buf, data);
- continue;
- }
-
- key = e_conf;
- value = strchr (e_conf, '=');
- if (value)
- {
- *value = '\0';
- value++;
- }
-
- if (strcmp(key, "auto_save") == 0 ||
- strcmp(key, "auto_gc") == 0 ||
- strcmp(key, "periodic_save") == 0 ||
- strcmp(key, "confirm_quit") == 0 ||
- strcmp(key, "confirm_delete") == 0 ||
- strcmp(key, "skip_system_dialogs") == 0 ||
- strcmp(key, "skip_progress_bar") == 0 ||
- strcmp(key, "calendar_default_view") == 0 ||
- strcmp(key, "week_begins_on_monday") == 0 ||
- strcmp(key, "color-theme") == 0 ||
- strcmp(key, "layout") == 0 ||
- strcmp(key, "side-bar_width") == 0 ||
- strcmp(key, "notify-bar_show") == 0 ||
- strcmp(key, "notify-bar_date") == 0 ||
- strcmp(key, "notify-bar_clock") == 0 ||
- strcmp(key, "notify-bar_warning") == 0 ||
- strcmp(key, "notify-bar_command") == 0 ||
- strcmp(key, "notify-all") == 0 ||
- strcmp(key, "output_datefmt") == 0 ||
- strcmp(key, "input_datefmt") == 0 ||
- strcmp(key, "notify-daemon_enable") == 0 ||
- strcmp(key, "notify-daemon_log") == 0)
- {
- WARN_MSG (_("Pre-3.0.0 configuration file format detected, "
- "please upgrade running `calcurse-upgrade`."));
- }
-
- if (value && (*value == '\0' || *value == '\n'))
- {
- /* Backward compatibility mode. */
- if (fgets (buf, sizeof buf, data_file) == NULL)
- break;
- io_extract_data (e_conf, buf, sizeof buf);
- value = e_conf;
- }
-
- fn_cb (key, value, data);
+ io_extract_data(e_conf, buf, sizeof buf);
+ value = e_conf;
}
- file_close (data_file, __FILE_POS__);
- pthread_mutex_unlock (&nbar.mutex);
+
+ fn_cb(key, value, data);
+ }
+ file_close(data_file, __FILE_POS__);
+ pthread_mutex_unlock(&nbar.mutex);
}
-static int
-config_load_cb (const char *key, const char *value, void *dummy)
+static int config_load_cb(const char *key, const char *value, void *dummy)
{
- int result = config_set_conf (key, value);
+ int result = config_set_conf(key, value);
if (result < 0)
- EXIT (_("configuration variable unknown: \"%s\""), key);
- /* NOTREACHED */
+ EXIT(_("configuration variable unknown: \"%s\""), key);
+ /* NOTREACHED */
else if (result == 0)
- EXIT (_("wrong configuration variable format for \"%s\""), key);
- /* NOTREACHED */
+ EXIT(_("wrong configuration variable format for \"%s\""), key);
+ /* NOTREACHED */
return 1;
}
/* Load the user configuration. */
-void
-config_load (void)
+void config_load(void)
{
- config_file_walk (config_load_cb, NULL, NULL);
+ config_file_walk(config_load_cb, NULL, NULL);
}
-static int
-config_save_cb (const char *key, const char *value, void *status)
+static int config_save_cb(const char *key, const char *value, void *status)
{
char buf[BUFSIZ];
- int result = config_serialize_conf (buf, key, (struct config_save_status *) status);
+ int result =
+ config_serialize_conf(buf, key, (struct config_save_status *)status);
if (result < 0)
- EXIT (_("configuration variable unknown: \"%s\""), key);
- /* NOTREACHED */
+ EXIT(_("configuration variable unknown: \"%s\""), key);
+ /* NOTREACHED */
else if (result == 0)
- EXIT (_("wrong configuration variable format for \"%s\""), key);
- /* NOTREACHED */
+ EXIT(_("wrong configuration variable format for \"%s\""), key);
+ /* NOTREACHED */
- fputs (key, ((struct config_save_status *) status)->fp);
- fputc ('=', ((struct config_save_status *) status)->fp);
- fputs (buf, ((struct config_save_status *) status)->fp);
- fputc ('\n', ((struct config_save_status *) status)->fp);
+ fputs(key, ((struct config_save_status *)status)->fp);
+ fputc('=', ((struct config_save_status *)status)->fp);
+ fputs(buf, ((struct config_save_status *)status)->fp);
+ fputc('\n', ((struct config_save_status *)status)->fp);
return 1;
}
-static int
-config_save_junk_cb (const char *data, void *status)
+static int config_save_junk_cb(const char *data, void *status)
{
- fputs (data, ((struct config_save_status *) status)->fp);
+ fputs(data, ((struct config_save_status *)status)->fp);
return 1;
}
/* Save the user configuration. */
-unsigned
-config_save (void)
+unsigned config_save(void)
{
char tmppath[BUFSIZ];
char *tmpext;
@@ -585,32 +544,31 @@ config_save (void)
if (read_only)
return 1;
- strncpy (tmppath, get_tempdir (), BUFSIZ);
- strncat (tmppath, "/" CONF_PATH_NAME ".", BUFSIZ - strlen (tmppath) - 1);
- if ((tmpext = new_tempfile (tmppath, TMPEXTSIZ)) == NULL)
+ strncpy(tmppath, get_tempdir(), BUFSIZ);
+ strncat(tmppath, "/" CONF_PATH_NAME ".", BUFSIZ - strlen(tmppath) - 1);
+ if ((tmpext = new_tempfile(tmppath, TMPEXTSIZ)) == NULL)
return 0;
- strncat (tmppath, tmpext, BUFSIZ - strlen (tmppath) - 1);
- mem_free (tmpext);
+ strncat(tmppath, tmpext, BUFSIZ - strlen(tmppath) - 1);
+ mem_free(tmpext);
- status.fp = fopen (tmppath, "w");
+ status.fp = fopen(tmppath, "w");
if (!status.fp)
return 0;
- memset (status.done, 0, sizeof (status.done));
+ memset(status.done, 0, sizeof(status.done));
- config_file_walk (config_save_cb, config_save_junk_cb, (void *) &status);
+ config_file_walk(config_save_cb, config_save_junk_cb, (void *)&status);
/* Set variables that were missing from the configuration file. */
- for (i = 0; i < sizeof (confmap) / sizeof (confmap[0]); i++)
- {
- if (!status.done[i])
- config_save_cb (confmap[i].key, NULL, &status);
- }
+ for (i = 0; i < sizeof(confmap) / sizeof(confmap[0]); i++) {
+ if (!status.done[i])
+ config_save_cb(confmap[i].key, NULL, &status);
+ }
- file_close (status.fp, __FILE_POS__);
+ file_close(status.fp, __FILE_POS__);
- if (io_file_cp (tmppath, path_conf))
- unlink (tmppath);
+ if (io_file_cp(tmppath, path_conf))
+ unlink(tmppath);
return 1;
}
diff --git a/src/custom.c b/src/custom.c
index 017136d..ef84703 100644
--- a/src/custom.c
+++ b/src/custom.c
@@ -56,16 +56,15 @@ static struct attribute attr;
* ATTR_LOW are for days inside calendar panel which contains an event
* ATTR_LOWEST are for current day inside calendar panel
*/
-void
-custom_init_attr (void)
+void custom_init_attr(void)
{
- attr.color[ATTR_HIGHEST] = COLOR_PAIR (COLR_CUSTOM);
- attr.color[ATTR_HIGH] = COLOR_PAIR (COLR_HIGH);
- attr.color[ATTR_MIDDLE] = COLOR_PAIR (COLR_RED);
- attr.color[ATTR_LOW] = COLOR_PAIR (COLR_CYAN);
- attr.color[ATTR_LOWEST] = COLOR_PAIR (COLR_YELLOW);
- attr.color[ATTR_TRUE] = COLOR_PAIR (COLR_GREEN);
- attr.color[ATTR_FALSE] = COLOR_PAIR (COLR_RED);
+ attr.color[ATTR_HIGHEST] = COLOR_PAIR(COLR_CUSTOM);
+ attr.color[ATTR_HIGH] = COLOR_PAIR(COLR_HIGH);
+ attr.color[ATTR_MIDDLE] = COLOR_PAIR(COLR_RED);
+ attr.color[ATTR_LOW] = COLOR_PAIR(COLR_CYAN);
+ attr.color[ATTR_LOWEST] = COLOR_PAIR(COLR_YELLOW);
+ attr.color[ATTR_TRUE] = COLOR_PAIR(COLR_GREEN);
+ attr.color[ATTR_FALSE] = COLOR_PAIR(COLR_RED);
attr.nocolor[ATTR_HIGHEST] = A_BOLD;
attr.nocolor[ATTR_HIGH] = A_REVERSE;
@@ -77,293 +76,278 @@ custom_init_attr (void)
}
/* Apply window attribute */
-void
-custom_apply_attr (WINDOW *win, int attr_num)
+void custom_apply_attr(WINDOW * win, int attr_num)
{
if (colorize)
- wattron (win, attr.color[attr_num]);
+ wattron(win, attr.color[attr_num]);
else
- wattron (win, attr.nocolor[attr_num]);
+ wattron(win, attr.nocolor[attr_num]);
}
/* Remove window attribute */
-void
-custom_remove_attr (WINDOW *win, int attr_num)
+void custom_remove_attr(WINDOW * win, int attr_num)
{
if (colorize)
- wattroff (win, attr.color[attr_num]);
+ wattroff(win, attr.color[attr_num]);
else
- wattroff (win, attr.nocolor[attr_num]);
+ wattroff(win, attr.nocolor[attr_num]);
}
/* Draws the configuration bar */
-void
-custom_config_bar (void)
+void custom_config_bar(void)
{
const int SMLSPC = 2;
const int SPC = 15;
- custom_apply_attr (win[STA].p, ATTR_HIGHEST);
- mvwprintw (win[STA].p, 0, 2, "Q");
- mvwprintw (win[STA].p, 1, 2, "G");
- mvwprintw (win[STA].p, 0, 2 + SPC, "L");
- mvwprintw (win[STA].p, 1, 2 + SPC, "S");
- mvwprintw (win[STA].p, 0, 2 + 2 * SPC, "C");
- mvwprintw (win[STA].p, 1, 2 + 2 * SPC, "N");
- mvwprintw (win[STA].p, 0, 2 + 3 * SPC, "K");
- custom_remove_attr (win[STA].p, ATTR_HIGHEST);
-
- mvwprintw (win[STA].p, 0, 2 + SMLSPC, _("Exit"));
- mvwprintw (win[STA].p, 1, 2 + SMLSPC, _("General"));
- mvwprintw (win[STA].p, 0, 2 + SPC + SMLSPC, _("Layout"));
- mvwprintw (win[STA].p, 1, 2 + SPC + SMLSPC, _("Sidebar"));
- mvwprintw (win[STA].p, 0, 2 + 2 * SPC + SMLSPC, _("Color"));
- mvwprintw (win[STA].p, 1, 2 + 2 * SPC + SMLSPC, _("Notify"));
- mvwprintw (win[STA].p, 0, 2 + 3 * SPC + SMLSPC, _("Keys"));
-
- wnoutrefresh (win[STA].p);
- wmove (win[STA].p, 0, 0);
- wins_doupdate ();
+ custom_apply_attr(win[STA].p, ATTR_HIGHEST);
+ mvwprintw(win[STA].p, 0, 2, "Q");
+ mvwprintw(win[STA].p, 1, 2, "G");
+ mvwprintw(win[STA].p, 0, 2 + SPC, "L");
+ mvwprintw(win[STA].p, 1, 2 + SPC, "S");
+ mvwprintw(win[STA].p, 0, 2 + 2 * SPC, "C");
+ mvwprintw(win[STA].p, 1, 2 + 2 * SPC, "N");
+ mvwprintw(win[STA].p, 0, 2 + 3 * SPC, "K");
+ custom_remove_attr(win[STA].p, ATTR_HIGHEST);
+
+ mvwprintw(win[STA].p, 0, 2 + SMLSPC, _("Exit"));
+ mvwprintw(win[STA].p, 1, 2 + SMLSPC, _("General"));
+ mvwprintw(win[STA].p, 0, 2 + SPC + SMLSPC, _("Layout"));
+ mvwprintw(win[STA].p, 1, 2 + SPC + SMLSPC, _("Sidebar"));
+ mvwprintw(win[STA].p, 0, 2 + 2 * SPC + SMLSPC, _("Color"));
+ mvwprintw(win[STA].p, 1, 2 + 2 * SPC + SMLSPC, _("Notify"));
+ mvwprintw(win[STA].p, 0, 2 + 3 * SPC + SMLSPC, _("Keys"));
+
+ wnoutrefresh(win[STA].p);
+ wmove(win[STA].p, 0, 0);
+ wins_doupdate();
}
-static void
-layout_selection_bar (void)
+static void layout_selection_bar(void)
{
- 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};
+ 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 };
struct binding *bindings[] = {
- &quit, &select, &up, &down, &left, &right, &help
+ &quit, &select, &up, &down, &left, &right, &help
};
- int bindings_size = sizeof (bindings) / sizeof (bindings[0]);
+ int bindings_size = sizeof(bindings) / sizeof(bindings[0]);
- keys_display_bindings_bar (win[STA].p, bindings, bindings_size, 0,
- bindings_size, NULL);
+ keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0,
+ bindings_size, NULL);
}
#define NBLAYOUTS 8
#define LAYOUTSPERCOL 2
/* Used to display available layouts in layout configuration menu. */
-static void
-display_layout_config (struct window *lwin, int mark, int cursor)
+static void display_layout_config(struct window *lwin, int mark, int cursor)
{
#define CURSOR (32 | A_REVERSE)
#define MARK 88
#define LAYOUTH 5
#define LAYOUTW 9
const char *box = "[ ]";
- const int BOXSIZ = strlen (box);
+ const int BOXSIZ = strlen(box);
const int NBCOLS = NBLAYOUTS / LAYOUTSPERCOL;
const int COLSIZ = LAYOUTW + BOXSIZ + 1;
const int XSPC = (lwin->w - NBCOLS * COLSIZ) / (NBCOLS + 1);
const int XOFST = (lwin->w - NBCOLS * (XSPC + COLSIZ)) / 2;
- const int YSPC = (lwin->h - 8 - LAYOUTSPERCOL * LAYOUTH) / (LAYOUTSPERCOL + 1);
+ const int YSPC =
+ (lwin->h - 8 - LAYOUTSPERCOL * LAYOUTH) / (LAYOUTSPERCOL + 1);
const int YOFST = (lwin->h - LAYOUTSPERCOL * (YSPC + LAYOUTH)) / 2;
- enum {YPOS, XPOS, NBPOS};
+ enum { YPOS, XPOS, NBPOS };
int pos[NBLAYOUTS][NBPOS];
const char *layouts[LAYOUTH][NBLAYOUTS] = {
- {"+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+"},
- {"| | c |", "| | t |", "| c | |", "| t | |", "| | c |", "| | a |", "| c | |", "| a | |"},
- {"| a +---+", "| a +---+", "+---+ a |", "|---+ a |", "| t +---+", "| t +---+", "+---+ t |", "+---+ t |"},
- {"| | t |", "| | c |", "| t | |", "| c | |", "| | a |", "| | c |", "| a | |", "| c | |"},
- {"+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+"}
+ {"+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+",
+ "+---+---+", "+---+---+", "+---+---+"},
+ {"| | c |", "| | t |", "| c | |", "| t | |", "| | c |",
+ "| | a |", "| c | |", "| a | |"},
+ {"| a +---+", "| a +---+", "+---+ a |", "|---+ a |", "| t +---+",
+ "| t +---+", "+---+ t |", "+---+ t |"},
+ {"| | t |", "| | c |", "| t | |", "| c | |", "| | a |",
+ "| | c |", "| a | |", "| c | |"},
+ {"+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+",
+ "+---+---+", "+---+---+", "+---+---+"}
};
int i;
- for (i = 0; i < NBLAYOUTS; i++)
- {
- pos[i][YPOS] = YOFST + (i % LAYOUTSPERCOL) * (YSPC + LAYOUTH);
- pos[i][XPOS] = XOFST + (i / LAYOUTSPERCOL) * (XSPC + COLSIZ);
- }
+ for (i = 0; i < NBLAYOUTS; i++) {
+ pos[i][YPOS] = YOFST + (i % LAYOUTSPERCOL) * (YSPC + LAYOUTH);
+ pos[i][XPOS] = XOFST + (i / LAYOUTSPERCOL) * (XSPC + COLSIZ);
+ }
- for (i = 0; i < NBLAYOUTS; i++)
- {
- int j;
-
- mvwprintw (lwin->p, pos[i][YPOS] + 2, pos[i][XPOS], box);
- if (i == mark)
- custom_apply_attr (lwin->p, ATTR_HIGHEST);
- for (j = 0; j < LAYOUTH; j++)
- {
- mvwprintw (lwin->p, pos[i][YPOS] + j, pos[i][XPOS] + BOXSIZ + 1,
- layouts[j][i]);
- }
- if (i == mark)
- custom_remove_attr (lwin->p, ATTR_HIGHEST);
+ for (i = 0; i < NBLAYOUTS; i++) {
+ int j;
+
+ mvwprintw(lwin->p, pos[i][YPOS] + 2, pos[i][XPOS], box);
+ if (i == mark)
+ custom_apply_attr(lwin->p, ATTR_HIGHEST);
+ for (j = 0; j < LAYOUTH; j++) {
+ mvwprintw(lwin->p, pos[i][YPOS] + j, pos[i][XPOS] + BOXSIZ + 1,
+ layouts[j][i]);
}
- mvwaddch (lwin->p, pos[mark][YPOS] + 2, pos[mark][XPOS] + 1, MARK);
- mvwaddch (lwin->p, pos[cursor][YPOS] + 2, pos[cursor][XPOS] + 1, CURSOR);
-
- layout_selection_bar ();
- wnoutrefresh (win[STA].p);
- wnoutrefresh (lwin->p);
- wins_doupdate ();
- if (notify_bar ())
- notify_update_bar ();
+ if (i == mark)
+ custom_remove_attr(lwin->p, ATTR_HIGHEST);
+ }
+ mvwaddch(lwin->p, pos[mark][YPOS] + 2, pos[mark][XPOS] + 1, MARK);
+ mvwaddch(lwin->p, pos[cursor][YPOS] + 2, pos[cursor][XPOS] + 1, CURSOR);
+
+ layout_selection_bar();
+ wnoutrefresh(win[STA].p);
+ wnoutrefresh(lwin->p);
+ wins_doupdate();
+ if (notify_bar())
+ notify_update_bar();
}
/* Choose the layout */
-void
-custom_layout_config (void)
+void custom_layout_config(void)
{
struct scrollwin hwin;
struct window conf_win;
int ch, mark, cursor, need_reset;
const char *label = _("layout configuration");
const char *help_text =
- _("With this configuration menu, one can choose where panels will be\n"
- "displayed inside calcurse screen. \n"
- "It is possible to choose between eight different configurations.\n"
- "\nIn the configuration representations, letters correspond to:\n\n"
- " 'c' -> calendar panel\n\n"
- " 'a' -> appointment panel\n\n"
- " 't' -> todo panel\n\n");
+ _("With this configuration menu, one can choose where panels will be\n"
+ "displayed inside calcurse screen. \n"
+ "It is possible to choose between eight different configurations.\n"
+ "\nIn the configuration representations, letters correspond to:\n\n"
+ " 'c' -> calendar panel\n\n"
+ " 'a' -> appointment panel\n\n" " 't' -> todo panel\n\n");
conf_win.p = NULL;
- custom_confwin_init (&conf_win, label);
- cursor = mark = wins_layout () - 1;
- display_layout_config (&conf_win, mark, cursor);
- clear ();
-
- while ((ch = keys_getch (win[STA].p, NULL)) != KEY_GENERIC_QUIT)
- {
- need_reset = 0;
- switch (ch)
- {
- case KEY_GENERIC_HELP:
- help_wins_init (&hwin, 0, 0,
- (notify_bar ()) ? row - 3 : row - 2, col);
- mvwprintw (hwin.pad.p, 1, 0, "%s", help_text);
- hwin.total_lines = 7;
- wins_scrollwin_display (&hwin);
- wgetch (hwin.win.p);
- wins_scrollwin_delete (&hwin);
- need_reset = 1;
- break;
- case KEY_GENERIC_SELECT:
- mark = cursor;
- break;
- case KEY_MOVE_DOWN:
- if (cursor % LAYOUTSPERCOL < LAYOUTSPERCOL - 1)
- cursor++;
- break;
- case KEY_MOVE_UP:
- if (cursor % LAYOUTSPERCOL > 0)
- cursor--;
- break;
- case KEY_MOVE_LEFT:
- if (cursor >= LAYOUTSPERCOL)
- cursor -= LAYOUTSPERCOL;
- break;
- case KEY_MOVE_RIGHT:
- if (cursor < NBLAYOUTS - LAYOUTSPERCOL)
- cursor += LAYOUTSPERCOL;
- break;
- case KEY_GENERIC_CANCEL:
- need_reset = 1;
- break;
- }
+ custom_confwin_init(&conf_win, label);
+ cursor = mark = wins_layout() - 1;
+ display_layout_config(&conf_win, mark, cursor);
+ clear();
+
+ while ((ch = keys_getch(win[STA].p, NULL)) != KEY_GENERIC_QUIT) {
+ need_reset = 0;
+ switch (ch) {
+ case KEY_GENERIC_HELP:
+ help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col);
+ mvwprintw(hwin.pad.p, 1, 0, "%s", help_text);
+ hwin.total_lines = 7;
+ wins_scrollwin_display(&hwin);
+ wgetch(hwin.win.p);
+ wins_scrollwin_delete(&hwin);
+ need_reset = 1;
+ break;
+ case KEY_GENERIC_SELECT:
+ mark = cursor;
+ break;
+ case KEY_MOVE_DOWN:
+ if (cursor % LAYOUTSPERCOL < LAYOUTSPERCOL - 1)
+ cursor++;
+ break;
+ case KEY_MOVE_UP:
+ if (cursor % LAYOUTSPERCOL > 0)
+ cursor--;
+ break;
+ case KEY_MOVE_LEFT:
+ if (cursor >= LAYOUTSPERCOL)
+ cursor -= LAYOUTSPERCOL;
+ break;
+ case KEY_MOVE_RIGHT:
+ if (cursor < NBLAYOUTS - LAYOUTSPERCOL)
+ cursor += LAYOUTSPERCOL;
+ break;
+ case KEY_GENERIC_CANCEL:
+ need_reset = 1;
+ break;
+ }
- if (resize)
- {
- resize = 0;
- endwin ();
- wins_refresh ();
- curs_set (0);
- need_reset = 1;
- }
+ if (resize) {
+ resize = 0;
+ endwin();
+ wins_refresh();
+ curs_set(0);
+ need_reset = 1;
+ }
- if (need_reset)
- custom_confwin_init (&conf_win, label);
+ if (need_reset)
+ custom_confwin_init(&conf_win, label);
- display_layout_config (&conf_win, mark, cursor);
- }
- wins_set_layout (mark + 1);
- delwin (conf_win.p);
+ display_layout_config(&conf_win, mark, cursor);
+ }
+ wins_set_layout(mark + 1);
+ delwin(conf_win.p);
}
#undef NBLAYOUTS
#undef LAYOUTSPERCOL
/* Sidebar configuration screen. */
-void
-custom_sidebar_config (void)
+void custom_sidebar_config(void)
{
struct scrollwin hwin;
- struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
- struct binding inc = {_("Width +"), KEY_MOVE_UP};
- struct binding dec = {_("Width -"), KEY_MOVE_DOWN};
- struct binding help = {_("Help"), KEY_GENERIC_HELP};
+ struct binding quit = { _("Exit"), KEY_GENERIC_QUIT };
+ struct binding inc = { _("Width +"), KEY_MOVE_UP };
+ struct binding dec = { _("Width -"), KEY_MOVE_DOWN };
+ struct binding help = { _("Help"), KEY_GENERIC_HELP };
struct binding *bindings[] = {
- &inc, &dec, &help, &quit
+ &inc, &dec, &help, &quit
};
const char *help_text =
- _("This configuration screen is used to change the width of the side bar.\n"
- "The side bar is the part of the screen which contains two panels:\n"
- "the calendar and, depending on the chosen layout, either the todo list\n"
- "or the appointment list.\n\n"
- "The side bar width can be up to 50% of the total screen width, but\n"
- "can't be smaller than " TOSTRING(SBARMINWIDTH) " characters wide.\n\n");
+ _
+ ("This configuration screen is used to change the width of the side bar.\n"
+ "The side bar is the part of the screen which contains two panels:\n"
+ "the calendar and, depending on the chosen layout, either the todo list\n"
+ "or the appointment list.\n\n"
+ "The side bar width can be up to 50% of the total screen width, but\n"
+ "can't be smaller than " TOSTRING(SBARMINWIDTH) " characters wide.\n\n");
int ch, bindings_size;
- bindings_size = sizeof (bindings) / sizeof (bindings[0]);
-
- keys_display_bindings_bar (win[STA].p, bindings, bindings_size, 0,
- bindings_size, NULL);
- wins_doupdate ();
-
- while ((ch = keys_getch (win[STA].p, NULL)) != KEY_GENERIC_QUIT)
- {
- switch (ch)
- {
- case KEY_MOVE_UP:
- wins_sbar_winc ();
- break;
- case KEY_MOVE_DOWN:
- wins_sbar_wdec ();
- break;
- case KEY_GENERIC_HELP:
- help_wins_init (&hwin, 0, 0,
- (notify_bar ()) ? row - 3 : row - 2, col);
- mvwprintw (hwin.pad.p, 1, 0, "%s", help_text);
- hwin.total_lines = 6;
- wins_scrollwin_display (&hwin);
- wgetch (hwin.win.p);
- wins_scrollwin_delete (&hwin);
- break;
- case KEY_RESIZE:
- break;
- default:
- continue;
- }
+ bindings_size = sizeof(bindings) / sizeof(bindings[0]);
+
+ keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0,
+ bindings_size, NULL);
+ wins_doupdate();
+
+ while ((ch = keys_getch(win[STA].p, NULL)) != KEY_GENERIC_QUIT) {
+ switch (ch) {
+ case KEY_MOVE_UP:
+ wins_sbar_winc();
+ break;
+ case KEY_MOVE_DOWN:
+ wins_sbar_wdec();
+ break;
+ case KEY_GENERIC_HELP:
+ help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col);
+ mvwprintw(hwin.pad.p, 1, 0, "%s", help_text);
+ hwin.total_lines = 6;
+ wins_scrollwin_display(&hwin);
+ wgetch(hwin.win.p);
+ wins_scrollwin_delete(&hwin);
+ break;
+ case KEY_RESIZE:
+ break;
+ default:
+ continue;
+ }
- if (resize)
- {
- resize = 0;
- wins_reset ();
- }
- else
- {
- wins_reinit_panels ();
- wins_update_border (FLAG_ALL);
- wins_update_panels (FLAG_ALL);
- keys_display_bindings_bar (win[STA].p, bindings, bindings_size, 0,
- bindings_size, NULL);
- wins_doupdate ();
- }
+ if (resize) {
+ resize = 0;
+ wins_reset();
+ } else {
+ wins_reinit_panels();
+ wins_update_border(FLAG_ALL);
+ wins_update_panels(FLAG_ALL);
+ keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0,
+ bindings_size, NULL);
+ wins_doupdate();
}
+ }
}
-static void
-set_confwin_attr (struct window *cwin)
+static void set_confwin_attr(struct window *cwin)
{
- cwin->h = (notify_bar ())? row - 3 : row - 2;
+ cwin->h = (notify_bar())? row - 3 : row - 2;
cwin->w = col;
cwin->x = cwin->y = 0;
}
@@ -372,49 +356,45 @@ set_confwin_attr (struct window *cwin)
* Create a configuration window and initialize status and notification bar
* (useful in case of window resize).
*/
-void
-custom_confwin_init (struct window *confwin, const char *label)
+void custom_confwin_init(struct window *confwin, const char *label)
{
- if (confwin->p)
- {
- erase_window_part (confwin->p, confwin->x, confwin->y,
- confwin->x + confwin->w, confwin->y + confwin->h);
- delwin (confwin->p);
- }
-
- wins_get_config ();
- set_confwin_attr (confwin);
- confwin->p = newwin (confwin->h, col, 0, 0);
- box (confwin->p, 0, 0);
- wins_show (confwin->p, label);
- delwin (win[STA].p);
- win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y, win[STA].x);
- keypad (win[STA].p, TRUE);
- if (notify_bar ())
- {
- notify_reinit_bar ();
- notify_update_bar ();
- }
+ if (confwin->p) {
+ erase_window_part(confwin->p, confwin->x, confwin->y,
+ confwin->x + confwin->w, confwin->y + confwin->h);
+ delwin(confwin->p);
+ }
+
+ wins_get_config();
+ set_confwin_attr(confwin);
+ confwin->p = newwin(confwin->h, col, 0, 0);
+ box(confwin->p, 0, 0);
+ wins_show(confwin->p, label);
+ delwin(win[STA].p);
+ win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x);
+ keypad(win[STA].p, TRUE);
+ if (notify_bar()) {
+ notify_reinit_bar();
+ notify_update_bar();
+ }
}
-static void
-color_selection_bar (void)
+static void color_selection_bar(void)
{
- 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};
+ 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 };
struct binding *bindings[] = {
&quit, &nocolor, &up, &down, &left, &right, &select
};
- int bindings_size = sizeof (bindings) / sizeof (bindings[0]);
+ int bindings_size = sizeof(bindings) / sizeof(bindings[0]);
- keys_display_bindings_bar (win[STA].p, bindings, bindings_size, 0,
- bindings_size, NULL);
+ keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0,
+ bindings_size, NULL);
}
/*
@@ -422,8 +402,8 @@ color_selection_bar (void)
* This is useful for window resizing.
*/
static void
-display_color_config (struct window *cwin, int *mark_fore, int *mark_back,
- int cursor, int theme_changed)
+display_color_config(struct window *cwin, int *mark_fore, int *mark_back,
+ int cursor, int theme_changed)
{
#define SIZE (2 * (NBUSERCOLORS + 1))
#define DEFAULTCOLOR 255
@@ -439,13 +419,12 @@ display_color_config (struct window *cwin, int *mark_fore, int *mark_back,
const unsigned Y = 3;
const unsigned XOFST = 5;
const unsigned YSPC = (cwin->h - 8) / (NBUSERCOLORS + 1);
- const unsigned BARSIZ = strlen (bar);
- const unsigned BOXSIZ = strlen (box);
+ const unsigned BARSIZ = strlen(bar);
+ const unsigned BOXSIZ = strlen(box);
const unsigned XSPC = (cwin->w - 2 * BARSIZ - 2 * BOXSIZ - 6) / 3;
const unsigned XFORE = XSPC;
const unsigned XBACK = 2 * XSPC + BOXSIZ + XOFST + BARSIZ;
- enum
- { YPOS, XPOS, NBPOS };
+ enum { YPOS, XPOS, NBPOS };
unsigned i;
int pos[SIZE][NBPOS];
short colr_fore, colr_back;
@@ -456,92 +435,82 @@ display_color_config (struct window *cwin, int *mark_fore, int *mark_back,
COLR_MAGENTA, COLR_CYAN, COLR_DEFAULT
};
- for (i = 0; i < NBUSERCOLORS + 1; i++)
- {
- pos[i][YPOS] = Y + YSPC * (i + 1);
- pos[NBUSERCOLORS + i + 1][YPOS] = Y + YSPC * (i + 1);
- pos[i][XPOS] = XFORE;
- pos[NBUSERCOLORS + i + 1][XPOS] = XBACK;
- }
-
- if (colorize)
- {
- if (theme_changed)
- {
- pair_content (colr[*mark_fore], &colr_fore, 0L);
- if (colr_fore == 255)
- colr_fore = -1;
- pair_content (colr[*mark_back], &colr_back, 0L);
- if (colr_back == 255)
- colr_back = -1;
- init_pair (COLR_CUSTOM, colr_fore, colr_back);
- }
+ for (i = 0; i < NBUSERCOLORS + 1; i++) {
+ pos[i][YPOS] = Y + YSPC * (i + 1);
+ pos[NBUSERCOLORS + i + 1][YPOS] = Y + YSPC * (i + 1);
+ pos[i][XPOS] = XFORE;
+ pos[NBUSERCOLORS + i + 1][XPOS] = XBACK;
+ }
+
+ if (colorize) {
+ if (theme_changed) {
+ pair_content(colr[*mark_fore], &colr_fore, 0L);
+ if (colr_fore == 255)
+ colr_fore = -1;
+ pair_content(colr[*mark_back], &colr_back, 0L);
+ if (colr_back == 255)
+ colr_back = -1;
+ init_pair(COLR_CUSTOM, colr_fore, colr_back);
+ } else {
+ /* Retrieve the actual color theme. */
+ pair_content(COLR_CUSTOM, &colr_fore, &colr_back);
+
+ if ((colr_fore == DEFAULTCOLOR) || (colr_fore == DEFAULTCOLOR_EXT))
+ *mark_fore = NBUSERCOLORS;
else
- {
- /* Retrieve the actual color theme. */
- pair_content (COLR_CUSTOM, &colr_fore, &colr_back);
+ for (i = 0; i < NBUSERCOLORS + 1; i++)
+ if (colr_fore == colr[i])
+ *mark_fore = i;
- if ((colr_fore == DEFAULTCOLOR) || (colr_fore == DEFAULTCOLOR_EXT))
- *mark_fore = NBUSERCOLORS;
- else
- for (i = 0; i < NBUSERCOLORS + 1; i++)
- if (colr_fore == colr[i])
- *mark_fore = i;
-
- if ((colr_back == DEFAULTCOLOR) || (colr_back == DEFAULTCOLOR_EXT))
- *mark_back = SIZE - 1;
- else
- for (i = 0; i < NBUSERCOLORS + 1; i++)
- if (colr_back == colr[NBUSERCOLORS + 1 + i])
- *mark_back = NBUSERCOLORS + 1 + i;
- }
+ if ((colr_back == DEFAULTCOLOR) || (colr_back == DEFAULTCOLOR_EXT))
+ *mark_back = SIZE - 1;
+ else
+ for (i = 0; i < NBUSERCOLORS + 1; i++)
+ if (colr_back == colr[NBUSERCOLORS + 1 + i])
+ *mark_back = NBUSERCOLORS + 1 + i;
}
+ }
/* color boxes */
- for (i = 0; i < SIZE - 1; i++)
- {
- mvwprintw (cwin->p, pos[i][YPOS], pos[i][XPOS], box);
- wattron (cwin->p, COLOR_PAIR (colr[i]) | A_REVERSE);
- mvwprintw (cwin->p, pos[i][YPOS], pos[i][XPOS] + XOFST, bar);
- wattroff (cwin->p, COLOR_PAIR (colr[i]) | A_REVERSE);
- }
+ for (i = 0; i < SIZE - 1; i++) {
+ mvwprintw(cwin->p, pos[i][YPOS], pos[i][XPOS], box);
+ wattron(cwin->p, COLOR_PAIR(colr[i]) | A_REVERSE);
+ mvwprintw(cwin->p, pos[i][YPOS], pos[i][XPOS] + XOFST, bar);
+ wattroff(cwin->p, COLOR_PAIR(colr[i]) | A_REVERSE);
+ }
/* Terminal's default color */
i = SIZE - 1;
- mvwprintw (cwin->p, pos[i][YPOS], pos[i][XPOS], box);
- wattron (cwin->p, COLOR_PAIR (colr[i]));
- mvwprintw (cwin->p, pos[i][YPOS], pos[i][XPOS] + XOFST, bar);
- wattroff (cwin->p, COLOR_PAIR (colr[i]));
- mvwprintw (cwin->p, pos[NBUSERCOLORS][YPOS] + 1,
- pos[NBUSERCOLORS][XPOS] + XOFST, default_txt);
- mvwprintw (cwin->p, pos[SIZE - 1][YPOS] + 1,
- pos[SIZE - 1][XPOS] + XOFST, default_txt);
-
- custom_apply_attr (cwin->p, ATTR_HIGHEST);
- mvwprintw (cwin->p, Y, XFORE + XOFST, fore_txt);
- mvwprintw (cwin->p, Y, XBACK + XOFST, back_txt);
- custom_remove_attr (cwin->p, ATTR_HIGHEST);
-
- if (colorize)
- {
- mvwaddch (cwin->p, pos[*mark_fore][YPOS],
- pos[*mark_fore][XPOS] + 1, MARK);
- mvwaddch (cwin->p, pos[*mark_back][YPOS],
- pos[*mark_back][XPOS] + 1, MARK);
- }
-
- mvwaddch (cwin->p, pos[cursor][YPOS], pos[cursor][XPOS] + 1, CURSOR);
- color_selection_bar ();
- wnoutrefresh (win[STA].p);
- wnoutrefresh (cwin->p);
- wins_doupdate ();
- if (notify_bar ())
- notify_update_bar ();
+ mvwprintw(cwin->p, pos[i][YPOS], pos[i][XPOS], box);
+ wattron(cwin->p, COLOR_PAIR(colr[i]));
+ mvwprintw(cwin->p, pos[i][YPOS], pos[i][XPOS] + XOFST, bar);
+ wattroff(cwin->p, COLOR_PAIR(colr[i]));
+ mvwprintw(cwin->p, pos[NBUSERCOLORS][YPOS] + 1,
+ pos[NBUSERCOLORS][XPOS] + XOFST, default_txt);
+ mvwprintw(cwin->p, pos[SIZE - 1][YPOS] + 1,
+ pos[SIZE - 1][XPOS] + XOFST, default_txt);
+
+ custom_apply_attr(cwin->p, ATTR_HIGHEST);
+ mvwprintw(cwin->p, Y, XFORE + XOFST, fore_txt);
+ mvwprintw(cwin->p, Y, XBACK + XOFST, back_txt);
+ custom_remove_attr(cwin->p, ATTR_HIGHEST);
+
+ if (colorize) {
+ mvwaddch(cwin->p, pos[*mark_fore][YPOS], pos[*mark_fore][XPOS] + 1, MARK);
+ mvwaddch(cwin->p, pos[*mark_back][YPOS], pos[*mark_back][XPOS] + 1, MARK);
+ }
+
+ mvwaddch(cwin->p, pos[cursor][YPOS], pos[cursor][XPOS] + 1, CURSOR);
+ color_selection_bar();
+ wnoutrefresh(win[STA].p);
+ wnoutrefresh(cwin->p);
+ wins_doupdate();
+ if (notify_bar())
+ notify_update_bar();
}
/* Color theme configuration. */
-void
-custom_color_config (void)
+void custom_color_config(void)
{
struct window conf_win;
int ch, cursor, need_reset, theme_changed;
@@ -549,78 +518,75 @@ custom_color_config (void)
const char *label = _("color theme");
conf_win.p = 0;
- custom_confwin_init (&conf_win, label);
+ custom_confwin_init(&conf_win, label);
mark_fore = NBUSERCOLORS;
mark_back = SIZE - 1;
cursor = 0;
theme_changed = 0;
- display_color_config (&conf_win, &mark_fore, &mark_back, cursor, theme_changed);
- clear ();
-
- while ((ch = keys_getch (win[STA].p, NULL)) != KEY_GENERIC_QUIT)
- {
- need_reset = 0;
- theme_changed = 0;
-
- switch (ch)
- {
- case KEY_GENERIC_SELECT:
- colorize = 1;
- need_reset = 1;
- theme_changed = 1;
- if (cursor > NBUSERCOLORS)
- mark_back = cursor;
- else
- mark_fore = cursor;
- break;
-
- case KEY_MOVE_DOWN:
- if (cursor < SIZE - 1)
- ++cursor;
- break;
-
- case KEY_MOVE_UP:
- if (cursor > 0)
- --cursor;
- break;
-
- case KEY_MOVE_LEFT:
- if (cursor > NBUSERCOLORS)
- cursor -= (NBUSERCOLORS + 1);
- break;
-
- case KEY_MOVE_RIGHT:
- if (cursor <= NBUSERCOLORS)
- cursor += (NBUSERCOLORS + 1);
- break;
-
- case KEY_GENERIC_CANCEL:
- colorize = 0;
- need_reset = 1;
- break;
- }
+ display_color_config(&conf_win, &mark_fore, &mark_back, cursor,
+ theme_changed);
+ clear();
+
+ while ((ch = keys_getch(win[STA].p, NULL)) != KEY_GENERIC_QUIT) {
+ need_reset = 0;
+ theme_changed = 0;
+
+ switch (ch) {
+ case KEY_GENERIC_SELECT:
+ colorize = 1;
+ need_reset = 1;
+ theme_changed = 1;
+ if (cursor > NBUSERCOLORS)
+ mark_back = cursor;
+ else
+ mark_fore = cursor;
+ break;
+
+ case KEY_MOVE_DOWN:
+ if (cursor < SIZE - 1)
+ ++cursor;
+ break;
+
+ case KEY_MOVE_UP:
+ if (cursor > 0)
+ --cursor;
+ break;
+
+ case KEY_MOVE_LEFT:
+ if (cursor > NBUSERCOLORS)
+ cursor -= (NBUSERCOLORS + 1);
+ break;
+
+ case KEY_MOVE_RIGHT:
+ if (cursor <= NBUSERCOLORS)
+ cursor += (NBUSERCOLORS + 1);
+ break;
+
+ case KEY_GENERIC_CANCEL:
+ colorize = 0;
+ need_reset = 1;
+ break;
+ }
- if (resize)
- {
- resize = 0;
- endwin ();
- wins_refresh ();
- curs_set (0);
- need_reset = 1;
- }
+ if (resize) {
+ resize = 0;
+ endwin();
+ wins_refresh();
+ curs_set(0);
+ need_reset = 1;
+ }
- if (need_reset)
- custom_confwin_init (&conf_win, label);
+ if (need_reset)
+ custom_confwin_init(&conf_win, label);
- display_color_config (&conf_win, &mark_fore, &mark_back, cursor,
- theme_changed);
- }
- delwin (conf_win.p);
+ display_color_config(&conf_win, &mark_fore, &mark_back, cursor,
+ theme_changed);
+ }
+ delwin(conf_win.p);
}
/* Prints the general options. */
-static int
-print_general_options (WINDOW *win)
+static int print_general_options(WINDOW * win)
{
enum {
AUTO_SAVE,
@@ -652,88 +618,86 @@ print_general_options (WINDOW *win)
};
y = 0;
- mvwprintw (win, y, XPOS, "[1] %s ", opt[AUTO_SAVE]);
- print_bool_option_incolor (win, conf.auto_save, y,
- XPOS + 4 + strlen (opt[AUTO_SAVE]));
- mvwprintw (win, y + 1, XPOS,
- _("(if set to YES, automatic save is done when quitting)"));
+ mvwprintw(win, y, XPOS, "[1] %s ", opt[AUTO_SAVE]);
+ print_bool_option_incolor(win, conf.auto_save, y,
+ XPOS + 4 + strlen(opt[AUTO_SAVE]));
+ mvwprintw(win, y + 1, XPOS,
+ _("(if set to YES, automatic save is done when quitting)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[2] %s ", opt[AUTO_GC]);
- print_bool_option_incolor (win, conf.auto_gc, y,
- XPOS + 4 + strlen (opt[AUTO_GC]));
- mvwprintw (win, y + 1, XPOS,
- _("(run the garbage collector when quitting)"));
+ mvwprintw(win, y, XPOS, "[2] %s ", opt[AUTO_GC]);
+ print_bool_option_incolor(win, conf.auto_gc, y,
+ XPOS + 4 + strlen(opt[AUTO_GC]));
+ mvwprintw(win, y + 1, XPOS, _("(run the garbage collector when quitting)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[3] %s ", opt[PERIODIC_SAVE]);
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y, XPOS + 4 + strlen (opt[PERIODIC_SAVE]), "%d",
- conf.periodic_save);
- custom_remove_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y + 1, XPOS,
- _("(if not null, automatically save data every 'periodic_save' "
- "minutes)"));
+ mvwprintw(win, y, XPOS, "[3] %s ", opt[PERIODIC_SAVE]);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y, XPOS + 4 + strlen(opt[PERIODIC_SAVE]), "%d",
+ conf.periodic_save);
+ custom_remove_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y + 1, XPOS,
+ _("(if not null, automatically save data every 'periodic_save' "
+ "minutes)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[4] %s ", opt[CONFIRM_QUIT]);
- print_bool_option_incolor (win, conf.confirm_quit, y,
- XPOS + 4 + strlen (opt[CONFIRM_QUIT]));
- mvwprintw (win, y + 1, XPOS,
- _("(if set to YES, confirmation is required before quitting)"));
+ mvwprintw(win, y, XPOS, "[4] %s ", opt[CONFIRM_QUIT]);
+ print_bool_option_incolor(win, conf.confirm_quit, y,
+ XPOS + 4 + strlen(opt[CONFIRM_QUIT]));
+ mvwprintw(win, y + 1, XPOS,
+ _("(if set to YES, confirmation is required before quitting)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[5] %s ", opt[CONFIRM_DELETE]);
- print_bool_option_incolor (win, conf.confirm_delete, y,
- XPOS + 4 + strlen (opt[CONFIRM_DELETE]));
- mvwprintw (win, y + 1, XPOS,
- _("(if set to YES, confirmation is required "
- "before deleting an event)"));
+ mvwprintw(win, y, XPOS, "[5] %s ", opt[CONFIRM_DELETE]);
+ print_bool_option_incolor(win, conf.confirm_delete, y,
+ XPOS + 4 + strlen(opt[CONFIRM_DELETE]));
+ mvwprintw(win, y + 1, XPOS,
+ _("(if set to YES, confirmation is required "
+ "before deleting an event)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[6] %s ", opt[SYSTEM_DIAGS]);
- print_bool_option_incolor (win, conf.system_dialogs, y,
- XPOS + 4 + strlen (opt[SYSTEM_DIAGS]));
- mvwprintw (win, y + 1, XPOS,
- _("(if set to YES, messages about loaded "
- "and saved data will be displayed)"));
+ mvwprintw(win, y, XPOS, "[6] %s ", opt[SYSTEM_DIAGS]);
+ print_bool_option_incolor(win, conf.system_dialogs, y,
+ XPOS + 4 + strlen(opt[SYSTEM_DIAGS]));
+ mvwprintw(win, y + 1, XPOS,
+ _("(if set to YES, messages about loaded "
+ "and saved data will be displayed)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[7] %s ", opt[PROGRESS_BAR]);
- print_bool_option_incolor (win, conf.progress_bar, y,
- XPOS + 4 + strlen (opt[PROGRESS_BAR]));
- mvwprintw (win, y + 1, XPOS,
- _("(if set to YES, progress bar will be displayed "
- "when saving data)"));
+ mvwprintw(win, y, XPOS, "[7] %s ", opt[PROGRESS_BAR]);
+ print_bool_option_incolor(win, conf.progress_bar, y,
+ XPOS + 4 + strlen(opt[PROGRESS_BAR]));
+ mvwprintw(win, y + 1, XPOS,
+ _("(if set to YES, progress bar will be displayed "
+ "when saving data)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[8] %s ", opt[FIRST_DAY_OF_WEEK]);
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y, XPOS + 4 + strlen (opt[FIRST_DAY_OF_WEEK]), "%s",
- calendar_week_begins_on_monday () ? _("Monday") : _("Sunday"));
- custom_remove_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y + 1, XPOS,
- _("(specifies the first day of week in the calendar view)"));
+ mvwprintw(win, y, XPOS, "[8] %s ", opt[FIRST_DAY_OF_WEEK]);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y, XPOS + 4 + strlen(opt[FIRST_DAY_OF_WEEK]), "%s",
+ calendar_week_begins_on_monday()? _("Monday") : _("Sunday"));
+ custom_remove_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y + 1, XPOS,
+ _("(specifies the first day of week in the calendar view)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[9] %s ", opt[OUTPUT_DATE_FMT]);
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y, XPOS + 4 + strlen (opt[OUTPUT_DATE_FMT]), "%s",
- conf.output_datefmt);
- custom_remove_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y + 1, XPOS,
- _("(Format of the date to be displayed in non-interactive mode)"));
+ mvwprintw(win, y, XPOS, "[9] %s ", opt[OUTPUT_DATE_FMT]);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y, XPOS + 4 + strlen(opt[OUTPUT_DATE_FMT]), "%s",
+ conf.output_datefmt);
+ custom_remove_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y + 1, XPOS,
+ _("(Format of the date to be displayed in non-interactive mode)"));
y += YOFF;
- mvwprintw (win, y, XPOS, "[0] %s ", opt[INPUT_DATE_FMT]);
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y, XPOS + 4 + strlen (opt[INPUT_DATE_FMT]), "%d",
- conf.input_datefmt);
- custom_remove_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y + 1, XPOS, _("(Format to be used when entering a date: "));
- mvwprintw (win, y + 2, XPOS,
- _(" (1)mm/dd/yyyy (2)dd/mm/yyyy (3)yyyy/mm/dd (4)yyyy-mm-dd)"));
+ mvwprintw(win, y, XPOS, "[0] %s ", opt[INPUT_DATE_FMT]);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y, XPOS + 4 + strlen(opt[INPUT_DATE_FMT]), "%d",
+ conf.input_datefmt);
+ custom_remove_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y + 1, XPOS, _("(Format to be used when entering a date: "));
+ mvwprintw(win, y + 2, XPOS,
+ _(" (1)mm/dd/yyyy (2)dd/mm/yyyy (3)yyyy/mm/dd (4)yyyy-mm-dd)"));
return y + YOFF;
}
-void
-custom_set_swsiz (struct scrollwin *sw)
+void custom_set_swsiz(struct scrollwin *sw)
{
sw->win.x = 0;
sw->win.y = 0;
- sw->win.h = (notify_bar ()) ? row - 3 : row - 2;
+ sw->win.h = (notify_bar())? row - 3 : row - 2;
sw->win.w = col;
sw->pad.x = 1;
@@ -743,145 +707,132 @@ custom_set_swsiz (struct scrollwin *sw)
}
/* General configuration. */
-void
-custom_general_config (void)
+void custom_general_config(void)
{
struct scrollwin cwin;
- const char *number_str =
- _("Enter an option number to change its value");
- const char *keys =
- _("(Press '^P' or '^N' to move up or down, 'Q' to quit)");
+ const char *number_str = _("Enter an option number to change its value");
+ const char *keys = _("(Press '^P' or '^N' to move up or down, 'Q' to quit)");
const char *output_datefmt_str =
- _("Enter the date format (see 'man 3 strftime' for possible formats) ");
+ _("Enter the date format (see 'man 3 strftime' for possible formats) ");
const char *input_datefmt_str =
- _("Enter the date format (1)mm/dd/yyyy (2)dd/mm/yyyy (3)yyyy/mm/dd "
- "(4)yyyy-mm-dd");
+ _("Enter the date format (1)mm/dd/yyyy (2)dd/mm/yyyy (3)yyyy/mm/dd "
+ "(4)yyyy-mm-dd");
const char *periodic_save_str =
- _("Enter the delay, in minutes, between automatic saves (0 to disable) ");
+ _("Enter the delay, in minutes, between automatic saves (0 to disable) ");
int ch;
char *buf;
- clear ();
- custom_set_swsiz (&cwin);
+ clear();
+ custom_set_swsiz(&cwin);
cwin.label = _("general options");
- wins_scrollwin_init (&cwin);
- wins_show (cwin.win.p, cwin.label);
- status_mesg (number_str, keys);
- cwin.total_lines = print_general_options (cwin.pad.p);
- wins_scrollwin_display (&cwin);
-
- buf = mem_malloc (BUFSIZ);
- while ((ch = wgetch (win[STA].p)) != 'q')
- {
- buf[0] = '\0';
-
- switch (ch)
- {
- case CTRL ('N'):
- wins_scrollwin_down (&cwin, 1);
- break;
- case CTRL ('P'):
- wins_scrollwin_up (&cwin, 1);
- break;
- case '1':
- conf.auto_save = !conf.auto_save;
- break;
- case '2':
- conf.auto_gc = !conf.auto_gc;
- break;
- case '3':
- status_mesg (periodic_save_str, "");
- if (updatestring (win[STA].p, &buf, 0, 1) == 0)
- {
- int val = atoi (buf);
- if (val >= 0)
- conf.periodic_save = val;
- if (conf.periodic_save > 0)
- io_start_psave_thread ();
- else if (conf.periodic_save == 0)
- io_stop_psave_thread ();
- }
- status_mesg (number_str, keys);
- break;
- case '4':
- conf.confirm_quit = !conf.confirm_quit;
- break;
- case '5':
- conf.confirm_delete = !conf.confirm_delete;
- break;
- case '6':
- conf.system_dialogs = !conf.system_dialogs;
- break;
- case '7':
- conf.progress_bar = !conf.progress_bar;
- break;
- case '8':
- calendar_change_first_day_of_week ();
- break;
- case '9':
- status_mesg (output_datefmt_str, "");
- strncpy (buf, conf.output_datefmt,
- strlen (conf.output_datefmt) + 1);
- if (updatestring (win[STA].p, &buf, 0, 1) == 0)
- {
- strncpy (conf.output_datefmt, buf, strlen (buf) + 1);
- }
- status_mesg (number_str, keys);
- break;
- case '0':
- status_mesg (input_datefmt_str, "");
- if (updatestring (win[STA].p, &buf, 0, 1) == 0)
- {
- int val = atoi (buf);
- if (val > 0 && val <= DATE_FORMATS)
- conf.input_datefmt = val;
- }
- status_mesg (number_str, keys);
- break;
- }
-
- if (resize)
- {
- resize = 0;
- wins_reset ();
- wins_scrollwin_delete (&cwin);
- custom_set_swsiz (&cwin);
- wins_scrollwin_init (&cwin);
- wins_show (cwin.win.p, cwin.label);
- cwin.first_visible_line = 0;
- delwin (win[STA].p);
- win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y,
- win[STA].x);
- keypad (win[STA].p, TRUE);
- if (notify_bar ())
- {
- notify_reinit_bar ();
- notify_update_bar ();
- }
- }
+ wins_scrollwin_init(&cwin);
+ wins_show(cwin.win.p, cwin.label);
+ status_mesg(number_str, keys);
+ cwin.total_lines = print_general_options(cwin.pad.p);
+ wins_scrollwin_display(&cwin);
+
+ buf = mem_malloc(BUFSIZ);
+ while ((ch = wgetch(win[STA].p)) != 'q') {
+ buf[0] = '\0';
+
+ switch (ch) {
+ case CTRL('N'):
+ wins_scrollwin_down(&cwin, 1);
+ break;
+ case CTRL('P'):
+ wins_scrollwin_up(&cwin, 1);
+ break;
+ case '1':
+ conf.auto_save = !conf.auto_save;
+ break;
+ case '2':
+ conf.auto_gc = !conf.auto_gc;
+ break;
+ case '3':
+ status_mesg(periodic_save_str, "");
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
+ int val = atoi(buf);
+ if (val >= 0)
+ conf.periodic_save = val;
+ if (conf.periodic_save > 0)
+ io_start_psave_thread();
+ else if (conf.periodic_save == 0)
+ io_stop_psave_thread();
+ }
+ status_mesg(number_str, keys);
+ break;
+ case '4':
+ conf.confirm_quit = !conf.confirm_quit;
+ break;
+ case '5':
+ conf.confirm_delete = !conf.confirm_delete;
+ break;
+ case '6':
+ conf.system_dialogs = !conf.system_dialogs;
+ break;
+ case '7':
+ conf.progress_bar = !conf.progress_bar;
+ break;
+ case '8':
+ calendar_change_first_day_of_week();
+ break;
+ case '9':
+ status_mesg(output_datefmt_str, "");
+ strncpy(buf, conf.output_datefmt, strlen(conf.output_datefmt) + 1);
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
+ strncpy(conf.output_datefmt, buf, strlen(buf) + 1);
+ }
+ status_mesg(number_str, keys);
+ break;
+ case '0':
+ status_mesg(input_datefmt_str, "");
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
+ int val = atoi(buf);
+ if (val > 0 && val <= DATE_FORMATS)
+ conf.input_datefmt = val;
+ }
+ status_mesg(number_str, keys);
+ break;
+ }
- status_mesg (number_str, keys);
- cwin.total_lines = print_general_options (cwin.pad.p);
- wins_scrollwin_display (&cwin);
+ if (resize) {
+ resize = 0;
+ wins_reset();
+ wins_scrollwin_delete(&cwin);
+ custom_set_swsiz(&cwin);
+ wins_scrollwin_init(&cwin);
+ wins_show(cwin.win.p, cwin.label);
+ cwin.first_visible_line = 0;
+ delwin(win[STA].p);
+ win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x);
+ keypad(win[STA].p, TRUE);
+ if (notify_bar()) {
+ notify_reinit_bar();
+ notify_update_bar();
+ }
}
- mem_free (buf);
- wins_scrollwin_delete (&cwin);
-}
+ status_mesg(number_str, keys);
+ cwin.total_lines = print_general_options(cwin.pad.p);
+ wins_scrollwin_display(&cwin);
+ }
+ mem_free(buf);
+ wins_scrollwin_delete(&cwin);
+}
static void
-print_key_incolor (WINDOW *win, const char *option, int pos_y, int pos_x)
+print_key_incolor(WINDOW * win, const char *option, int pos_y, int pos_x)
{
const int color = ATTR_HIGHEST;
- RETURN_IF (!option, _("Undefined option!"));
- custom_apply_attr (win, color);
- mvwprintw (win, pos_y, pos_x, "%s ", option);
- custom_remove_attr (win, color);
+ RETURN_IF(!option, _("Undefined option!"));
+ custom_apply_attr(win, color);
+ mvwprintw(win, pos_y, pos_x, "%s ", option);
+ custom_remove_attr(win, color);
}
static int
-print_keys_bindings (WINDOW *win, int selected_row, int selected_elm, int yoff)
+print_keys_bindings(WINDOW * win, int selected_row, int selected_elm, int yoff)
{
const int XPOS = 1;
const int EQUALPOS = 23;
@@ -889,73 +840,65 @@ print_keys_bindings (WINDOW *win, int selected_row, int selected_elm, int yoff)
int noelm, action, y;
noelm = y = 0;
- for (action = 0; action < NBKEYS; action++)
- {
- char actionstr[BUFSIZ];
- int nbkeys;
-
- nbkeys = keys_action_count_keys (action);
- snprintf (actionstr, BUFSIZ, "%s", keys_get_label (action));
- if (action == selected_row)
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y, XPOS, "%s ", actionstr);
- mvwprintw (win, y, EQUALPOS, "=");
- if (nbkeys == 0)
- mvwprintw (win, y, KEYPOS, _("undefined"));
- if (action == selected_row)
- custom_remove_attr (win, ATTR_HIGHEST);
- if (nbkeys > 0)
- {
- if (action == selected_row)
- {
- const char *key;
- int pos;
-
- pos = KEYPOS;
- while ((key = keys_action_nkey (action, noelm)) != NULL)
- {
- if (noelm == selected_elm)
- print_key_incolor (win, key, y, pos);
- else
- mvwprintw (win, y, pos, "%s ", key);
- noelm++;
- pos += strlen (key) + 1;
- }
- }
+ for (action = 0; action < NBKEYS; action++) {
+ char actionstr[BUFSIZ];
+ int nbkeys;
+
+ nbkeys = keys_action_count_keys(action);
+ snprintf(actionstr, BUFSIZ, "%s", keys_get_label(action));
+ if (action == selected_row)
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y, XPOS, "%s ", actionstr);
+ mvwprintw(win, y, EQUALPOS, "=");
+ if (nbkeys == 0)
+ mvwprintw(win, y, KEYPOS, _("undefined"));
+ if (action == selected_row)
+ custom_remove_attr(win, ATTR_HIGHEST);
+ if (nbkeys > 0) {
+ if (action == selected_row) {
+ const char *key;
+ int pos;
+
+ pos = KEYPOS;
+ while ((key = keys_action_nkey(action, noelm)) != NULL) {
+ if (noelm == selected_elm)
+ print_key_incolor(win, key, y, pos);
else
- {
- mvwprintw (win, y, KEYPOS, "%s", keys_action_allkeys (action));
- }
+ mvwprintw(win, y, pos, "%s ", key);
+ noelm++;
+ pos += strlen(key) + 1;
}
- y += yoff;
+ } else {
+ mvwprintw(win, y, KEYPOS, "%s", keys_action_allkeys(action));
+ }
}
+ y += yoff;
+ }
return noelm;
}
-static void
-custom_keys_config_bar (void)
+static void custom_keys_config_bar(void)
{
- 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};
+ 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 };
struct binding *bindings[] = {
&quit, &info, &add, &del, &up, &down, &left, &right
};
- int bindings_size = sizeof (bindings) / sizeof (bindings[0]);
+ int bindings_size = sizeof(bindings) / sizeof(bindings[0]);
- keys_display_bindings_bar (win[STA].p, bindings, bindings_size, 0,
- bindings_size, NULL);
+ keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0,
+ bindings_size, NULL);
}
-void
-custom_keys_config (void)
+void custom_keys_config(void)
{
struct scrollwin kwin;
int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed;
@@ -965,139 +908,125 @@ custom_keys_config (void)
const int LINESPERKEY = 2;
const int LABELLINES = 3;
- clear ();
- custom_set_swsiz (&kwin);
+ clear();
+ custom_set_swsiz(&kwin);
nbdisplayed = (kwin.win.h - LABELLINES) / LINESPERKEY;
kwin.label = _("keys configuration");
- wins_scrollwin_init (&kwin);
- wins_show (kwin.win.p, kwin.label);
- custom_keys_config_bar ();
+ wins_scrollwin_init(&kwin);
+ wins_show(kwin.win.p, kwin.label);
+ custom_keys_config_bar();
selrow = selelm = 0;
- nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm, LINESPERKEY);
+ nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm, LINESPERKEY);
kwin.total_lines = NBKEYS * LINESPERKEY;
- wins_scrollwin_display (&kwin);
+ wins_scrollwin_display(&kwin);
firstrow = 0;
lastrow = firstrow + nbdisplayed - 1;
- for (;;)
- {
- int ch;
-
- ch = keys_getch (win[STA].p, NULL);
- switch (ch)
- {
- case KEY_MOVE_UP:
- if (selrow > 0)
- {
- selrow--;
- selelm = 0;
- if (selrow == firstrow)
- {
- firstrow--;
- lastrow--;
- wins_scrollwin_up (&kwin, LINESPERKEY);
- }
- }
- break;
- case KEY_MOVE_DOWN:
- if (selrow < NBKEYS - 1)
- {
- selrow++;
- selelm = 0;
- if (selrow == lastrow)
- {
- firstrow++;
- lastrow++;
- wins_scrollwin_down (&kwin, LINESPERKEY);
- }
- }
- break;
- case KEY_MOVE_LEFT:
- if (selelm > 0)
- selelm--;
- break;
- case KEY_MOVE_RIGHT:
- if (selelm < nbrowelm - 1)
- selelm++;
- break;
- case KEY_GENERIC_HELP:
- keys_popup_info (selrow);
- break;
- case KEY_ADD_ITEM:
+ for (;;) {
+ int ch;
+
+ ch = keys_getch(win[STA].p, NULL);
+ switch (ch) {
+ case KEY_MOVE_UP:
+ if (selrow > 0) {
+ selrow--;
+ selelm = 0;
+ if (selrow == firstrow) {
+ firstrow--;
+ lastrow--;
+ wins_scrollwin_up(&kwin, LINESPERKEY);
+ }
+ }
+ break;
+ case KEY_MOVE_DOWN:
+ if (selrow < NBKEYS - 1) {
+ selrow++;
+ selelm = 0;
+ if (selrow == lastrow) {
+ firstrow++;
+ lastrow++;
+ wins_scrollwin_down(&kwin, LINESPERKEY);
+ }
+ }
+ break;
+ case KEY_MOVE_LEFT:
+ if (selelm > 0)
+ selelm--;
+ break;
+ case KEY_MOVE_RIGHT:
+ if (selelm < nbrowelm - 1)
+ selelm++;
+ break;
+ case KEY_GENERIC_HELP:
+ keys_popup_info(selrow);
+ break;
+ case KEY_ADD_ITEM:
#define WINROW 10
#define WINCOL 50
- do
- {
- used = 0;
- grabwin = popup (WINROW, WINCOL, (row - WINROW) / 2,
- (col - WINCOL) / 2,
- _("Press the key you want to assign to:"),
- keys_get_label (selrow), 0);
- keyval = wgetch (grabwin);
-
- /* First check if this key would be recognized by calcurse. */
- if (keys_str2int (keys_int2str (keyval)) == -1)
- {
- not_recognized = 1;
- WARN_MSG (_("This key is not yet recognized by calcurse, "
- "please choose another one."));
- werase (kwin.pad.p);
- nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm,
- LINESPERKEY);
- wins_scrollwin_display (&kwin);
- continue;
- }
- else
- not_recognized = 0;
-
- used = keys_assign_binding (keyval, selrow);
- if (used)
- {
- enum key action;
-
- action = keys_get_action (keyval);
- WARN_MSG (_("This key is already in use for %s, "
- "please choose another one."),
- keys_get_label (action));
- werase (kwin.pad.p);
- nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm,
- LINESPERKEY);
- wins_scrollwin_display (&kwin);
- }
- delwin (grabwin);
- }
- while (used || not_recognized);
- nbrowelm++;
- if (selelm < nbrowelm - 1)
- selelm++;
+ do {
+ used = 0;
+ grabwin = popup(WINROW, WINCOL, (row - WINROW) / 2,
+ (col - WINCOL) / 2,
+ _("Press the key you want to assign to:"),
+ keys_get_label(selrow), 0);
+ keyval = wgetch(grabwin);
+
+ /* First check if this key would be recognized by calcurse. */
+ if (keys_str2int(keys_int2str(keyval)) == -1) {
+ not_recognized = 1;
+ WARN_MSG(_("This key is not yet recognized by calcurse, "
+ "please choose another one."));
+ werase(kwin.pad.p);
+ nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm,
+ LINESPERKEY);
+ wins_scrollwin_display(&kwin);
+ continue;
+ } else
+ not_recognized = 0;
+
+ used = keys_assign_binding(keyval, selrow);
+ if (used) {
+ enum key action;
+
+ action = keys_get_action(keyval);
+ WARN_MSG(_("This key is already in use for %s, "
+ "please choose another one."), keys_get_label(action));
+ werase(kwin.pad.p);
+ nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm,
+ LINESPERKEY);
+ wins_scrollwin_display(&kwin);
+ }
+ delwin(grabwin);
+ }
+ while (used || not_recognized);
+ nbrowelm++;
+ if (selelm < nbrowelm - 1)
+ selelm++;
#undef WINROW
#undef WINCOL
- break;
- case KEY_DEL_ITEM:
- keystr = keys_action_nkey (selrow, selelm);
- keyval = keys_str2int (keystr);
- keys_remove_binding (keyval, selrow);
- nbrowelm--;
- if (selelm > 0 && selelm <= nbrowelm)
- selelm--;
- break;
- case KEY_GENERIC_QUIT:
- if (keys_check_missing_bindings () != 0)
- {
- WARN_MSG (_("Some actions do not have any associated "
- "key bindings!"));
- }
- wins_scrollwin_delete (&kwin);
- return;
- }
- custom_keys_config_bar ();
- werase (kwin.pad.p);
- nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm, LINESPERKEY);
- wins_scrollwin_display (&kwin);
+ break;
+ case KEY_DEL_ITEM:
+ keystr = keys_action_nkey(selrow, selelm);
+ keyval = keys_str2int(keystr);
+ keys_remove_binding(keyval, selrow);
+ nbrowelm--;
+ if (selelm > 0 && selelm <= nbrowelm)
+ selelm--;
+ break;
+ case KEY_GENERIC_QUIT:
+ if (keys_check_missing_bindings() != 0) {
+ WARN_MSG(_("Some actions do not have any associated " "key bindings!"));
+ }
+ wins_scrollwin_delete(&kwin);
+ return;
}
+ custom_keys_config_bar();
+ werase(kwin.pad.p);
+ nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm, LINESPERKEY);
+ wins_scrollwin_display(&kwin);
+ }
}
-void
-custom_config_main (void)
+void custom_config_main(void)
{
const char *no_color_support =
_("Sorry, colors are not supported by your terminal\n"
@@ -1105,51 +1034,48 @@ custom_config_main (void)
int ch;
int old_layout;
- custom_config_bar ();
- while ((ch = wgetch (win[STA].p)) != 'q')
- {
- switch (ch)
- {
- case 'C':
- case 'c':
- if (has_colors ())
- custom_color_config ();
- else
- {
- colorize = 0;
- wins_erase_status_bar ();
- mvwprintw (win[STA].p, 0, 0, _(no_color_support));
- wgetch (win[STA].p);
- }
- break;
- case 'L':
- case 'l':
- old_layout = wins_layout ();
- custom_layout_config ();
- if (wins_layout () != old_layout)
- wins_reset ();
- break;
- case 'G':
- case 'g':
- custom_general_config ();
- break;
- case 'N':
- case 'n':
- notify_config_bar ();
- break;
- case 'K':
- case 'k':
- custom_keys_config ();
- break;
- case 's':
- case 'S':
- custom_sidebar_config ();
- break;
- default:
- continue;
- }
- wins_update (FLAG_ALL);
- wins_erase_status_bar ();
- custom_config_bar ();
+ custom_config_bar();
+ while ((ch = wgetch(win[STA].p)) != 'q') {
+ switch (ch) {
+ case 'C':
+ case 'c':
+ if (has_colors())
+ custom_color_config();
+ else {
+ colorize = 0;
+ wins_erase_status_bar();
+ mvwprintw(win[STA].p, 0, 0, _(no_color_support));
+ wgetch(win[STA].p);
+ }
+ break;
+ case 'L':
+ case 'l':
+ old_layout = wins_layout();
+ custom_layout_config();
+ if (wins_layout() != old_layout)
+ wins_reset();
+ break;
+ case 'G':
+ case 'g':
+ custom_general_config();
+ break;
+ case 'N':
+ case 'n':
+ notify_config_bar();
+ break;
+ case 'K':
+ case 'k':
+ custom_keys_config();
+ break;
+ case 's':
+ case 'S':
+ custom_sidebar_config();
+ break;
+ default:
+ continue;
}
+ wins_update(FLAG_ALL);
+ wins_erase_status_bar();
+ custom_config_bar();
+ }
}
diff --git a/src/day.c b/src/day.c
index ab362c0..c542c46 100644
--- a/src/day.c
+++ b/src/day.c
@@ -43,26 +43,24 @@
#include "calcurse.h"
struct day_saved_item {
- char start[BUFSIZ];
- char end[BUFSIZ];
- char state;
- char type;
+ char start[BUFSIZ];
+ char end[BUFSIZ];
+ char state;
+ char type;
char *mesg;
};
-static llist_t day_items;
-static struct day_saved_item day_saved_item;
+static llist_t day_items;
+static struct day_saved_item day_saved_item;
-static void
-day_free (struct day_item *day)
+static void day_free(struct day_item *day)
{
- mem_free (day);
+ mem_free(day);
}
-static void
-day_init_list (void)
+static void day_init_list(void)
{
- LLIST_INIT (&day_items);
+ LLIST_INIT(&day_items);
}
/*
@@ -70,20 +68,19 @@ day_init_list (void)
* Must not free associated message and note, because their are not dynamically
* allocated (only pointers to real objects are stored in this structure).
*/
-void
-day_free_list (void)
+void day_free_list(void)
{
- LLIST_FREE_INNER (&day_items, day_free);
- LLIST_FREE (&day_items);
+ LLIST_FREE_INNER(&day_items, day_free);
+ LLIST_FREE(&day_items);
}
/* Add an event in the current day list */
-static struct day_item *
-day_add_event (int type, char *mesg, char *note, long nday, int id)
+static struct day_item *day_add_event(int type, char *mesg, char *note,
+ long nday, int id)
{
struct day_item *day;
- day = mem_malloc (sizeof (struct day_item));
+ day = mem_malloc(sizeof(struct day_item));
day->mesg = mesg;
day->note = note;
day->type = type;
@@ -92,35 +89,32 @@ day_add_event (int type, char *mesg, char *note, long nday, int id)
day->start = nday;
day->evnt_id = id;
- LLIST_ADD (&day_items, day);
+ LLIST_ADD(&day_items, day);
return day;
}
-static int
-day_cmp_start (struct day_item *a, struct day_item *b)
+static int day_cmp_start(struct day_item *a, struct day_item *b)
{
- if (a->type <= EVNT)
- {
- if (b->type <= EVNT)
- return 0;
- else
- return -1;
- }
- else if (b->type <= EVNT)
+ if (a->type <= EVNT) {
+ if (b->type <= EVNT)
+ return 0;
+ else
+ return -1;
+ } else if (b->type <= EVNT)
return 1;
else
return a->start < b->start ? -1 : (a->start == b->start ? 0 : 1);
}
/* Add an appointment in the current day list. */
-static struct day_item *
-day_add_apoint (int type, char *mesg, char *note, long start, long dur,
- char state, int real_pos)
+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 *day;
- day = mem_malloc (sizeof (struct day_item));
+ day = mem_malloc(sizeof(struct day_item));
day->mesg = mesg;
day->note = note;
day->start = start;
@@ -130,7 +124,7 @@ day_add_apoint (int type, char *mesg, char *note, long start, long dur,
day->type = type;
day->evnt_id = 0;
- LLIST_ADD_SORTED (&day_items, day, day_cmp_start);
+ LLIST_ADD_SORTED(&day_items, day, day_cmp_start);
return day;
}
@@ -142,18 +136,16 @@ day_add_apoint (int type, char *mesg, char *note, long start, long dur,
* dedicated to the selected day.
* Returns the number of events for the selected day.
*/
-static int
-day_store_events (long date)
+static int day_store_events(long date)
{
llist_item_t *i;
int e_nb = 0;
- LLIST_FIND_FOREACH_CONT (&eventlist, date, event_inday, i)
- {
- struct event *ev = LLIST_TS_GET_DATA (i);
- day_add_event (EVNT, ev->mesg, ev->note, ev->day, ev->id);
- e_nb++;
- }
+ LLIST_FIND_FOREACH_CONT(&eventlist, date, event_inday, i) {
+ struct event *ev = LLIST_TS_GET_DATA(i);
+ day_add_event(EVNT, ev->mesg, ev->note, ev->day, ev->id);
+ e_nb++;
+ }
return e_nb;
}
@@ -165,18 +157,16 @@ day_store_events (long date)
* dedicated to the selected day.
* Returns the number of recurrent events for the selected day.
*/
-static int
-day_store_recur_events (long date)
+static int day_store_recur_events(long date)
{
llist_item_t *i;
int e_nb = 0;
- LLIST_FIND_FOREACH (&recur_elist, date, recur_event_inday, i)
- {
- struct recur_event *rev = LLIST_TS_GET_DATA (i);
- day_add_event (RECUR_EVNT, rev->mesg, rev->note, rev->day, rev->id);
- e_nb++;
- }
+ LLIST_FIND_FOREACH(&recur_elist, date, recur_event_inday, i) {
+ struct recur_event *rev = LLIST_TS_GET_DATA(i);
+ day_add_event(RECUR_EVNT, rev->mesg, rev->note, rev->day, rev->id);
+ e_nb++;
+ }
return e_nb;
}
@@ -188,25 +178,23 @@ day_store_recur_events (long date)
* structure dedicated to the selected day.
* Returns the number of appointments for the selected day.
*/
-static int
-day_store_apoints (long date)
+static int day_store_apoints(long date)
{
llist_item_t *i;
int a_nb = 0;
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_FIND_FOREACH (&alist_p, date, apoint_inday, i)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_FIND_FOREACH(&alist_p, date, apoint_inday, i) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
- if (apt->start >= date + DAYINSEC)
- break;
+ if (apt->start >= date + DAYINSEC)
+ break;
- day_add_apoint (APPT, apt->mesg, apt->note, apt->start, apt->dur,
- apt->state, 0);
- a_nb++;
- }
- LLIST_TS_UNLOCK (&alist_p);
+ day_add_apoint(APPT, apt->mesg, apt->note, apt->start, apt->dur,
+ apt->state, 0);
+ a_nb++;
+ }
+ LLIST_TS_UNLOCK(&alist_p);
return a_nb;
}
@@ -218,25 +206,22 @@ day_store_apoints (long date)
* structure dedicated to the selected day.
* Returns the number of recurrent appointments for the selected day.
*/
-static int
-day_store_recur_apoints (long date)
+static int day_store_recur_apoints(long date)
{
llist_item_t *i;
int a_nb = 0;
- LLIST_TS_LOCK (&recur_alist_p);
- LLIST_TS_FIND_FOREACH (&recur_alist_p, date, recur_apoint_inday, i)
- {
- struct recur_apoint *rapt = LLIST_TS_GET_DATA (i);
- unsigned real_start;
- if (recur_apoint_find_occurrence (rapt, date, &real_start))
- {
- day_add_apoint (RECUR_APPT, rapt->mesg, rapt->note, real_start,
- rapt->dur, rapt->state, a_nb);
- a_nb++;
- }
+ LLIST_TS_LOCK(&recur_alist_p);
+ LLIST_TS_FIND_FOREACH(&recur_alist_p, date, recur_apoint_inday, i) {
+ struct recur_apoint *rapt = LLIST_TS_GET_DATA(i);
+ unsigned real_start;
+ if (recur_apoint_find_occurrence(rapt, date, &real_start)) {
+ day_add_apoint(RECUR_APPT, rapt->mesg, rapt->note, real_start,
+ rapt->dur, rapt->state, a_nb);
+ a_nb++;
}
- LLIST_TS_UNLOCK (&recur_alist_p);
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
return a_nb;
}
@@ -250,19 +235,19 @@ day_store_recur_apoints (long date)
* The number of events and appointments in the current day are also updated.
*/
static int
-day_store_items (long date, unsigned *pnb_events, unsigned *pnb_apoints)
+day_store_items(long date, unsigned *pnb_events, unsigned *pnb_apoints)
{
int pad_length;
int nb_events, nb_recur_events;
int nb_apoints, nb_recur_apoints;
- day_free_list ();
- day_init_list ();
- nb_recur_events = day_store_recur_events (date);
- nb_events = day_store_events (date);
+ day_free_list();
+ day_init_list();
+ nb_recur_events = day_store_recur_events(date);
+ nb_events = day_store_events(date);
*pnb_events = nb_events;
- nb_recur_apoints = day_store_recur_apoints (date);
- nb_apoints = day_store_apoints (date);
+ nb_recur_apoints = day_store_recur_apoints(date);
+ nb_apoints = day_store_apoints(date);
*pnb_apoints = nb_apoints;
pad_length = (nb_recur_events + nb_events + 1 +
3 * (nb_recur_apoints + nb_apoints));
@@ -277,9 +262,9 @@ 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.
*/
-struct day_items_nb *
-day_process_storage (struct date *slctd_date, unsigned day_changed,
- struct day_items_nb *inday)
+struct day_items_nb *day_process_storage(struct date *slctd_date,
+ unsigned day_changed,
+ struct day_items_nb *inday)
{
long date;
struct date day;
@@ -287,21 +272,21 @@ day_process_storage (struct date *slctd_date, unsigned day_changed,
if (slctd_date)
day = *slctd_date;
else
- calendar_store_current_date (&day);
+ calendar_store_current_date(&day);
- date = date2sec (day, 0, 0);
+ date = date2sec(day, 0, 0);
/* Inits */
if (apad.length != 0)
- delwin (apad.ptrwin);
+ delwin(apad.ptrwin);
/* Store the events and appointments (recursive and normal items). */
- apad.length = day_store_items (date, &inday->nb_events, &inday->nb_apoints);
+ apad.length = day_store_items(date, &inday->nb_events, &inday->nb_apoints);
/* Create the new pad with its new length. */
if (day_changed)
apad.first_onscreen = 0;
- apad.ptrwin = newpad (apad.length, apad.width);
+ apad.ptrwin = newpad(apad.length, apad.width);
return inday;
}
@@ -310,8 +295,7 @@ day_process_storage (struct date *slctd_date, unsigned day_changed,
* Returns a structure of type apoint_llist_node_t given a structure of type
* day_item_s
*/
-static void
-day_item_s2apoint_s (struct apoint *a, struct day_item *p)
+static void day_item_s2apoint_s(struct apoint *a, struct day_item *p)
{
a->state = p->state;
a->start = p->start;
@@ -323,35 +307,35 @@ day_item_s2apoint_s (struct apoint *a, struct day_item *p)
* Print an item date in the appointment panel.
*/
static void
-display_item_date (int incolor, struct apoint *i, int type, long date,
- int y, int x)
+display_item_date(int incolor, struct apoint *i, int type, long date,
+ int y, int x)
{
WINDOW *win;
char a_st[100], a_end[100];
win = apad.ptrwin;
- apoint_sec2str (i, date, a_st, a_end);
+ apoint_sec2str(i, date, a_st, a_end);
if (incolor == 0)
- custom_apply_attr (win, ATTR_HIGHEST);
+ custom_apply_attr(win, ATTR_HIGHEST);
if (type == RECUR_EVNT || type == RECUR_APPT)
if (i->state & APOINT_NOTIFY)
- mvwprintw (win, y, x, " *!%s -> %s", a_st, a_end);
+ mvwprintw(win, y, x, " *!%s -> %s", a_st, a_end);
else
- mvwprintw (win, y, x, " * %s -> %s", a_st, a_end);
+ mvwprintw(win, y, x, " * %s -> %s", a_st, a_end);
else if (i->state & APOINT_NOTIFY)
- mvwprintw (win, y, x, " -!%s -> %s", a_st, a_end);
+ mvwprintw(win, y, x, " -!%s -> %s", a_st, a_end);
else
- mvwprintw (win, y, x, " - %s -> %s", a_st, a_end);
+ mvwprintw(win, y, x, " - %s -> %s", a_st, a_end);
if (incolor == 0)
- custom_remove_attr (win, ATTR_HIGHEST);
+ custom_remove_attr(win, ATTR_HIGHEST);
}
/*
* Print an item description in the corresponding panel window.
*/
static void
-display_item (int incolor, char *msg, int recur, int note, int width, int y,
- int x)
+display_item(int incolor, char *msg, int recur, int note, int width, int y,
+ int x)
{
WINDOW *win;
int ch_recur, ch_note;
@@ -365,25 +349,23 @@ display_item (int incolor, char *msg, int recur, int note, int width, int y,
ch_recur = (recur) ? '*' : ' ';
ch_note = (note) ? '>' : ' ';
if (incolor == 0)
- custom_apply_attr (win, ATTR_HIGHEST);
- if (utf8_strwidth (msg) < width)
- mvwprintw (win, y, x, " %c%c%s", ch_recur, ch_note, msg);
- else
- {
- for (i = 0; msg[i] && width > 0; i++)
- {
- if (!UTF8_ISCONT (msg[i]))
- width -= utf8_width (&msg[i]);
- buf[i] = msg[i];
- }
- if (i)
- buf[i - 1] = 0;
- else
- buf[0] = 0;
- mvwprintw (win, y, x, " %c%c%s...", ch_recur, ch_note, buf);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ if (utf8_strwidth(msg) < width)
+ mvwprintw(win, y, x, " %c%c%s", ch_recur, ch_note, msg);
+ else {
+ for (i = 0; msg[i] && width > 0; i++) {
+ if (!UTF8_ISCONT(msg[i]))
+ width -= utf8_width(&msg[i]);
+ buf[i] = msg[i];
}
+ if (i)
+ buf[i - 1] = 0;
+ else
+ buf[0] = 0;
+ mvwprintw(win, y, x, " %c%c%s...", ch_recur, ch_note, buf);
+ }
if (incolor == 0)
- custom_remove_attr (win, ATTR_HIGHEST);
+ custom_remove_attr(win, ATTR_HIGHEST);
}
/*
@@ -393,8 +375,7 @@ display_item (int incolor, char *msg, int recur, int note, int width, int y,
* structure (pointed by day_saved_item), to be later displayed in a
* popup window if requested.
*/
-void
-day_write_pad (long date, int width, int length, int incolor)
+void day_write_pad(long date, int width, int length, int incolor)
{
llist_item_t *i;
struct apoint a;
@@ -404,67 +385,57 @@ day_write_pad (long date, int width, int length, int incolor)
line = item_number = 0;
- LLIST_FOREACH (&day_items, i)
- {
- struct day_item *day = LLIST_TS_GET_DATA (i);
- if (day->type == RECUR_EVNT || day->type == RECUR_APPT)
- recur = 1;
- else
- recur = 0;
- /* First print the events for current day. */
- if (day->type < RECUR_APPT)
- {
- item_number++;
- if (item_number - incolor == 0)
- {
- day_saved_item.type = day->type;
- day_saved_item.mesg = day->mesg;
- }
- display_item (item_number - incolor, day->mesg, recur,
- (day->note != NULL) ? 1 : 0, width - 7, line, x_pos);
- line++;
- draw_line = 1;
- }
- else
- {
- /* Draw a line between events and appointments. */
- if (line > 0 && draw_line)
- {
- wmove (apad.ptrwin, line, 0);
- whline (apad.ptrwin, 0, width);
- draw_line = 0;
- }
- /* Last print the appointments for current day. */
- item_number++;
- day_item_s2apoint_s (&a, day);
- if (item_number - incolor == 0)
- {
- day_saved_item.type = day->type;
- day_saved_item.mesg = day->mesg;
- apoint_sec2str (&a, date, day_saved_item.start,
- day_saved_item.end);
- }
- display_item_date (item_number - incolor, &a, day->type,
- date, line + 1, x_pos);
- display_item (item_number - incolor, day->mesg, 0,
- (day->note != NULL) ? 1 : 0, width - 7, line + 2,
- x_pos);
- line += 3;
- }
+ LLIST_FOREACH(&day_items, i) {
+ struct day_item *day = LLIST_TS_GET_DATA(i);
+ if (day->type == RECUR_EVNT || day->type == RECUR_APPT)
+ recur = 1;
+ else
+ recur = 0;
+ /* First print the events for current day. */
+ if (day->type < RECUR_APPT) {
+ item_number++;
+ if (item_number - incolor == 0) {
+ day_saved_item.type = day->type;
+ day_saved_item.mesg = day->mesg;
+ }
+ display_item(item_number - incolor, day->mesg, recur,
+ (day->note != NULL) ? 1 : 0, width - 7, line, x_pos);
+ line++;
+ draw_line = 1;
+ } else {
+ /* Draw a line between events and appointments. */
+ if (line > 0 && draw_line) {
+ wmove(apad.ptrwin, line, 0);
+ whline(apad.ptrwin, 0, width);
+ draw_line = 0;
+ }
+ /* Last print the appointments for current day. */
+ item_number++;
+ day_item_s2apoint_s(&a, day);
+ if (item_number - incolor == 0) {
+ day_saved_item.type = day->type;
+ day_saved_item.mesg = day->mesg;
+ apoint_sec2str(&a, date, day_saved_item.start, day_saved_item.end);
+ }
+ display_item_date(item_number - incolor, &a, day->type,
+ date, line + 1, x_pos);
+ display_item(item_number - incolor, day->mesg, 0,
+ (day->note != NULL) ? 1 : 0, width - 7, line + 2, x_pos);
+ line += 3;
}
+ }
}
/* Display an item inside a popup window. */
-void
-day_popup_item (void)
+void day_popup_item(void)
{
if (day_saved_item.type == EVNT || day_saved_item.type == RECUR_EVNT)
- item_in_popup (NULL, NULL, day_saved_item.mesg, _("Event :"));
+ item_in_popup(NULL, NULL, day_saved_item.mesg, _("Event :"));
else if (day_saved_item.type == APPT || day_saved_item.type == RECUR_APPT)
- item_in_popup (day_saved_item.start, day_saved_item.end,
- day_saved_item.mesg, _("Appointment :"));
+ item_in_popup(day_saved_item.start, day_saved_item.end,
+ day_saved_item.mesg, _("Appointment :"));
else
- EXIT (_("unknown item type"));
+ EXIT(_("unknown item type"));
/* NOTREACHED */
}
@@ -472,38 +443,34 @@ day_popup_item (void)
* Need to know if there is an item for the current selected day inside
* calendar. This is used to put the correct colors inside calendar panel.
*/
-int
-day_check_if_item (struct date day)
+int day_check_if_item(struct date day)
{
- const long date = date2sec (day, 0, 0);
+ const long date = date2sec(day, 0, 0);
- if (LLIST_FIND_FIRST (&recur_elist, date, recur_event_inday))
+ if (LLIST_FIND_FIRST(&recur_elist, date, recur_event_inday))
return 1;
- LLIST_TS_LOCK (&recur_alist_p);
- if (LLIST_TS_FIND_FIRST (&recur_alist_p, date, recur_apoint_inday))
- {
- LLIST_TS_UNLOCK (&recur_alist_p);
- return 1;
- }
- LLIST_TS_UNLOCK (&recur_alist_p);
+ LLIST_TS_LOCK(&recur_alist_p);
+ if (LLIST_TS_FIND_FIRST(&recur_alist_p, date, recur_apoint_inday)) {
+ LLIST_TS_UNLOCK(&recur_alist_p);
+ return 1;
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
- if (LLIST_FIND_FIRST (&eventlist, date, event_inday))
+ if (LLIST_FIND_FIRST(&eventlist, date, event_inday))
return 1;
- LLIST_TS_LOCK (&alist_p);
- if (LLIST_TS_FIND_FIRST (&alist_p, date, apoint_inday))
- {
- LLIST_TS_UNLOCK (&alist_p);
- return 1;
- }
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_LOCK(&alist_p);
+ if (LLIST_TS_FIND_FIRST(&alist_p, date, apoint_inday)) {
+ LLIST_TS_UNLOCK(&alist_p);
+ return 1;
+ }
+ LLIST_TS_UNLOCK(&alist_p);
return 0;
}
-static unsigned
-fill_slices (int *slices, int slicesno, int first, int last)
+static unsigned fill_slices(int *slices, int slicesno, int first, int last)
{
int i;
@@ -511,7 +478,7 @@ fill_slices (int *slices, int slicesno, int first, int last)
return 0;
if (last >= slicesno)
- last = slicesno - 1; /* Appointment spanning more than one day. */
+ last = slicesno - 1; /* Appointment spanning more than one day. */
for (i = first; i <= last; i++)
slices[i] = 1;
@@ -524,175 +491,148 @@ fill_slices (int *slices, int slicesno, int first, int last)
* appointment in the corresponding time slice, 0 otherwise.
* A 24 hours day is divided into 'slicesno' number of time slices.
*/
-unsigned
-day_chk_busy_slices (struct date day, int slicesno, int *slices)
+unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
{
llist_item_t *i;
int slicelen;
- const long date = date2sec (day, 0, 0);
+ const long date = date2sec(day, 0, 0);
slicelen = DAYINSEC / slicesno;
#define SLICENUM(tsec) ((tsec) / slicelen % slicesno)
- LLIST_TS_LOCK (&recur_alist_p);
- LLIST_TS_FIND_FOREACH (&recur_alist_p, date, recur_apoint_inday, i)
- {
- struct apoint *rapt = LLIST_TS_GET_DATA (i);
- long start = get_item_time (rapt->start);
- long end = get_item_time (rapt->start + rapt->dur);
-
- if (!fill_slices (slices, slicesno, SLICENUM (start), SLICENUM (end)))
- {
- LLIST_TS_UNLOCK (&recur_alist_p);
- return 0;
- }
+ LLIST_TS_LOCK(&recur_alist_p);
+ LLIST_TS_FIND_FOREACH(&recur_alist_p, date, recur_apoint_inday, i) {
+ struct apoint *rapt = LLIST_TS_GET_DATA(i);
+ long start = get_item_time(rapt->start);
+ long end = get_item_time(rapt->start + rapt->dur);
+
+ if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) {
+ LLIST_TS_UNLOCK(&recur_alist_p);
+ return 0;
}
- LLIST_TS_UNLOCK (&recur_alist_p);
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_FIND_FOREACH (&alist_p, date, apoint_inday, i)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
- long start = get_item_time (apt->start);
- long end = get_item_time (apt->start + apt->dur);
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_FIND_FOREACH(&alist_p, date, apoint_inday, i) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+ long start = get_item_time(apt->start);
+ long end = get_item_time(apt->start + apt->dur);
- if (apt->start >= date + DAYINSEC)
- break;
+ if (apt->start >= date + DAYINSEC)
+ break;
- if (!fill_slices (slices, slicesno, SLICENUM (start), SLICENUM (end)))
- {
- LLIST_TS_UNLOCK (&alist_p);
- return 0;
- }
+ if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) {
+ LLIST_TS_UNLOCK(&alist_p);
+ return 0;
}
- LLIST_TS_UNLOCK (&alist_p);
+ }
+ LLIST_TS_UNLOCK(&alist_p);
#undef SLICENUM
return 1;
}
/* Request the user to enter a new time. */
-static int
-day_edit_time (int time, unsigned *new_hour, unsigned *new_minute)
+static int day_edit_time(int time, unsigned *new_hour, unsigned *new_minute)
{
- char *timestr = date_sec2date_str (time, "%H:%M");
+ char *timestr = date_sec2date_str(time, "%H:%M");
const char *msg_time = _("Enter the new time ([hh:mm]) : ");
const char *enter_str = _("Press [Enter] to continue");
const char *fmt_msg = _("You entered an invalid time, should be [hh:mm]");
- for (;;)
- {
- status_mesg (msg_time, "");
- if (updatestring (win[STA].p, &timestr, 0, 1) == GETSTRING_VALID)
- {
- if (parse_time (timestr, new_hour, new_minute) == 1)
- {
- mem_free (timestr);
- return 1;
- }
- else
- {
- status_mesg (fmt_msg, enter_str);
- wgetch (win[STA].p);
- }
- }
- else
- return 0;
- }
+ for (;;) {
+ status_mesg(msg_time, "");
+ if (updatestring(win[STA].p, &timestr, 0, 1) == GETSTRING_VALID) {
+ if (parse_time(timestr, new_hour, new_minute) == 1) {
+ mem_free(timestr);
+ return 1;
+ } else {
+ status_mesg(fmt_msg, enter_str);
+ wgetch(win[STA].p);
+ }
+ } else
+ return 0;
+ }
}
/* Request the user to enter a new time or duration. */
-static int
-day_edit_duration (int start, int dur, unsigned *new_duration)
+static int day_edit_duration(int start, int dur, unsigned *new_duration)
{
- char *timestr = date_sec2date_str (start + dur, "%H:%M");
- const char *msg_time = _("Enter new end time ([hh:mm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : ");
+ char *timestr = date_sec2date_str(start + dur, "%H:%M");
+ const char *msg_time =
+ _
+ ("Enter new end time ([hh:mm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : ");
const char *enter_str = _("Press [Enter] to continue");
const char *fmt_msg = _("You entered an invalid time, should be [hh:mm]");
long newtime;
unsigned hr, mn;
- for (;;)
- {
- status_mesg (msg_time, "");
- if (updatestring (win[STA].p, &timestr, 0, 1) == GETSTRING_VALID)
- {
- if (*timestr == '+' && parse_duration (timestr + 1,
- new_duration) == 1)
- {
- *new_duration *= MININSEC;
- break;
- }
- else if (parse_time (timestr, &hr, &mn) == 1)
- {
- newtime = update_time_in_date (start + dur, hr, mn);
- *new_duration = (newtime > start) ? newtime - start :
- DAYINSEC + newtime - start;
- break;
- }
- else
- {
- status_mesg (fmt_msg, enter_str);
- wgetch (win[STA].p);
- }
- }
- else
- return 0;
- }
+ for (;;) {
+ status_mesg(msg_time, "");
+ if (updatestring(win[STA].p, &timestr, 0, 1) == GETSTRING_VALID) {
+ if (*timestr == '+' && parse_duration(timestr + 1, new_duration) == 1) {
+ *new_duration *= MININSEC;
+ break;
+ } else if (parse_time(timestr, &hr, &mn) == 1) {
+ newtime = update_time_in_date(start + dur, hr, mn);
+ *new_duration = (newtime > start) ? newtime - start :
+ DAYINSEC + newtime - start;
+ break;
+ } else {
+ status_mesg(fmt_msg, enter_str);
+ wgetch(win[STA].p);
+ }
+ } else
+ return 0;
+ }
- mem_free (timestr);
+ mem_free(timestr);
return 1;
}
/* Request the user to enter a new end time or duration. */
-static void
-update_start_time (long *start, long *dur)
+static void update_start_time(long *start, long *dur)
{
long newtime;
unsigned hr, mn;
int valid_date;
- const char *msg_wrong_time = _("Invalid time: start time must be before end time!");
+ const char *msg_wrong_time =
+ _("Invalid time: start time must be before end time!");
const char *msg_enter = _("Press [Enter] to continue");
- do
- {
- day_edit_time (*start, &hr, &mn);
- newtime = update_time_in_date (*start, hr, mn);
- if (newtime < *start + *dur)
- {
- *dur -= (newtime - *start);
- *start = newtime;
- valid_date = 1;
- }
- else
- {
- status_mesg (msg_wrong_time, msg_enter);
- wgetch (win[STA].p);
- valid_date = 0;
- }
+ do {
+ day_edit_time(*start, &hr, &mn);
+ newtime = update_time_in_date(*start, hr, mn);
+ if (newtime < *start + *dur) {
+ *dur -= (newtime - *start);
+ *start = newtime;
+ valid_date = 1;
+ } else {
+ status_mesg(msg_wrong_time, msg_enter);
+ wgetch(win[STA].p);
+ valid_date = 0;
}
+ }
while (valid_date == 0);
}
-static void
-update_duration (long *start, long *dur)
+static void update_duration(long *start, long *dur)
{
unsigned newdur;
- day_edit_duration (*start, *dur, &newdur);
+ day_edit_duration(*start, *dur, &newdur);
*dur = newdur;
}
-static void
-update_desc (char **desc)
+static void update_desc(char **desc)
{
- status_mesg (_("Enter the new item description:"), "");
- updatestring (win[STA].p, desc, 0, 1);
+ status_mesg(_("Enter the new item description:"), "");
+ updatestring(win[STA].p, desc, 0, 1);
}
-static void
-update_rept (struct rpt **rpt, const long start)
+static void update_rept(struct rpt **rpt, const long start)
{
int newtype, newfreq, date_entered;
long newuntil;
@@ -707,148 +647,126 @@ update_rept (struct rpt **rpt, const long start)
/* Find the current repetition type. */
const char *rpt_current;
char msg_rpt_current[BUFSIZ];
- switch (recur_def2char ((*rpt)->type))
- {
- case 'D':
- rpt_current = msg_rpt_daily;
- break;
- case 'W':
- rpt_current = msg_rpt_weekly;
- break;
- case 'M':
- rpt_current = msg_rpt_monthly;
- break;
- case 'Y':
- rpt_current = msg_rpt_yearly;
- break;
- default:
- /* NOTREACHED, but makes the compiler happier. */
- rpt_current = msg_rpt_daily;
- }
-
- snprintf (msg_rpt_current, BUFSIZ, _("(currently using %s)"), rpt_current);
+ switch (recur_def2char((*rpt)->type)) {
+ case 'D':
+ rpt_current = msg_rpt_daily;
+ break;
+ case 'W':
+ rpt_current = msg_rpt_weekly;
+ break;
+ case 'M':
+ rpt_current = msg_rpt_monthly;
+ break;
+ case 'Y':
+ rpt_current = msg_rpt_yearly;
+ break;
+ default:
+ /* NOTREACHED, but makes the compiler happier. */
+ rpt_current = msg_rpt_daily;
+ }
+
+ snprintf(msg_rpt_current, BUFSIZ, _("(currently using %s)"), rpt_current);
char msg_rpt_asktype[BUFSIZ];
- snprintf (msg_rpt_asktype, BUFSIZ, "%s %s, %s, %s, %s ? %s",
- msg_rpt_prefix,
- msg_rpt_daily,
- msg_rpt_weekly,
- msg_rpt_monthly,
- msg_rpt_yearly,
- msg_rpt_current);
+ snprintf(msg_rpt_asktype, BUFSIZ, "%s %s, %s, %s, %s ? %s",
+ msg_rpt_prefix,
+ msg_rpt_daily,
+ msg_rpt_weekly, msg_rpt_monthly, msg_rpt_yearly, msg_rpt_current);
const char *msg_rpt_choice = _("[dwmy]");
const char *msg_wrong_freq = _("The frequence you entered is not valid.");
- const char *msg_wrong_time = _("Invalid time: start time must be before end time!");
+ const char *msg_wrong_time =
+ _("Invalid time: start time must be before end time!");
const char *msg_wrong_date = _("The entered date is not valid.");
const char *msg_fmts =
- _("Possible formats are [%s] or '0' for an endless repetetition");
+ _("Possible formats are [%s] or '0' for an endless repetetition");
const char *msg_enter = _("Press [Enter] to continue");
- switch (status_ask_choice (msg_rpt_asktype, msg_rpt_choice, 4))
- {
- case 1:
- newtype = 'D';
- break;
- case 2:
- newtype = 'W';
- break;
- case 3:
- newtype = 'M';
- break;
- case 4:
- newtype = 'Y';
- break;
- default:
+ switch (status_ask_choice(msg_rpt_asktype, msg_rpt_choice, 4)) {
+ case 1:
+ newtype = 'D';
+ break;
+ case 2:
+ newtype = 'W';
+ break;
+ case 3:
+ newtype = 'M';
+ break;
+ case 4:
+ newtype = 'Y';
+ break;
+ default:
+ return;
+ }
+
+ do {
+ status_mesg(_("Enter the new repetition frequence:"), "");
+ freqstr = mem_malloc(BUFSIZ);
+ snprintf(freqstr, BUFSIZ, "%d", (*rpt)->freq);
+ if (updatestring(win[STA].p, &freqstr, 0, 1) == GETSTRING_VALID) {
+ newfreq = atoi(freqstr);
+ mem_free(freqstr);
+ if (newfreq == 0) {
+ status_mesg(msg_wrong_freq, msg_enter);
+ wgetch(win[STA].p);
+ }
+ } else {
+ mem_free(freqstr);
return;
}
-
- do
- {
- status_mesg (_("Enter the new repetition frequence:"), "");
- freqstr = mem_malloc (BUFSIZ);
- snprintf (freqstr, BUFSIZ, "%d", (*rpt)->freq);
- if (updatestring (win[STA].p, &freqstr, 0, 1) == GETSTRING_VALID)
- {
- newfreq = atoi (freqstr);
- mem_free (freqstr);
- if (newfreq == 0)
- {
- status_mesg (msg_wrong_freq, msg_enter);
- wgetch (win[STA].p);
- }
- }
- else
- {
- mem_free (freqstr);
- return;
- }
- }
+ }
while (newfreq == 0);
- do
- {
- snprintf (outstr, BUFSIZ, "Enter the new ending date: [%s] or '0'",
- DATEFMT_DESC (conf.input_datefmt));
- status_mesg (_(outstr), "");
- timstr =
- date_sec2date_str ((*rpt)->until, DATEFMT (conf.input_datefmt));
- if (updatestring (win[STA].p, &timstr, 0, 1) != GETSTRING_VALID)
- {
- mem_free (timstr);
- return;
- }
- if (strcmp (timstr, "0") == 0)
- {
- newuntil = 0;
+ do {
+ snprintf(outstr, BUFSIZ, "Enter the new ending date: [%s] or '0'",
+ DATEFMT_DESC(conf.input_datefmt));
+ status_mesg(_(outstr), "");
+ timstr = date_sec2date_str((*rpt)->until, DATEFMT(conf.input_datefmt));
+ if (updatestring(win[STA].p, &timstr, 0, 1) != GETSTRING_VALID) {
+ mem_free(timstr);
+ return;
+ }
+ if (strcmp(timstr, "0") == 0) {
+ newuntil = 0;
+ date_entered = 1;
+ } else {
+ struct tm *lt;
+ time_t t;
+ struct date new_date;
+ int newmonth, newday, newyear;
+
+ if (parse_date(timstr, conf.input_datefmt, &newyear, &newmonth,
+ &newday, calendar_get_slctd_day())) {
+ t = start;
+ lt = localtime(&t);
+ new_date.dd = newday;
+ new_date.mm = newmonth;
+ new_date.yyyy = newyear;
+ newuntil = date2sec(new_date, lt->tm_hour, lt->tm_min);
+ if (newuntil < start) {
+ status_mesg(msg_wrong_time, msg_enter);
+ wgetch(win[STA].p);
+ date_entered = 0;
+ } else
date_entered = 1;
- }
- else
- {
- struct tm *lt;
- time_t t;
- struct date new_date;
- int newmonth, newday, newyear;
-
- if (parse_date (timstr, conf.input_datefmt, &newyear, &newmonth,
- &newday, calendar_get_slctd_day ()))
- {
- t = start;
- lt = localtime (&t);
- new_date.dd = newday;
- new_date.mm = newmonth;
- new_date.yyyy = newyear;
- newuntil = date2sec (new_date, lt->tm_hour, lt->tm_min);
- if (newuntil < start)
- {
- status_mesg (msg_wrong_time, msg_enter);
- wgetch (win[STA].p);
- date_entered = 0;
- }
- else
- date_entered = 1;
- }
- else
- {
- snprintf (outstr, BUFSIZ, msg_fmts,
- DATEFMT_DESC (conf.input_datefmt));
- status_mesg (msg_wrong_date, _(outstr));
- wgetch (win[STA].p);
- date_entered = 0;
- }
- }
+ } else {
+ snprintf(outstr, BUFSIZ, msg_fmts, DATEFMT_DESC(conf.input_datefmt));
+ status_mesg(msg_wrong_date, _(outstr));
+ wgetch(win[STA].p);
+ date_entered = 0;
+ }
}
+ }
while (date_entered == 0);
- mem_free (timstr);
- (*rpt)->type = recur_char2def (newtype);
+ mem_free(timstr);
+ (*rpt)->type = recur_char2def(newtype);
(*rpt)->freq = newfreq;
(*rpt)->until = newuntil;
}
/* Edit an already existing item. */
-void
-day_edit_item (void)
+void day_edit_item(void)
{
struct day_item *p;
struct recur_event *re;
@@ -859,93 +777,89 @@ day_edit_item (void)
int item_num;
int need_check_notify = 0;
- item_num = apoint_hilt ();
- p = day_get_item (item_num);
- date = calendar_get_slctd_day_sec ();
-
- switch (p->type)
- {
- case RECUR_EVNT:
- re = recur_get_event (date, day_item_nb (date, item_num, RECUR_EVNT));
- const char *choice_recur_evnt[2] = {
- "Description",
- "Repetition",
- };
- switch (status_ask_simplechoice (_("Edit: "), choice_recur_evnt, 2))
- {
- case 1:
- update_desc (&re->mesg);
- break;
- case 2:
- update_rept (&re->rpt, re->day);
- break;
- default:
- return;
- }
+ item_num = apoint_hilt();
+ p = day_get_item(item_num);
+ date = calendar_get_slctd_day_sec();
+
+ switch (p->type) {
+ case RECUR_EVNT:
+ re = recur_get_event(date, day_item_nb(date, item_num, RECUR_EVNT));
+ const char *choice_recur_evnt[2] = {
+ "Description",
+ "Repetition",
+ };
+ switch (status_ask_simplechoice(_("Edit: "), choice_recur_evnt, 2)) {
+ case 1:
+ update_desc(&re->mesg);
break;
- case EVNT:
- e = event_get (date, day_item_nb (date, item_num, EVNT));
- update_desc (&e->mesg);
+ case 2:
+ update_rept(&re->rpt, re->day);
break;
- case RECUR_APPT:
- ra = recur_get_apoint (date, day_item_nb (date, item_num, RECUR_APPT));
- const char *choice_recur_appt[4] = {
- "Start time",
- "End time",
- "Description",
- "Repetition",
- };
- switch (status_ask_simplechoice (_("Edit: "), choice_recur_appt, 4))
- {
- case 1:
- need_check_notify = 1;
- update_start_time (&ra->start, &ra->dur);
- break;
- case 2:
- update_duration (&ra->start, &ra->dur);
- break;
- case 3:
- if (notify_bar ())
- need_check_notify = notify_same_recur_item (ra);
- update_desc (&ra->mesg);
- break;
- case 4:
- need_check_notify = 1;
- update_rept (&ra->rpt, ra->start);
- break;
- default:
- return;
- }
+ default:
+ return;
+ }
+ break;
+ case EVNT:
+ e = event_get(date, day_item_nb(date, item_num, EVNT));
+ update_desc(&e->mesg);
+ break;
+ case RECUR_APPT:
+ ra = recur_get_apoint(date, day_item_nb(date, item_num, RECUR_APPT));
+ const char *choice_recur_appt[4] = {
+ "Start time",
+ "End time",
+ "Description",
+ "Repetition",
+ };
+ switch (status_ask_simplechoice(_("Edit: "), choice_recur_appt, 4)) {
+ case 1:
+ need_check_notify = 1;
+ update_start_time(&ra->start, &ra->dur);
break;
- case APPT:
- a = apoint_get (date, day_item_nb (date, item_num, APPT));
- const char *choice_appt[3] = {
- "Start time",
- "End time",
- "Description",
- };
- switch (status_ask_simplechoice (_("Edit: "), choice_appt, 3))
- {
- case 1:
- need_check_notify = 1;
- update_start_time (&a->start, &a->dur);
- break;
- case 2:
- update_duration (&a->start, &a->dur);
- break;
- case 3:
- if (notify_bar ())
- need_check_notify = notify_same_item (a->start);
- update_desc (&a->mesg);
- break;
- default:
- return;
- }
+ case 2:
+ update_duration(&ra->start, &ra->dur);
break;
+ case 3:
+ if (notify_bar())
+ need_check_notify = notify_same_recur_item(ra);
+ update_desc(&ra->mesg);
+ break;
+ case 4:
+ need_check_notify = 1;
+ update_rept(&ra->rpt, ra->start);
+ break;
+ default:
+ return;
}
+ break;
+ case APPT:
+ a = apoint_get(date, day_item_nb(date, item_num, APPT));
+ const char *choice_appt[3] = {
+ "Start time",
+ "End time",
+ "Description",
+ };
+ switch (status_ask_simplechoice(_("Edit: "), choice_appt, 3)) {
+ case 1:
+ need_check_notify = 1;
+ update_start_time(&a->start, &a->dur);
+ break;
+ case 2:
+ update_duration(&a->start, &a->dur);
+ break;
+ case 3:
+ if (notify_bar())
+ need_check_notify = notify_same_item(a->start);
+ update_desc(&a->mesg);
+ break;
+ default:
+ return;
+ }
+ break;
+ }
if (need_check_notify)
- notify_check_next_app (1);
+ notify_check_next_app(1);
}
/*
@@ -954,8 +868,7 @@ day_edit_item (void)
* recurrent appointments and appointments) and then to test the
* type of the item to be deleted.
*/
-int
-day_erase_item (long date, int item_number, enum eraseflg flag)
+int day_erase_item(long date, int item_number, enum eraseflg flag)
{
struct day_item *p;
@@ -973,64 +886,52 @@ day_erase_item (long date, int item_number, enum eraseflg flag)
int ans;
unsigned delete_whole;
- p = day_get_item (item_number);
- if (flag == ERASE_DONT_FORCE)
- {
- if (p->note == NULL)
- ans = 1;
- else
- ans = status_ask_choice (note_warning, note_choices, nb_note_choices);
-
- switch (ans)
- {
- case 1:
- flag = ERASE_FORCE;
- break;
- case 2:
- flag = ERASE_FORCE_ONLY_NOTE;
- break;
- default: /* User escaped */
- return 0;
- }
- }
- if (p->type == EVNT)
- {
- event_delete_bynum (date, day_item_nb (date, item_number, EVNT), flag);
+ p = day_get_item(item_number);
+ if (flag == ERASE_DONT_FORCE) {
+ if (p->note == NULL)
+ ans = 1;
+ else
+ ans = status_ask_choice(note_warning, note_choices, nb_note_choices);
+
+ switch (ans) {
+ case 1:
+ flag = ERASE_FORCE;
+ break;
+ case 2:
+ flag = ERASE_FORCE_ONLY_NOTE;
+ break;
+ default: /* User escaped */
+ return 0;
}
- else if (p->type == APPT)
- {
- apoint_delete_bynum (date, day_item_nb (date, item_number, APPT), flag);
+ }
+ if (p->type == EVNT) {
+ event_delete_bynum(date, day_item_nb(date, item_number, EVNT), flag);
+ } else if (p->type == APPT) {
+ apoint_delete_bynum(date, day_item_nb(date, item_number, APPT), flag);
+ } else {
+ if (flag == ERASE_FORCE_ONLY_NOTE)
+ ans = 1;
+ else
+ ans = status_ask_choice(erase_warning, erase_choices, nb_erase_choices);
+
+ switch (ans) {
+ case 1:
+ delete_whole = 1;
+ break;
+ case 2:
+ delete_whole = 0;
+ break;
+ default:
+ return 0;
}
- else
- {
- if (flag == ERASE_FORCE_ONLY_NOTE)
- ans = 1;
- else
- ans = status_ask_choice (erase_warning, erase_choices,
- nb_erase_choices);
-
- switch (ans)
- {
- case 1:
- delete_whole = 1;
- break;
- case 2:
- delete_whole = 0;
- break;
- default:
- return 0;
- }
-
- if (p->type == RECUR_EVNT)
- {
- recur_event_erase (date, day_item_nb (date, item_number, RECUR_EVNT),
- delete_whole, flag);
- }
- else
- {
- recur_apoint_erase (date, p->appt_pos, delete_whole, flag);
- }
+
+ if (p->type == RECUR_EVNT) {
+ recur_event_erase(date, day_item_nb(date, item_number, RECUR_EVNT),
+ delete_whole, flag);
+ } else {
+ recur_apoint_erase(date, p->appt_pos, delete_whole, flag);
}
+ }
if (flag == ERASE_FORCE_ONLY_NOTE)
return 0;
else
@@ -1038,79 +939,71 @@ day_erase_item (long date, int item_number, enum eraseflg flag)
}
/* Cut an item so it can be pasted somewhere else later. */
-int
-day_cut_item (long date, int item_number)
+int day_cut_item(long date, int item_number)
{
const int DELETE_WHOLE = 1;
struct day_item *p;
- p = day_get_item (item_number);
- switch (p->type)
- {
- case EVNT:
- event_delete_bynum (date, day_item_nb (date, item_number, EVNT),
- ERASE_CUT);
- break;
- case RECUR_EVNT:
- recur_event_erase (date, day_item_nb (date, item_number, RECUR_EVNT),
- DELETE_WHOLE, ERASE_CUT);
- break;
- case APPT:
- apoint_delete_bynum (date, day_item_nb (date, item_number, APPT),
- ERASE_CUT);
- break;
- case RECUR_APPT:
- recur_apoint_erase (date, p->appt_pos, DELETE_WHOLE, ERASE_CUT);
- break;
- default:
- EXIT (_("unknwon type"));
- /* NOTREACHED */
- }
+ p = day_get_item(item_number);
+ switch (p->type) {
+ case EVNT:
+ event_delete_bynum(date, day_item_nb(date, item_number, EVNT), ERASE_CUT);
+ break;
+ case RECUR_EVNT:
+ recur_event_erase(date, day_item_nb(date, item_number, RECUR_EVNT),
+ DELETE_WHOLE, ERASE_CUT);
+ break;
+ case APPT:
+ apoint_delete_bynum(date, day_item_nb(date, item_number, APPT), ERASE_CUT);
+ break;
+ case RECUR_APPT:
+ recur_apoint_erase(date, p->appt_pos, DELETE_WHOLE, ERASE_CUT);
+ break;
+ default:
+ EXIT(_("unknwon type"));
+ /* NOTREACHED */
+ }
return p->type;
}
/* Paste a previously cut item. */
-int
-day_paste_item (long date, int cut_item_type)
+int day_paste_item(long date, int cut_item_type)
{
int pasted_item_type;
pasted_item_type = cut_item_type;
- switch (cut_item_type)
- {
- case 0:
- return 0;
- case EVNT:
- event_paste_item ();
- break;
- case RECUR_EVNT:
- recur_event_paste_item ();
- break;
- case APPT:
- apoint_paste_item ();
- break;
- case RECUR_APPT:
- recur_apoint_paste_item ();
- break;
- default:
- EXIT (_("unknwon type"));
- /* NOTREACHED */
- }
+ switch (cut_item_type) {
+ case 0:
+ return 0;
+ case EVNT:
+ event_paste_item();
+ break;
+ case RECUR_EVNT:
+ recur_event_paste_item();
+ break;
+ case APPT:
+ apoint_paste_item();
+ break;
+ case RECUR_APPT:
+ recur_apoint_paste_item();
+ break;
+ default:
+ EXIT(_("unknwon type"));
+ /* NOTREACHED */
+ }
return pasted_item_type;
}
/* Returns a structure containing the selected item. */
-struct day_item *
-day_get_item (int item_number)
+struct day_item *day_get_item(int item_number)
{
- return LLIST_GET_DATA (LLIST_NTH (&day_items, item_number - 1));
+ return LLIST_GET_DATA(LLIST_NTH(&day_items, item_number - 1));
}
/* Returns the real item number, given its type. */
-int
-day_item_nb (long date, int day_num, int type)
+int day_item_nb(long date, int day_num, int type)
{
int i, nb_item[MAX_TYPES];
llist_item_t *j;
@@ -1118,20 +1011,18 @@ day_item_nb (long date, int day_num, int type)
for (i = 0; i < MAX_TYPES; i++)
nb_item[i] = 0;
- j = LLIST_FIRST (&day_items);
- for (i = 1; i < day_num; i++)
- {
- struct day_item *day = LLIST_TS_GET_DATA (j);
- nb_item[day->type - 1]++;
- j = LLIST_TS_NEXT (j);
- }
+ j = LLIST_FIRST(&day_items);
+ for (i = 1; i < day_num; i++) {
+ struct day_item *day = LLIST_TS_GET_DATA(j);
+ nb_item[day->type - 1]++;
+ j = LLIST_TS_NEXT(j);
+ }
return nb_item[type - 1];
}
/* Attach a note to an appointment or event. */
-void
-day_edit_note (const char *editor)
+void day_edit_note(const char *editor)
{
struct day_item *p;
struct recur_apoint *ra;
@@ -1141,43 +1032,40 @@ day_edit_note (const char *editor)
long date;
int item_num;
- item_num = apoint_hilt ();
- p = day_get_item (item_num);
- edit_note (&p->note, editor);
-
- date = calendar_get_slctd_day_sec ();
- switch (p->type)
- {
- case RECUR_EVNT:
- re = recur_get_event (date, day_item_nb (date, item_num, RECUR_EVNT));
- re->note = p->note;
- break;
- case EVNT:
- e = event_get (date, day_item_nb (date, item_num, EVNT));
- e->note = p->note;
- break;
- case RECUR_APPT:
- ra = recur_get_apoint (date, day_item_nb (date, item_num, RECUR_APPT));
- ra->note = p->note;
- break;
- case APPT:
- a = apoint_get (date, day_item_nb (date, item_num, APPT));
- a->note = p->note;
- break;
- }
+ item_num = apoint_hilt();
+ p = day_get_item(item_num);
+ edit_note(&p->note, editor);
+
+ date = calendar_get_slctd_day_sec();
+ switch (p->type) {
+ case RECUR_EVNT:
+ re = recur_get_event(date, day_item_nb(date, item_num, RECUR_EVNT));
+ re->note = p->note;
+ break;
+ case EVNT:
+ e = event_get(date, day_item_nb(date, item_num, EVNT));
+ e->note = p->note;
+ break;
+ case RECUR_APPT:
+ ra = recur_get_apoint(date, day_item_nb(date, item_num, RECUR_APPT));
+ ra->note = p->note;
+ break;
+ case APPT:
+ a = apoint_get(date, day_item_nb(date, item_num, APPT));
+ a->note = p->note;
+ break;
+ }
}
/* View a note previously attached to an appointment or event */
-void
-day_view_note (const char *pager)
+void day_view_note(const char *pager)
{
- struct day_item *p = day_get_item (apoint_hilt ());
- view_note (p->note, pager);
+ struct day_item *p = day_get_item(apoint_hilt());
+ view_note(p->note, pager);
}
/* Pipe an appointment or event to an external program. */
-void
-day_pipe_item (void)
+void day_pipe_item(void)
{
char cmd[BUFSIZ] = "";
char const *arg[] = { cmd, NULL };
@@ -1192,41 +1080,39 @@ day_pipe_item (void)
struct recur_event *re;
struct event *e;
- status_mesg (_("Pipe item to external command:"), "");
- if (getstring (win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID)
+ status_mesg(_("Pipe item to external command:"), "");
+ if (getstring(win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID)
return;
- wins_prepare_external ();
- if ((pid = shell_exec (NULL, &pout, *arg, arg)))
- {
- fpout = fdopen (pout, "w");
-
- item_num = apoint_hilt ();
- p = day_get_item (item_num);
- date = calendar_get_slctd_day_sec ();
- switch (p->type)
- {
- case RECUR_EVNT:
- re = recur_get_event (date, day_item_nb (date, item_num, RECUR_EVNT));
- recur_event_write (re, fpout);
- break;
- case EVNT:
- e = event_get (date, day_item_nb (date, item_num, EVNT));
- event_write (e, fpout);
- break;
- case RECUR_APPT:
- ra = recur_get_apoint (date, day_item_nb (date, item_num, RECUR_APPT));
- recur_apoint_write (ra, fpout);
- break;
- case APPT:
- a = apoint_get (date, day_item_nb (date, item_num, APPT));
- apoint_write (a, fpout);
- break;
- }
-
- fclose (fpout);
- child_wait (NULL, &pout, pid);
- press_any_key ();
+ wins_prepare_external();
+ if ((pid = shell_exec(NULL, &pout, *arg, arg))) {
+ fpout = fdopen(pout, "w");
+
+ item_num = apoint_hilt();
+ p = day_get_item(item_num);
+ date = calendar_get_slctd_day_sec();
+ switch (p->type) {
+ case RECUR_EVNT:
+ re = recur_get_event(date, day_item_nb(date, item_num, RECUR_EVNT));
+ recur_event_write(re, fpout);
+ break;
+ case EVNT:
+ e = event_get(date, day_item_nb(date, item_num, EVNT));
+ event_write(e, fpout);
+ break;
+ case RECUR_APPT:
+ ra = recur_get_apoint(date, day_item_nb(date, item_num, RECUR_APPT));
+ recur_apoint_write(ra, fpout);
+ break;
+ case APPT:
+ a = apoint_get(date, day_item_nb(date, item_num, APPT));
+ apoint_write(a, fpout);
+ break;
}
- wins_unprepare_external ();
+
+ fclose(fpout);
+ child_wait(NULL, &pout, pid);
+ press_any_key();
+ }
+ wins_unprepare_external();
}
diff --git a/src/dmon.c b/src/dmon.c
index 621cd0b..f8d3403 100644
--- a/src/dmon.c
+++ b/src/dmon.c
@@ -64,26 +64,22 @@
static unsigned data_loaded;
-static void
-dmon_sigs_hdlr (int sig)
+static void dmon_sigs_hdlr(int sig)
{
if (data_loaded)
- free_user_data ();
+ free_user_data();
- DMON_LOG (_("terminated at %s with signal %d\n"), nowstr (), sig);
+ DMON_LOG(_("terminated at %s with signal %d\n"), nowstr(), sig);
- if (unlink (path_dpid) != 0)
- {
- DMON_LOG (_("Could not remove daemon lock file: %s\n"),
- strerror (errno));
- exit (EXIT_FAILURE);
- }
+ if (unlink(path_dpid) != 0) {
+ DMON_LOG(_("Could not remove daemon lock file: %s\n"), strerror(errno));
+ exit(EXIT_FAILURE);
+ }
- exit (EXIT_SUCCESS);
+ exit(EXIT_SUCCESS);
}
-static unsigned
-daemonize (int status)
+static unsigned daemonize(int status)
{
int fd;
@@ -93,16 +89,15 @@ daemonize (int status)
* First need to fork in order to become a child of the init process,
* once the father exits.
*/
- switch (fork ())
- {
- case -1: /* fork error */
- EXIT (_("Could not fork: %s\n"), strerror (errno));
- break;
- case 0: /* child */
- break;
- default: /* parent */
- exit (status);
- }
+ switch (fork()) {
+ case -1: /* fork error */
+ EXIT(_("Could not fork: %s\n"), strerror(errno));
+ break;
+ case 0: /* child */
+ break;
+ default: /* parent */
+ exit(status);
+ }
/*
* Process independency.
@@ -110,109 +105,99 @@ daemonize (int status)
* Obtain a new process group and session in order to get detached from the
* controlling terminal.
*/
- if (setsid () == -1)
- {
- DMON_LOG (_("Could not detach from the controlling terminal: %s\n"),
- strerror (errno));
- return 0;
- }
+ if (setsid() == -1) {
+ DMON_LOG(_("Could not detach from the controlling terminal: %s\n"),
+ strerror(errno));
+ return 0;
+ }
/*
* Change working directory to root directory,
* to prevent filesystem unmounts.
*/
- if (chdir ("/") == -1)
- {
- DMON_LOG (_("Could not change working directory: %s\n"),
- strerror (errno));
- return 0;
- }
+ if (chdir("/") == -1) {
+ DMON_LOG(_("Could not change working directory: %s\n"), strerror(errno));
+ return 0;
+ }
/* Redirect standard file descriptors to /dev/null. */
- if ((fd = open (_PATH_DEVNULL, O_RDWR, 0)) != -1)
- {
- dup2 (fd, STDIN_FILENO);
- dup2 (fd, STDOUT_FILENO);
- dup2 (fd, STDERR_FILENO);
- if (fd > 2)
- close (fd);
- }
+ if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
+ dup2(fd, STDIN_FILENO);
+ dup2(fd, STDOUT_FILENO);
+ dup2(fd, STDERR_FILENO);
+ if (fd > 2)
+ close(fd);
+ }
/* Write access for the owner only. */
- umask (0022);
+ umask(0022);
- if (!sigs_set_hdlr (SIGINT, dmon_sigs_hdlr)
- || !sigs_set_hdlr (SIGTERM, dmon_sigs_hdlr)
- || !sigs_set_hdlr (SIGALRM, dmon_sigs_hdlr)
- || !sigs_set_hdlr (SIGQUIT, dmon_sigs_hdlr)
- || !sigs_set_hdlr (SIGCHLD, SIG_IGN))
+ if (!sigs_set_hdlr(SIGINT, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGTERM, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGALRM, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGQUIT, dmon_sigs_hdlr)
+ || !sigs_set_hdlr(SIGCHLD, SIG_IGN))
return 0;
return 1;
}
-void
-dmon_start (int parent_exit_status)
+void dmon_start(int parent_exit_status)
{
- if (!daemonize (parent_exit_status))
- DMON_ABRT (_("Cannot daemonize, aborting\n"));
-
- if (!io_dump_pid (path_dpid))
- DMON_ABRT (_("Could not set lock file\n"));
-
- if (!io_file_exist (path_conf))
- DMON_ABRT (_("Could not access \"%s\": %s\n"),
- path_conf, strerror (errno));
- config_load ();
-
- if (!io_file_exist (path_apts))
- DMON_ABRT (_("Could not access \"%s\": %s\n"),
- path_apts, strerror (errno));
- apoint_llist_init ();
- recur_apoint_llist_init ();
- event_llist_init ();
- todo_init_list ();
- io_load_app ();
+ if (!daemonize(parent_exit_status))
+ DMON_ABRT(_("Cannot daemonize, aborting\n"));
+
+ if (!io_dump_pid(path_dpid))
+ DMON_ABRT(_("Could not set lock file\n"));
+
+ if (!io_file_exist(path_conf))
+ DMON_ABRT(_("Could not access \"%s\": %s\n"), path_conf, strerror(errno));
+ config_load();
+
+ if (!io_file_exist(path_apts))
+ DMON_ABRT(_("Could not access \"%s\": %s\n"), path_apts, strerror(errno));
+ apoint_llist_init();
+ recur_apoint_llist_init();
+ event_llist_init();
+ todo_init_list();
+ io_load_app();
data_loaded = 1;
- DMON_LOG (_("started at %s\n"), nowstr ());
- for (;;)
- {
- int left;
-
- if (!notify_get_next_bkgd ())
- DMON_ABRT (_("error loading next appointment\n"));
-
- left = notify_time_left ();
- if (left > 0 && left < nbar.cntdwn && notify_needs_reminder ())
- {
- DMON_LOG (_("launching notification at %s for: \"%s\"\n"),
- nowstr (), notify_app_txt ());
- if (!notify_launch_cmd ())
- DMON_LOG (_("error while sending notification\n"));
- }
-
- DMON_LOG (ngettext ("sleeping at %s for %d second\n",
- "sleeping at %s for %d seconds\n",
- DMON_SLEEP_TIME), nowstr (), DMON_SLEEP_TIME);
- psleep (DMON_SLEEP_TIME);
- DMON_LOG (_("awakened at %s\n"), nowstr ());
+ DMON_LOG(_("started at %s\n"), nowstr());
+ for (;;) {
+ int left;
+
+ if (!notify_get_next_bkgd())
+ DMON_ABRT(_("error loading next appointment\n"));
+
+ left = notify_time_left();
+ if (left > 0 && left < nbar.cntdwn && notify_needs_reminder()) {
+ DMON_LOG(_("launching notification at %s for: \"%s\"\n"),
+ nowstr(), notify_app_txt());
+ if (!notify_launch_cmd())
+ DMON_LOG(_("error while sending notification\n"));
}
+
+ DMON_LOG(ngettext("sleeping at %s for %d second\n",
+ "sleeping at %s for %d seconds\n",
+ DMON_SLEEP_TIME), nowstr(), DMON_SLEEP_TIME);
+ psleep(DMON_SLEEP_TIME);
+ DMON_LOG(_("awakened at %s\n"), nowstr());
+ }
}
/*
* Check if calcurse is running in background, and if yes, send a SIGINT
* signal to stop it.
*/
-void
-dmon_stop (void)
+void dmon_stop(void)
{
int dpid;
- dpid = io_get_pid (path_dpid);
+ dpid = io_get_pid(path_dpid);
if (!dpid)
return;
- if (kill ((pid_t)dpid, SIGINT) < 0 && errno != ESRCH)
- EXIT (_("Could not stop calcurse daemon: %s\n"), strerror (errno));
+ if (kill((pid_t) dpid, SIGINT) < 0 && errno != ESRCH)
+ EXIT(_("Could not stop calcurse daemon: %s\n"), strerror(errno));
}
diff --git a/src/event.c b/src/event.c
index c27c078..f460ded 100644
--- a/src/event.c
+++ b/src/event.c
@@ -41,118 +41,106 @@
#include "calcurse.h"
-llist_t eventlist;
-static struct event bkp_cut_event;
+llist_t eventlist;
+static struct event bkp_cut_event;
-void
-event_free_bkp (void)
+void event_free_bkp(void)
{
- if (bkp_cut_event.mesg)
- {
- mem_free (bkp_cut_event.mesg);
- bkp_cut_event.mesg = 0;
- }
- erase_note (&bkp_cut_event.note);
+ if (bkp_cut_event.mesg) {
+ mem_free(bkp_cut_event.mesg);
+ bkp_cut_event.mesg = 0;
+ }
+ erase_note(&bkp_cut_event.note);
}
-static void
-event_free (struct event *ev)
+static void event_free(struct event *ev)
{
- mem_free (ev->mesg);
- erase_note (&ev->note);
- mem_free (ev);
+ mem_free(ev->mesg);
+ erase_note(&ev->note);
+ mem_free(ev);
}
-static void
-event_dup (struct event *in, struct event *bkp)
+static void event_dup(struct event *in, struct event *bkp)
{
- EXIT_IF (!in || !bkp, _("null pointer"));
+ EXIT_IF(!in || !bkp, _("null pointer"));
bkp->id = in->id;
bkp->day = in->day;
- bkp->mesg = mem_strdup (in->mesg);
+ bkp->mesg = mem_strdup(in->mesg);
if (in->note)
- bkp->note = mem_strdup (in->note);
+ bkp->note = mem_strdup(in->note);
}
-void
-event_llist_init (void)
+void event_llist_init(void)
{
- LLIST_INIT (&eventlist);
+ LLIST_INIT(&eventlist);
}
-void
-event_llist_free (void)
+void event_llist_free(void)
{
- LLIST_FREE_INNER (&eventlist, event_free);
- LLIST_FREE (&eventlist);
+ LLIST_FREE_INNER(&eventlist, event_free);
+ LLIST_FREE(&eventlist);
}
-static int
-event_cmp_day (struct event *a, struct event *b)
+static int event_cmp_day(struct event *a, struct event *b)
{
return a->day < b->day ? -1 : (a->day == b->day ? 0 : 1);
}
/* Create a new event */
-struct event *
-event_new (char *mesg, char *note, long day, int id)
+struct event *event_new(char *mesg, char *note, long day, int id)
{
struct event *ev;
- ev = mem_malloc (sizeof (struct event));
- ev->mesg = mem_strdup (mesg);
+ ev = mem_malloc(sizeof(struct event));
+ ev->mesg = mem_strdup(mesg);
ev->day = day;
ev->id = id;
- ev->note = (note != NULL) ? mem_strdup (note) : NULL;
+ ev->note = (note != NULL) ? mem_strdup(note) : NULL;
- LLIST_ADD_SORTED (&eventlist, ev, event_cmp_day);
+ LLIST_ADD_SORTED(&eventlist, ev, event_cmp_day);
return ev;
}
/* Check if the event belongs to the selected day */
-unsigned
-event_inday (struct event *i, long start)
+unsigned event_inday(struct event *i, long start)
{
return (i->day < start + DAYINSEC && i->day >= start);
}
/* Write to file the event in user-friendly format */
-void
-event_write (struct event *o, FILE *f)
+void event_write(struct event *o, FILE * f)
{
struct tm *lt;
time_t t;
t = o->day;
- lt = localtime (&t);
- fprintf (f, "%02u/%02u/%04u [%d] ", lt->tm_mon + 1, lt->tm_mday,
- 1900 + lt->tm_year, o->id);
+ lt = localtime(&t);
+ fprintf(f, "%02u/%02u/%04u [%d] ", lt->tm_mon + 1, lt->tm_mday,
+ 1900 + lt->tm_year, o->id);
if (o->note != NULL)
- fprintf (f, ">%s ", o->note);
- fprintf (f, "%s\n", o->mesg);
+ fprintf(f, ">%s ", o->note);
+ fprintf(f, "%s\n", o->mesg);
}
/* Load the events from file */
-struct event *
-event_scan (FILE *f, struct tm start, int id, char *note)
+struct event *event_scan(FILE * f, struct tm start, int id, char *note)
{
char buf[BUFSIZ], *nl;
time_t tstart, t;
- t = time (NULL);
- localtime (&t);
+ t = time(NULL);
+ localtime(&t);
/* Read the event description */
- if (!fgets (buf, sizeof buf, f))
+ if (!fgets(buf, sizeof buf, f))
return NULL;
- nl = strchr (buf, '\n');
- if (nl)
- {
- *nl = '\0';
- }
+ nl = strchr(buf, '\n');
+ if (nl) {
+ *nl = '\0';
+ }
start.tm_hour = 0;
start.tm_min = 0;
start.tm_sec = 0;
@@ -160,57 +148,53 @@ event_scan (FILE *f, struct tm start, int id, char *note)
start.tm_year -= 1900;
start.tm_mon--;
- tstart = mktime (&start);
- EXIT_IF (tstart == -1, _("date error in the event\n"));
+ tstart = mktime(&start);
+ EXIT_IF(tstart == -1, _("date error in the event\n"));
- return event_new (buf, note, tstart, id);
+ return event_new(buf, note, tstart, id);
}
/* Retrieve an event from the list, given the day and item position. */
-struct event *
-event_get (long day, int pos)
+struct event *event_get(long day, int pos)
{
- llist_item_t *i = LLIST_FIND_NTH (&eventlist, pos, day, event_inday);
+ llist_item_t *i = LLIST_FIND_NTH(&eventlist, pos, day, event_inday);
if (i)
- return LLIST_TS_GET_DATA (i);
+ return LLIST_TS_GET_DATA(i);
- EXIT (_("event not found"));
+ EXIT(_("event not found"));
/* NOTREACHED */
}
/* Delete an event from the list. */
-void
-event_delete_bynum (long start, unsigned num, enum eraseflg flag)
+void event_delete_bynum(long start, unsigned num, enum eraseflg flag)
{
- llist_item_t *i = LLIST_FIND_NTH (&eventlist, num, start, event_inday);
+ llist_item_t *i = LLIST_FIND_NTH(&eventlist, num, start, event_inday);
if (!i)
- EXIT (_("no such appointment"));
- struct event *ev = LLIST_TS_GET_DATA (i);
-
- switch (flag)
- {
- case ERASE_FORCE_ONLY_NOTE:
- erase_note (&ev->note);
- break;
- case ERASE_CUT:
- event_free_bkp ();
- event_dup (ev, &bkp_cut_event);
- erase_note (&ev->note);
- /* FALLTHROUGH */
- default:
- LLIST_REMOVE (&eventlist, i);
- mem_free (ev->mesg);
- mem_free (ev);
- break;
- }
+ EXIT(_("no such appointment"));
+ struct event *ev = LLIST_TS_GET_DATA(i);
+
+ switch (flag) {
+ case ERASE_FORCE_ONLY_NOTE:
+ erase_note(&ev->note);
+ break;
+ case ERASE_CUT:
+ event_free_bkp();
+ event_dup(ev, &bkp_cut_event);
+ erase_note(&ev->note);
+ /* FALLTHROUGH */
+ default:
+ LLIST_REMOVE(&eventlist, i);
+ mem_free(ev->mesg);
+ mem_free(ev);
+ break;
+ }
}
-void
-event_paste_item (void)
+void event_paste_item(void)
{
- event_new (bkp_cut_event.mesg, bkp_cut_event.note,
- date2sec (*calendar_get_slctd_day (), 0, 0), bkp_cut_event.id);
- event_free_bkp ();
+ event_new(bkp_cut_event.mesg, bkp_cut_event.note,
+ date2sec(*calendar_get_slctd_day(), 0, 0), bkp_cut_event.id);
+ event_free_bkp();
}
diff --git a/src/getstring.c b/src/getstring.c
index 045af68..cc2a949 100644
--- a/src/getstring.c
+++ b/src/getstring.c
@@ -48,14 +48,13 @@ struct getstr_status {
};
/* Print the string at the desired position. */
-static void
-getstr_print (WINDOW *win, int x, int y, struct getstr_status *st)
+static void getstr_print(WINDOW * win, int x, int y, struct getstr_status *st)
{
char c = 0;
/* print string */
- mvwaddnstr (win, y, x, &st->s[st->ci[st->scrpos].offset], -1);
- wclrtoeol (win);
+ mvwaddnstr(win, y, x, &st->s[st->ci[st->scrpos].offset], -1);
+ wclrtoeol(win);
/* print scrolling indicator */
if (st->scrpos > 0 && st->ci[st->len].dpyoff -
@@ -65,62 +64,57 @@ getstr_print (WINDOW *win, int x, int y, struct getstr_status *st)
c = '<';
else if (st->ci[st->len].dpyoff - st->ci[st->scrpos].dpyoff > col - 2)
c = '>';
- mvwprintw (win, y, col - 2, " %c", c);
+ mvwprintw(win, y, col - 2, " %c", c);
/* print cursor */
- wmove (win, y, st->ci[st->pos].dpyoff - st->ci[st->scrpos].dpyoff);
- wchgat (win, 1, A_REVERSE, COLR_CUSTOM, NULL);
+ wmove(win, y, st->ci[st->pos].dpyoff - st->ci[st->scrpos].dpyoff);
+ wchgat(win, 1, A_REVERSE, COLR_CUSTOM, NULL);
}
/* Delete a character at the given position in string. */
-static void
-getstr_del_char (struct getstr_status *st)
+static void getstr_del_char(struct getstr_status *st)
{
char *str = st->s + st->ci[st->pos].offset;
int cl = st->ci[st->pos + 1].offset - st->ci[st->pos].offset;
int cw = st->ci[st->pos + 1].dpyoff - st->ci[st->pos].dpyoff;
int i;
- memmove (str, str + cl, strlen (str) + 1);
+ memmove(str, str + cl, strlen(str) + 1);
st->len--;
- for (i = st->pos; i <= st->len; i++)
- {
- st->ci[i].offset = st->ci[i + 1].offset - cl;
- st->ci[i].dpyoff = st->ci[i + 1].dpyoff - cw;
- }
+ for (i = st->pos; i <= st->len; i++) {
+ st->ci[i].offset = st->ci[i + 1].offset - cl;
+ st->ci[i].dpyoff = st->ci[i + 1].dpyoff - cw;
+ }
}
/* Add a character at the given position in string. */
-static void
-getstr_ins_char (struct getstr_status *st, char *c)
+static void getstr_ins_char(struct getstr_status *st, char *c)
{
char *str = st->s + st->ci[st->pos].offset;
- int cl = UTF8_LENGTH (c[0]);
- int cw = utf8_width (c);
+ int cl = UTF8_LENGTH(c[0]);
+ int cw = utf8_width(c);
int i;
- memmove (str + cl, str, strlen (str) + 1);
+ memmove(str + cl, str, strlen(str) + 1);
for (i = 0; i < cl; i++, str++)
*str = c[i];
- for (i = st->len; i >= st->pos; i--)
- {
- st->ci[i + 1].offset = st->ci[i].offset + cl;
- st->ci[i + 1].dpyoff = st->ci[i].dpyoff + cw;
- }
+ for (i = st->len; i >= st->pos; i--) {
+ st->ci[i + 1].offset = st->ci[i].offset + cl;
+ st->ci[i + 1].dpyoff = st->ci[i].dpyoff + cw;
+ }
st->len++;
}
-static void
-bell (void)
+static void bell(void)
{
- putchar ('\a');
+ putchar('\a');
}
/* Initialize getstring data structure. */
static void
-getstr_init (struct getstr_status *st, char *str, struct getstr_charinfo *ci)
+getstr_init(struct getstr_status *st, char *str, struct getstr_charinfo *ci)
{
int width;
@@ -128,15 +122,14 @@ getstr_init (struct getstr_status *st, char *str, struct getstr_charinfo *ci)
st->ci = ci;
st->len = width = 0;
- while (*str)
- {
- st->ci[st->len].offset = str - st->s;
- st->ci[st->len].dpyoff = width;
-
- st->len++;
- width += utf8_width (str);
- str += UTF8_LENGTH (*str);
- }
+ while (*str) {
+ st->ci[st->len].offset = str - st->s;
+ st->ci[st->len].dpyoff = width;
+
+ st->len++;
+ width += utf8_width(str);
+ str += UTF8_LENGTH(*str);
+ }
st->ci[st->len].offset = str - st->s;
st->ci[st->len].dpyoff = width;
@@ -145,30 +138,25 @@ getstr_init (struct getstr_status *st, char *str, struct getstr_charinfo *ci)
}
/* Scroll left/right if the cursor moves outside the window range. */
-static void
-getstr_fixscr (struct getstr_status *st)
+static void getstr_fixscr(struct getstr_status *st)
{
const int pgsize = col / 3;
int pgskip;
- while (st->pos < st->scrpos)
- {
- pgskip = 0;
- while (pgskip < pgsize && st->scrpos > 0)
- {
- st->scrpos--;
- pgskip += st->ci[st->scrpos + 1].dpyoff - st->ci[st->scrpos].dpyoff;
- }
+ while (st->pos < st->scrpos) {
+ pgskip = 0;
+ while (pgskip < pgsize && st->scrpos > 0) {
+ st->scrpos--;
+ pgskip += st->ci[st->scrpos + 1].dpyoff - st->ci[st->scrpos].dpyoff;
}
- while (st->ci[st->pos].dpyoff - st->ci[st->scrpos].dpyoff > col - 2)
- {
- pgskip = 0;
- while (pgskip < pgsize && st->scrpos < st->len)
- {
- pgskip += st->ci[st->scrpos + 1].dpyoff - st->ci[st->scrpos].dpyoff;
- st->scrpos++;
- }
+ }
+ while (st->ci[st->pos].dpyoff - st->ci[st->scrpos].dpyoff > col - 2) {
+ pgskip = 0;
+ while (pgskip < pgsize && st->scrpos < st->len) {
+ pgskip += st->ci[st->scrpos + 1].dpyoff - st->ci[st->scrpos].dpyoff;
+ st->scrpos++;
}
+ }
}
/*
@@ -179,8 +167,7 @@ getstr_fixscr (struct getstr_status *st)
* environment, otherwise the cursor would move from place to place without
* control.
*/
-enum getstr
-getstring (WINDOW *win, char *str, int l, int x, int y)
+enum getstr getstring(WINDOW * win, char *str, int l, int x, int y)
{
struct getstr_status st;
struct getstr_charinfo ci[l + 1];
@@ -188,112 +175,106 @@ getstring (WINDOW *win, char *str, int l, int x, int y)
int ch, k;
char c[UTF8_MAXLEN];
- getstr_init (&st, str, ci);
- custom_apply_attr (win, ATTR_HIGHEST);
+ getstr_init(&st, str, ci);
+ custom_apply_attr(win, ATTR_HIGHEST);
for (;;) {
- getstr_fixscr (&st);
- getstr_print (win, x, y, &st);
- wins_doupdate ();
-
- if ((ch = wgetch (win)) == '\n') break;
- switch (ch)
- {
- case KEY_BACKSPACE: /* delete one character */
- case 330:
- case 127:
- case CTRL ('H'):
- if (st.pos > 0)
- {
- st.pos--;
- getstr_del_char (&st);
- }
- else
- bell ();
- break;
- case CTRL ('D'): /* delete next character */
- if (st.pos < st.len)
- getstr_del_char (&st);
- else
- bell ();
- break;
- case CTRL ('W'): /* delete a word */
- if (st.pos > 0) {
- while (st.pos && st.s[st.ci[st.pos - 1].offset] == ' ')
- {
- st.pos--;
- getstr_del_char (&st);
- }
- while (st.pos && st.s[st.ci[st.pos - 1].offset] != ' ')
- {
- st.pos--;
- getstr_del_char (&st);
- }
- }
- else
- bell ();
- break;
- case CTRL ('K'): /* delete to end-of-line */
- st.s[st.ci[st.pos].offset] = 0;
- st.len = st.pos;
- break;
- case CTRL ('A'): /* go to begginning of string */
- st.pos = 0;
- break;
- case CTRL ('E'): /* go to end of string */
- st.pos = st.len;
- break;
- case KEY_LEFT: /* move one char backward */
- case CTRL ('B'):
- if (st.pos > 0) st.pos--;
- break;
- case KEY_RIGHT: /* move one char forward */
- case CTRL ('F'):
- if (st.pos < st.len) st.pos++;
- break;
- case ESCAPE: /* cancel editing */
- return GETSTRING_ESC;
- break;
- default: /* insert one character */
- c[0] = ch;
- for (k = 1; k < MIN (UTF8_LENGTH (c[0]), UTF8_MAXLEN); k++)
- c[k] = (unsigned char)wgetch (win);
- if (st.ci[st.len].offset + k < l)
- {
- getstr_ins_char (&st, c);
- st.pos++;
- }
+ getstr_fixscr(&st);
+ getstr_print(win, x, y, &st);
+ wins_doupdate();
+
+ if ((ch = wgetch(win)) == '\n')
+ break;
+ switch (ch) {
+ case KEY_BACKSPACE: /* delete one character */
+ case 330:
+ case 127:
+ case CTRL('H'):
+ if (st.pos > 0) {
+ st.pos--;
+ getstr_del_char(&st);
+ } else
+ bell();
+ break;
+ case CTRL('D'): /* delete next character */
+ if (st.pos < st.len)
+ getstr_del_char(&st);
+ else
+ bell();
+ break;
+ case CTRL('W'): /* delete a word */
+ if (st.pos > 0) {
+ while (st.pos && st.s[st.ci[st.pos - 1].offset] == ' ') {
+ st.pos--;
+ getstr_del_char(&st);
+ }
+ while (st.pos && st.s[st.ci[st.pos - 1].offset] != ' ') {
+ st.pos--;
+ getstr_del_char(&st);
+ }
+ } else
+ bell();
+ break;
+ case CTRL('K'): /* delete to end-of-line */
+ st.s[st.ci[st.pos].offset] = 0;
+ st.len = st.pos;
+ break;
+ case CTRL('A'): /* go to begginning of string */
+ st.pos = 0;
+ break;
+ case CTRL('E'): /* go to end of string */
+ st.pos = st.len;
+ break;
+ case KEY_LEFT: /* move one char backward */
+ case CTRL('B'):
+ if (st.pos > 0)
+ st.pos--;
+ break;
+ case KEY_RIGHT: /* move one char forward */
+ case CTRL('F'):
+ if (st.pos < st.len)
+ st.pos++;
+ break;
+ case ESCAPE: /* cancel editing */
+ return GETSTRING_ESC;
+ break;
+ default: /* insert one character */
+ c[0] = ch;
+ for (k = 1; k < MIN(UTF8_LENGTH(c[0]), UTF8_MAXLEN); k++)
+ c[k] = (unsigned char)wgetch(win);
+ if (st.ci[st.len].offset + k < l) {
+ getstr_ins_char(&st, c);
+ st.pos++;
}
+ }
}
- custom_remove_attr (win, ATTR_HIGHEST);
+ custom_remove_attr(win, ATTR_HIGHEST);
return st.len == 0 ? GETSTRING_RET : GETSTRING_VALID;
}
/* Update an already existing string. */
-int
-updatestring (WINDOW *win, char **str, int x, int y)
+int updatestring(WINDOW * win, char **str, int x, int y)
{
- int len = strlen (*str);
+ int len = strlen(*str);
char *buf;
enum getstr ret;
- EXIT_IF (len + 1 > BUFSIZ, _("Internal error: line too long"));
+ EXIT_IF(len + 1 > BUFSIZ, _("Internal error: line too long"));
- buf = mem_malloc (BUFSIZ);
- memcpy (buf, *str, len + 1);
+ buf = mem_malloc(BUFSIZ);
+ memcpy(buf, *str, len + 1);
- ret = getstring (win, buf, BUFSIZ, x, y);
+ ret = getstring(win, buf, BUFSIZ, x, y);
- if (ret == GETSTRING_VALID)
- {
- len = strlen (buf);
- *str = mem_realloc (*str, len + 1, 1);
- EXIT_IF (*str == NULL, _("out of memory"));
- memcpy (*str, buf, len + 1);
- }
+ if (ret == GETSTRING_VALID) {
+ len = strlen(buf);
+ *str = mem_realloc(*str, len + 1, 1);
+ EXIT_IF(*str == NULL, _("out of memory"));
+ memcpy(*str, buf, len + 1);
+ }
- mem_free (buf);
+ mem_free(buf);
return ret;
}
diff --git a/src/help.c b/src/help.c
index 04c25d9..6dbac96 100644
--- a/src/help.c
+++ b/src/help.c
@@ -48,8 +48,7 @@ typedef struct {
char text[HELPTEXTSIZ];
} help_page_t;
-typedef enum
-{
+typedef enum {
HELP_MAIN,
HELP_SAVE,
HELP_IMPORT,
@@ -74,21 +73,18 @@ typedef enum
HELP_CREDITS,
HELPSCREENS,
NOPAGE
-}
-help_pages_e;
+} help_pages_e;
/* Returns the number of lines in an help text. */
-static int
-get_help_lines (char *text)
+static int get_help_lines(char *text)
{
int i, newline;
newline = 0;
- for (i = 0; text[i]; i++)
- {
- if (text[i] == '\n')
- newline++;
- }
+ for (i = 0; text[i]; i++) {
+ if (text[i] == '\n')
+ newline++;
+ }
return newline + 1;
}
@@ -97,7 +93,7 @@ get_help_lines (char *text)
* of lines that were written.
*/
static int
-help_write_pad (struct window *win, char *title, char *text, enum key action)
+help_write_pad(struct window *win, char *title, char *text, enum key action)
{
int colnum, rownum;
const char *bindings_title = "key bindings: %s";
@@ -105,46 +101,44 @@ help_write_pad (struct window *win, char *title, char *text, enum key action)
colnum = 0;
rownum = 0;
- erase_window_part (win->p, rownum, colnum, BUFSIZ, win->w);
- custom_apply_attr (win->p, ATTR_HIGHEST);
- mvwprintw (win->p, rownum, colnum, "%s", title);
- if ((int) action != KEY_RESIZE && action < NBKEYS) {
- switch (action)
- {
- case KEY_END_OF_WEEK:
- case KEY_START_OF_WEEK:
- case KEY_MOVE_UP:
- case KEY_MOVE_DOWN:
- case KEY_MOVE_RIGHT:
- case KEY_MOVE_LEFT:
- case KEY_GENERIC_HELP:
- case KEY_GENERIC_REDRAW:
- case KEY_GENERIC_ADD_APPT:
- case KEY_GENERIC_ADD_TODO:
- case KEY_GENERIC_NEXT_DAY:
- case KEY_GENERIC_PREV_DAY:
- case KEY_GENERIC_NEXT_WEEK:
- case KEY_GENERIC_PREV_WEEK:
- case KEY_GENERIC_GOTO_TODAY:
- case KEY_GENERIC_CREDITS:
- case KEY_GENERIC_CUT:
- case KEY_GENERIC_PASTE:
- break;
- default:
- bindings = keys_action_allkeys (action);
-
- if (bindings)
- {
- colnum = win->w - strlen (bindings_title) - strlen (bindings);
- mvwprintw (win->p, rownum, colnum, bindings_title, bindings);
- }
+ erase_window_part(win->p, rownum, colnum, BUFSIZ, win->w);
+ custom_apply_attr(win->p, ATTR_HIGHEST);
+ mvwprintw(win->p, rownum, colnum, "%s", title);
+ if ((int)action != KEY_RESIZE && action < NBKEYS) {
+ switch (action) {
+ case KEY_END_OF_WEEK:
+ case KEY_START_OF_WEEK:
+ case KEY_MOVE_UP:
+ case KEY_MOVE_DOWN:
+ case KEY_MOVE_RIGHT:
+ case KEY_MOVE_LEFT:
+ case KEY_GENERIC_HELP:
+ case KEY_GENERIC_REDRAW:
+ case KEY_GENERIC_ADD_APPT:
+ case KEY_GENERIC_ADD_TODO:
+ case KEY_GENERIC_NEXT_DAY:
+ case KEY_GENERIC_PREV_DAY:
+ case KEY_GENERIC_NEXT_WEEK:
+ case KEY_GENERIC_PREV_WEEK:
+ case KEY_GENERIC_GOTO_TODAY:
+ case KEY_GENERIC_CREDITS:
+ case KEY_GENERIC_CUT:
+ case KEY_GENERIC_PASTE:
+ break;
+ default:
+ bindings = keys_action_allkeys(action);
+
+ if (bindings) {
+ colnum = win->w - strlen(bindings_title) - strlen(bindings);
+ mvwprintw(win->p, rownum, colnum, bindings_title, bindings);
}
+ }
}
colnum = 0;
- rownum += get_help_lines (title);
- custom_remove_attr (win->p, ATTR_HIGHEST);
- mvwprintw (win->p, rownum, colnum, "%s", text);
- rownum += get_help_lines (text);
+ rownum += get_help_lines(title);
+ custom_remove_attr(win->p, ATTR_HIGHEST);
+ mvwprintw(win->p, rownum, colnum, "%s", text);
+ rownum += get_help_lines(text);
return rownum;
}
@@ -152,8 +146,7 @@ help_write_pad (struct window *win, char *title, char *text, enum key action)
* Create and init help screen and its pad, which is used to make the scrolling
* faster.
*/
-void
-help_wins_init (struct scrollwin *hwin, int x, int y, int h, int w)
+void help_wins_init(struct scrollwin *hwin, int x, int y, int h, int w)
{
const int PADOFFSET = 4;
const int TITLELINES = 3;
@@ -169,162 +162,157 @@ help_wins_init (struct scrollwin *hwin, int x, int y, int h, int w)
hwin->pad.w = hwin->win.w - 2 * PADOFFSET + 1;
hwin->label = _("Calcurse help");
- wins_scrollwin_init (hwin);
- wins_show (hwin->win.p, hwin->label);
+ wins_scrollwin_init(hwin);
+ wins_show(hwin->win.p, hwin->label);
}
/*
* Delete the existing windows and recreate them with their new
* size and placement.
*/
-static void
-help_wins_reinit (struct scrollwin *hwin)
+static void help_wins_reinit(struct scrollwin *hwin)
{
- wins_scrollwin_delete (hwin);
- wins_get_config ();
- help_wins_init (hwin, 0, 0, (notify_bar ()) ? row - 3 : row - 2, col);
+ wins_scrollwin_delete(hwin);
+ wins_get_config();
+ help_wins_init(hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col);
}
/* Reset the screen, needed when resizing terminal for example. */
-static void
-help_wins_reset (struct scrollwin *hwin)
+static void help_wins_reset(struct scrollwin *hwin)
{
- endwin ();
- wins_refresh ();
- curs_set (0);
- delwin (win[STA].p);
- help_wins_reinit (hwin);
- win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y, win[STA].x);
- keypad (win[STA].p, TRUE);
- if (notify_bar ())
- notify_reinit_bar ();
- wins_status_bar ();
- if (notify_bar ())
- notify_update_bar ();
+ endwin();
+ wins_refresh();
+ curs_set(0);
+ delwin(win[STA].p);
+ help_wins_reinit(hwin);
+ win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x);
+ keypad(win[STA].p, TRUE);
+ if (notify_bar())
+ notify_reinit_bar();
+ wins_status_bar();
+ if (notify_bar())
+ notify_update_bar();
}
/* Association between a key pressed and its corresponding help page. */
-static int
-wanted_page (int ch)
+static int wanted_page(int ch)
{
int page;
- switch (ch)
- {
-
- case KEY_GENERIC_HELP:
- page = HELP_MAIN;
- break;
-
- case KEY_FLAG_ITEM:
- page = HELP_FLAG;
- break;
-
- case KEY_GENERIC_REDRAW:
- case KEY_GENERIC_ADD_APPT:
- case KEY_GENERIC_ADD_TODO:
- case KEY_GENERIC_NEXT_DAY:
- case KEY_GENERIC_PREV_DAY:
- case KEY_GENERIC_NEXT_WEEK:
- case KEY_GENERIC_PREV_WEEK:
- case KEY_GENERIC_GOTO_TODAY:
- page = HELP_GENERAL;
- break;
-
- case KEY_GENERIC_SAVE:
- page = HELP_SAVE;
- break;
-
- case KEY_GENERIC_IMPORT:
- page = HELP_IMPORT;
- break;
-
- case KEY_GENERIC_EXPORT:
- page = HELP_EXPORT;
- break;
-
- case KEY_END_OF_WEEK:
- case KEY_START_OF_WEEK:
- case KEY_MOVE_UP:
- case KEY_MOVE_DOWN:
- case KEY_MOVE_RIGHT:
- case KEY_MOVE_LEFT:
- page = HELP_DISPLACEMENT;
- break;
-
- case KEY_ADD_ITEM:
- page = HELP_ADD;
- break;
-
- case KEY_GENERIC_GOTO:
- page = HELP_GOTO;
- break;
-
- case KEY_DEL_ITEM:
- page = HELP_DELETE;
- break;
-
- case KEY_GENERIC_CUT:
- case KEY_GENERIC_PASTE:
- page = HELP_CUT_PASTE;
- break;
-
- case KEY_EDIT_ITEM:
- page = HELP_EDIT;
- break;
-
- case KEY_EDIT_NOTE:
- page = HELP_ENOTE;
- break;
-
- case KEY_VIEW_NOTE:
- page = HELP_VNOTE;
- break;
-
- case KEY_GENERIC_CONFIG_MENU:
- page = HELP_CONFIG;
- break;
-
- case KEY_GENERIC_OTHER_CMD:
- page = HELP_OTHER;
- break;
-
- case KEY_REPEAT_ITEM:
- page = HELP_REPEAT;
- break;
-
- case KEY_VIEW_ITEM:
- page = HELP_VIEW;
- break;
-
- case KEY_PIPE_ITEM:
- page = HELP_PIPE;
- break;
-
- case KEY_RAISE_PRIORITY:
- case KEY_LOWER_PRIORITY:
- page = HELP_PRIORITY;
- break;
-
- case KEY_GENERIC_CHANGE_VIEW:
- page = HELP_TAB;
- break;
-
- case KEY_GENERIC_CREDITS:
- page = HELP_CREDITS;
- break;
-
- default:
- page = NOPAGE;
- break;
- }
+ switch (ch) {
+
+ case KEY_GENERIC_HELP:
+ page = HELP_MAIN;
+ break;
+
+ case KEY_FLAG_ITEM:
+ page = HELP_FLAG;
+ break;
+
+ case KEY_GENERIC_REDRAW:
+ case KEY_GENERIC_ADD_APPT:
+ case KEY_GENERIC_ADD_TODO:
+ case KEY_GENERIC_NEXT_DAY:
+ case KEY_GENERIC_PREV_DAY:
+ case KEY_GENERIC_NEXT_WEEK:
+ case KEY_GENERIC_PREV_WEEK:
+ case KEY_GENERIC_GOTO_TODAY:
+ page = HELP_GENERAL;
+ break;
+
+ case KEY_GENERIC_SAVE:
+ page = HELP_SAVE;
+ break;
+
+ case KEY_GENERIC_IMPORT:
+ page = HELP_IMPORT;
+ break;
+
+ case KEY_GENERIC_EXPORT:
+ page = HELP_EXPORT;
+ break;
+
+ case KEY_END_OF_WEEK:
+ case KEY_START_OF_WEEK:
+ case KEY_MOVE_UP:
+ case KEY_MOVE_DOWN:
+ case KEY_MOVE_RIGHT:
+ case KEY_MOVE_LEFT:
+ page = HELP_DISPLACEMENT;
+ break;
+
+ case KEY_ADD_ITEM:
+ page = HELP_ADD;
+ break;
+
+ case KEY_GENERIC_GOTO:
+ page = HELP_GOTO;
+ break;
+
+ case KEY_DEL_ITEM:
+ page = HELP_DELETE;
+ break;
+
+ case KEY_GENERIC_CUT:
+ case KEY_GENERIC_PASTE:
+ page = HELP_CUT_PASTE;
+ break;
+
+ case KEY_EDIT_ITEM:
+ page = HELP_EDIT;
+ break;
+
+ case KEY_EDIT_NOTE:
+ page = HELP_ENOTE;
+ break;
+
+ case KEY_VIEW_NOTE:
+ page = HELP_VNOTE;
+ break;
+
+ case KEY_GENERIC_CONFIG_MENU:
+ page = HELP_CONFIG;
+ break;
+
+ case KEY_GENERIC_OTHER_CMD:
+ page = HELP_OTHER;
+ break;
+
+ case KEY_REPEAT_ITEM:
+ page = HELP_REPEAT;
+ break;
+
+ case KEY_VIEW_ITEM:
+ page = HELP_VIEW;
+ break;
+
+ case KEY_PIPE_ITEM:
+ page = HELP_PIPE;
+ break;
+
+ case KEY_RAISE_PRIORITY:
+ case KEY_LOWER_PRIORITY:
+ page = HELP_PRIORITY;
+ break;
+
+ case KEY_GENERIC_CHANGE_VIEW:
+ page = HELP_TAB;
+ break;
+
+ case KEY_GENERIC_CREDITS:
+ page = HELP_CREDITS;
+ break;
+
+ default:
+ page = NOPAGE;
+ break;
+ }
return page;
}
/* Draws the help screen */
-void
-help_screen (void)
+void help_screen(void)
{
enum {
MOVE_UP,
@@ -341,460 +329,460 @@ help_screen (void)
char keystr[DIRECTIONS][BUFSIZ];
hscr[HELP_MAIN].title =
- _(" Welcome to Calcurse. This is the main help screen.\n");
- snprintf (hscr[HELP_MAIN].text, HELPTEXTSIZ,
- _("Moving around: Press '%s' or '%s' to scroll text upward or downward\n"
- " inside help screens, if necessary.\n\n"
- " Exit help: When finished, press '%s' to exit help and go back to\n"
- " the main Calcurse screen.\n\n"
- " Help topic: At the bottom of this screen you can see a panel with\n"
- " different fields, represented by a letter and a short\n"
- " title. This panel contains all the available actions\n"
- " you can perform when using Calcurse.\n"
- " By pressing one of the letters appearing in this\n"
- " panel, you will be shown a short description of the\n"
- " corresponding action. At the top right side of the\n"
- " description screen are indicated the user-defined key\n"
- " bindings that lead to the action.\n\n"
- " Credits: Press '%s' for credits."),
- keys_action_firstkey (KEY_GENERIC_SCROLL_UP),
- keys_action_firstkey (KEY_GENERIC_SCROLL_DOWN),
- keys_action_firstkey (KEY_GENERIC_QUIT),
- keys_action_firstkey (KEY_GENERIC_CREDITS));
+ _(" Welcome to Calcurse. This is the main help screen.\n");
+ snprintf(hscr[HELP_MAIN].text, HELPTEXTSIZ,
+ _
+ ("Moving around: Press '%s' or '%s' to scroll text upward or downward\n"
+ " inside help screens, if necessary.\n\n"
+ " Exit help: When finished, press '%s' to exit help and go back to\n"
+ " the main Calcurse screen.\n\n"
+ " Help topic: At the bottom of this screen you can see a panel with\n"
+ " different fields, represented by a letter and a short\n"
+ " title. This panel contains all the available actions\n"
+ " you can perform when using Calcurse.\n"
+ " By pressing one of the letters appearing in this\n"
+ " panel, you will be shown a short description of the\n"
+ " corresponding action. At the top right side of the\n"
+ " description screen are indicated the user-defined key\n"
+ " bindings that lead to the action.\n\n"
+ " Credits: Press '%s' for credits."),
+ keys_action_firstkey(KEY_GENERIC_SCROLL_UP),
+ keys_action_firstkey(KEY_GENERIC_SCROLL_DOWN),
+ keys_action_firstkey(KEY_GENERIC_QUIT),
+ keys_action_firstkey(KEY_GENERIC_CREDITS));
hscr[HELP_SAVE].title = _("Save\n");
- snprintf (hscr[HELP_SAVE].text, HELPTEXTSIZ,
- _("Save calcurse data.\n"
- "Data are splitted into four different files which contain :"
- "\n\n"
- " / ~/.calcurse/conf -> user configuration\n"
- " | (layout, color, general options)\n"
- " | ~/.calcurse/apts -> data related to the appointments\n"
- " | ~/.calcurse/todo -> data related to the todo list\n"
- " \\ ~/.calcurse/keys -> user-defined key bindings\n"
- "\nIn the config menu, you can choose to save the Calcurse data\n"
- "automatically before quitting."));
+ snprintf(hscr[HELP_SAVE].text, HELPTEXTSIZ,
+ _("Save calcurse data.\n"
+ "Data are splitted into four different files which contain :"
+ "\n\n"
+ " / ~/.calcurse/conf -> user configuration\n"
+ " | (layout, color, general options)\n"
+ " | ~/.calcurse/apts -> data related to the appointments\n"
+ " | ~/.calcurse/todo -> data related to the todo list\n"
+ " \\ ~/.calcurse/keys -> user-defined key bindings\n"
+ "\nIn the config menu, you can choose to save the Calcurse data\n"
+ "automatically before quitting."));
hscr[HELP_IMPORT].title = _("Import\n");
- snprintf (hscr[HELP_IMPORT].text, HELPTEXTSIZ,
- _("Import data from an icalendar file.\n"
- "You will be asked to enter the file name from which to load ical\n"
- "items. At the end of the import process, and if the general option\n"
- "'system_dialogs' is set to 'yes', a report indicating how many items\n"
- "were imported is shown.\n"
- "This report contains the total number of lines read, the number of\n"
- "appointments, events and todo items which were successfully imported,\n"
- "together with the number of items for which problems occured and that\n"
- "were skipped, if any.\n\n"
- "If one or more items could not be imported, one has the possibility to\n"
- "read the import process report in order to identify which problems\n"
- "occured.\n"
- "In this report is shown one item per line, with the line in the input\n"
- "stream at which this item begins, together with the description of why\n"
- "the item could not be imported.\n"));
+ snprintf(hscr[HELP_IMPORT].text, HELPTEXTSIZ,
+ _("Import data from an icalendar file.\n"
+ "You will be asked to enter the file name from which to load ical\n"
+ "items. At the end of the import process, and if the general option\n"
+ "'system_dialogs' is set to 'yes', a report indicating how many items\n"
+ "were imported is shown.\n"
+ "This report contains the total number of lines read, the number of\n"
+ "appointments, events and todo items which were successfully imported,\n"
+ "together with the number of items for which problems occured and that\n"
+ "were skipped, if any.\n\n"
+ "If one or more items could not be imported, one has the possibility to\n"
+ "read the import process report in order to identify which problems\n"
+ "occured.\n"
+ "In this report is shown one item per line, with the line in the input\n"
+ "stream at which this item begins, together with the description of why\n"
+ "the item could not be imported.\n"));
hscr[HELP_EXPORT].title = _("Export\n");
- snprintf (hscr[HELP_EXPORT].text, HELPTEXTSIZ,
- _("Export calcurse data (appointments, events and todos).\n"
- "This leads to the export submenu, from which you can choose between\n"
- "two different export formats: 'ical' and 'pcal'. Choosing one of\n"
- "those formats lets you export calcurse data to icalendar or pcal\n"
- "format.\n\n"
- "You first need to specify the file to which the data will be exported.\n"
- "By default, this file is:\n\n"
- " ~/calcurse.ics\n\n"
- "for an ical export, and:\n\n"
- " ~/calcurse.txt\n\n"
- "for a pcal export.\n\n"
- "Calcurse data are exported in the following order:\n"
- " events, appointments, todos.\n"));
-
- strncpy (keystr[MOVE_UP], keys_action_allkeys (KEY_MOVE_UP), BUFSIZ);
- strncpy (keystr[MOVE_DOWN], keys_action_allkeys (KEY_MOVE_DOWN),
- BUFSIZ);
- strncpy (keystr[MOVE_LEFT], keys_action_allkeys (KEY_MOVE_LEFT),
- BUFSIZ);
- strncpy (keystr[MOVE_RIGHT], keys_action_allkeys (KEY_MOVE_RIGHT),
- BUFSIZ);
+ snprintf(hscr[HELP_EXPORT].text, HELPTEXTSIZ,
+ _("Export calcurse data (appointments, events and todos).\n"
+ "This leads to the export submenu, from which you can choose between\n"
+ "two different export formats: 'ical' and 'pcal'. Choosing one of\n"
+ "those formats lets you export calcurse data to icalendar or pcal\n"
+ "format.\n\n"
+ "You first need to specify the file to which the data will be exported.\n"
+ "By default, this file is:\n\n"
+ " ~/calcurse.ics\n\n"
+ "for an ical export, and:\n\n"
+ " ~/calcurse.txt\n\n"
+ "for a pcal export.\n\n"
+ "Calcurse data are exported in the following order:\n"
+ " events, appointments, todos.\n"));
+
+ strncpy(keystr[MOVE_UP], keys_action_allkeys(KEY_MOVE_UP), BUFSIZ);
+ strncpy(keystr[MOVE_DOWN], keys_action_allkeys(KEY_MOVE_DOWN), BUFSIZ);
+ strncpy(keystr[MOVE_LEFT], keys_action_allkeys(KEY_MOVE_LEFT), BUFSIZ);
+ strncpy(keystr[MOVE_RIGHT], keys_action_allkeys(KEY_MOVE_RIGHT), BUFSIZ);
hscr[HELP_DISPLACEMENT].title = _("Displacement keys\n");
- snprintf (hscr[HELP_DISPLACEMENT].text, HELPTEXTSIZ,
- _("Move around inside calcurse screens.\n"
- "The following scheme summarizes how to get around:\n\n"
- " move up\n"
- " move to previous week\n"
- "\n"
- " %s\n"
- " move left ^ \n"
- " move to previous day |\n"
- " %s\n"
- " <-- + -->\n"
- " %s\n"
- " | move right\n"
- " v move to next day\n"
- " %s\n"
- "\n"
- " move to next week\n"
- " move down\n"
- "\nMoreover, while inside the calendar panel, the '%s' key moves\n"
- "to the first day of the week, and the '%s' key selects the last day of\n"
- "the week.\n"),
- keystr[MOVE_UP], keystr[MOVE_LEFT],
- keystr[MOVE_RIGHT], keystr[MOVE_DOWN],
- keys_action_firstkey (KEY_START_OF_WEEK),
- keys_action_firstkey (KEY_END_OF_WEEK));
+ snprintf(hscr[HELP_DISPLACEMENT].text, HELPTEXTSIZ,
+ _("Move around inside calcurse screens.\n"
+ "The following scheme summarizes how to get around:\n\n"
+ " move up\n"
+ " move to previous week\n"
+ "\n"
+ " %s\n"
+ " move left ^ \n"
+ " move to previous day |\n"
+ " %s\n"
+ " <-- + -->\n"
+ " %s\n"
+ " | move right\n"
+ " v move to next day\n"
+ " %s\n"
+ "\n"
+ " move to next week\n"
+ " move down\n"
+ "\nMoreover, while inside the calendar panel, the '%s' key moves\n"
+ "to the first day of the week, and the '%s' key selects the last day of\n"
+ "the week.\n"),
+ keystr[MOVE_UP], keystr[MOVE_LEFT],
+ keystr[MOVE_RIGHT], keystr[MOVE_DOWN],
+ keys_action_firstkey(KEY_START_OF_WEEK),
+ keys_action_firstkey(KEY_END_OF_WEEK));
hscr[HELP_VIEW].title = _("View\n");
- snprintf (hscr[HELP_VIEW].text, HELPTEXTSIZ,
- _("View the item you select in either the Todo or Appointment panel.\n"
- "\nThis is usefull when an event description is longer than the "
- "available\nspace to display it. "
- "If that is the case, the description will be\n"
- "shortened and its end replaced by '...'. To be able to read the entire\n"
- "description, just press '%s' and a popup window will appear, containing\n"
- "the whole event.\n"
- "\nPress any key to close the popup window and go back to the main\n"
- "Calcurse screen."),
- keys_action_firstkey (KEY_VIEW_ITEM));
+ snprintf(hscr[HELP_VIEW].text, HELPTEXTSIZ,
+ _
+ ("View the item you select in either the Todo or Appointment panel.\n"
+ "\nThis is usefull when an event description is longer than the "
+ "available\nspace to display it. "
+ "If that is the case, the description will be\n"
+ "shortened and its end replaced by '...'. To be able to read the entire\n"
+ "description, just press '%s' and a popup window will appear, containing\n"
+ "the whole event.\n"
+ "\nPress any key to close the popup window and go back to the main\n"
+ "Calcurse screen."), keys_action_firstkey(KEY_VIEW_ITEM));
hscr[HELP_PIPE].title = _("Pipe\n");
- snprintf (hscr[HELP_PIPE].text, HELPTEXTSIZ,
- _("Pipe the selected item to an external program.\n"
- "\nPress the '%s' key to pipe the currently selected appointment or\n"
- "todo entry to an external program.\n"
- "\nYou will be driven back to calcurse as soon as the program exits.\n"),
- keys_action_firstkey (KEY_PIPE_ITEM));
+ snprintf(hscr[HELP_PIPE].text, HELPTEXTSIZ,
+ _("Pipe the selected item to an external program.\n"
+ "\nPress the '%s' key to pipe the currently selected appointment or\n"
+ "todo entry to an external program.\n"
+ "\nYou will be driven back to calcurse as soon as the program exits.\n"),
+ keys_action_firstkey(KEY_PIPE_ITEM));
hscr[HELP_TAB].title = _("Tab\n");
- snprintf (hscr[HELP_TAB].text, HELPTEXTSIZ,
- _("Switch between panels.\n"
- "The panel currently in use has its border colorized.\n"
- "\nSome actions are possible only if the right panel is selected.\n"
- "For example, if you want to add a task in the TODO list, you need first"
- "\nto press the '%s' key to get the TODO panel selected. Then you can\n"
- "press '%s' to add your item.\n"
- "\nNotice that at the bottom of the screen the list of possible actions\n"
- "change while pressing '%s', so you always know what action can be\n"
- "performed on the selected panel."),
- keys_action_firstkey (KEY_GENERIC_CHANGE_VIEW),
- keys_action_firstkey (KEY_ADD_ITEM),
- keys_action_firstkey (KEY_GENERIC_CHANGE_VIEW));
+ snprintf(hscr[HELP_TAB].text, HELPTEXTSIZ,
+ _("Switch between panels.\n"
+ "The panel currently in use has its border colorized.\n"
+ "\nSome actions are possible only if the right panel is selected.\n"
+ "For example, if you want to add a task in the TODO list, you need first"
+ "\nto press the '%s' key to get the TODO panel selected. Then you can\n"
+ "press '%s' to add your item.\n"
+ "\nNotice that at the bottom of the screen the list of possible actions\n"
+ "change while pressing '%s', so you always know what action can be\n"
+ "performed on the selected panel."),
+ keys_action_firstkey(KEY_GENERIC_CHANGE_VIEW),
+ keys_action_firstkey(KEY_ADD_ITEM),
+ keys_action_firstkey(KEY_GENERIC_CHANGE_VIEW));
hscr[HELP_GOTO].title = _("Goto\n");
- snprintf (hscr[HELP_GOTO].text, HELPTEXTSIZ,
- _("Jump to a specific day in the calendar.\n"
- "\nUsing this command, you do not need to travel to that day using\n"
- "the displacement keys inside the calendar panel.\n"
- "If you hit [ENTER] without specifying any date, Calcurse checks the\n"
- "system current date and you will be taken to that date.\n"
- "\nNotice that pressing '%s', whatever panel is\n"
- "selected, will select current day in the calendar."),
- keys_action_firstkey (KEY_GENERIC_GOTO_TODAY));
+ snprintf(hscr[HELP_GOTO].text, HELPTEXTSIZ,
+ _("Jump to a specific day in the calendar.\n"
+ "\nUsing this command, you do not need to travel to that day using\n"
+ "the displacement keys inside the calendar panel.\n"
+ "If you hit [ENTER] without specifying any date, Calcurse checks the\n"
+ "system current date and you will be taken to that date.\n"
+ "\nNotice that pressing '%s', whatever panel is\n"
+ "selected, will select current day in the calendar."),
+ keys_action_firstkey(KEY_GENERIC_GOTO_TODAY));
hscr[HELP_DELETE].title = _("Delete\n");
- snprintf (hscr[HELP_DELETE].text, HELPTEXTSIZ,
- _("Delete an element in the ToDo or Appointment list.\n"
- "\nDepending on which panel is selected when you press the delete key,\n"
- "the hilighted item of either the ToDo or Appointment list will be \n"
- "removed from this list.\n"
- "\nIf the item to be deleted is recurrent, you will be asked if you\n"
- "wish to suppress all of the item occurences or just the one you\n"
- "selected.\n"
- "\nIf the general option 'confirm_delete' is set to 'YES', then you will"
- "\nbe asked for confirmation before deleting the selected event.\n"
- "Do not forget to save the calendar data to retrieve the modifications\n"
- "next time you launch Calcurse."));
+ snprintf(hscr[HELP_DELETE].text, HELPTEXTSIZ,
+ _("Delete an element in the ToDo or Appointment list.\n"
+ "\nDepending on which panel is selected when you press the delete key,\n"
+ "the hilighted item of either the ToDo or Appointment list will be \n"
+ "removed from this list.\n"
+ "\nIf the item to be deleted is recurrent, you will be asked if you\n"
+ "wish to suppress all of the item occurences or just the one you\n"
+ "selected.\n"
+ "\nIf the general option 'confirm_delete' is set to 'YES', then you will"
+ "\nbe asked for confirmation before deleting the selected event.\n"
+ "Do not forget to save the calendar data to retrieve the modifications\n"
+ "next time you launch Calcurse."));
hscr[HELP_ADD].title = _("Add\n");
- snprintf (hscr[HELP_ADD].text, HELPTEXTSIZ,
- _("Add an item in either the ToDo or Appointment list, depending on which\n"
- "panel is selected when you press '%s'.\n"
- "\nTo enter a new item in the TODO list, you will need first to enter the"
- "\ndescription of this new item. Then you will be asked to specify the "
- "todo\npriority. This priority is represented by a number going from 9 "
- "for the\nlowest priority, to 1 for the highest one. It is still "
- "possible to\nchange the item priority afterwards, by using the '%s' and "
- "'%s' keys\ninside the todo panel.\n"
- "\nIf the APPOINTMENT panel is selected while pressing '%s', you will be\n"
- "able to enter either a new appointment or a new all-day long event.\n"
- "To enter a new event, press [ENTER] instead of the item start time, "
- "and\njust fill in the event description.\n"
- "To enter a new appointment to be added in the APPOINTMENT list, you\n"
- "will need to enter successively the time at which the appointment\n"
- "begins, the appointment length (either by specifying the end time in\n"
- "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n"
- "and the description of the event.\n"
- "\nThe day at which occurs the event or appointment is the day currently"
- "\nselected in the calendar, so you need to move to the desired day "
- "before\npressing '%s'.\n" "\nNotes:\n"
- " o if an appointment lasts for such a long time that it continues\n"
- " on the next days, this event will be indicated on all the\n"
- " corresponding days, and the beginning or ending hour will be\n"
- " replaced by '..' if the event does not begin or end on the day.\n"
- " o if you only press [ENTER] at the APPOINTMENT or TODO event\n"
- " description prompt, without any description, no item will be\n"
- " added.\n"
- " o do not forget to save the calendar data to retrieve the new\n"
- " event next time you launch Calcurse."),
- keys_action_firstkey (KEY_ADD_ITEM),
- keys_action_firstkey (KEY_RAISE_PRIORITY),
- keys_action_firstkey (KEY_LOWER_PRIORITY),
- keys_action_firstkey (KEY_ADD_ITEM),
- keys_action_firstkey (KEY_ADD_ITEM));
+ snprintf(hscr[HELP_ADD].text, HELPTEXTSIZ,
+ _
+ ("Add an item in either the ToDo or Appointment list, depending on which\n"
+ "panel is selected when you press '%s'.\n"
+ "\nTo enter a new item in the TODO list, you will need first to enter the"
+ "\ndescription of this new item. Then you will be asked to specify the "
+ "todo\npriority. This priority is represented by a number going from 9 "
+ "for the\nlowest priority, to 1 for the highest one. It is still "
+ "possible to\nchange the item priority afterwards, by using the '%s' and "
+ "'%s' keys\ninside the todo panel.\n"
+ "\nIf the APPOINTMENT panel is selected while pressing '%s', you will be\n"
+ "able to enter either a new appointment or a new all-day long event.\n"
+ "To enter a new event, press [ENTER] instead of the item start time, "
+ "and\njust fill in the event description.\n"
+ "To enter a new appointment to be added in the APPOINTMENT list, you\n"
+ "will need to enter successively the time at which the appointment\n"
+ "begins, the appointment length (either by specifying the end time in\n"
+ "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n"
+ "and the description of the event.\n"
+ "\nThe day at which occurs the event or appointment is the day currently"
+ "\nselected in the calendar, so you need to move to the desired day "
+ "before\npressing '%s'.\n" "\nNotes:\n"
+ " o if an appointment lasts for such a long time that it continues\n"
+ " on the next days, this event will be indicated on all the\n"
+ " corresponding days, and the beginning or ending hour will be\n"
+ " replaced by '..' if the event does not begin or end on the day.\n"
+ " o if you only press [ENTER] at the APPOINTMENT or TODO event\n"
+ " description prompt, without any description, no item will be\n"
+ " added.\n"
+ " o do not forget to save the calendar data to retrieve the new\n"
+ " event next time you launch Calcurse."),
+ keys_action_firstkey(KEY_ADD_ITEM),
+ keys_action_firstkey(KEY_RAISE_PRIORITY),
+ keys_action_firstkey(KEY_LOWER_PRIORITY),
+ keys_action_firstkey(KEY_ADD_ITEM),
+ keys_action_firstkey(KEY_ADD_ITEM));
hscr[HELP_CUT_PASTE].title = _("Cut and Paste\n");
- snprintf (hscr[HELP_CUT_PASTE].text, HELPTEXTSIZ,
- _("Cut and paste the currently selected item. This is useful to quickly\n"
- "move an item from one date to another.\n"
- "To do so, one must first highlight the item that needs to be moved,\n"
- "then press '%s' to cut this item. It will be removed from the panel.\n"
- "Once the new date is chosen in the calendar, the appointment panel must\n"
- "be selected and the '%s' key must be pressed to paste the item.\n"
- "The item will appear again in the appointment panel, assigned to the\n"
- "newly selected date.\n\n"
- "Be careful that if two cuts are performed successively without pasting\n"
- "between them, the item that was cut at first will be lost, together\n"
- "with its associated note if it had one."),
- keys_action_firstkey (KEY_GENERIC_CUT),
- keys_action_firstkey (KEY_GENERIC_PASTE));
+ snprintf(hscr[HELP_CUT_PASTE].text, HELPTEXTSIZ,
+ _
+ ("Cut and paste the currently selected item. This is useful to quickly\n"
+ "move an item from one date to another.\n"
+ "To do so, one must first highlight the item that needs to be moved,\n"
+ "then press '%s' to cut this item. It will be removed from the panel.\n"
+ "Once the new date is chosen in the calendar, the appointment panel must\n"
+ "be selected and the '%s' key must be pressed to paste the item.\n"
+ "The item will appear again in the appointment panel, assigned to the\n"
+ "newly selected date.\n\n"
+ "Be careful that if two cuts are performed successively without pasting\n"
+ "between them, the item that was cut at first will be lost, together\n"
+ "with its associated note if it had one."),
+ keys_action_firstkey(KEY_GENERIC_CUT),
+ keys_action_firstkey(KEY_GENERIC_PASTE));
hscr[HELP_EDIT].title = _("Edit Item\n");
- snprintf (hscr[HELP_EDIT].text, HELPTEXTSIZ,
- _("Edit the item which is currently selected.\n"
- "Depending on the item type (appointment, event, or todo), and if it is\n"
- "repeated or not, you will be asked to choose one of the item properties"
- "\nto modify. An item property is one of the following: the start time, "
- "the\nend time, the description, or the item repetition.\n"
- "Once you have chosen the property you want to modify, you will be shown"
- "\nits actual value, and you will be able to change it as you like.\n"
- "\nNotes:\n"
- " o if you choose to edit the item repetition properties, you will\n"
- " be asked to re-enter all of the repetition characteristics\n"
- " (repetition type, frequence, and ending date). Moreover, the\n"
- " previous data concerning the deleted occurences will be lost.\n"
- " o do not forget to save the calendar data to retrieve the\n"
- " modified properties next time you launch Calcurse."));
+ snprintf(hscr[HELP_EDIT].text, HELPTEXTSIZ,
+ _("Edit the item which is currently selected.\n"
+ "Depending on the item type (appointment, event, or todo), and if it is\n"
+ "repeated or not, you will be asked to choose one of the item properties"
+ "\nto modify. An item property is one of the following: the start time, "
+ "the\nend time, the description, or the item repetition.\n"
+ "Once you have chosen the property you want to modify, you will be shown"
+ "\nits actual value, and you will be able to change it as you like.\n"
+ "\nNotes:\n"
+ " o if you choose to edit the item repetition properties, you will\n"
+ " be asked to re-enter all of the repetition characteristics\n"
+ " (repetition type, frequence, and ending date). Moreover, the\n"
+ " previous data concerning the deleted occurences will be lost.\n"
+ " o do not forget to save the calendar data to retrieve the\n"
+ " modified properties next time you launch Calcurse."));
hscr[HELP_ENOTE].title = _("EditNote\n");
- snprintf (hscr[HELP_ENOTE].text, HELPTEXTSIZ,
- _("Attach a note to any type of item, or edit an already existing note.\n"
- "This feature is useful if you do not have enough space to store all\n"
- "of your item description, or if you would like to add sub-tasks to an\n"
- "already existing todo item for example.\n"
- "Before pressing the '%s' key, you first need to highlight the item you\n"
- "want the note to be attached to. Then you will be driven to an\n"
- "external editor to edit your note. This editor is chosen the following\n"
- "way:\n"
- " o if the 'VISUAL' environment variable is set, then this will be\n"
- " the default editor to be called.\n"
- " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n"
- " will be used as the default editor.\n"
- " o if none of the above environment variables is set, then\n"
- " '/usr/bin/vi' will be used.\n"
- "\nOnce the item note is edited and saved, quit your favorite editor.\n"
- "You will then go back to Calcurse, and the '>' sign will appear in front"
- "\nof the highlighted item, meaning there is a note attached to it."),
- keys_action_firstkey (KEY_EDIT_NOTE));
+ snprintf(hscr[HELP_ENOTE].text, HELPTEXTSIZ,
+ _
+ ("Attach a note to any type of item, or edit an already existing note.\n"
+ "This feature is useful if you do not have enough space to store all\n"
+ "of your item description, or if you would like to add sub-tasks to an\n"
+ "already existing todo item for example.\n"
+ "Before pressing the '%s' key, you first need to highlight the item you\n"
+ "want the note to be attached to. Then you will be driven to an\n"
+ "external editor to edit your note. This editor is chosen the following\n"
+ "way:\n"
+ " o if the 'VISUAL' environment variable is set, then this will be\n"
+ " the default editor to be called.\n"
+ " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n"
+ " will be used as the default editor.\n"
+ " o if none of the above environment variables is set, then\n"
+ " '/usr/bin/vi' will be used.\n"
+ "\nOnce the item note is edited and saved, quit your favorite editor.\n"
+ "You will then go back to Calcurse, and the '>' sign will appear in front"
+ "\nof the highlighted item, meaning there is a note attached to it."),
+ keys_action_firstkey(KEY_EDIT_NOTE));
hscr[HELP_VNOTE].title = _("ViewNote\n");
- snprintf (hscr[HELP_VNOTE].text, HELPTEXTSIZ,
- _("View a note which was previously attached to an item (an item which\n"
- "owns a note has a '>' sign in front of it).\n"
- "This command only permits to view the note, not to edit it (to do so,\n"
- "use the 'EditNote' command, by pressing the '%s' key).\n"
- "Once you highlighted an item with a note attached to it, and the '%s' key"
- "\nwas pressed, you will be driven to an external pager to view that "
- "note.\n"
- "The default pager is chosen the following way:\n"
- " o if the 'PAGER' environment variable is set, then this will be\n"
- " the default viewer to be called.\n"
- " o if the above environment variable is not set, then\n"
- " '/usr/bin/less' will be used.\n"
- "As for editing a note, quit the pager and you will be driven back to\n"
- "Calcurse."),
- keys_action_firstkey (KEY_EDIT_NOTE),
- keys_action_firstkey (KEY_VIEW_NOTE));
+ snprintf(hscr[HELP_VNOTE].text, HELPTEXTSIZ,
+ _
+ ("View a note which was previously attached to an item (an item which\n"
+ "owns a note has a '>' sign in front of it).\n"
+ "This command only permits to view the note, not to edit it (to do so,\n"
+ "use the 'EditNote' command, by pressing the '%s' key).\n"
+ "Once you highlighted an item with a note attached to it, and the '%s' key"
+ "\nwas pressed, you will be driven to an external pager to view that "
+ "note.\n" "The default pager is chosen the following way:\n"
+ " o if the 'PAGER' environment variable is set, then this will be\n"
+ " the default viewer to be called.\n"
+ " o if the above environment variable is not set, then\n"
+ " '/usr/bin/less' will be used.\n"
+ "As for editing a note, quit the pager and you will be driven back to\n"
+ "Calcurse."), keys_action_firstkey(KEY_EDIT_NOTE),
+ keys_action_firstkey(KEY_VIEW_NOTE));
hscr[HELP_PRIORITY].title = _("Priority\n");
- snprintf (hscr[HELP_PRIORITY].text, HELPTEXTSIZ,
- _("Change the priority of the currently selected item in the ToDo list.\n"
- "Priorities are represented by the number appearing in front of the\n"
- "todo description. This number goes from 9 for the lowest priority to\n"
- "1 for the highest priority.\n"
- "Todo having higher priorities are placed first (at the top) inside the\n"
- "todo panel.\n\n"
- "If you want to raise the priority of a todo item, you need to press "
- "'%s'.\n"
- "In doing so, the number in front of this item will decrease, "
- "meaning its\npriority increases. The item position inside the todo "
- "panel may change,\ndepending on the priority of the items above it.\n\n"
- "At the opposite, to lower a todo priority, press '%s'. The todo position"
- "\nmay also change depending on the priority of the items below."),
- keys_action_firstkey (KEY_RAISE_PRIORITY),
- keys_action_firstkey (KEY_LOWER_PRIORITY));
+ snprintf(hscr[HELP_PRIORITY].text, HELPTEXTSIZ,
+ _
+ ("Change the priority of the currently selected item in the ToDo list.\n"
+ "Priorities are represented by the number appearing in front of the\n"
+ "todo description. This number goes from 9 for the lowest priority to\n"
+ "1 for the highest priority.\n"
+ "Todo having higher priorities are placed first (at the top) inside the\n"
+ "todo panel.\n\n"
+ "If you want to raise the priority of a todo item, you need to press "
+ "'%s'.\n"
+ "In doing so, the number in front of this item will decrease, "
+ "meaning its\npriority increases. The item position inside the todo "
+ "panel may change,\ndepending on the priority of the items above it.\n\n"
+ "At the opposite, to lower a todo priority, press '%s'. The todo position"
+ "\nmay also change depending on the priority of the items below."),
+ keys_action_firstkey(KEY_RAISE_PRIORITY),
+ keys_action_firstkey(KEY_LOWER_PRIORITY));
hscr[HELP_REPEAT].title = _("Repeat\n");
- snprintf (hscr[HELP_REPEAT].text, HELPTEXTSIZ,
- _("Repeat an event or an appointment.\n"
- "You must first select the item to be repeated by moving inside the\n"
- "appointment panel. Then pressing '%s' will lead you to a set of three\n"
- "questions, with which you will be able to specify the repetition\n"
- "characteristics:\n\n"
- " o type: you can choose between a daily, weekly, monthly or\n"
- " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n"
- " respectively.\n\n"
- " o frequence: this indicates how often the item shall be repeated.\n"
- " For example, if you want to remember an anniversary,\n"
- " choose a 'yearly' repetition with a frequence of '1',\n"
- " which means it must be repeated every year. Another\n"
- " example: if you go to the restaurant every two days,\n"
- " choose a 'daily' repetition with a frequence of '2'.\n\n"
- " o ending date: this specifies when to stop repeating the selected\n"
- " event or appointment. To indicate an endless \n"
- " repetition, enter '0' and the item will be repeated\n"
- " forever.\n" "\nNotes:\n"
- " o repeated items are marked with an '*' inside the appointment\n"
- " panel, to be easily recognizable from non-repeated ones.\n"
- " o the 'Repeat' and 'Delete' command can be mixed to create\n"
- " complicated configurations, as it is possible to delete only\n"
- " one occurence of a repeated item."),
- keys_action_firstkey (KEY_REPEAT_ITEM));
+ snprintf(hscr[HELP_REPEAT].text, HELPTEXTSIZ,
+ _("Repeat an event or an appointment.\n"
+ "You must first select the item to be repeated by moving inside the\n"
+ "appointment panel. Then pressing '%s' will lead you to a set of three\n"
+ "questions, with which you will be able to specify the repetition\n"
+ "characteristics:\n\n"
+ " o type: you can choose between a daily, weekly, monthly or\n"
+ " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n"
+ " respectively.\n\n"
+ " o frequence: this indicates how often the item shall be repeated.\n"
+ " For example, if you want to remember an anniversary,\n"
+ " choose a 'yearly' repetition with a frequence of '1',\n"
+ " which means it must be repeated every year. Another\n"
+ " example: if you go to the restaurant every two days,\n"
+ " choose a 'daily' repetition with a frequence of '2'.\n\n"
+ " o ending date: this specifies when to stop repeating the selected\n"
+ " event or appointment. To indicate an endless \n"
+ " repetition, enter '0' and the item will be repeated\n"
+ " forever.\n" "\nNotes:\n"
+ " o repeated items are marked with an '*' inside the appointment\n"
+ " panel, to be easily recognizable from non-repeated ones.\n"
+ " o the 'Repeat' and 'Delete' command can be mixed to create\n"
+ " complicated configurations, as it is possible to delete only\n"
+ " one occurence of a repeated item."),
+ keys_action_firstkey(KEY_REPEAT_ITEM));
hscr[HELP_FLAG].title = _("Flag Item\n");
- snprintf (hscr[HELP_FLAG].text, HELPTEXTSIZ,
- _("Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n"
- "If a todo is flagged as completed, its priority number will be replaced\n"
- "by an 'X' sign. Completed tasks will no longer appear in exported data\n"
- "or when using the '-t' command line flag (unless specifying '0' as the\n"
- "priority number, in which case only completed tasks will be shown).\n\n"
- "If an appointment is flagged as important, an exclamation mark appears\n"
- "in front of it, and you will be warned if time gets closed to the\n"
- "appointment start time.\n"
- "To customize the way one gets notified, the configuration submenu lets\n"
- "you choose the command launched to warn user of an upcoming appointment,"
- "\nand how long before it he gets notified."));
+ snprintf(hscr[HELP_FLAG].text, HELPTEXTSIZ,
+ _
+ ("Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n"
+ "If a todo is flagged as completed, its priority number will be replaced\n"
+ "by an 'X' sign. Completed tasks will no longer appear in exported data\n"
+ "or when using the '-t' command line flag (unless specifying '0' as the\n"
+ "priority number, in which case only completed tasks will be shown).\n\n"
+ "If an appointment is flagged as important, an exclamation mark appears\n"
+ "in front of it, and you will be warned if time gets closed to the\n"
+ "appointment start time.\n"
+ "To customize the way one gets notified, the configuration submenu lets\n"
+ "you choose the command launched to warn user of an upcoming appointment,"
+ "\nand how long before it he gets notified."));
hscr[HELP_CONFIG].title = _("Config\n");
- snprintf (hscr[HELP_CONFIG].text, HELPTEXTSIZ,
- _("Open the configuration submenu.\n"
- "From this submenu, you can select between color, layout, notification\n"
- "and general options, and you can also configure your keybindings.\n"
- "\nThe color submenu lets you choose the color theme.\n"
- "The layout submenu lets you choose the Calcurse screen layout, in other"
- "\nwords where to place the three different panels on the screen.\n"
- "The general options submenu brings a screen with the different options"
- "\nwhich modifies the way Calcurse interacts with the user.\n"
- "The notify submenu allows you to change the notify-bar settings.\n"
- "The keys submenu lets you define your own key bindings.\n"
- "\nDo not forget to save the calendar data to retrieve your configuration"
- "\nnext time you launch Calcurse."));
+ snprintf(hscr[HELP_CONFIG].text, HELPTEXTSIZ,
+ _("Open the configuration submenu.\n"
+ "From this submenu, you can select between color, layout, notification\n"
+ "and general options, and you can also configure your keybindings.\n"
+ "\nThe color submenu lets you choose the color theme.\n"
+ "The layout submenu lets you choose the Calcurse screen layout, in other"
+ "\nwords where to place the three different panels on the screen.\n"
+ "The general options submenu brings a screen with the different options"
+ "\nwhich modifies the way Calcurse interacts with the user.\n"
+ "The notify submenu allows you to change the notify-bar settings.\n"
+ "The keys submenu lets you define your own key bindings.\n"
+ "\nDo not forget to save the calendar data to retrieve your configuration"
+ "\nnext time you launch Calcurse."));
hscr[HELP_GENERAL].title = _("Generic keybindings\n");
- snprintf (hscr[HELP_GENERAL].text, HELPTEXTSIZ,
- _("Some of the keybindings apply whatever panel is selected. They are\n"
- "called generic keybinding.\n"
- "Here is the list of all the generic key bindings, together with their\n"
- "corresponding action:\n\n"
- " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n"
- " you resize your terminal screen or when\n"
- " garbage appears inside the display\n"
- " '%s' : Add Appointment -> add an appointment or an event\n"
- " '%s' : Add ToDo -> add a todo\n"
- " '%s' : -1 Day -> move to previous day\n"
- " '%s' : +1 Day -> move to next day\n"
- " '%s' : -1 Week -> move to previous week\n"
- " '%s' : +1 Week -> move to next week\n"
- " '%s' : Goto today -> move to current day\n"
- "\nThe '%s' and '%s' keys are used to scroll text upward or downward\n"
- "when inside specific screens such the help screens for example.\n"
- "They are also used when the calendar screen is selected to switch\n"
- "between the available views (monthly and weekly calendar views)."),
- keys_action_firstkey (KEY_GENERIC_REDRAW),
- keys_action_firstkey (KEY_GENERIC_ADD_APPT),
- keys_action_firstkey (KEY_GENERIC_ADD_TODO),
- keys_action_firstkey (KEY_GENERIC_PREV_DAY),
- keys_action_firstkey (KEY_GENERIC_NEXT_DAY),
- keys_action_firstkey (KEY_GENERIC_PREV_WEEK),
- keys_action_firstkey (KEY_GENERIC_NEXT_WEEK),
- keys_action_firstkey (KEY_GENERIC_GOTO_TODAY),
- keys_action_firstkey (KEY_GENERIC_SCROLL_UP),
- keys_action_firstkey (KEY_GENERIC_SCROLL_DOWN));
+ snprintf(hscr[HELP_GENERAL].text, HELPTEXTSIZ,
+ _
+ ("Some of the keybindings apply whatever panel is selected. They are\n"
+ "called generic keybinding.\n"
+ "Here is the list of all the generic key bindings, together with their\n"
+ "corresponding action:\n\n"
+ " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n"
+ " you resize your terminal screen or when\n"
+ " garbage appears inside the display\n"
+ " '%s' : Add Appointment -> add an appointment or an event\n"
+ " '%s' : Add ToDo -> add a todo\n"
+ " '%s' : -1 Day -> move to previous day\n"
+ " '%s' : +1 Day -> move to next day\n"
+ " '%s' : -1 Week -> move to previous week\n"
+ " '%s' : +1 Week -> move to next week\n"
+ " '%s' : Goto today -> move to current day\n"
+ "\nThe '%s' and '%s' keys are used to scroll text upward or downward\n"
+ "when inside specific screens such the help screens for example.\n"
+ "They are also used when the calendar screen is selected to switch\n"
+ "between the available views (monthly and weekly calendar views)."),
+ keys_action_firstkey(KEY_GENERIC_REDRAW),
+ keys_action_firstkey(KEY_GENERIC_ADD_APPT),
+ keys_action_firstkey(KEY_GENERIC_ADD_TODO),
+ keys_action_firstkey(KEY_GENERIC_PREV_DAY),
+ keys_action_firstkey(KEY_GENERIC_NEXT_DAY),
+ keys_action_firstkey(KEY_GENERIC_PREV_WEEK),
+ keys_action_firstkey(KEY_GENERIC_NEXT_WEEK),
+ keys_action_firstkey(KEY_GENERIC_GOTO_TODAY),
+ keys_action_firstkey(KEY_GENERIC_SCROLL_UP),
+ keys_action_firstkey(KEY_GENERIC_SCROLL_DOWN));
hscr[HELP_OTHER].title = _("OtherCmd\n");
- snprintf (hscr[HELP_OTHER].text, HELPTEXTSIZ,
- _("Switch between status bar help pages.\n"
- "Because the terminal screen is too narrow to display all of the\n"
- "available commands, you need to press '%s' to see the next set of\n"
- "commands together with their keybindings.\n"
- "Once the last status bar page is reached, pressing '%s' another time\n"
- "leads you back to the first page."),
- keys_action_firstkey (KEY_GENERIC_OTHER_CMD),
- keys_action_firstkey (KEY_GENERIC_OTHER_CMD));
+ snprintf(hscr[HELP_OTHER].text, HELPTEXTSIZ,
+ _("Switch between status bar help pages.\n"
+ "Because the terminal screen is too narrow to display all of the\n"
+ "available commands, you need to press '%s' to see the next set of\n"
+ "commands together with their keybindings.\n"
+ "Once the last status bar page is reached, pressing '%s' another time\n"
+ "leads you back to the first page."),
+ keys_action_firstkey(KEY_GENERIC_OTHER_CMD),
+ keys_action_firstkey(KEY_GENERIC_OTHER_CMD));
hscr[HELP_CREDITS].title = _("Calcurse - text-based organizer");
- snprintf (hscr[HELP_CREDITS].text, HELPTEXTSIZ,
- _("\nCopyright (c) 2004-2012 calcurse Development Team\n"
- "All rights reserved.\n"
- "\n"
- "Redistribution and use in source and binary forms, with or without\n"
- "modification, are permitted provided that the following conditions\n"
- "are met:\n"
- "\n"
- "\t- Redistributions of source code must retain the above\n"
- "\t copyright notice, this list of conditions and the\n"
- "\t following disclaimer.\n"
- "\n"
- "\t- Redistributions in binary form must reproduce the above\n"
- "\t copyright notice, this list of conditions and the\n"
- "\t following disclaimer in the documentation and/or other\n"
- "\t materials provided with the distribution.\n"
- "\n\n"
- "Send your feedback or comments to : misc@calcurse.org\n"
- "Calcurse home page : http://calcurse.org"));
-
- help_wins_init (&hwin, 0, 0, (notify_bar ()) ? row - 3 : row - 2, col);
+ snprintf(hscr[HELP_CREDITS].text, HELPTEXTSIZ,
+ _("\nCopyright (c) 2004-2012 calcurse Development Team\n"
+ "All rights reserved.\n"
+ "\n"
+ "Redistribution and use in source and binary forms, with or without\n"
+ "modification, are permitted provided that the following conditions\n"
+ "are met:\n"
+ "\n"
+ "\t- Redistributions of source code must retain the above\n"
+ "\t copyright notice, this list of conditions and the\n"
+ "\t following disclaimer.\n"
+ "\n"
+ "\t- Redistributions in binary form must reproduce the above\n"
+ "\t copyright notice, this list of conditions and the\n"
+ "\t following disclaimer in the documentation and/or other\n"
+ "\t materials provided with the distribution.\n"
+ "\n\n"
+ "Send your feedback or comments to : misc@calcurse.org\n"
+ "Calcurse home page : http://calcurse.org"));
+
+ help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col);
oldpage = HELP_MAIN;
need_resize = 0;
/* Display the help screen related to user input. */
- while (ch != KEY_GENERIC_QUIT)
- {
- erase_window_part (hwin.win.p, 1, hwin.pad.y, col - 2,
- hwin.win.h - 2);
-
- switch (ch) {
- case KEY_GENERIC_SCROLL_DOWN:
- wins_scrollwin_down (&hwin, 1);
- break;
-
- case KEY_GENERIC_SCROLL_UP:
- wins_scrollwin_up (&hwin, 1);
- break;
-
- default:
- page = wanted_page (ch);
- if (page != NOPAGE) {
- hwin.first_visible_line = 0;
- hwin.total_lines = help_write_pad (&hwin.pad, hscr[page].title,
- hscr[page].text, ch);
- oldpage = page;
- }
+ while (ch != KEY_GENERIC_QUIT) {
+ erase_window_part(hwin.win.p, 1, hwin.pad.y, col - 2, hwin.win.h - 2);
+
+ switch (ch) {
+ case KEY_GENERIC_SCROLL_DOWN:
+ wins_scrollwin_down(&hwin, 1);
+ break;
+
+ case KEY_GENERIC_SCROLL_UP:
+ wins_scrollwin_up(&hwin, 1);
+ break;
+
+ default:
+ page = wanted_page(ch);
+ if (page != NOPAGE) {
+ hwin.first_visible_line = 0;
+ hwin.total_lines = help_write_pad(&hwin.pad, hscr[page].title,
+ hscr[page].text, ch);
+ oldpage = page;
}
+ }
- if (resize)
- {
- resize = 0;
- wins_get_config ();
- help_wins_reset (&hwin);
- hwin.first_visible_line = 0;
- hwin.total_lines = help_write_pad (&hwin.pad, hscr[oldpage].title,
- hscr[oldpage].text, ch);
- need_resize = 1;
- }
-
- wins_scrollwin_display (&hwin);
- ch = keys_getch (win[STA].p, NULL);
+ if (resize) {
+ resize = 0;
+ wins_get_config();
+ help_wins_reset(&hwin);
+ hwin.first_visible_line = 0;
+ hwin.total_lines = help_write_pad(&hwin.pad, hscr[oldpage].title,
+ hscr[oldpage].text, ch);
+ need_resize = 1;
}
- wins_scrollwin_delete (&hwin);
+
+ wins_scrollwin_display(&hwin);
+ ch = keys_getch(win[STA].p, NULL);
+ }
+ wins_scrollwin_delete(&hwin);
if (need_resize)
- wins_reset ();
+ wins_reset();
}
diff --git a/src/htable.h b/src/htable.h
index 91d01d8..3bde5ef 100644
--- a/src/htable.h
+++ b/src/htable.h
@@ -69,7 +69,7 @@ struct name { \
}
#define HTABLE_ENTRY(type) \
-struct type *next /* To build the bucket chain list. */
+struct type *next /* To build the bucket chain list. */
#define HTABLE_SIZE(head) \
(sizeof (*(head)->bkts) ? sizeof ((head)->bkts) / sizeof (*(head)->bkts) : 0)
diff --git a/src/ical.c b/src/ical.c
index 375f3a1..ca10865 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -55,232 +55,208 @@ typedef enum {
typedef struct {
enum recur_type type;
- int freq;
- long until;
- unsigned count;
+ int freq;
+ long until;
+ unsigned count;
} ical_rpt_t;
-static void ical_export_header (FILE *);
-static void ical_export_recur_events (FILE *);
-static void ical_export_events (FILE *);
-static void ical_export_recur_apoints (FILE *);
-static void ical_export_apoints (FILE *);
-static void ical_export_todo (FILE *);
-static void ical_export_footer (FILE *);
+static void ical_export_header(FILE *);
+static void ical_export_recur_events(FILE *);
+static void ical_export_events(FILE *);
+static void ical_export_recur_apoints(FILE *);
+static void ical_export_apoints(FILE *);
+static void ical_export_todo(FILE *);
+static void ical_export_footer(FILE *);
static const char *ical_recur_type[RECUR_TYPES] =
- { "", "DAILY", "WEEKLY", "MONTHLY", "YEARLY" };
+ { "", "DAILY", "WEEKLY", "MONTHLY", "YEARLY" };
/* iCal alarm notification. */
-static void
-ical_export_valarm (FILE *stream)
+static void ical_export_valarm(FILE * stream)
{
- fputs ("BEGIN:VALARM\n", stream);
- pthread_mutex_lock (&nbar.mutex);
- fprintf (stream, "TRIGGER:-P%dS\n", nbar.cntdwn);
- pthread_mutex_unlock (&nbar.mutex);
- fputs ("ACTION:DISPLAY\n", stream);
- fputs ("END:VALARM\n", stream);
+ fputs("BEGIN:VALARM\n", stream);
+ pthread_mutex_lock(&nbar.mutex);
+ fprintf(stream, "TRIGGER:-P%dS\n", nbar.cntdwn);
+ pthread_mutex_unlock(&nbar.mutex);
+ fputs("ACTION:DISPLAY\n", stream);
+ fputs("END:VALARM\n", stream);
}
/* Export header. */
-static void
-ical_export_header (FILE *stream)
+static void ical_export_header(FILE * stream)
{
- fputs ("BEGIN:VCALENDAR\n", stream);
- fprintf (stream, "PRODID:-//calcurse//NONSGML v%s//EN\n", VERSION);
- fputs ("VERSION:2.0\n", stream);
+ fputs("BEGIN:VCALENDAR\n", stream);
+ fprintf(stream, "PRODID:-//calcurse//NONSGML v%s//EN\n", VERSION);
+ fputs("VERSION:2.0\n", stream);
}
/* Export footer. */
-static void
-ical_export_footer (FILE *stream)
+static void ical_export_footer(FILE * stream)
{
- fputs ("END:VCALENDAR\n", stream);
+ fputs("END:VCALENDAR\n", stream);
}
/* Export recurrent events. */
-static void
-ical_export_recur_events (FILE *stream)
+static void ical_export_recur_events(FILE * stream)
{
llist_item_t *i, *j;
char ical_date[BUFSIZ];
- LLIST_FOREACH (&recur_elist, i)
- {
- struct recur_event *rev = LLIST_GET_DATA (i);
- date_sec2date_fmt (rev->day, ICALDATEFMT, ical_date);
- fputs ("BEGIN:VEVENT\n", stream);
- fprintf (stream, "DTSTART:%s\n", ical_date);
- fprintf (stream, "RRULE:FREQ=%s;INTERVAL=%d",
- ical_recur_type[rev->rpt->type], rev->rpt->freq);
-
- if (rev->rpt->until != 0)
- {
- date_sec2date_fmt (rev->rpt->until, ICALDATEFMT, ical_date);
- fprintf (stream, ";UNTIL=%s\n", ical_date);
- }
- else
- fputc ('\n', stream);
-
- if (LLIST_FIRST (&rev->exc))
- {
- fputs ("EXDATE:", stream);
- LLIST_FOREACH (&rev->exc, j)
- {
- struct excp *exc = LLIST_GET_DATA (j);
- date_sec2date_fmt (exc->st, ICALDATEFMT, ical_date);
- fprintf (stream, "%s", ical_date);
- if (LLIST_NEXT (j))
- fputc (',', stream);
- else
- fputc ('\n', stream);
- }
- }
-
- fprintf (stream, "SUMMARY:%s\n", rev->mesg);
- fputs ("END:VEVENT\n", stream);
+ LLIST_FOREACH(&recur_elist, i) {
+ struct recur_event *rev = LLIST_GET_DATA(i);
+ date_sec2date_fmt(rev->day, ICALDATEFMT, ical_date);
+ fputs("BEGIN:VEVENT\n", stream);
+ fprintf(stream, "DTSTART:%s\n", ical_date);
+ fprintf(stream, "RRULE:FREQ=%s;INTERVAL=%d",
+ ical_recur_type[rev->rpt->type], rev->rpt->freq);
+
+ if (rev->rpt->until != 0) {
+ date_sec2date_fmt(rev->rpt->until, ICALDATEFMT, ical_date);
+ fprintf(stream, ";UNTIL=%s\n", ical_date);
+ } else
+ fputc('\n', stream);
+
+ if (LLIST_FIRST(&rev->exc)) {
+ fputs("EXDATE:", stream);
+ LLIST_FOREACH(&rev->exc, j) {
+ struct excp *exc = LLIST_GET_DATA(j);
+ date_sec2date_fmt(exc->st, ICALDATEFMT, ical_date);
+ fprintf(stream, "%s", ical_date);
+ if (LLIST_NEXT(j))
+ fputc(',', stream);
+ else
+ fputc('\n', stream);
+ }
}
+
+ fprintf(stream, "SUMMARY:%s\n", rev->mesg);
+ fputs("END:VEVENT\n", stream);
+ }
}
/* Export events. */
-static void
-ical_export_events (FILE *stream)
+static void ical_export_events(FILE * stream)
{
llist_item_t *i;
char ical_date[BUFSIZ];
- LLIST_FOREACH (&eventlist, i)
- {
- struct event *ev = LLIST_TS_GET_DATA (i);
- date_sec2date_fmt (ev->day, ICALDATEFMT, ical_date);
- fputs ("BEGIN:VEVENT\n", stream);
- fprintf (stream, "DTSTART:%s\n", ical_date);
- fprintf (stream, "SUMMARY:%s\n", ev->mesg);
- fputs ("END:VEVENT\n", stream);
- }
+ LLIST_FOREACH(&eventlist, i) {
+ struct event *ev = LLIST_TS_GET_DATA(i);
+ date_sec2date_fmt(ev->day, ICALDATEFMT, ical_date);
+ fputs("BEGIN:VEVENT\n", stream);
+ fprintf(stream, "DTSTART:%s\n", ical_date);
+ fprintf(stream, "SUMMARY:%s\n", ev->mesg);
+ fputs("END:VEVENT\n", stream);
+ }
}
/* Export recurrent appointments. */
-static void
-ical_export_recur_apoints (FILE *stream)
+static void ical_export_recur_apoints(FILE * stream)
{
llist_item_t *i, *j;
char ical_datetime[BUFSIZ];
char ical_date[BUFSIZ];
- LLIST_TS_LOCK (&recur_alist_p);
- LLIST_TS_FOREACH (&recur_alist_p, i)
- {
- struct recur_apoint *rapt = LLIST_TS_GET_DATA (i);
-
- date_sec2date_fmt (rapt->start, ICALDATETIMEFMT, ical_datetime);
- fputs ("BEGIN:VEVENT\n", stream);
- fprintf (stream, "DTSTART:%s\n", ical_datetime);
- fprintf (stream, "DURATION:PT0H0M%ldS\n", rapt->dur);
- fprintf (stream, "RRULE:FREQ=%s;INTERVAL=%d",
- ical_recur_type[rapt->rpt->type], rapt->rpt->freq);
-
- if (rapt->rpt->until != 0)
- {
- date_sec2date_fmt (rapt->rpt->until + HOURINSEC, ICALDATEFMT,
- ical_date);
- fprintf (stream, ";UNTIL=%s\n", ical_date);
- }
- else
- fputc ('\n', stream);
-
- if (LLIST_FIRST (&rapt->exc))
- {
- fputs ("EXDATE:", stream);
- LLIST_FOREACH (&rapt->exc, j)
- {
- struct excp *exc = LLIST_GET_DATA (j);
- date_sec2date_fmt (exc->st, ICALDATEFMT, ical_date);
- fprintf (stream, "%s", ical_date);
- if (LLIST_NEXT (j))
- fputc (',', stream);
- else
- fputc ('\n', stream);
- }
- }
-
- fprintf (stream, "SUMMARY:%s\n", rapt->mesg);
- if (rapt->state & APOINT_NOTIFY)
- ical_export_valarm (stream);
- fputs ("END:VEVENT\n", stream);
+ LLIST_TS_LOCK(&recur_alist_p);
+ LLIST_TS_FOREACH(&recur_alist_p, i) {
+ struct recur_apoint *rapt = LLIST_TS_GET_DATA(i);
+
+ date_sec2date_fmt(rapt->start, ICALDATETIMEFMT, ical_datetime);
+ fputs("BEGIN:VEVENT\n", stream);
+ fprintf(stream, "DTSTART:%s\n", ical_datetime);
+ fprintf(stream, "DURATION:PT0H0M%ldS\n", rapt->dur);
+ fprintf(stream, "RRULE:FREQ=%s;INTERVAL=%d",
+ ical_recur_type[rapt->rpt->type], rapt->rpt->freq);
+
+ if (rapt->rpt->until != 0) {
+ date_sec2date_fmt(rapt->rpt->until + HOURINSEC, ICALDATEFMT, ical_date);
+ fprintf(stream, ";UNTIL=%s\n", ical_date);
+ } else
+ fputc('\n', stream);
+
+ if (LLIST_FIRST(&rapt->exc)) {
+ fputs("EXDATE:", stream);
+ LLIST_FOREACH(&rapt->exc, j) {
+ struct excp *exc = LLIST_GET_DATA(j);
+ date_sec2date_fmt(exc->st, ICALDATEFMT, ical_date);
+ fprintf(stream, "%s", ical_date);
+ if (LLIST_NEXT(j))
+ fputc(',', stream);
+ else
+ fputc('\n', stream);
+ }
}
- LLIST_TS_UNLOCK (&recur_alist_p);
+
+ fprintf(stream, "SUMMARY:%s\n", rapt->mesg);
+ if (rapt->state & APOINT_NOTIFY)
+ ical_export_valarm(stream);
+ fputs("END:VEVENT\n", stream);
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
}
/* Export appointments. */
-static void
-ical_export_apoints (FILE *stream)
+static void ical_export_apoints(FILE * stream)
{
llist_item_t *i;
char ical_datetime[BUFSIZ];
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_FOREACH (&alist_p, i)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
- date_sec2date_fmt (apt->start, ICALDATETIMEFMT, ical_datetime);
- fputs ("BEGIN:VEVENT\n", stream);
- fprintf (stream, "DTSTART:%s\n", ical_datetime);
- fprintf (stream, "DURATION:P%ldDT%ldH%ldM%ldS\n",
- apt->dur / DAYINSEC,
- (apt->dur / HOURINSEC) % DAYINHOURS,
- (apt->dur / MININSEC) % HOURINMIN,
- apt->dur % MININSEC);
- fprintf (stream, "SUMMARY:%s\n", apt->mesg);
- if (apt->state & APOINT_NOTIFY)
- ical_export_valarm (stream);
- fputs ("END:VEVENT\n", stream);
- }
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_FOREACH(&alist_p, i) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+ date_sec2date_fmt(apt->start, ICALDATETIMEFMT, ical_datetime);
+ fputs("BEGIN:VEVENT\n", stream);
+ fprintf(stream, "DTSTART:%s\n", ical_datetime);
+ fprintf(stream, "DURATION:P%ldDT%ldH%ldM%ldS\n",
+ apt->dur / DAYINSEC,
+ (apt->dur / HOURINSEC) % DAYINHOURS,
+ (apt->dur / MININSEC) % HOURINMIN, apt->dur % MININSEC);
+ fprintf(stream, "SUMMARY:%s\n", apt->mesg);
+ if (apt->state & APOINT_NOTIFY)
+ ical_export_valarm(stream);
+ fputs("END:VEVENT\n", stream);
+ }
+ LLIST_TS_UNLOCK(&alist_p);
}
/* Export todo items. */
-static void
-ical_export_todo (FILE *stream)
+static void ical_export_todo(FILE * stream)
{
llist_item_t *i;
- LLIST_FOREACH (&todolist, i)
- {
- struct todo *todo = LLIST_TS_GET_DATA (i);
- if (todo->id < 0) /* completed items */
- continue;
+ LLIST_FOREACH(&todolist, i) {
+ struct todo *todo = LLIST_TS_GET_DATA(i);
+ if (todo->id < 0) /* completed items */
+ continue;
- fputs ("BEGIN:VTODO\n", stream);
- fprintf (stream, "PRIORITY:%d\n", todo->id);
- fprintf (stream, "SUMMARY:%s\n", todo->mesg);
- fputs ("END:VTODO\n", stream);
- }
+ fputs("BEGIN:VTODO\n", stream);
+ fprintf(stream, "PRIORITY:%d\n", todo->id);
+ fprintf(stream, "SUMMARY:%s\n", todo->mesg);
+ fputs("END:VTODO\n", stream);
+ }
}
/* Print a header to describe import log report format. */
-static void
-ical_log_init (FILE *log, float version)
+static void ical_log_init(FILE * log, float version)
{
const char *header =
- "+-------------------------------------------------------------------+\n"
- "| Calcurse icalendar import log. |\n"
- "| |\n"
- "| Items imported from icalendar file, version %1.1f |\n"
- "| Some items could not be imported, they are described hereafter. |\n"
- "| The log line format is as follows: |\n"
- "| |\n"
- "| TYPE [LINE]: DESCRIPTION |\n"
- "| |\n"
- "| where: |\n"
- "| * TYPE represents the item type ('VEVENT' or 'VTODO') |\n"
- "| * LINE is the line in the input stream at which this item begins |\n"
- "| * DESCRIPTION indicates why the item could not be imported |\n"
- "+-------------------------------------------------------------------+\n\n";
+ "+-------------------------------------------------------------------+\n"
+ "| Calcurse icalendar import log. |\n"
+ "| |\n"
+ "| Items imported from icalendar file, version %1.1f |\n"
+ "| Some items could not be imported, they are described hereafter. |\n"
+ "| The log line format is as follows: |\n"
+ "| |\n"
+ "| TYPE [LINE]: DESCRIPTION |\n"
+ "| |\n"
+ "| where: |\n"
+ "| * TYPE represents the item type ('VEVENT' or 'VTODO') |\n"
+ "| * LINE is the line in the input stream at which this item begins |\n"
+ "| * DESCRIPTION indicates why the item could not be imported |\n"
+ "+-------------------------------------------------------------------+\n\n";
if (log)
- fprintf (log, header, version);
+ fprintf(log, header, version);
}
/*
@@ -289,76 +265,66 @@ ical_log_init (FILE *log, float version)
* first line inside the icalendar file), together with a message describing the
* problem.
*/
-static void
-ical_log (FILE *log, ical_types_e type, unsigned lineno, char *msg)
+static void ical_log(FILE * log, ical_types_e type, unsigned lineno, char *msg)
{
- const char *typestr[ICAL_TYPES] = {"VEVENT", "VTODO"};
+ const char *typestr[ICAL_TYPES] = { "VEVENT", "VTODO" };
- RETURN_IF (type < 0 || type >= ICAL_TYPES, _("unknown ical type"));
+ RETURN_IF(type < 0 || type >= ICAL_TYPES, _("unknown ical type"));
if (log)
- fprintf (log, "%s [%d]: %s\n", typestr[type], lineno, msg);
+ fprintf(log, "%s [%d]: %s\n", typestr[type], lineno, msg);
}
-static void
-ical_store_todo (int priority, char *mesg, char *note)
+static void ical_store_todo(int priority, char *mesg, char *note)
{
- todo_add (mesg, priority, note);
- mem_free (mesg);
- erase_note (&note);
+ todo_add(mesg, priority, note);
+ mem_free(mesg);
+ erase_note(&note);
}
static void
-ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
- llist_t *exc)
+ical_store_event(char *mesg, char *note, long day, long end, ical_rpt_t * rpt,
+ llist_t * exc)
{
const int EVENTID = 1;
- if (rpt)
- {
- recur_event_new (mesg, note, day, EVENTID, rpt->type, rpt->freq,
- rpt->until, exc);
- mem_free (rpt);
- }
- else if (end && end != day)
- {
- /* Here we have an event that spans over several days. */
- rpt = mem_malloc (sizeof (ical_rpt_t));
- rpt->type = RECUR_DAILY;
- rpt->freq = 1;
- rpt->count = 0;
- rpt->until = end;
- recur_event_new (mesg, note, day, EVENTID, rpt->type, rpt->freq,
- rpt->until, exc);
- mem_free (rpt);
- }
- else
- {
- event_new (mesg, note, day, EVENTID);
- }
- mem_free (mesg);
- erase_note (&note);
+ if (rpt) {
+ recur_event_new(mesg, note, day, EVENTID, rpt->type, rpt->freq,
+ rpt->until, exc);
+ mem_free(rpt);
+ } else if (end && end != day) {
+ /* Here we have an event that spans over several days. */
+ rpt = mem_malloc(sizeof(ical_rpt_t));
+ rpt->type = RECUR_DAILY;
+ rpt->freq = 1;
+ rpt->count = 0;
+ rpt->until = end;
+ recur_event_new(mesg, note, day, EVENTID, rpt->type, rpt->freq,
+ rpt->until, exc);
+ mem_free(rpt);
+ } else {
+ event_new(mesg, note, day, EVENTID);
+ }
+ mem_free(mesg);
+ erase_note(&note);
}
static void
-ical_store_apoint (char *mesg, char *note, long start, long dur,
- ical_rpt_t *rpt, llist_t *exc, int has_alarm)
+ical_store_apoint(char *mesg, char *note, long start, long dur,
+ ical_rpt_t * rpt, llist_t * exc, int has_alarm)
{
char state = 0L;
if (has_alarm)
state |= APOINT_NOTIFY;
- if (rpt)
- {
- recur_apoint_new (mesg, note, start, dur, state, rpt->type, rpt->freq,
- rpt->until, exc);
- mem_free (rpt);
- }
- else
- {
- apoint_new (mesg, note, start, dur, state);
- }
- mem_free (mesg);
- erase_note (&note);
+ if (rpt) {
+ recur_apoint_new(mesg, note, start, dur, state, rpt->type, rpt->freq,
+ rpt->until, exc);
+ mem_free(rpt);
+ } else {
+ apoint_new(mesg, note, start, dur, state);
+ }
+ mem_free(mesg);
+ erase_note(&note);
}
/*
@@ -374,112 +340,103 @@ ical_store_apoint (char *mesg, char *note, long start, long dur,
* Lines of text SHOULD NOT be longer than 75 octets, excluding the line
* break.
*/
-static char *
-ical_unformat_line (char *line)
+static char *ical_unformat_line(char *line)
{
char *p, uline[BUFSIZ];
int len;
- if (strlen (line) >= BUFSIZ)
+ if (strlen(line) >= BUFSIZ)
return NULL;
- memset (uline, 0, BUFSIZ);
- for (len = 0, p = line; *p; p++)
- {
- switch (*p)
- {
- case '\\':
- switch (*(p + 1))
- {
- case 'n':
- uline[len++] = '\n';
- p++;
- break;
- case 't':
- uline[len++] = '\t';
- p++;
- break;
- case ';':
- case ':':
- case ',':
- uline[len++] = *(p + 1);
- p++;
- break;
- default:
- uline[len++] = *p;
- break;
- }
- break;
- default:
- uline[len++] = *p;
- break;
- }
+ memset(uline, 0, BUFSIZ);
+ for (len = 0, p = line; *p; p++) {
+ switch (*p) {
+ case '\\':
+ switch (*(p + 1)) {
+ case 'n':
+ uline[len++] = '\n';
+ p++;
+ break;
+ case 't':
+ uline[len++] = '\t';
+ p++;
+ break;
+ case ';':
+ case ':':
+ case ',':
+ uline[len++] = *(p + 1);
+ p++;
+ break;
+ default:
+ uline[len++] = *p;
+ break;
+ }
+ break;
+ default:
+ uline[len++] = *p;
+ break;
}
+ }
- return mem_strdup (uline);
+ return mem_strdup(uline);
}
static void
-ical_readline_init (FILE *fdi, char *buf, char *lstore, unsigned *ln)
+ical_readline_init(FILE * fdi, char *buf, char *lstore, unsigned *ln)
{
char *eol;
*buf = *lstore = '\0';
- if (fgets (lstore, BUFSIZ, fdi))
- {
- if ((eol = strchr(lstore, '\n')) != NULL)
- *eol = '\0';
- (*ln)++;
- }
+ if (fgets(lstore, BUFSIZ, fdi)) {
+ if ((eol = strchr(lstore, '\n')) != NULL)
+ *eol = '\0';
+ (*ln)++;
+ }
}
-static int
-ical_readline (FILE *fdi, char *buf, char *lstore, unsigned *ln)
+static int ical_readline(FILE * fdi, char *buf, char *lstore, unsigned *ln)
{
char *eol;
- strncpy (buf, lstore, BUFSIZ);
+ strncpy(buf, lstore, BUFSIZ);
(*ln)++;
- while (fgets (lstore, BUFSIZ, fdi) != NULL)
- {
- if ((eol = strchr(lstore, '\n')) != NULL)
- *eol = '\0';
- if (*lstore != SPACE && *lstore != TAB)
- break;
- strncat (buf, lstore + 1, BUFSIZ - strlen (buf) - 1);
- (*ln)++;
- }
+ while (fgets(lstore, BUFSIZ, fdi) != NULL) {
+ if ((eol = strchr(lstore, '\n')) != NULL)
+ *eol = '\0';
+ if (*lstore != SPACE && *lstore != TAB)
+ break;
+ strncat(buf, lstore + 1, BUFSIZ - strlen(buf) - 1);
+ (*ln)++;
+ }
- if (feof (fdi))
- {
- *lstore = '\0';
- if (*buf == '\0')
- return 0;
- }
+ if (feof(fdi)) {
+ *lstore = '\0';
+ if (*buf == '\0')
+ return 0;
+ }
return 1;
}
static float
-ical_chk_header (FILE *fd, char *buf, char *lstore, unsigned *lineno)
+ical_chk_header(FILE * fd, char *buf, char *lstore, unsigned *lineno)
{
const int HEADER_MALFORMED = -1;
const char icalheader[] = "BEGIN:VCALENDAR";
float version;
- if (!ical_readline (fd, buf, lstore, lineno))
+ if (!ical_readline(fd, buf, lstore, lineno))
return HEADER_MALFORMED;
- str_toupper (buf);
- if (strncmp (buf, icalheader, sizeof (icalheader) - 1) != 0)
+ str_toupper(buf);
+ if (strncmp(buf, icalheader, sizeof(icalheader) - 1) != 0)
return HEADER_MALFORMED;
- while (!sscanf (buf, "VERSION:%f", &version))
- {
- if (!ical_readline (fd, buf, lstore, lineno))
- return HEADER_MALFORMED;
- }
+ while (!sscanf(buf, "VERSION:%f", &version)) {
+ if (!ical_readline(fd, buf, lstore, lineno))
+ return HEADER_MALFORMED;
+ }
return version;
}
@@ -495,8 +452,7 @@ ical_chk_header (FILE *fd, char *buf, char *lstore, unsigned *lineno)
*
* The timezone is not yet handled by calcurse.
*/
-static long
-ical_datetime2long (char *datestr, ical_vevent_e *type)
+static long ical_datetime2long(char *datestr, ical_vevent_e * type)
{
const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 5;
struct date date;
@@ -504,50 +460,43 @@ ical_datetime2long (char *datestr, ical_vevent_e *type)
long datelong;
int format;
- format = sscanf (datestr, "%04u%02u%02uT%02u%02u",
- &date.yyyy, &date.mm, &date.dd, &hour, &min);
- if (format == FORMAT_DATE)
- {
- if (type)
- *type = EVENT;
- datelong = date2sec (date, 0, 0);
- }
- else if (format == FORMAT_DATETIME)
- {
- if (type)
- *type = APPOINTMENT;
- datelong = date2sec (date, hour, min);
- }
- else
- {
- datelong = NOTFOUND;
- }
+ format = sscanf(datestr, "%04u%02u%02uT%02u%02u",
+ &date.yyyy, &date.mm, &date.dd, &hour, &min);
+ if (format == FORMAT_DATE) {
+ if (type)
+ *type = EVENT;
+ datelong = date2sec(date, 0, 0);
+ } else if (format == FORMAT_DATETIME) {
+ if (type)
+ *type = APPOINTMENT;
+ datelong = date2sec(date, hour, min);
+ } else {
+ datelong = NOTFOUND;
+ }
return datelong;
}
-static long
-ical_durtime2long (char *timestr)
+static long ical_durtime2long(char *timestr)
{
long timelong;
char *p;
- if ((p = strchr (timestr, 'T')) == NULL)
+ if ((p = strchr(timestr, 'T')) == NULL)
timelong = 0;
- else
- {
- int nbmatch;
- struct {
- unsigned hour, min, sec;
- } time;
-
- p++;
- memset (&time, 0, sizeof time);
- nbmatch = sscanf (p, "%uH%uM%uS", &time.hour, &time.min, &time.sec);
- if (nbmatch < 1 || nbmatch > 3)
- timelong = 0;
- else
- timelong = time.hour * HOURINSEC + time.min * MININSEC + time.sec;
- }
+ else {
+ int nbmatch;
+ struct {
+ unsigned hour, min, sec;
+ } time;
+
+ p++;
+ memset(&time, 0, sizeof time);
+ nbmatch = sscanf(p, "%uH%uM%uS", &time.hour, &time.min, &time.sec);
+ if (nbmatch < 1 || nbmatch > 3)
+ timelong = 0;
+ else
+ timelong = time.hour * HOURINSEC + time.min * MININSEC + time.sec;
+ }
return timelong;
}
@@ -576,8 +525,7 @@ ical_durtime2long (char *timestr)
* A duration of 7 weeks would be:
* P7W
*/
-static long
-ical_dur2long (char *durstr)
+static long ical_dur2long(char *durstr)
{
const int NOTFOUND = -1;
long durlong;
@@ -586,42 +534,34 @@ ical_dur2long (char *durstr)
unsigned week, day;
} date;
- memset (&date, 0, sizeof date);
- if ((p = strchr (durstr, 'P')) == NULL)
+ memset(&date, 0, sizeof date);
+ if ((p = strchr(durstr, 'P')) == NULL)
durlong = NOTFOUND;
- else
- {
+ else {
+ p++;
+ if (*p == '-')
+ return NOTFOUND;
+ else if (*p == '+')
p++;
- if (*p == '-')
- return NOTFOUND;
- else if (*p == '+')
- p++;
- if (*p == 'T') /* dur-time */
- durlong = ical_durtime2long (p);
- else if (strchr (p, 'W')) /* dur-week */
- {
- if (sscanf (p, "%u", &date.week) == 1)
- durlong = date.week * WEEKINDAYS * DAYINSEC;
- else
- durlong = NOTFOUND;
- }
+ if (*p == 'T') /* dur-time */
+ durlong = ical_durtime2long(p);
+ else if (strchr(p, 'W')) { /* dur-week */
+ if (sscanf(p, "%u", &date.week) == 1)
+ durlong = date.week * WEEKINDAYS * DAYINSEC;
else
- {
- if (strchr (p, 'D')) /* dur-date */
- {
- if (sscanf (p, "%uD", &date.day) == 1)
- {
- durlong = date.day * DAYINSEC;
- durlong += ical_durtime2long (p);
- }
- else
- durlong = NOTFOUND;
- }
- else
- durlong = NOTFOUND;
- }
+ durlong = NOTFOUND;
+ } else {
+ if (strchr(p, 'D')) { /* dur-date */
+ if (sscanf(p, "%uD", &date.day) == 1) {
+ durlong = date.day * DAYINSEC;
+ durlong += ical_durtime2long(p);
+ } else
+ durlong = NOTFOUND;
+ } else
+ durlong = NOTFOUND;
}
+ }
return durlong;
}
@@ -633,31 +573,29 @@ ical_dur2long (char *durstr)
* range-bound the recurrence. The "DTSTART" property value, if specified,
* counts as the first occurrence.
*/
-static long
-ical_compute_rpt_until (long start, ical_rpt_t *rpt)
+static long ical_compute_rpt_until(long start, ical_rpt_t * rpt)
{
long until;
- switch (rpt->type)
- {
- case RECUR_DAILY:
- until = date_sec_change (start, 0, rpt->freq * (rpt->count - 1));
- break;
- case RECUR_WEEKLY:
- until = date_sec_change (start, 0,
- rpt->freq * WEEKINDAYS * (rpt->count - 1));
- break;
- case RECUR_MONTHLY:
- until = date_sec_change (start, rpt->freq * (rpt->count - 1), 0);
- break;
- case RECUR_YEARLY:
- until = date_sec_change (start, rpt->freq * 12 * (rpt->count - 1), 0);
- break;
- default:
- until = 0;
- break;
- /* NOTREACHED */
- }
+ switch (rpt->type) {
+ case RECUR_DAILY:
+ until = date_sec_change(start, 0, rpt->freq * (rpt->count - 1));
+ break;
+ case RECUR_WEEKLY:
+ until = date_sec_change(start, 0,
+ rpt->freq * WEEKINDAYS * (rpt->count - 1));
+ break;
+ case RECUR_MONTHLY:
+ until = date_sec_change(start, rpt->freq * (rpt->count - 1), 0);
+ break;
+ case RECUR_YEARLY:
+ until = date_sec_change(start, rpt->freq * 12 * (rpt->count - 1), 0);
+ break;
+ default:
+ until = 0;
+ break;
+ /* NOTREACHED */
+ }
return until;
}
@@ -698,9 +636,8 @@ ical_compute_rpt_until (long start, ical_rpt_t *rpt)
* ( ";" x-name "=" text )
* )
*/
-static ical_rpt_t *
-ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
- const int itemline)
+static ical_rpt_t *ical_read_rrule(FILE * log, char *rrulestr,
+ unsigned *noskipped, const int itemline)
{
const char daily[] = "DAILY";
const char weekly[] = "WEEKLY";
@@ -713,115 +650,92 @@ ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
char *p;
rpt = NULL;
- if ((p = strchr (rrulestr, ':')) != NULL)
- {
- char freqstr[BUFSIZ];
-
- p++;
- rpt = mem_malloc (sizeof (ical_rpt_t));
- memset (rpt, 0, sizeof(ical_rpt_t));
- if (sscanf (p, "FREQ=%s", freqstr) != 1)
- {
- ical_log (log, ICAL_VEVENT, itemline,
- _("recurrence frequence not found."));
- (*noskipped)++;
- mem_free (rpt);
- return NULL;
- }
- else
- {
- if (strncmp (freqstr, daily, sizeof (daily) - 1) == 0)
- rpt->type = RECUR_DAILY;
- else if (strncmp (freqstr, weekly, sizeof (weekly) - 1) == 0)
- rpt->type = RECUR_WEEKLY;
- else if (strncmp (freqstr, monthly, sizeof (monthly) - 1) == 0)
- rpt->type = RECUR_MONTHLY;
- else if (strncmp (freqstr, yearly, sizeof (yearly) - 1) == 0)
- rpt->type = RECUR_YEARLY;
- else
- {
- ical_log (log, ICAL_VEVENT, itemline,
- _("recurrence frequence not recognized."));
- (*noskipped)++;
- mem_free (rpt);
- return NULL;
- }
- }
- /*
- The UNTIL rule part defines a date-time value which bounds the
- recurrence rule in an inclusive manner. If not present, and the
- COUNT rule part is also not present, the RRULE is considered to
- repeat forever.
-
- The COUNT rule part defines the number of occurrences at which to
- range-bound the recurrence. The "DTSTART" property value, if
- specified, counts as the first occurrence.
- */
- if ((p = strstr (rrulestr, "UNTIL")) != NULL)
- {
- char *untilstr;
-
- untilstr = strchr (p, '=');
- rpt->until = ical_datetime2long (++untilstr, NULL);
- }
- else
- {
- unsigned cnt;
- char *countstr;
-
- if ((countstr = strstr (rrulestr, count)) != NULL)
- {
- countstr += sizeof (count) - 1;
- if (sscanf (countstr, "%u", &cnt) != 1)
- {
- rpt->until = 0;
- /* endless repetition */
- }
- else
- {
- rpt->count = cnt;
- }
- }
- else
- rpt->until = 0;
- }
-
- if ((p = strstr (rrulestr, interv)) != NULL)
- {
- p += sizeof (interv) - 1;
- if (sscanf (p, "%u", &interval) != 1)
- {
- rpt->freq = 1;
- /* default frequence if none specified */
- }
- else
- {
- rpt->freq = interval;
- }
- }
- else
- {
- rpt->freq = 1;
+ if ((p = strchr(rrulestr, ':')) != NULL) {
+ char freqstr[BUFSIZ];
+
+ p++;
+ rpt = mem_malloc(sizeof(ical_rpt_t));
+ memset(rpt, 0, sizeof(ical_rpt_t));
+ if (sscanf(p, "FREQ=%s", freqstr) != 1) {
+ ical_log(log, ICAL_VEVENT, itemline,
+ _("recurrence frequence not found."));
+ (*noskipped)++;
+ mem_free(rpt);
+ return NULL;
+ } else {
+ if (strncmp(freqstr, daily, sizeof(daily) - 1) == 0)
+ rpt->type = RECUR_DAILY;
+ else if (strncmp(freqstr, weekly, sizeof(weekly) - 1) == 0)
+ rpt->type = RECUR_WEEKLY;
+ else if (strncmp(freqstr, monthly, sizeof(monthly) - 1) == 0)
+ rpt->type = RECUR_MONTHLY;
+ else if (strncmp(freqstr, yearly, sizeof(yearly) - 1) == 0)
+ rpt->type = RECUR_YEARLY;
+ else {
+ ical_log(log, ICAL_VEVENT, itemline,
+ _("recurrence frequence not recognized."));
+ (*noskipped)++;
+ mem_free(rpt);
+ return NULL;
+ }
+ }
+ /*
+ The UNTIL rule part defines a date-time value which bounds the
+ recurrence rule in an inclusive manner. If not present, and the
+ COUNT rule part is also not present, the RRULE is considered to
+ repeat forever.
+
+ The COUNT rule part defines the number of occurrences at which to
+ range-bound the recurrence. The "DTSTART" property value, if
+ specified, counts as the first occurrence.
+ */
+ if ((p = strstr(rrulestr, "UNTIL")) != NULL) {
+ char *untilstr;
+
+ untilstr = strchr(p, '=');
+ rpt->until = ical_datetime2long(++untilstr, NULL);
+ } else {
+ unsigned cnt;
+ char *countstr;
+
+ if ((countstr = strstr(rrulestr, count)) != NULL) {
+ countstr += sizeof(count) - 1;
+ if (sscanf(countstr, "%u", &cnt) != 1) {
+ rpt->until = 0;
+ /* endless repetition */
+ } else {
+ rpt->count = cnt;
}
+ } else
+ rpt->until = 0;
}
- else
- {
- ical_log (log, ICAL_VEVENT, itemline, _("recurrence rule malformed."));
- (*noskipped)++;
+
+ if ((p = strstr(rrulestr, interv)) != NULL) {
+ p += sizeof(interv) - 1;
+ if (sscanf(p, "%u", &interval) != 1) {
+ rpt->freq = 1;
+ /* default frequence if none specified */
+ } else {
+ rpt->freq = interval;
+ }
+ } else {
+ rpt->freq = 1;
}
+ } else {
+ ical_log(log, ICAL_VEVENT, itemline, _("recurrence rule malformed."));
+ (*noskipped)++;
+ }
return rpt;
}
-static void
-ical_add_exc (llist_t *exc_head, long date)
+static void ical_add_exc(llist_t * exc_head, long date)
{
- if (date != 0)
- {
- struct excp *exc = mem_malloc (sizeof (struct excp));
- exc->st = date;
+ if (date != 0) {
+ struct excp *exc = mem_malloc(sizeof(struct excp));
+ exc->st = date;
- LLIST_ADD (exc_head, exc);
- }
+ LLIST_ADD(exc_head, exc);
+ }
}
/*
@@ -829,296 +743,241 @@ ical_add_exc (llist_t *exc_head, long date)
* recurring calendar component.
*/
static void
-ical_read_exdate (llist_t *exc, FILE *log, char *exstr, unsigned *noskipped,
- const int itemline)
+ical_read_exdate(llist_t * exc, FILE * log, char *exstr, unsigned *noskipped,
+ const int itemline)
{
char *p, *q;
long date;
- LLIST_INIT (exc);
- if ((p = strchr (exstr, ':')) != NULL)
- {
- p++;
- while ((q = strchr (p, ',')) != NULL)
- {
- char buf[BUFSIZ];
- const int buflen = q - p;
-
- strncpy (buf, p, buflen);
- buf[buflen] = '\0';
- date = ical_datetime2long (buf, NULL);
- ical_add_exc (exc, date);
- p = ++q;
- }
- date = ical_datetime2long (p, NULL);
- ical_add_exc (exc, date);
- }
- else
- {
- ical_log (log, ICAL_VEVENT, itemline,
- _("recurrence exception dates malformed."));
- (*noskipped)++;
+ LLIST_INIT(exc);
+ if ((p = strchr(exstr, ':')) != NULL) {
+ p++;
+ while ((q = strchr(p, ',')) != NULL) {
+ char buf[BUFSIZ];
+ const int buflen = q - p;
+
+ strncpy(buf, p, buflen);
+ buf[buflen] = '\0';
+ date = ical_datetime2long(buf, NULL);
+ ical_add_exc(exc, date);
+ p = ++q;
}
+ date = ical_datetime2long(p, NULL);
+ ical_add_exc(exc, date);
+ } else {
+ ical_log(log, ICAL_VEVENT, itemline,
+ _("recurrence exception dates malformed."));
+ (*noskipped)++;
+ }
}
/* Return an allocated string containing the name of the newly created note. */
-static char *
-ical_read_note (char *line, unsigned *noskipped, ical_vevent_e item_type,
- const int itemline, FILE *log)
+static char *ical_read_note(char *line, unsigned *noskipped,
+ ical_vevent_e item_type, const int itemline,
+ FILE * log)
{
char *p, *notestr, *note;
- if ((p = strchr (line, ':')) != NULL)
- {
- p++;
- notestr = ical_unformat_line (p);
- if (notestr == NULL)
- {
- ical_log (log, item_type, itemline,
- _("could not get entire item description."));
- (*noskipped)++;
- return NULL;
- }
- else if (strlen (notestr) == 0)
- {
- mem_free (notestr);
- return NULL;
- }
- else
- {
- note = generate_note (notestr);
- mem_free (notestr);
- return note;
- }
- }
- else
- {
- ical_log (log, item_type, itemline, _("description malformed."));
+ if ((p = strchr(line, ':')) != NULL) {
+ p++;
+ notestr = ical_unformat_line(p);
+ if (notestr == NULL) {
+ ical_log(log, item_type, itemline,
+ _("could not get entire item description."));
(*noskipped)++;
return NULL;
+ } else if (strlen(notestr) == 0) {
+ mem_free(notestr);
+ return NULL;
+ } else {
+ note = generate_note(notestr);
+ mem_free(notestr);
+ return note;
}
+ } else {
+ ical_log(log, item_type, itemline, _("description malformed."));
+ (*noskipped)++;
+ return NULL;
+ }
}
/* Returns an allocated string containing the ical item summary. */
-static char *
-ical_read_summary (char *line)
+static char *ical_read_summary(char *line)
{
char *p, *summary;
- if ((p = strchr (line, ':')) != NULL)
- {
- p++;
- summary = ical_unformat_line (p);
- return summary;
- }
- else
+ if ((p = strchr(line, ':')) != NULL) {
+ p++;
+ summary = ical_unformat_line(p);
+ return summary;
+ } else
return NULL;
}
static void
-ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints,
- unsigned *noskipped, char *buf, char *lstore,
- unsigned *lineno)
+ical_read_event(FILE * fdi, FILE * log, unsigned *noevents, unsigned *noapoints,
+ unsigned *noskipped, char *buf, char *lstore, unsigned *lineno)
{
const int ITEMLINE = *lineno;
const char endevent[] = "END:VEVENT";
- const char summary[] = "SUMMARY";
- const char dtstart[] = "DTSTART";
- const char dtend[] = "DTEND";
+ const char summary[] = "SUMMARY";
+ const char dtstart[] = "DTSTART";
+ const char dtend[] = "DTEND";
const char duration[] = "DURATION";
- const char rrule[] = "RRULE";
- const char exdate[] = "EXDATE";
- const char alarm[] = "BEGIN:VALARM";
+ const char rrule[] = "RRULE";
+ const char exdate[] = "EXDATE";
+ const char alarm[] = "BEGIN:VALARM";
const char endalarm[] = "END:VALARM";
- const char desc[] = "DESCRIPTION";
+ const char desc[] = "DESCRIPTION";
ical_vevent_e vevent_type;
char *p, buf_upper[BUFSIZ];
struct {
- llist_t exc;
- ical_rpt_t *rpt;
- char *mesg, *note;
- long start, end, dur;
- int has_alarm;
+ llist_t exc;
+ ical_rpt_t *rpt;
+ char *mesg, *note;
+ long start, end, dur;
+ int has_alarm;
} vevent;
int skip_alarm;
vevent_type = UNDEFINED;
- memset (&vevent, 0, sizeof vevent);
+ memset(&vevent, 0, sizeof vevent);
skip_alarm = 0;
- while (ical_readline (fdi, buf, lstore, lineno))
- {
- strncpy (buf_upper, buf, BUFSIZ);
- buf_upper[BUFSIZ - 1] = '\0';
- str_toupper (buf_upper);
-
- if (skip_alarm)
- {
- /* Need to skip VALARM properties because some keywords could
- interfere, such as DURATION, SUMMARY,.. */
- if (strncmp (buf_upper, endalarm, sizeof (endalarm) - 1) == 0)
- skip_alarm = 0;
- continue;
- }
- if (strncmp (buf_upper, endevent, sizeof (endevent) - 1) == 0)
- {
- if (vevent.mesg)
- {
- if (vevent.rpt && vevent.rpt->count)
- vevent.rpt->until = ical_compute_rpt_until (vevent.start,
- vevent.rpt);
-
- switch (vevent_type)
- {
- case APPOINTMENT:
- if (vevent.start == 0)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("appointment has no start time."));
- goto cleanup;
- }
- if (vevent.dur == 0)
- {
- if (vevent.end == 0)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("could not compute duration "
- "(no end time)."));
- goto cleanup;
- }
- else if (vevent.start == vevent.end)
- {
- vevent_type = EVENT;
- vevent.end = 0L;
- ical_store_event (vevent.mesg, vevent.note,
- vevent.start, vevent.end,
- vevent.rpt, &vevent.exc);
- (*noevents)++;
- return;
- }
- else
- {
- vevent.dur = vevent.end - vevent.start;
- if (vevent.dur < 0)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("item has a negative duration."));
- goto cleanup;
- }
- }
- }
- ical_store_apoint (vevent.mesg, vevent.note, vevent.start,
- vevent.dur, vevent.rpt, &vevent.exc,
- vevent.has_alarm);
- (*noapoints)++;
- break;
- case EVENT:
- if (vevent.start == 0)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("event date is not defined."));
- goto cleanup;
- }
- ical_store_event (vevent.mesg, vevent.note, vevent.start,
- vevent.end, vevent.rpt, &vevent.exc);
- (*noevents)++;
- break;
- case UNDEFINED:
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("item could not be identified."));
- goto cleanup;
- break;
- }
- }
- else
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("could not retrieve item summary."));
+ while (ical_readline(fdi, buf, lstore, lineno)) {
+ strncpy(buf_upper, buf, BUFSIZ);
+ buf_upper[BUFSIZ - 1] = '\0';
+ str_toupper(buf_upper);
+
+ if (skip_alarm) {
+ /* Need to skip VALARM properties because some keywords could
+ interfere, such as DURATION, SUMMARY,.. */
+ if (strncmp(buf_upper, endalarm, sizeof(endalarm) - 1) == 0)
+ skip_alarm = 0;
+ continue;
+ }
+ if (strncmp(buf_upper, endevent, sizeof(endevent) - 1) == 0) {
+ if (vevent.mesg) {
+ if (vevent.rpt && vevent.rpt->count)
+ vevent.rpt->until = ical_compute_rpt_until(vevent.start, vevent.rpt);
+
+ switch (vevent_type) {
+ case APPOINTMENT:
+ if (vevent.start == 0) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("appointment has no start time."));
+ goto cleanup;
+ }
+ if (vevent.dur == 0) {
+ if (vevent.end == 0) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("could not compute duration " "(no end time)."));
goto cleanup;
+ } else if (vevent.start == vevent.end) {
+ vevent_type = EVENT;
+ vevent.end = 0L;
+ ical_store_event(vevent.mesg, vevent.note,
+ vevent.start, vevent.end,
+ vevent.rpt, &vevent.exc);
+ (*noevents)++;
+ return;
+ } else {
+ vevent.dur = vevent.end - vevent.start;
+ if (vevent.dur < 0) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("item has a negative duration."));
+ goto cleanup;
+ }
}
- return;
+ }
+ ical_store_apoint(vevent.mesg, vevent.note, vevent.start,
+ vevent.dur, vevent.rpt, &vevent.exc,
+ vevent.has_alarm);
+ (*noapoints)++;
+ break;
+ case EVENT:
+ if (vevent.start == 0) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("event date is not defined."));
+ goto cleanup;
+ }
+ ical_store_event(vevent.mesg, vevent.note, vevent.start,
+ vevent.end, vevent.rpt, &vevent.exc);
+ (*noevents)++;
+ break;
+ case UNDEFINED:
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("item could not be identified."));
+ goto cleanup;
+ break;
}
- else
- {
- if (strncmp (buf_upper, dtstart, sizeof (dtstart) - 1) == 0)
- {
- if ((p = strchr (buf, ':')) != NULL)
- vevent.start = ical_datetime2long (++p, &vevent_type);
- if (!vevent.start)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("could not retrieve event start time."));
- goto cleanup;
- }
- }
- else if (strncmp (buf_upper, dtend, sizeof (dtend) - 1) == 0)
- {
- if ((p = strchr (buf, ':')) != NULL)
- vevent.end = ical_datetime2long (++p, &vevent_type);
- if (!vevent.end)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("could not retrieve event end time."));
- goto cleanup;
- }
- }
- else if (strncmp (buf_upper, duration, sizeof (duration) - 1) == 0)
- {
- if ((vevent.dur = ical_dur2long (buf)) <= 0)
- {
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("item duration malformed."));
- goto cleanup;
- }
- }
- else if (strncmp (buf_upper, rrule, sizeof (rrule) - 1) == 0)
- {
- vevent.rpt = ical_read_rrule (log, buf, noskipped, ITEMLINE);
- }
- else if (strncmp (buf_upper, exdate, sizeof (exdate) - 1) == 0)
- {
- ical_read_exdate (&vevent.exc, log, buf, noskipped, ITEMLINE);
- }
- else if (strncmp (buf_upper, summary, sizeof (summary) - 1) == 0)
- {
- vevent.mesg = ical_read_summary (buf);
- }
- else if (strncmp (buf_upper, alarm, sizeof (alarm) - 1) == 0)
- {
- skip_alarm = 1;
- vevent.has_alarm = 1;
- }
- else if (strncmp (buf_upper, desc, sizeof (desc) - 1) == 0)
- {
- vevent.note = ical_read_note (buf, noskipped, ICAL_VEVENT,
- ITEMLINE, log);
- }
+ } else {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("could not retrieve item summary."));
+ goto cleanup;
+ }
+ return;
+ } else {
+ if (strncmp(buf_upper, dtstart, sizeof(dtstart) - 1) == 0) {
+ if ((p = strchr(buf, ':')) != NULL)
+ vevent.start = ical_datetime2long(++p, &vevent_type);
+ if (!vevent.start) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("could not retrieve event start time."));
+ goto cleanup;
+ }
+ } else if (strncmp(buf_upper, dtend, sizeof(dtend) - 1) == 0) {
+ if ((p = strchr(buf, ':')) != NULL)
+ vevent.end = ical_datetime2long(++p, &vevent_type);
+ if (!vevent.end) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("could not retrieve event end time."));
+ goto cleanup;
+ }
+ } else if (strncmp(buf_upper, duration, sizeof(duration) - 1) == 0) {
+ if ((vevent.dur = ical_dur2long(buf)) <= 0) {
+ ical_log(log, ICAL_VEVENT, ITEMLINE, _("item duration malformed."));
+ goto cleanup;
}
+ } else if (strncmp(buf_upper, rrule, sizeof(rrule) - 1) == 0) {
+ vevent.rpt = ical_read_rrule(log, buf, noskipped, ITEMLINE);
+ } else if (strncmp(buf_upper, exdate, sizeof(exdate) - 1) == 0) {
+ ical_read_exdate(&vevent.exc, log, buf, noskipped, ITEMLINE);
+ } else if (strncmp(buf_upper, summary, sizeof(summary) - 1) == 0) {
+ vevent.mesg = ical_read_summary(buf);
+ } else if (strncmp(buf_upper, alarm, sizeof(alarm) - 1) == 0) {
+ skip_alarm = 1;
+ vevent.has_alarm = 1;
+ } else if (strncmp(buf_upper, desc, sizeof(desc) - 1) == 0) {
+ vevent.note = ical_read_note(buf, noskipped, ICAL_VEVENT,
+ ITEMLINE, log);
+ }
}
- ical_log (log, ICAL_VEVENT, ITEMLINE,
- _("The ical file seems to be malformed. "
- "The end of item was not found."));
+ }
+ ical_log(log, ICAL_VEVENT, ITEMLINE,
+ _("The ical file seems to be malformed. "
+ "The end of item was not found."));
cleanup:
if (vevent.note)
- mem_free (vevent.note);
+ mem_free(vevent.note);
if (vevent.mesg)
- mem_free (vevent.mesg);
+ mem_free(vevent.mesg);
if (vevent.rpt)
- mem_free (vevent.rpt);
- LLIST_FREE (&vevent.exc);
+ mem_free(vevent.rpt);
+ LLIST_FREE(&vevent.exc);
(*noskipped)++;
}
static void
-ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped,
- char *buf, char *lstore, unsigned *lineno)
+ical_read_todo(FILE * fdi, FILE * log, unsigned *notodos, unsigned *noskipped,
+ char *buf, char *lstore, unsigned *lineno)
{
- const char endtodo[] = "END:VTODO";
- const char summary[] = "SUMMARY";
- const char alarm[] = "BEGIN:VALARM";
+ const char endtodo[] = "END:VTODO";
+ const char summary[] = "SUMMARY";
+ const char alarm[] = "BEGIN:VALARM";
const char endalarm[] = "END:VALARM";
- const char desc[] = "DESCRIPTION";
+ const char desc[] = "DESCRIPTION";
const int LOWEST = 9;
const int ITEMLINE = *lineno;
char buf_upper[BUFSIZ];
@@ -1128,128 +987,104 @@ ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped,
} vtodo;
int skip_alarm;
- memset (&vtodo, 0, sizeof vtodo);
+ memset(&vtodo, 0, sizeof vtodo);
skip_alarm = 0;
- while (ical_readline (fdi, buf, lstore, lineno))
- {
- strncpy (buf_upper, buf, BUFSIZ);
- buf_upper[BUFSIZ - 1] = '\0';
- str_toupper (buf_upper);
- if (skip_alarm)
- {
- /* Need to skip VALARM properties because some keywords could
- interfere, such as DURATION, SUMMARY,.. */
- if (strncmp (buf_upper, endalarm, sizeof (endalarm) - 1) == 0)
- skip_alarm = 0;
- continue;
- }
- if (strncmp (buf_upper, endtodo, sizeof (endtodo) - 1) == 0)
- {
- if (!vtodo.has_priority)
- vtodo.priority = LOWEST;
- if (vtodo.mesg)
- {
- ical_store_todo (vtodo.priority, vtodo.mesg, vtodo.note);
- (*notodos)++;
- }
- else
- {
- ical_log (log, ICAL_VTODO, ITEMLINE,
- _("could not retrieve item summary."));
- goto cleanup;
- }
- return;
- }
- else
- {
- int tmpint;
-
- if (sscanf (buf_upper, "PRIORITY:%d", &tmpint) == 1)
- {
- if (tmpint <= 9 && tmpint >= 1)
- {
- vtodo.priority = tmpint;
- vtodo.has_priority = 1;
- }
- else
- {
- ical_log (log, ICAL_VTODO, ITEMLINE,
- _("item priority is not acceptable "
- "(must be between 1 and 9)."));
- vtodo.priority = LOWEST;
- }
- }
- else if (strncmp (buf_upper, summary, sizeof (summary) - 1) == 0)
- {
- vtodo.mesg = ical_read_summary (buf);
- }
- else if (strncmp (buf_upper, alarm, sizeof (alarm) - 1) == 0)
- {
- skip_alarm = 1;
- }
- else if (strncmp (buf_upper, desc, sizeof (desc) - 1) == 0)
- {
- vtodo.note = ical_read_note (buf, noskipped, ICAL_VTODO,
- ITEMLINE, log);
- }
+ while (ical_readline(fdi, buf, lstore, lineno)) {
+ strncpy(buf_upper, buf, BUFSIZ);
+ buf_upper[BUFSIZ - 1] = '\0';
+ str_toupper(buf_upper);
+ if (skip_alarm) {
+ /* Need to skip VALARM properties because some keywords could
+ interfere, such as DURATION, SUMMARY,.. */
+ if (strncmp(buf_upper, endalarm, sizeof(endalarm) - 1) == 0)
+ skip_alarm = 0;
+ continue;
+ }
+ if (strncmp(buf_upper, endtodo, sizeof(endtodo) - 1) == 0) {
+ if (!vtodo.has_priority)
+ vtodo.priority = LOWEST;
+ if (vtodo.mesg) {
+ ical_store_todo(vtodo.priority, vtodo.mesg, vtodo.note);
+ (*notodos)++;
+ } else {
+ ical_log(log, ICAL_VTODO, ITEMLINE,
+ _("could not retrieve item summary."));
+ goto cleanup;
+ }
+ return;
+ } else {
+ int tmpint;
+
+ if (sscanf(buf_upper, "PRIORITY:%d", &tmpint) == 1) {
+ if (tmpint <= 9 && tmpint >= 1) {
+ vtodo.priority = tmpint;
+ vtodo.has_priority = 1;
+ } else {
+ ical_log(log, ICAL_VTODO, ITEMLINE,
+ _("item priority is not acceptable "
+ "(must be between 1 and 9)."));
+ vtodo.priority = LOWEST;
}
+ } else if (strncmp(buf_upper, summary, sizeof(summary) - 1) == 0) {
+ vtodo.mesg = ical_read_summary(buf);
+ } else if (strncmp(buf_upper, alarm, sizeof(alarm) - 1) == 0) {
+ skip_alarm = 1;
+ } else if (strncmp(buf_upper, desc, sizeof(desc) - 1) == 0) {
+ vtodo.note = ical_read_note(buf, noskipped, ICAL_VTODO, ITEMLINE, log);
+ }
}
- ical_log (log, ICAL_VTODO, ITEMLINE,
- _("The ical file seems to be malformed. "
- "The end of item was not found."));
+ }
+ ical_log(log, ICAL_VTODO, ITEMLINE,
+ _("The ical file seems to be malformed. "
+ "The end of item was not found."));
cleanup:
if (vtodo.note)
- mem_free (vtodo.note);
+ mem_free(vtodo.note);
if (vtodo.mesg)
- mem_free (vtodo.mesg);
+ mem_free(vtodo.mesg);
(*noskipped)++;
}
/* Import calcurse data. */
void
-ical_import_data (FILE *stream, FILE *log, unsigned *events, unsigned *apoints,
- unsigned *todos, unsigned *lines, unsigned *skipped)
+ical_import_data(FILE * stream, FILE * log, unsigned *events, unsigned *apoints,
+ unsigned *todos, unsigned *lines, unsigned *skipped)
{
const char vevent[] = "BEGIN:VEVENT";
const char vtodo[] = "BEGIN:VTODO";
char buf[BUFSIZ], lstore[BUFSIZ];
float ical_version;
- ical_readline_init (stream, buf, lstore, lines);
- ical_version = ical_chk_header (stream, buf, lstore, lines);
- RETURN_IF (ical_version < 0,
- _("Warning: ical header malformed or wrong version number. "
- "Aborting..."));
-
- ical_log_init (log, ical_version);
-
- while (ical_readline (stream, buf, lstore, lines))
- {
- (*lines)++;
- str_toupper (buf);
- if (strncmp (buf, vevent, sizeof (vevent) - 1) == 0)
- {
- ical_read_event (stream, log, events, apoints, skipped, buf, lstore,
- lines);
- }
- else if (strncmp (buf, vtodo, sizeof (vtodo) - 1) == 0)
- {
- ical_read_todo (stream, log, todos, skipped, buf, lstore, lines);
- }
+ ical_readline_init(stream, buf, lstore, lines);
+ ical_version = ical_chk_header(stream, buf, lstore, lines);
+ RETURN_IF(ical_version < 0,
+ _("Warning: ical header malformed or wrong version number. "
+ "Aborting..."));
+
+ ical_log_init(log, ical_version);
+
+ while (ical_readline(stream, buf, lstore, lines)) {
+ (*lines)++;
+ str_toupper(buf);
+ if (strncmp(buf, vevent, sizeof(vevent) - 1) == 0) {
+ ical_read_event(stream, log, events, apoints, skipped, buf, lstore,
+ lines);
+ } else if (strncmp(buf, vtodo, sizeof(vtodo) - 1) == 0) {
+ ical_read_todo(stream, log, todos, skipped, buf, lstore, lines);
}
+ }
}
/* Export calcurse data. */
-void
-ical_export_data (FILE *stream)
+void ical_export_data(FILE * stream)
{
- ical_export_header (stream);
- ical_export_recur_events (stream);
- ical_export_events (stream);
- ical_export_recur_apoints (stream);
- ical_export_apoints (stream);
- ical_export_todo (stream);
- ical_export_footer (stream);
+ ical_export_header(stream);
+ ical_export_recur_events(stream);
+ ical_export_events(stream);
+ ical_export_recur_apoints(stream);
+ ical_export_apoints(stream);
+ ical_export_todo(stream);
+ ical_export_footer(stream);
}
diff --git a/src/io.c b/src/io.c
index b382e07..fdead34 100644
--- a/src/io.c
+++ b/src/io.c
@@ -68,24 +68,23 @@ enum {
struct ht_keybindings_s {
const char *label;
- enum key key;
- HTABLE_ENTRY (ht_keybindings_s);
+ enum key key;
+ HTABLE_ENTRY(ht_keybindings_s);
};
-static void load_keys_ht_getkey (struct ht_keybindings_s *, const char **,
- int *);
-static int load_keys_ht_compare (struct ht_keybindings_s *,
- struct ht_keybindings_s *);
+static void load_keys_ht_getkey(struct ht_keybindings_s *, const char **,
+ int *);
+static int load_keys_ht_compare(struct ht_keybindings_s *,
+ struct ht_keybindings_s *);
#define HSIZE 256
-HTABLE_HEAD (ht_keybindings, HSIZE, ht_keybindings_s);
-HTABLE_PROTOTYPE (ht_keybindings, ht_keybindings_s)
-HTABLE_GENERATE (ht_keybindings, ht_keybindings_s, load_keys_ht_getkey,
- load_keys_ht_compare)
+HTABLE_HEAD(ht_keybindings, HSIZE, ht_keybindings_s);
+HTABLE_PROTOTYPE(ht_keybindings, ht_keybindings_s)
+ HTABLE_GENERATE(ht_keybindings, ht_keybindings_s, load_keys_ht_getkey,
+ load_keys_ht_compare)
/* Draw a progress bar while saving, loading or exporting data. */
-static void
-progress_bar (progress_bar_t type, int progress)
+static void progress_bar(progress_bar_t type, int progress)
{
#define NBFILES 4
#define NBEXPORTED 3
@@ -107,114 +106,107 @@ progress_bar (progress_bar_t type, int progress)
"[appointments]",
"[ todo ]"
};
- int ipos = LABELENGTH + 2;
+ int ipos = LABELENGTH + 2;
int epos[NBFILES];
/* progress bar length init. */
ipos = LABELENGTH + 2;
steps = (type == PROGRESS_BAR_EXPORT) ? NBEXPORTED : NBFILES;
- step = floor (col / (steps + 1));
+ step = floor(col / (steps + 1));
for (i = 0; i < steps - 1; i++)
epos[i] = (i + 2) * step;
epos[steps - 1] = col - 2;
- switch (type)
- {
- case PROGRESS_BAR_SAVE:
- EXIT_IF (progress < 0 || progress > PROGRESS_BAR_KEYS, "%s", error_msg);
- status_mesg (mesg_sav, file[progress]);
- break;
- case PROGRESS_BAR_LOAD:
- EXIT_IF (progress < 0 || progress > PROGRESS_BAR_KEYS, "%s", error_msg);
- status_mesg (mesg_load, file[progress]);
- break;
- case PROGRESS_BAR_EXPORT:
- EXIT_IF (progress < 0
- || progress > PROGRESS_BAR_EXPORT_TODO, "%s", error_msg);
- status_mesg (mesg_export, data[progress]);
- break;
- }
+ switch (type) {
+ case PROGRESS_BAR_SAVE:
+ EXIT_IF(progress < 0 || progress > PROGRESS_BAR_KEYS, "%s", error_msg);
+ status_mesg(mesg_sav, file[progress]);
+ break;
+ case PROGRESS_BAR_LOAD:
+ EXIT_IF(progress < 0 || progress > PROGRESS_BAR_KEYS, "%s", error_msg);
+ status_mesg(mesg_load, file[progress]);
+ break;
+ case PROGRESS_BAR_EXPORT:
+ EXIT_IF(progress < 0
+ || progress > PROGRESS_BAR_EXPORT_TODO, "%s", error_msg);
+ status_mesg(mesg_export, data[progress]);
+ break;
+ }
/* Draw the progress bar. */
- mvwprintw (win[STA].p, 1, ipos, barchar);
- mvwprintw (win[STA].p, 1, epos[steps - 1], barchar);
- custom_apply_attr (win[STA].p, ATTR_HIGHEST);
+ mvwprintw(win[STA].p, 1, ipos, barchar);
+ mvwprintw(win[STA].p, 1, epos[steps - 1], barchar);
+ custom_apply_attr(win[STA].p, ATTR_HIGHEST);
for (i = ipos + 1; i < epos[progress]; i++)
- mvwaddch (win[STA].p, 1, i, ' ' | A_REVERSE);
- custom_remove_attr (win[STA].p, ATTR_HIGHEST);
- wmove (win[STA].p, 0, 0);
- wins_wrefresh (win[STA].p);
+ mvwaddch(win[STA].p, 1, i, ' ' | A_REVERSE);
+ custom_remove_attr(win[STA].p, ATTR_HIGHEST);
+ wmove(win[STA].p, 0, 0);
+ wins_wrefresh(win[STA].p);
#undef NBFILES
#undef NBEXPORTED
#undef LABELENGTH
}
/* Ask user for a file name to export data to. */
-static FILE *
-get_export_stream (enum export_type type)
+static FILE *get_export_stream(enum export_type type)
{
FILE *stream;
int cancel;
char *home, *stream_name;
const char *question = _("Choose the file used to export calcurse data:");
const char *wrong_name =
- _("The file cannot be accessed, please enter another file name.");
+ _("The file cannot be accessed, please enter another file name.");
const char *press_enter = _("Press [ENTER] to continue.");
- const char *file_ext[IO_EXPORT_NBTYPES] = {"ical", "txt"};
+ const char *file_ext[IO_EXPORT_NBTYPES] = { "ical", "txt" };
stream = NULL;
- stream_name = (char *) mem_malloc (BUFSIZ);
- if ((home = getenv ("HOME")) != NULL)
- snprintf (stream_name, BUFSIZ, "%s/calcurse.%s", home, file_ext[type]);
+ stream_name = (char *)mem_malloc(BUFSIZ);
+ if ((home = getenv("HOME")) != NULL)
+ snprintf(stream_name, BUFSIZ, "%s/calcurse.%s", home, file_ext[type]);
else
- snprintf (stream_name, BUFSIZ, "%s/calcurse.%s", get_tempdir (),
- file_ext[type]);
-
- while (stream == NULL)
- {
- status_mesg (question, "");
- cancel = updatestring (win[STA].p, &stream_name, 0, 1);
- if (cancel)
- {
- mem_free (stream_name);
- return NULL;
- }
- stream = fopen (stream_name, "w");
- if (stream == NULL)
- {
- status_mesg (wrong_name, press_enter);
- wgetch (win[STA].p);
- }
+ snprintf(stream_name, BUFSIZ, "%s/calcurse.%s", get_tempdir(),
+ file_ext[type]);
+
+ while (stream == NULL) {
+ status_mesg(question, "");
+ cancel = updatestring(win[STA].p, &stream_name, 0, 1);
+ if (cancel) {
+ mem_free(stream_name);
+ return NULL;
}
- mem_free (stream_name);
+ stream = fopen(stream_name, "w");
+ if (stream == NULL) {
+ status_mesg(wrong_name, press_enter);
+ wgetch(win[STA].p);
+ }
+ }
+ mem_free(stream_name);
return stream;
}
/* Append a line to a file. */
-unsigned
-io_fprintln (const char *fname, const char *fmt, ...)
+unsigned io_fprintln(const char *fname, const char *fmt, ...)
{
FILE *fp;
va_list ap;
char buf[BUFSIZ];
int ret;
- fp = fopen (fname, "a");
- RETVAL_IF (!fp, 0, _("Failed to open \"%s\", - %s\n"),
- fname, strerror (errno));
+ fp = fopen(fname, "a");
+ RETVAL_IF(!fp, 0, _("Failed to open \"%s\", - %s\n"), fname, strerror(errno));
- va_start (ap, fmt);
- ret = vsnprintf (buf, sizeof buf, fmt, ap);
- RETVAL_IF (ret < 0, 0, _("Failed to build message\n"));
- va_end (ap);
+ va_start(ap, fmt);
+ ret = vsnprintf(buf, sizeof buf, fmt, ap);
+ RETVAL_IF(ret < 0, 0, _("Failed to build message\n"));
+ va_end(ap);
- ret = fprintf (fp, "%s", buf);
- RETVAL_IF (ret < 0, 0, _("Failed to print message \"%s\"\n"), buf);
+ ret = fprintf(fp, "%s", buf);
+ RETVAL_IF(ret < 0, 0, _("Failed to print message \"%s\"\n"), buf);
- ret = fclose (fp);
- RETVAL_IF (ret != 0, 0, _("Failed to close \"%s\" - %s\n"),
- fname, strerror (errno));
+ ret = fclose(fp);
+ RETVAL_IF(ret != 0, 0, _("Failed to close \"%s\" - %s\n"),
+ fname, strerror(errno));
return 1;
}
@@ -226,122 +218,105 @@ io_fprintln (const char *fname, const char *fmt, ...)
* is created.
* The datadir argument can be use to specify an alternative data root dir.
*/
-void
-io_init (const char *cfile, const char *datadir)
+void io_init(const char *cfile, const char *datadir)
{
FILE *data_file;
const char *home;
char apts_file[BUFSIZ] = "";
int ch;
- if (datadir != NULL)
- {
- home = datadir;
- snprintf (path_dir, BUFSIZ, "%s", home);
- snprintf (path_todo, BUFSIZ, "%s/" TODO_PATH_NAME, home);
- snprintf (path_conf, BUFSIZ, "%s/" CONF_PATH_NAME, home);
- snprintf (path_notes, BUFSIZ, "%s/" NOTES_DIR_NAME, home);
- snprintf (path_apts, BUFSIZ, "%s/" APTS_PATH_NAME, home);
- snprintf (path_keys, BUFSIZ, "%s/" KEYS_PATH_NAME, home);
- snprintf (path_cpid, BUFSIZ, "%s/" CPID_PATH_NAME, home);
- snprintf (path_dpid, BUFSIZ, "%s/" DPID_PATH_NAME, home);
- snprintf (path_dmon_log, BUFSIZ, "%s/" DLOG_PATH_NAME, home);
+ if (datadir != NULL) {
+ home = datadir;
+ snprintf(path_dir, BUFSIZ, "%s", home);
+ snprintf(path_todo, BUFSIZ, "%s/" TODO_PATH_NAME, home);
+ snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH_NAME, home);
+ snprintf(path_notes, BUFSIZ, "%s/" NOTES_DIR_NAME, home);
+ snprintf(path_apts, BUFSIZ, "%s/" APTS_PATH_NAME, home);
+ snprintf(path_keys, BUFSIZ, "%s/" KEYS_PATH_NAME, home);
+ snprintf(path_cpid, BUFSIZ, "%s/" CPID_PATH_NAME, home);
+ snprintf(path_dpid, BUFSIZ, "%s/" DPID_PATH_NAME, home);
+ snprintf(path_dmon_log, BUFSIZ, "%s/" DLOG_PATH_NAME, home);
+ } else {
+ home = getenv("HOME");
+ if (home == NULL) {
+ home = ".";
}
- else
- {
- home = getenv ("HOME");
- if (home == NULL)
- {
- home = ".";
- }
- snprintf (path_dir, BUFSIZ, "%s/" DIR_NAME, home);
- snprintf (path_todo, BUFSIZ, "%s/" TODO_PATH, home);
- snprintf (path_conf, BUFSIZ, "%s/" CONF_PATH, home);
- snprintf (path_keys, BUFSIZ, "%s/" KEYS_PATH, home);
- snprintf (path_cpid, BUFSIZ, "%s/" CPID_PATH, home);
- snprintf (path_dpid, BUFSIZ, "%s/" DPID_PATH, home);
- snprintf (path_dmon_log, BUFSIZ, "%s/" DLOG_PATH, home);
- snprintf (path_notes, BUFSIZ, "%s/" NOTES_DIR, home);
- if (cfile == NULL)
- {
- snprintf (path_apts, BUFSIZ, "%s/" APTS_PATH, home);
- }
- else
- {
- snprintf (apts_file, BUFSIZ, "%s", cfile);
- strncpy (path_apts, apts_file, BUFSIZ);
- /* check if the file exists, otherwise create it */
- data_file = fopen (path_apts, "r");
- if (data_file == NULL)
- {
- printf (_("%s does not exist, create it now [y or n] ? "),
- path_apts);
- ch = getchar ();
- switch (ch)
- {
- case 'N':
- case 'n':
- puts (_("aborting...\n"));
- exit_calcurse (EXIT_FAILURE);
- break;
-
- case 'Y':
- case 'y':
- data_file = fopen (path_apts, "w");
- if (data_file == NULL)
- {
- perror (path_apts);
- exit_calcurse (EXIT_FAILURE);
- }
- else
- {
- printf (_("%s successfully created\n"), path_apts);
- puts (_("starting interactive mode...\n"));
- }
- break;
-
- default:
- puts (_("aborting...\n"));
- exit_calcurse (EXIT_FAILURE);
- break;
- }
- }
- file_close (data_file, __FILE_POS__);
+ snprintf(path_dir, BUFSIZ, "%s/" DIR_NAME, home);
+ snprintf(path_todo, BUFSIZ, "%s/" TODO_PATH, home);
+ snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH, home);
+ snprintf(path_keys, BUFSIZ, "%s/" KEYS_PATH, home);
+ snprintf(path_cpid, BUFSIZ, "%s/" CPID_PATH, home);
+ snprintf(path_dpid, BUFSIZ, "%s/" DPID_PATH, home);
+ snprintf(path_dmon_log, BUFSIZ, "%s/" DLOG_PATH, home);
+ snprintf(path_notes, BUFSIZ, "%s/" NOTES_DIR, home);
+ if (cfile == NULL) {
+ snprintf(path_apts, BUFSIZ, "%s/" APTS_PATH, home);
+ } else {
+ snprintf(apts_file, BUFSIZ, "%s", cfile);
+ strncpy(path_apts, apts_file, BUFSIZ);
+ /* check if the file exists, otherwise create it */
+ data_file = fopen(path_apts, "r");
+ if (data_file == NULL) {
+ printf(_("%s does not exist, create it now [y or n] ? "), path_apts);
+ ch = getchar();
+ switch (ch) {
+ case 'N':
+ case 'n':
+ puts(_("aborting...\n"));
+ exit_calcurse(EXIT_FAILURE);
+ break;
+
+ case 'Y':
+ case 'y':
+ data_file = fopen(path_apts, "w");
+ if (data_file == NULL) {
+ perror(path_apts);
+ exit_calcurse(EXIT_FAILURE);
+ } else {
+ printf(_("%s successfully created\n"), path_apts);
+ puts(_("starting interactive mode...\n"));
+ }
+ break;
+
+ default:
+ puts(_("aborting...\n"));
+ exit_calcurse(EXIT_FAILURE);
+ break;
}
+ }
+ file_close(data_file, __FILE_POS__);
}
+ }
}
-void
-io_extract_data (char *dst_data, const char *org, int len)
+void io_extract_data(char *dst_data, const char *org, int len)
{
int i;
- for (; *org == ' ' || *org == '\t'; org++);
- for (i = 0; i < len - 1; i++)
- {
- if (*org == '\n' || *org == '\0' || *org == '#')
- break;
- *dst_data++ = *org++;
- }
+ for (; *org == ' ' || *org == '\t'; org++) ;
+ for (i = 0; i < len - 1; i++) {
+ if (*org == '\n' || *org == '\0' || *org == '#')
+ break;
+ *dst_data++ = *org++;
+ }
*dst_data = '\0';
}
-static void
-display_mark (void)
+static void display_mark(void)
{
const int DISPLAY_TIME = 1;
WINDOW *mwin;
- mwin = newwin (1, 2, 1, col - 3);
+ mwin = newwin(1, 2, 1, col - 3);
- custom_apply_attr (mwin, ATTR_HIGHEST);
- mvwprintw (mwin, 0, 0, "**");
- wins_wrefresh (mwin);
- sleep (DISPLAY_TIME);
- mvwprintw (mwin, 0, 0, " ");
- wins_wrefresh (mwin);
- delwin (mwin);
- wins_doupdate ();
+ custom_apply_attr(mwin, ATTR_HIGHEST);
+ mvwprintw(mwin, 0, 0, "**");
+ wins_wrefresh(mwin);
+ sleep(DISPLAY_TIME);
+ mvwprintw(mwin, 0, 0, " ");
+ wins_wrefresh(mwin);
+ delwin(mwin);
+ wins_doupdate();
}
static pthread_mutex_t io_save_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -351,8 +326,7 @@ static pthread_mutex_t io_save_mutex = PTHREAD_MUTEX_INITIALIZER;
* appointments first, and then the events.
* Recursive items are written first.
*/
-unsigned
-io_save_apts (void)
+unsigned io_save_apts(void)
{
llist_item_t *i;
FILE *fp;
@@ -360,34 +334,31 @@ io_save_apts (void)
if (read_only)
return 1;
- if ((fp = fopen (path_apts, "w")) == NULL)
+ if ((fp = fopen(path_apts, "w")) == NULL)
return 0;
- recur_save_data (fp);
+ recur_save_data(fp);
if (ui_mode == UI_CURSES)
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_FOREACH (&alist_p, i)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
- apoint_write (apt, fp);
- }
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_FOREACH(&alist_p, i) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+ apoint_write(apt, fp);
+ }
if (ui_mode == UI_CURSES)
- LLIST_TS_UNLOCK (&alist_p);
+ LLIST_TS_UNLOCK(&alist_p);
- LLIST_FOREACH (&eventlist, i)
- {
- struct event *ev = LLIST_TS_GET_DATA (i);
- event_write (ev, fp);
- }
- file_close (fp, __FILE_POS__);
+ LLIST_FOREACH(&eventlist, i) {
+ struct event *ev = LLIST_TS_GET_DATA(i);
+ event_write(ev, fp);
+ }
+ file_close(fp, __FILE_POS__);
return 1;
}
/* Save the todo data file. */
-unsigned
-io_save_todo (void)
+unsigned io_save_todo(void)
{
llist_item_t *i;
FILE *fp;
@@ -395,40 +366,37 @@ io_save_todo (void)
if (read_only)
return 1;
- if ((fp = fopen (path_todo, "w")) == NULL)
+ if ((fp = fopen(path_todo, "w")) == NULL)
return 0;
- LLIST_FOREACH (&todolist, i)
- {
- struct todo *todo = LLIST_TS_GET_DATA (i);
- todo_write (todo, fp);
- }
- file_close (fp, __FILE_POS__);
+ LLIST_FOREACH(&todolist, i) {
+ struct todo *todo = LLIST_TS_GET_DATA(i);
+ todo_write(todo, fp);
+ }
+ file_close(fp, __FILE_POS__);
return 1;
}
/* Save user-defined keys */
-unsigned
-io_save_keys (void)
+unsigned io_save_keys(void)
{
FILE *fp;
if (read_only)
return 1;
- if ((fp = fopen (path_keys, "w")) == NULL)
+ if ((fp = fopen(path_keys, "w")) == NULL)
return 0;
- keys_save_bindings (fp);
- file_close (fp, __FILE_POS__);
+ keys_save_bindings(fp);
+ file_close(fp, __FILE_POS__);
return 1;
}
/* Save the calendar data */
-void
-io_save_cal (enum save_display display)
+void io_save_cal(enum save_display display)
{
const char *access_pb = _("Problems accessing data file ...");
const char *save_success = _("The data files were successfully saved");
@@ -438,44 +406,43 @@ io_save_cal (enum save_display display)
if (read_only)
return;
- pthread_mutex_lock (&io_save_mutex);
+ pthread_mutex_lock(&io_save_mutex);
show_bar = 0;
if (ui_mode == UI_CURSES && display == IO_SAVE_DISPLAY_BAR
&& conf.progress_bar)
show_bar = 1;
else if (ui_mode == UI_CURSES && display == IO_SAVE_DISPLAY_MARK)
- display_mark ();
+ display_mark();
if (show_bar)
- progress_bar (PROGRESS_BAR_SAVE, PROGRESS_BAR_CONF);
- if (!config_save ())
- ERROR_MSG ("%s", access_pb);
+ progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_CONF);
+ if (!config_save())
+ ERROR_MSG("%s", access_pb);
if (show_bar)
- progress_bar (PROGRESS_BAR_SAVE, PROGRESS_BAR_TODO);
- if (!io_save_todo ())
- ERROR_MSG ("%s", access_pb);
+ progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_TODO);
+ if (!io_save_todo())
+ ERROR_MSG("%s", access_pb);
if (show_bar)
- progress_bar (PROGRESS_BAR_SAVE, PROGRESS_BAR_APTS);
- if (!io_save_apts ())
- ERROR_MSG ("%s", access_pb);
+ progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_APTS);
+ if (!io_save_apts())
+ ERROR_MSG("%s", access_pb);
if (show_bar)
- progress_bar (PROGRESS_BAR_SAVE, PROGRESS_BAR_KEYS);
- if (!io_save_keys ())
- ERROR_MSG ("%s", access_pb);
+ progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_KEYS);
+ if (!io_save_keys())
+ ERROR_MSG("%s", access_pb);
/* Print a message telling data were saved */
if (ui_mode == UI_CURSES && conf.system_dialogs
- && display != IO_SAVE_DISPLAY_MARK)
- {
- status_mesg (save_success, enter);
- wgetch (win[STA].p);
- }
+ && display != IO_SAVE_DISPLAY_MARK) {
+ status_mesg(save_success, enter);
+ wgetch(win[STA].p);
+ }
- pthread_mutex_unlock (&io_save_mutex);
+ pthread_mutex_unlock(&io_save_mutex);
}
/*
@@ -483,8 +450,7 @@ io_save_cal (enum save_display display)
* and then load either: a new appointment, a new event, or a new
* recursive item (which can also be either an event or an appointment).
*/
-void
-io_load_app (void)
+void io_load_app(void)
{
FILE *data_file;
int c, is_appointment, is_event, is_recursive;
@@ -496,183 +462,144 @@ io_load_app (void)
char type, state = 0L;
char note[MAX_NOTESIZ + 1], *notep;
- t = time (NULL);
- lt = localtime (&t);
+ t = time(NULL);
+ lt = localtime(&t);
start = end = until = *lt;
- data_file = fopen (path_apts, "r");
- EXIT_IF (data_file == NULL, _("failed to open appointment file"));
+ data_file = fopen(path_apts, "r");
+ EXIT_IF(data_file == NULL, _("failed to open appointment file"));
- for (;;)
- {
- LLIST_INIT (&exc);
- is_appointment = is_event = is_recursive = 0;
- c = getc (data_file);
- if (c == EOF)
- break;
- ungetc (c, data_file);
-
- /* Read the date first: it is common to both events
- * and appointments.
- */
- if (fscanf (data_file, "%d / %d / %d ",
- &start.tm_mon, &start.tm_mday, &start.tm_year) != 3)
- EXIT (_("syntax error in the item date"));
-
- /* Read the next character : if it is an '@' then we have
- * an appointment, else if it is an '[' we have en event.
- */
- c = getc (data_file);
-
- if (c == '@')
- is_appointment = 1;
- else if (c == '[')
- is_event = 1;
- else
- EXIT (_("no event nor appointment found"));
-
- /* Read the remaining informations. */
- if (is_appointment)
- {
- if (fscanf (data_file, " %d : %d -> %d / %d / %d @ %d : %d ",
- &start.tm_hour, &start.tm_min,
- &end.tm_mon, &end.tm_mday, &end.tm_year,
- &end.tm_hour, &end.tm_min) != 7)
- EXIT (_("syntax error in item time or duration"));
- }
- else if (is_event)
- {
- if (fscanf (data_file, " %d ", &id) != 1 || getc (data_file) != ']')
- EXIT (_("syntax error in item identifier"));
- while ((c = getc (data_file)) == ' ');
- ungetc (c, data_file);
- }
- else
- {
- EXIT (_("wrong format in the appointment or event"));
- /* NOTREACHED */
- }
+ for (;;) {
+ LLIST_INIT(&exc);
+ is_appointment = is_event = is_recursive = 0;
+ c = getc(data_file);
+ if (c == EOF)
+ break;
+ ungetc(c, data_file);
+
+ /* Read the date first: it is common to both events
+ * and appointments.
+ */
+ if (fscanf(data_file, "%d / %d / %d ",
+ &start.tm_mon, &start.tm_mday, &start.tm_year) != 3)
+ EXIT(_("syntax error in the item date"));
+
+ /* Read the next character : if it is an '@' then we have
+ * an appointment, else if it is an '[' we have en event.
+ */
+ c = getc(data_file);
+
+ if (c == '@')
+ is_appointment = 1;
+ else if (c == '[')
+ is_event = 1;
+ else
+ EXIT(_("no event nor appointment found"));
+
+ /* Read the remaining informations. */
+ if (is_appointment) {
+ if (fscanf(data_file, " %d : %d -> %d / %d / %d @ %d : %d ",
+ &start.tm_hour, &start.tm_min,
+ &end.tm_mon, &end.tm_mday, &end.tm_year,
+ &end.tm_hour, &end.tm_min) != 7)
+ EXIT(_("syntax error in item time or duration"));
+ } else if (is_event) {
+ if (fscanf(data_file, " %d ", &id) != 1 || getc(data_file) != ']')
+ EXIT(_("syntax error in item identifier"));
+ while ((c = getc(data_file)) == ' ') ;
+ ungetc(c, data_file);
+ } else {
+ EXIT(_("wrong format in the appointment or event"));
+ /* NOTREACHED */
+ }
- /* Check if we have a recursive item. */
- c = getc (data_file);
-
- if (c == '{')
- {
- is_recursive = 1;
- if (fscanf (data_file, " %d%c ", &freq, &type) != 2)
- EXIT (_("syntax error in item repetition"));
-
- c = getc (data_file);
- if (c == '}')
- { /* endless recurrent item */
- until.tm_year = 0;
- while ((c = getc (data_file)) == ' ');
- ungetc (c, data_file);
- }
- else if (c == '-' && getc (data_file) == '>')
- {
- if (fscanf (data_file, " %d / %d / %d ", &until.tm_mon,
- &until.tm_mday, &until.tm_year) != 3)
- EXIT (_("syntax error in item repetition"));
- c = getc (data_file);
- if (c == '!')
- {
- ungetc (c, data_file);
- recur_exc_scan (&exc, data_file);
- c = getc (data_file);
- }
- else if (c == '}')
- {
- while ((c = getc (data_file)) == ' ');
- ungetc (c, data_file);
- }
- else
- EXIT (_("syntax error in item repetition"));
- }
- else if (c == '!')
- { /* endless item with exceptions */
- ungetc (c, data_file);
- recur_exc_scan (&exc, data_file);
- c = getc (data_file);
- until.tm_year = 0;
- }
- else
- {
- EXIT (_("wrong format in the appointment or event"));
- /* NOTREACHED */
- }
- }
- else
- ungetc (c, data_file);
-
- /* Check if a note is attached to the item. */
- c = getc (data_file);
- if (c == '>')
- {
- note_read (note, data_file);
- notep = note;
- }
- else
- {
- notep = NULL;
- ungetc (c, data_file);
- }
+ /* Check if we have a recursive item. */
+ c = getc(data_file);
+
+ if (c == '{') {
+ is_recursive = 1;
+ if (fscanf(data_file, " %d%c ", &freq, &type) != 2)
+ EXIT(_("syntax error in item repetition"));
+
+ c = getc(data_file);
+ if (c == '}') { /* endless recurrent item */
+ until.tm_year = 0;
+ while ((c = getc(data_file)) == ' ') ;
+ ungetc(c, data_file);
+ } else if (c == '-' && getc(data_file) == '>') {
+ if (fscanf(data_file, " %d / %d / %d ", &until.tm_mon,
+ &until.tm_mday, &until.tm_year) != 3)
+ EXIT(_("syntax error in item repetition"));
+ c = getc(data_file);
+ if (c == '!') {
+ ungetc(c, data_file);
+ recur_exc_scan(&exc, data_file);
+ c = getc(data_file);
+ } else if (c == '}') {
+ while ((c = getc(data_file)) == ' ') ;
+ ungetc(c, data_file);
+ } else
+ EXIT(_("syntax error in item repetition"));
+ } else if (c == '!') { /* endless item with exceptions */
+ ungetc(c, data_file);
+ recur_exc_scan(&exc, data_file);
+ c = getc(data_file);
+ until.tm_year = 0;
+ } else {
+ EXIT(_("wrong format in the appointment or event"));
+ /* NOTREACHED */
+ }
+ } else
+ ungetc(c, data_file);
+
+ /* Check if a note is attached to the item. */
+ c = getc(data_file);
+ if (c == '>') {
+ note_read(note, data_file);
+ notep = note;
+ } else {
+ notep = NULL;
+ ungetc(c, data_file);
+ }
- /*
- * Last: read the item description and load it into its
- * corresponding linked list, depending on the item type.
- */
- if (is_appointment)
- {
- c = getc (data_file);
- if (c == '!')
- {
- state |= APOINT_NOTIFY;
- while ((c = getc (data_file)) == ' ');
- ungetc (c, data_file);
- }
- else if (c == '|')
- {
- state = 0L;
- while ((c = getc (data_file)) == ' ');
- ungetc (c, data_file);
- }
- else
- EXIT (_("syntax error in item repetition"));
- if (is_recursive)
- {
- recur_apoint_scan (data_file, start, end,
- type, freq, until, notep, &exc, state);
- }
- else
- {
- apoint_scan (data_file, start, end, state, notep);
- }
- }
- else if (is_event)
- {
- if (is_recursive)
- {
- recur_event_scan (data_file, start, id, type,
- freq, until, notep, &exc);
- }
- else
- {
- event_scan (data_file, start, id, notep);
- }
- }
- else
- {
- EXIT (_("wrong format in the appointment or event"));
- /* NOTREACHED */
- }
+ /*
+ * Last: read the item description and load it into its
+ * corresponding linked list, depending on the item type.
+ */
+ if (is_appointment) {
+ c = getc(data_file);
+ if (c == '!') {
+ state |= APOINT_NOTIFY;
+ while ((c = getc(data_file)) == ' ') ;
+ ungetc(c, data_file);
+ } else if (c == '|') {
+ state = 0L;
+ while ((c = getc(data_file)) == ' ') ;
+ ungetc(c, data_file);
+ } else
+ EXIT(_("syntax error in item repetition"));
+ if (is_recursive) {
+ recur_apoint_scan(data_file, start, end,
+ type, freq, until, notep, &exc, state);
+ } else {
+ apoint_scan(data_file, start, end, state, notep);
+ }
+ } else if (is_event) {
+ if (is_recursive) {
+ recur_event_scan(data_file, start, id, type, freq, until, notep, &exc);
+ } else {
+ event_scan(data_file, start, id, notep);
+ }
+ } else {
+ EXIT(_("wrong format in the appointment or event"));
+ /* NOTREACHED */
}
- file_close (data_file, __FILE_POS__);
+ }
+ file_close(data_file, __FILE_POS__);
}
/* Load the todo data */
-void
-io_load_todo (void)
+void io_load_todo(void)
{
FILE *data_file;
char *newline;
@@ -680,64 +607,59 @@ io_load_todo (void)
int c, id;
char buf[BUFSIZ], e_todo[BUFSIZ], note[MAX_NOTESIZ + 1];
- data_file = fopen (path_todo, "r");
- EXIT_IF (data_file == NULL, _("failed to open todo file"));
+ data_file = fopen(path_todo, "r");
+ EXIT_IF(data_file == NULL, _("failed to open todo file"));
- for (;;)
- {
- c = getc (data_file);
- if (c == EOF)
- break;
- else if (c == '[')
- { /* new style with id */
- if (fscanf (data_file, " %d ", &id) != 1 || getc (data_file) != ']')
- EXIT (_("syntax error in item identifier"));
- while ((c = getc (data_file)) == ' ');
- ungetc (c, data_file);
- }
- else
- {
- id = 9;
- ungetc (c, data_file);
- }
- /* Now read the attached note, if any. */
- c = getc (data_file);
- if (c == '>')
- note_read (note, data_file);
- else
- {
- note[0] = '\0';
- ungetc (c, data_file);
- }
- /* Then read todo description. */
- if (!fgets (buf, sizeof buf, data_file))
- buf[0] = '\0';
- newline = strchr (buf, '\n');
- if (newline)
- *newline = '\0';
- io_extract_data (e_todo, buf, sizeof buf);
- todo_add (e_todo, id, note);
- ++nb_tod;
+ for (;;) {
+ c = getc(data_file);
+ if (c == EOF)
+ break;
+ else if (c == '[') { /* new style with id */
+ if (fscanf(data_file, " %d ", &id) != 1 || getc(data_file) != ']')
+ EXIT(_("syntax error in item identifier"));
+ while ((c = getc(data_file)) == ' ') ;
+ ungetc(c, data_file);
+ } else {
+ id = 9;
+ ungetc(c, data_file);
+ }
+ /* Now read the attached note, if any. */
+ c = getc(data_file);
+ if (c == '>')
+ note_read(note, data_file);
+ else {
+ note[0] = '\0';
+ ungetc(c, data_file);
}
- file_close (data_file, __FILE_POS__);
- todo_set_nb (nb_tod);
+ /* Then read todo description. */
+ if (!fgets(buf, sizeof buf, data_file))
+ buf[0] = '\0';
+ newline = strchr(buf, '\n');
+ if (newline)
+ *newline = '\0';
+ io_extract_data(e_todo, buf, sizeof buf);
+ todo_add(e_todo, id, note);
+ ++nb_tod;
+ }
+ file_close(data_file, __FILE_POS__);
+ todo_set_nb(nb_tod);
}
static void
-load_keys_ht_getkey (struct ht_keybindings_s *data, const char **key, int *len)
+load_keys_ht_getkey(struct ht_keybindings_s *data, const char **key, int *len)
{
*key = data->label;
- *len = strlen (data->label);
+ *len = strlen(data->label);
}
static int
-load_keys_ht_compare (struct ht_keybindings_s *data1,
- struct ht_keybindings_s *data2)
+load_keys_ht_compare(struct ht_keybindings_s *data1,
+ struct ht_keybindings_s *data2)
{
- const int KEYLEN = strlen (data1->label);
+ const int KEYLEN = strlen(data1->label);
- if (strlen (data2->label) == KEYLEN
- && !memcmp (data1->label, data2->label, KEYLEN))
+ if (strlen(data2->label) == KEYLEN
+ && !memcmp(data1->label, data2->label, KEYLEN))
return 0;
else
return 1;
@@ -748,7 +670,7 @@ load_keys_ht_compare (struct ht_keybindings_s *data1,
* visible in some specific cases. Thus replace it by the following is_blank()
* function.
*/
-static int is_blank (int c)
+static int is_blank(int c)
{
return c == ' ' || c == '\t';
}
@@ -760,8 +682,7 @@ static int is_blank (int c)
* A log file is also built in case some errors were found in the key
* configuration file.
*/
-void
-io_load_keys (const char *pager)
+void io_load_keys(const char *pager)
{
struct ht_keybindings_s keys[NBKEYS];
FILE *keyfp;
@@ -770,188 +691,163 @@ io_load_keys (const char *pager)
int i, skipped, loaded, line;
const int MAX_ERRORS = 5;
- keys_init ();
+ keys_init();
- struct ht_keybindings ht_keys = HTABLE_INITIALIZER (&ht_keys);
+ struct ht_keybindings ht_keys = HTABLE_INITIALIZER(&ht_keys);
- for (i = 0; i < NBKEYS; i++)
- {
- keys[i].key = (enum key)i;
- keys[i].label = keys_get_label ((enum key)i);
- HTABLE_INSERT (ht_keybindings, &ht_keys, &keys[i]);
- }
+ for (i = 0; i < NBKEYS; i++) {
+ keys[i].key = (enum key)i;
+ keys[i].label = keys_get_label((enum key)i);
+ HTABLE_INSERT(ht_keybindings, &ht_keys, &keys[i]);
+ }
- keyfp = fopen (path_keys, "r");
- EXIT_IF (keyfp == NULL, _("failed to open key file"));
+ keyfp = fopen(path_keys, "r");
+ EXIT_IF(keyfp == NULL, _("failed to open key file"));
- log = io_log_init ();
+ log = io_log_init();
skipped = loaded = line = 0;
- while (fgets (buf, BUFSIZ, keyfp) != NULL)
- {
- char key_label[BUFSIZ], *p;
- struct ht_keybindings_s *ht_elm, ht_entry;
- const int AWAITED = 1;
- int assigned;
-
- line++;
- if (skipped > MAX_ERRORS)
- {
- const char *too_many =
- _("\nToo many errors while reading configuration file!\n"
- "Please backup your keys file, remove it from directory, "
- "and launch calcurse again.\n");
-
- io_log_print (log, line, too_many);
- break;
- }
- for (p = buf; is_blank ((int)*p); p++)
- ;
- if (p != buf)
- memmove (buf, p, strlen (p));
- if (buf[0] == '#' || buf[0] == '\n')
- continue;
-
- if (sscanf (buf, "%s", key_label) != AWAITED)
- {
- skipped++;
- io_log_print (log, line, _("Could not read key label"));
- continue;
- }
- ht_entry.label = key_label;
- p = buf + strlen (key_label) + 1;
- ht_elm = HTABLE_LOOKUP (ht_keybindings, &ht_keys, &ht_entry);
- if (!ht_elm)
- {
+ while (fgets(buf, BUFSIZ, keyfp) != NULL) {
+ char key_label[BUFSIZ], *p;
+ struct ht_keybindings_s *ht_elm, ht_entry;
+ const int AWAITED = 1;
+ int assigned;
+
+ line++;
+ if (skipped > MAX_ERRORS) {
+ const char *too_many =
+ _("\nToo many errors while reading configuration file!\n"
+ "Please backup your keys file, remove it from directory, "
+ "and launch calcurse again.\n");
+
+ io_log_print(log, line, too_many);
+ break;
+ }
+ for (p = buf; is_blank((int)*p); p++) ;
+ if (p != buf)
+ memmove(buf, p, strlen(p));
+ if (buf[0] == '#' || buf[0] == '\n')
+ continue;
+
+ if (sscanf(buf, "%s", key_label) != AWAITED) {
+ skipped++;
+ io_log_print(log, line, _("Could not read key label"));
+ continue;
+ }
+ ht_entry.label = key_label;
+ p = buf + strlen(key_label) + 1;
+ ht_elm = HTABLE_LOOKUP(ht_keybindings, &ht_keys, &ht_entry);
+ if (!ht_elm) {
+ skipped++;
+ io_log_print(log, line, _("Key label not recognized"));
+ continue;
+ }
+ assigned = 0;
+ for (;;) {
+ char key_ch[BUFSIZ], tmpbuf[BUFSIZ];
+
+ while (*p == ' ')
+ p++;
+ (void)strncpy(tmpbuf, p, BUFSIZ);
+ if (sscanf(tmpbuf, "%s", key_ch) == AWAITED) {
+ int ch;
+
+ if ((ch = keys_str2int(key_ch)) < 0) {
+ char unknown_key[BUFSIZ];
+
skipped++;
- io_log_print (log, line, _("Key label not recognized"));
- continue;
- }
- assigned = 0;
- for (;;)
- {
- char key_ch[BUFSIZ], tmpbuf[BUFSIZ];
-
- while (*p == ' ')
- p++;
- (void)strncpy (tmpbuf, p, BUFSIZ);
- if (sscanf (tmpbuf, "%s", key_ch) == AWAITED)
- {
- int ch;
-
- if ((ch = keys_str2int (key_ch)) < 0)
- {
- char unknown_key[BUFSIZ];
-
- skipped++;
- (void)snprintf (unknown_key, BUFSIZ,
- _("Error reading key: \"%s\""), key_ch);
- io_log_print (log, line, unknown_key);
- }
- else
- {
- int used;
-
- used = keys_assign_binding (ch, ht_elm->key);
- if (used)
- {
- char already_assigned[BUFSIZ];
-
- skipped++;
- (void)snprintf (already_assigned, BUFSIZ,
- _("\"%s\" assigned multiple times!"), key_ch);
- io_log_print (log, line, already_assigned);
- }
- else
- assigned++;
- }
- p += strlen (key_ch) + 1;
- }
- else
- {
- if (assigned)
- loaded++;
- break;
- }
+ (void)snprintf(unknown_key, BUFSIZ,
+ _("Error reading key: \"%s\""), key_ch);
+ io_log_print(log, line, unknown_key);
+ } else {
+ int used;
+
+ used = keys_assign_binding(ch, ht_elm->key);
+ if (used) {
+ char already_assigned[BUFSIZ];
+
+ skipped++;
+ (void)snprintf(already_assigned, BUFSIZ,
+ _("\"%s\" assigned multiple times!"), key_ch);
+ io_log_print(log, line, already_assigned);
+ } else
+ assigned++;
}
+ p += strlen(key_ch) + 1;
+ } else {
+ if (assigned)
+ loaded++;
+ break;
+ }
}
- file_close (keyfp, __FILE_POS__);
- file_close (log->fd, __FILE_POS__);
- if (skipped > 0)
- {
- const char *view_log =
+ }
+ file_close(keyfp, __FILE_POS__);
+ file_close(log->fd, __FILE_POS__);
+ if (skipped > 0) {
+ const char *view_log =
_("There were some errors when loading keys file, see log file ?");
- io_log_display (log, view_log, pager);
- }
- io_log_free (log);
- EXIT_IF (skipped > MAX_ERRORS,
- _("Too many errors while reading keys file, aborting..."));
+ io_log_display(log, view_log, pager);
+ }
+ io_log_free(log);
+ EXIT_IF(skipped > MAX_ERRORS,
+ _("Too many errors while reading keys file, aborting..."));
if (loaded < NBKEYS)
- keys_fill_missing ();
- if (keys_check_missing_bindings ())
- WARN_MSG (_("Some actions do not have any associated key bindings!"));
+ keys_fill_missing();
+ if (keys_check_missing_bindings())
+ WARN_MSG(_("Some actions do not have any associated key bindings!"));
}
-void
-io_check_dir (char *dir, int *missing)
+void io_check_dir(char *dir, int *missing)
{
if (read_only)
return;
errno = 0;
- if (mkdir (dir, 0700) != 0)
- {
- if (errno != EEXIST)
- {
- fprintf (stderr, _("FATAL ERROR: could not create %s: %s\n"), dir,
- strerror (errno));
- exit_calcurse (EXIT_FAILURE);
- }
- }
- else
- {
- if (missing)
- (*missing)++;
+ if (mkdir(dir, 0700) != 0) {
+ if (errno != EEXIST) {
+ fprintf(stderr, _("FATAL ERROR: could not create %s: %s\n"), dir,
+ strerror(errno));
+ exit_calcurse(EXIT_FAILURE);
}
+ } else {
+ if (missing)
+ (*missing)++;
+ }
}
-unsigned
-io_file_exist (char *file)
+unsigned io_file_exist(char *file)
{
FILE *fd;
if (!file)
return 0;
- if ((fd = fopen (file, "r")) == NULL)
+ if ((fd = fopen(file, "r")) == NULL)
return 0;
- fclose (fd);
+ fclose(fd);
return 1;
}
-void
-io_check_file (char *file, int *missing)
+void io_check_file(char *file, int *missing)
{
if (read_only)
return;
errno = 0;
- if (!io_file_exist (file))
- {
- FILE *fd;
-
- if (missing)
- (*missing)++;
- if ((fd = fopen (file, "w")) == NULL)
- {
- fprintf (stderr, _("FATAL ERROR: could not create %s: %s\n"), file,
- strerror (errno));
- exit_calcurse (EXIT_FAILURE);
- }
- file_close (fd, __FILE_POS__);
+ if (!io_file_exist(file)) {
+ FILE *fd;
+
+ if (missing)
+ (*missing)++;
+ if ((fd = fopen(file, "w")) == NULL) {
+ fprintf(stderr, _("FATAL ERROR: could not create %s: %s\n"), file,
+ strerror(errno));
+ exit_calcurse(EXIT_FAILURE);
}
+ file_close(fd, __FILE_POS__);
+ }
}
/*
@@ -966,138 +862,127 @@ io_check_file (char *file, int *missing)
* |___ apts
* |___ todo
*/
-int
-io_check_data_files (void)
+int io_check_data_files(void)
{
int missing, missing_keys;
missing = missing_keys = 0;
errno = 0;
- io_check_dir (path_dir, &missing);
- io_check_dir (path_notes, &missing);
- io_check_file (path_todo, &missing);
- io_check_file (path_apts, &missing);
- io_check_file (path_conf, &missing);
- io_check_file (path_keys, &missing_keys);
- if (missing_keys)
- {
- missing++;
- keys_dump_defaults (path_keys);
- }
+ io_check_dir(path_dir, &missing);
+ io_check_dir(path_notes, &missing);
+ io_check_file(path_todo, &missing);
+ io_check_file(path_apts, &missing);
+ io_check_file(path_conf, &missing);
+ io_check_file(path_keys, &missing_keys);
+ if (missing_keys) {
+ missing++;
+ keys_dump_defaults(path_keys);
+ }
return missing;
}
/* Draw the startup screen */
-void
-io_startup_screen (int no_data_file)
+void io_startup_screen(int no_data_file)
{
const char *enter = _("Press [ENTER] to continue");
if (no_data_file)
- status_mesg (_("Data files found. Data will be loaded now."), enter);
+ status_mesg(_("Data files found. Data will be loaded now."), enter);
else
- status_mesg (_("Welcome to Calcurse. Missing data files were created."),
- enter);
+ status_mesg(_("Welcome to Calcurse. Missing data files were created."),
+ enter);
- wgetch (win[STA].p);
+ wgetch(win[STA].p);
}
/* Export calcurse data. */
-void
-io_export_data (enum export_type type)
+void io_export_data(enum export_type type)
{
FILE *stream;
const char *success = _("The data were successfully exported");
const char *enter = _("Press [ENTER] to continue");
if (type < IO_EXPORT_ICAL || type >= IO_EXPORT_NBTYPES)
- EXIT (_("unknown export type"));
+ EXIT(_("unknown export type"));
stream = 0;
- switch (ui_mode)
- {
- case UI_CMDLINE:
- stream = stdout;
- break;
- case UI_CURSES:
- stream = get_export_stream (type);
- break;
- default:
- EXIT (_("wrong export mode"));
- /* NOTREACHED */
- }
+ switch (ui_mode) {
+ case UI_CMDLINE:
+ stream = stdout;
+ break;
+ case UI_CURSES:
+ stream = get_export_stream(type);
+ break;
+ default:
+ EXIT(_("wrong export mode"));
+ /* NOTREACHED */
+ }
if (stream == NULL)
return;
if (type == IO_EXPORT_ICAL)
- ical_export_data (stream);
+ ical_export_data(stream);
else if (type == IO_EXPORT_PCAL)
- pcal_export_data (stream);
+ pcal_export_data(stream);
- if (conf.system_dialogs && ui_mode == UI_CURSES)
- {
- status_mesg (success, enter);
- wgetch (win[STA].p);
- }
+ if (conf.system_dialogs && ui_mode == UI_CURSES) {
+ status_mesg(success, enter);
+ wgetch(win[STA].p);
+ }
}
/* Draws the export format selection bar */
-void
-io_export_bar (void)
+void io_export_bar(void)
{
int smlspc, spc;
smlspc = 2;
spc = 15;
- custom_apply_attr (win[STA].p, ATTR_HIGHEST);
- mvwprintw (win[STA].p, 0, 2, "Q");
- mvwprintw (win[STA].p, 1, 2, "I");
- mvwprintw (win[STA].p, 0, 2 + spc, "P");
- custom_remove_attr (win[STA].p, ATTR_HIGHEST);
+ custom_apply_attr(win[STA].p, ATTR_HIGHEST);
+ mvwprintw(win[STA].p, 0, 2, "Q");
+ mvwprintw(win[STA].p, 1, 2, "I");
+ mvwprintw(win[STA].p, 0, 2 + spc, "P");
+ custom_remove_attr(win[STA].p, ATTR_HIGHEST);
- mvwprintw (win[STA].p, 0, 2 + smlspc, _("Exit"));
- mvwprintw (win[STA].p, 1, 2 + smlspc, _("Ical"));
- mvwprintw (win[STA].p, 0, 2 + spc + smlspc, _("Pcal"));
+ mvwprintw(win[STA].p, 0, 2 + smlspc, _("Exit"));
+ mvwprintw(win[STA].p, 1, 2 + smlspc, _("Ical"));
+ mvwprintw(win[STA].p, 0, 2 + spc + smlspc, _("Pcal"));
- wnoutrefresh (win[STA].p);
- wmove (win[STA].p, 0, 0);
- wins_doupdate ();
+ wnoutrefresh(win[STA].p);
+ wmove(win[STA].p, 0, 0);
+ wins_doupdate();
}
-static FILE *
-get_import_stream (enum export_type type)
+static FILE *get_import_stream(enum export_type type)
{
FILE *stream;
char *stream_name;
const char *ask_fname = _("Enter the file name to import data from:");
const char *wrong_file =
- _("The file cannot be accessed, please enter another file name.");
+ _("The file cannot be accessed, please enter another file name.");
const char *press_enter = _("Press [ENTER] to continue.");
int cancel;
stream = NULL;
- stream_name = mem_malloc (BUFSIZ);
- memset (stream_name, 0, BUFSIZ);
- while (stream == NULL)
- {
- status_mesg (ask_fname, "");
- cancel = updatestring (win[STA].p, &stream_name, 0, 1);
- if (cancel)
- {
- mem_free (stream_name);
- return NULL;
- }
- stream = fopen (stream_name, "r");
- if (stream == NULL)
- {
- status_mesg (wrong_file, press_enter);
- wgetch (win[STA].p);
- }
+ stream_name = mem_malloc(BUFSIZ);
+ memset(stream_name, 0, BUFSIZ);
+ while (stream == NULL) {
+ status_mesg(ask_fname, "");
+ cancel = updatestring(win[STA].p, &stream_name, 0, 1);
+ if (cancel) {
+ mem_free(stream_name);
+ return NULL;
}
- mem_free (stream_name);
+ stream = fopen(stream_name, "r");
+ if (stream == NULL) {
+ status_mesg(wrong_file, press_enter);
+ wgetch(win[STA].p);
+ }
+ }
+ mem_free(stream_name);
return stream;
}
@@ -1108,8 +993,7 @@ get_import_stream (enum export_type type)
* A temporary log file is created in /tmp to store the import process report,
* and is cleared at the end.
*/
-void
-io_import_data (enum import_type type, const char *stream_name)
+void io_import_data(enum import_type type, const char *stream_name)
{
const char *proc_report = _("Import process report: %04d lines read ");
char stats_str[4][BUFSIZ];
@@ -1119,191 +1003,172 @@ io_import_data (enum import_type type, const char *stream_name)
unsigned events, apoints, todos, lines, skipped;
} stats;
- EXIT_IF (type < 0 || type >= IO_IMPORT_NBTYPES, _("unknown import type"));
- switch (ui_mode)
- {
- case UI_CMDLINE:
- stream = fopen (stream_name, "r");
- EXIT_IF (stream == NULL,
- _("FATAL ERROR: the input file cannot be accessed, "
- "Aborting..."));
- break;
- case UI_CURSES:
- stream = get_import_stream (type);
- break;
- default:
- EXIT (_("FATAL ERROR: wrong import mode"));
- /* NOTREACHED */
- }
+ EXIT_IF(type < 0 || type >= IO_IMPORT_NBTYPES, _("unknown import type"));
+ switch (ui_mode) {
+ case UI_CMDLINE:
+ stream = fopen(stream_name, "r");
+ EXIT_IF(stream == NULL,
+ _("FATAL ERROR: the input file cannot be accessed, "
+ "Aborting..."));
+ break;
+ case UI_CURSES:
+ stream = get_import_stream(type);
+ break;
+ default:
+ EXIT(_("FATAL ERROR: wrong import mode"));
+ /* NOTREACHED */
+ }
if (stream == NULL)
return;
- memset (&stats, 0, sizeof stats);
+ memset(&stats, 0, sizeof stats);
- log = io_log_init ();
- if (log == NULL)
- {
- if (stream != stdin)
- file_close (stream, __FILE_POS__);
- return;
- }
+ log = io_log_init();
+ if (log == NULL) {
+ if (stream != stdin)
+ file_close(stream, __FILE_POS__);
+ return;
+ }
if (type == IO_IMPORT_ICAL)
- ical_import_data (stream, log->fd, &stats.events, &stats.apoints,
- &stats.todos, &stats.lines, &stats.skipped);
+ ical_import_data(stream, log->fd, &stats.events, &stats.apoints,
+ &stats.todos, &stats.lines, &stats.skipped);
if (stream != stdin)
- file_close (stream, __FILE_POS__);
+ file_close(stream, __FILE_POS__);
- snprintf (stats_str[0], BUFSIZ,
- ngettext ("%d app", "%d apps", stats.apoints), stats.apoints);
- snprintf (stats_str[1], BUFSIZ,
- ngettext ("%d event", "%d events", stats.events), stats.events);
- snprintf (stats_str[2], BUFSIZ,
- ngettext ("%d todo", "%d todos", stats.todos), stats.todos);
- snprintf (stats_str[3], BUFSIZ, _("%d skipped"), stats.skipped);
+ snprintf(stats_str[0], BUFSIZ,
+ ngettext("%d app", "%d apps", stats.apoints), stats.apoints);
+ snprintf(stats_str[1], BUFSIZ,
+ ngettext("%d event", "%d events", stats.events), stats.events);
+ snprintf(stats_str[2], BUFSIZ,
+ ngettext("%d todo", "%d todos", stats.todos), stats.todos);
+ snprintf(stats_str[3], BUFSIZ, _("%d skipped"), stats.skipped);
/* Update the number of todo items. */
- todo_set_nb (todo_nb () + stats.todos);
-
- if (ui_mode == UI_CURSES && conf.system_dialogs)
- {
- char read[BUFSIZ], stat[BUFSIZ];
-
- snprintf (read, BUFSIZ, proc_report, stats.lines);
- snprintf (stat, BUFSIZ, "%s / %s / %s / %s (%s)", stats_str[0],
- stats_str[1], stats_str[2], stats_str[3],
- _("Press [ENTER] to continue"));
- status_mesg (read, stat);
- wgetch (win[STA].p);
- }
- else if (ui_mode == UI_CMDLINE)
- {
- printf (proc_report, stats.lines);
- printf ("\n%s / %s / %s / %s\n", stats_str[0], stats_str[1],
- stats_str[2], stats_str[3]);
- }
+ todo_set_nb(todo_nb() + stats.todos);
+
+ if (ui_mode == UI_CURSES && conf.system_dialogs) {
+ char read[BUFSIZ], stat[BUFSIZ];
+
+ snprintf(read, BUFSIZ, proc_report, stats.lines);
+ snprintf(stat, BUFSIZ, "%s / %s / %s / %s (%s)", stats_str[0],
+ stats_str[1], stats_str[2], stats_str[3],
+ _("Press [ENTER] to continue"));
+ status_mesg(read, stat);
+ wgetch(win[STA].p);
+ } else if (ui_mode == UI_CMDLINE) {
+ printf(proc_report, stats.lines);
+ printf("\n%s / %s / %s / %s\n", stats_str[0], stats_str[1],
+ stats_str[2], stats_str[3]);
+ }
/* User has the choice to look at the log file if some items could not be
imported.
- */
- file_close (log->fd, __FILE_POS__);
- if (stats.skipped > 0)
- {
- const char *view_log = _("Some items could not be imported, see log file ?");
-
- io_log_display (log, view_log, conf.pager);
- }
- io_log_free (log);
+ */
+ file_close(log->fd, __FILE_POS__);
+ if (stats.skipped > 0) {
+ const char *view_log =
+ _("Some items could not be imported, see log file ?");
+
+ io_log_display(log, view_log, conf.pager);
+ }
+ io_log_free(log);
}
-struct io_file *
-io_log_init (void)
+struct io_file *io_log_init(void)
{
char logprefix[BUFSIZ];
char *logname;
struct io_file *log;
- snprintf (logprefix, BUFSIZ, "%s/calcurse_log.", get_tempdir ());
- logname = new_tempfile (logprefix, TMPEXTSIZ);
- RETVAL_IF (logname == NULL, 0,
- _("Warning: could not create temporary log file, Aborting..."));
- log = mem_malloc (sizeof (struct io_file));
- RETVAL_IF (log == NULL, 0,
- _("Warning: could not open temporary log file, Aborting..."));
- snprintf (log->name, sizeof (log->name), "%s%s", logprefix, logname);
- mem_free (logname);
- log->fd = fopen (log->name, "w");
- if (log->fd == NULL)
- {
- ERROR_MSG (_("Warning: could not open temporary log file, Aborting..."));
- mem_free (log);
- return 0;
- }
+ snprintf(logprefix, BUFSIZ, "%s/calcurse_log.", get_tempdir());
+ logname = new_tempfile(logprefix, TMPEXTSIZ);
+ RETVAL_IF(logname == NULL, 0,
+ _("Warning: could not create temporary log file, Aborting..."));
+ log = mem_malloc(sizeof(struct io_file));
+ RETVAL_IF(log == NULL, 0,
+ _("Warning: could not open temporary log file, Aborting..."));
+ snprintf(log->name, sizeof(log->name), "%s%s", logprefix, logname);
+ mem_free(logname);
+ log->fd = fopen(log->name, "w");
+ if (log->fd == NULL) {
+ ERROR_MSG(_("Warning: could not open temporary log file, Aborting..."));
+ mem_free(log);
+ return 0;
+ }
return log;
}
-void
-io_log_print (struct io_file *log, int line, const char *msg)
+void io_log_print(struct io_file *log, int line, const char *msg)
{
if (log && log->fd)
- fprintf (log->fd, "line %d: %s\n", line, msg);
+ fprintf(log->fd, "line %d: %s\n", line, msg);
}
-void
-io_log_display (struct io_file *log, const char *msg, const char *pager)
+void io_log_display(struct io_file *log, const char *msg, const char *pager)
{
int ans;
- RETURN_IF (log == NULL, _("No log file to display!"));
- if (ui_mode == UI_CMDLINE)
- {
- printf ("\n%s [y/n] ", msg);
- ans = fgetc (stdin);
- if (ans == 'y')
- {
- const char *arg[] = { pager, log->name, NULL };
- int pid;
-
- if ((pid = fork_exec (NULL, NULL, pager, arg)))
- child_wait (NULL, NULL, pid);
- }
- }
- else
- {
- if (status_ask_bool (msg) == 1)
- wins_launch_external (log->name, pager);
- wins_erase_status_bar ();
+ RETURN_IF(log == NULL, _("No log file to display!"));
+ if (ui_mode == UI_CMDLINE) {
+ printf("\n%s [y/n] ", msg);
+ ans = fgetc(stdin);
+ if (ans == 'y') {
+ const char *arg[] = { pager, log->name, NULL };
+ int pid;
+
+ if ((pid = fork_exec(NULL, NULL, pager, arg)))
+ child_wait(NULL, NULL, pid);
}
+ } else {
+ if (status_ask_bool(msg) == 1)
+ wins_launch_external(log->name, pager);
+ wins_erase_status_bar();
+ }
}
-void
-io_log_free (struct io_file *log)
+void io_log_free(struct io_file *log)
{
if (!log)
return;
- EXIT_IF (unlink (log->name) != 0,
- _("Warning: could not erase temporary log file %s, Aborting..."),
- log->name);
- mem_free (log);
+ EXIT_IF(unlink(log->name) != 0,
+ _("Warning: could not erase temporary log file %s, Aborting..."),
+ log->name);
+ mem_free(log);
}
static pthread_t io_t_psave;
/* Thread used to periodically save data. */
-static void *
-io_psave_thread (void *arg)
+static void *io_psave_thread(void *arg)
{
int delay;
delay = conf.periodic_save;
- EXIT_IF (delay < 0, _("Invalid delay"));
+ EXIT_IF(delay < 0, _("Invalid delay"));
- for (;;)
- {
- sleep (delay * MININSEC);
- io_save_cal (IO_SAVE_DISPLAY_MARK);
- }
+ for (;;) {
+ sleep(delay * MININSEC);
+ io_save_cal(IO_SAVE_DISPLAY_MARK);
+ }
}
/* Launch the thread which handles periodic saves. */
-void
-io_start_psave_thread (void)
+void io_start_psave_thread(void)
{
- pthread_create (&io_t_psave, NULL, io_psave_thread, NULL);
+ pthread_create(&io_t_psave, NULL, io_psave_thread, NULL);
}
/* Stop periodic data saves. */
-void
-io_stop_psave_thread (void)
+void io_stop_psave_thread(void)
{
- if (io_t_psave)
- {
- pthread_cancel (io_t_psave);
- pthread_join (io_t_psave, NULL);
- }
+ if (io_t_psave) {
+ pthread_cancel(io_t_psave);
+ pthread_join(io_t_psave, NULL);
+ }
}
/*
@@ -1317,49 +1182,40 @@ io_stop_psave_thread (void)
* Note: When creating the lock file, the interactive mode is not initialized
* yet.
*/
-void
-io_set_lock (void)
+void io_set_lock(void)
{
- FILE *lock = fopen (path_cpid, "r");
+ FILE *lock = fopen(path_cpid, "r");
int pid;
- if (lock != NULL)
- {
- /* If there is a lock file, check whether the process exists. */
- if (fscanf(lock, "%d", &pid) == 1)
- {
- fclose(lock);
- if (kill(pid, 0) != 0 && errno == ESRCH)
- lock = NULL;
- }
- else
- fclose(lock);
- }
-
- if (lock != NULL)
- {
- fprintf (stderr,
- _("\nWARNING: it seems that another calcurse instance is "
- "already running.\n"
- "If this is not the case, please remove the following "
- "lock file: \n\"%s\"\n"
- "and restart calcurse.\n"), path_cpid);
- exit (EXIT_FAILURE);
- }
- else
- {
- if (!io_dump_pid (path_cpid))
- EXIT (_("FATAL ERROR: could not create %s: %s\n"),
- path_cpid, strerror (errno));
- }
+ if (lock != NULL) {
+ /* If there is a lock file, check whether the process exists. */
+ if (fscanf(lock, "%d", &pid) == 1) {
+ fclose(lock);
+ if (kill(pid, 0) != 0 && errno == ESRCH)
+ lock = NULL;
+ } else
+ fclose(lock);
+ }
+
+ if (lock != NULL) {
+ fprintf(stderr,
+ _("\nWARNING: it seems that another calcurse instance is "
+ "already running.\n"
+ "If this is not the case, please remove the following "
+ "lock file: \n\"%s\"\n" "and restart calcurse.\n"), path_cpid);
+ exit(EXIT_FAILURE);
+ } else {
+ if (!io_dump_pid(path_cpid))
+ EXIT(_("FATAL ERROR: could not create %s: %s\n"),
+ path_cpid, strerror(errno));
+ }
}
/*
* Create a new file and write the process pid inside (used to create a simple
* lock for example). Overwrite already existing files.
*/
-unsigned
-io_dump_pid (char *file)
+unsigned io_dump_pid(char *file)
{
pid_t pid;
FILE *fp;
@@ -1367,10 +1223,9 @@ io_dump_pid (char *file)
if (!file)
return 0;
- pid = getpid ();
- if (!(fp = fopen (file, "w"))
- || fprintf (fp, "%ld\n", (long)pid) < 0
- || fclose (fp) != 0)
+ pid = getpid();
+ if (!(fp = fopen(file, "w"))
+ || fprintf(fp, "%ld\n", (long)pid) < 0 || fclose(fp) != 0)
return 0;
return 1;
@@ -1381,8 +1236,7 @@ io_dump_pid (char *file)
* io_dump_pid ().
* If no file was found, return 0.
*/
-unsigned
-io_get_pid (char *file)
+unsigned io_get_pid(char *file)
{
FILE *fp;
unsigned pid;
@@ -1390,13 +1244,13 @@ io_get_pid (char *file)
if (!file)
return 0;
- if ((fp = fopen (file, "r")) == NULL)
+ if ((fp = fopen(file, "r")) == NULL)
return 0;
- if (fscanf (fp, "%u", &pid) != 1)
+ if (fscanf(fp, "%u", &pid) != 1)
return 0;
- fclose (fp);
+ fclose(fp);
return pid;
}
@@ -1404,24 +1258,19 @@ io_get_pid (char *file)
/*
* Check whether a file is empty.
*/
-int
-io_file_is_empty (char *file)
+int io_file_is_empty(char *file)
{
FILE *fp;
- if (file && (fp = fopen (file, "r")))
- {
- if ((fgetc (fp) == '\n' && fgetc (fp) == EOF) || feof (fp))
- {
- fclose (fp);
- return 1;
- }
- else
- {
- fclose (fp);
- return 0;
- }
+ if (file && (fp = fopen(file, "r"))) {
+ if ((fgetc(fp) == '\n' && fgetc(fp) == EOF) || feof(fp)) {
+ fclose(fp);
+ return 1;
+ } else {
+ fclose(fp);
+ return 0;
}
+ }
return -1;
}
@@ -1429,32 +1278,28 @@ io_file_is_empty (char *file)
/*
* Copy an existing file to a new location.
*/
-int
-io_file_cp (const char *src, const char *dst)
+int io_file_cp(const char *src, const char *dst)
{
FILE *fp_src, *fp_dst;
char *buffer[BUFSIZ];
unsigned int bytes_read;
- if (!(fp_src = fopen (src, "rb")))
+ if (!(fp_src = fopen(src, "rb")))
return 0;
- if (!(fp_dst = fopen (dst, "wb")))
+ if (!(fp_dst = fopen(dst, "wb")))
return 0;
- while (!feof (fp_src))
- {
- bytes_read = fread (buffer, 1, BUFSIZ, fp_src);
- if (bytes_read > 0)
- {
- if (fwrite (buffer, 1, bytes_read, fp_dst) != bytes_read)
- return 0;
- }
- else
+ while (!feof(fp_src)) {
+ bytes_read = fread(buffer, 1, BUFSIZ, fp_src);
+ if (bytes_read > 0) {
+ if (fwrite(buffer, 1, bytes_read, fp_dst) != bytes_read)
return 0;
- }
+ } else
+ return 0;
+ }
- fclose (fp_dst);
- fclose (fp_src);
+ fclose(fp_dst);
+ fclose(fp_src);
return 1;
}
diff --git a/src/keys.c b/src/keys.c
index 4bf41c9..23ee61f 100644
--- a/src/keys.c
+++ b/src/keys.c
@@ -39,7 +39,7 @@
#include "calcurse.h"
-#define MAXKEYVAL KEY_MAX /* ncurses defines KEY_MAX as maximum key value */
+#define MAXKEYVAL KEY_MAX /* ncurses defines KEY_MAX as maximum key value */
struct keydef_s {
const char *label;
@@ -94,89 +94,80 @@ static struct keydef_s keydef[NBKEYS] = {
{"lower-priority", "-"},
};
-static void
-dump_intro (FILE *fd)
+static void dump_intro(FILE * fd)
{
const char *intro =
- _("#\n"
- "# Calcurse keys configuration file\n#\n"
- "# This file sets the keybindings used by Calcurse.\n"
- "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n"
- "# To assign a keybinding to an action, this file must contain a line\n"
- "# with the following syntax:\n#\n"
- "# ACTION KEY1 KEY2 ... KEYn\n#\n"
- "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n"
- "# will be pressed.\n"
- "#\n"
- "# To define bindings which use the CONTROL key, prefix the key with "
- "'C-'.\n"
- "# The escape, space bar and horizontal Tab key can be specified using\n"
- "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n"
- "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n"
- "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n"
- "# keywords."
- "\n#\n"
- "# A description of what each ACTION keyword is used for is available\n"
- "# from calcurse online configuration menu.\n");
-
- fprintf (fd, "%s\n", intro);
+ _("#\n"
+ "# Calcurse keys configuration file\n#\n"
+ "# This file sets the keybindings used by Calcurse.\n"
+ "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n"
+ "# To assign a keybinding to an action, this file must contain a line\n"
+ "# with the following syntax:\n#\n"
+ "# ACTION KEY1 KEY2 ... KEYn\n#\n"
+ "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n"
+ "# will be pressed.\n"
+ "#\n"
+ "# To define bindings which use the CONTROL key, prefix the key with "
+ "'C-'.\n"
+ "# The escape, space bar and horizontal Tab key can be specified using\n"
+ "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n"
+ "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n"
+ "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n"
+ "# keywords."
+ "\n#\n"
+ "# A description of what each ACTION keyword is used for is available\n"
+ "# from calcurse online configuration menu.\n");
+
+ fprintf(fd, "%s\n", intro);
}
-void
-keys_init (void)
+void keys_init(void)
{
int i;
for (i = 0; i < MAXKEYVAL; i++)
actions[i] = KEY_UNDEF;
for (i = 0; i < NBKEYS; i++)
- LLIST_INIT (&keys[i]);
+ LLIST_INIT(&keys[i]);
}
-static void
-key_free (char *s)
+static void key_free(char *s)
{
- mem_free (s);
+ mem_free(s);
}
-void
-keys_free (void)
+void keys_free(void)
{
int i;
- for (i = 0; i < NBKEYS; i++)
- {
- LLIST_FREE_INNER (&keys[i], key_free);
- LLIST_FREE (&keys[i]);
- }
+ for (i = 0; i < NBKEYS; i++) {
+ LLIST_FREE_INNER(&keys[i], key_free);
+ LLIST_FREE(&keys[i]);
+ }
}
-void
-keys_dump_defaults (char *file)
+void keys_dump_defaults(char *file)
{
FILE *fd;
int i;
- fd = fopen (file, "w");
- EXIT_IF (fd == NULL, _("FATAL ERROR: could not create default keys file."));
+ fd = fopen(file, "w");
+ EXIT_IF(fd == NULL, _("FATAL ERROR: could not create default keys file."));
- dump_intro (fd);
+ dump_intro(fd);
for (i = 0; i < NBKEYS; i++)
- fprintf (fd, "%s %s\n", keydef[i].label, keydef[i].binding);
- file_close (fd, __FILE_POS__);
+ fprintf(fd, "%s %s\n", keydef[i].label, keydef[i].binding);
+ file_close(fd, __FILE_POS__);
}
-const char *
-keys_get_label (enum key key)
+const char *keys_get_label(enum key key)
{
- EXIT_IF (key < 0 || key > NBKEYS,
- _("FATAL ERROR: key value out of bounds"));
+ EXIT_IF(key < 0 || key > NBKEYS, _("FATAL ERROR: key value out of bounds"));
return keydef[key].label;
}
-enum key
-keys_get_action (int pressed)
+enum key keys_get_action(int pressed)
{
if (pressed < 0 || pressed > MAXKEYVAL)
return -1;
@@ -184,61 +175,52 @@ keys_get_action (int pressed)
return actions[pressed];
}
-enum key
-keys_getch (WINDOW *win, int *count)
+enum key keys_getch(WINDOW * win, int *count)
{
int ch = '0';
- if (count)
- {
- *count = 0;
- do
- {
- *count = *count * 10 + ch - '0';
- ch = wgetch (win);
- }
- while ((ch == '0' && *count > 0) || (ch >= '1' && ch <= '9'));
-
- if (*count == 0)
- *count = 1;
- }
- else
- ch = wgetch (win);
-
- switch (ch)
- {
- case KEY_RESIZE:
- return KEY_RESIZE;
- default:
- return keys_get_action (ch);
+ if (count) {
+ *count = 0;
+ do {
+ *count = *count * 10 + ch - '0';
+ ch = wgetch(win);
}
+ while ((ch == '0' && *count > 0) || (ch >= '1' && ch <= '9'));
+
+ if (*count == 0)
+ *count = 1;
+ } else
+ ch = wgetch(win);
+
+ switch (ch) {
+ case KEY_RESIZE:
+ return KEY_RESIZE;
+ default:
+ return keys_get_action(ch);
+ }
}
-static void
-add_key_str (enum key action, int key)
+static void add_key_str(enum key action, int key)
{
if (action < 0 || action > NBKEYS)
return;
- LLIST_ADD (&keys[action], mem_strdup (keys_int2str (key)));
+ LLIST_ADD(&keys[action], mem_strdup(keys_int2str(key)));
}
-int
-keys_assign_binding (int key, enum key action)
+int keys_assign_binding(int key, enum key action)
{
if (key < 0 || key > MAXKEYVAL || actions[key] != KEY_UNDEF)
return 1;
- else
- {
- actions[key] = action;
- add_key_str (action, key);
- }
+ else {
+ actions[key] = action;
+ add_key_str(action, key);
+ }
return 0;
}
-static void
-del_key_str (enum key action, int key)
+static void del_key_str(enum key action, int key)
{
llist_item_t *i;
char oldstr[BUFSIZ];
@@ -246,30 +228,25 @@ del_key_str (enum key action, int key)
if (action < 0 || action > NBKEYS)
return;
- strncpy (oldstr, keys_int2str (key), BUFSIZ);
+ strncpy(oldstr, keys_int2str(key), BUFSIZ);
- LLIST_FOREACH (&keys[action], i)
- {
- if (strcmp (LLIST_GET_DATA (i), oldstr) == 0)
- {
- LLIST_REMOVE (&keys[action], i);
- return;
- }
+ LLIST_FOREACH(&keys[action], i) {
+ if (strcmp(LLIST_GET_DATA(i), oldstr) == 0) {
+ LLIST_REMOVE(&keys[action], i);
+ return;
}
+ }
}
-void
-keys_remove_binding (int key, enum key action)
+void keys_remove_binding(int key, enum key action)
{
- if (key >= 0 && key <= MAXKEYVAL)
- {
- actions[key] = KEY_UNDEF;
- del_key_str (action, key);
- }
+ if (key >= 0 && key <= MAXKEYVAL) {
+ actions[key] = KEY_UNDEF;
+ del_key_str(action, key);
+ }
}
-int
-keys_str2int (const char *key)
+int keys_str2int(const char *key)
{
const char CONTROL_KEY[] = "C-";
const char TAB_KEY[] = "TAB";
@@ -284,144 +261,132 @@ keys_str2int (const char *key)
if (!key)
return -1;
- if (strlen (key) == 1)
+ if (strlen(key) == 1)
return (int)key[0];
- else
- {
- if (key[0] == '^')
- return CTRL ((int)key[1]);
- else if (!strncmp (key, CONTROL_KEY, sizeof (CONTROL_KEY) - 1))
- return CTRL ((int)key[sizeof (CONTROL_KEY) - 1]);
- else if (!strcmp (key, TAB_KEY))
- return TAB;
- else if (!strcmp (key, ESCAPE_KEY))
- return ESCAPE;
- else if (!strcmp (key, SPACE_KEY))
- return SPACE;
- else if (!strcmp (key, CURSES_KEY_UP))
- return KEY_UP;
- else if (!strcmp (key, CURSES_KEY_DOWN))
- return KEY_DOWN;
- else if (!strcmp (key, CURSES_KEY_LEFT))
- return KEY_LEFT;
- else if (!strcmp (key, CURSES_KEY_RIGHT))
- return KEY_RIGHT;
- else if (!strcmp (key, CURSES_KEY_HOME))
- return KEY_HOME;
- else if (!strcmp (key, CURSES_KEY_END))
- return KEY_END;
- else
- return -1;
- }
+ else {
+ if (key[0] == '^')
+ return CTRL((int)key[1]);
+ else if (!strncmp(key, CONTROL_KEY, sizeof(CONTROL_KEY) - 1))
+ return CTRL((int)key[sizeof(CONTROL_KEY) - 1]);
+ else if (!strcmp(key, TAB_KEY))
+ return TAB;
+ else if (!strcmp(key, ESCAPE_KEY))
+ return ESCAPE;
+ else if (!strcmp(key, SPACE_KEY))
+ return SPACE;
+ else if (!strcmp(key, CURSES_KEY_UP))
+ return KEY_UP;
+ else if (!strcmp(key, CURSES_KEY_DOWN))
+ return KEY_DOWN;
+ else if (!strcmp(key, CURSES_KEY_LEFT))
+ return KEY_LEFT;
+ else if (!strcmp(key, CURSES_KEY_RIGHT))
+ return KEY_RIGHT;
+ else if (!strcmp(key, CURSES_KEY_HOME))
+ return KEY_HOME;
+ else if (!strcmp(key, CURSES_KEY_END))
+ return KEY_END;
+ else
+ return -1;
+ }
}
-const char *
-keys_int2str (int key)
+const char *keys_int2str(int key)
{
- switch (key)
- {
- case TAB:
- return "TAB";
- case SPACE:
- return "SPC";
- case ESCAPE:
- return "ESC";
- case KEY_UP:
- return "UP";
- case KEY_DOWN:
- return "DWN";
- case KEY_LEFT:
- return "LFT";
- case KEY_RIGHT:
- return "RGT";
- case KEY_HOME:
- return "KEY_HOME";
- case KEY_END:
- return "KEY_END";
- default:
- return (char *)keyname (key);
- }
+ switch (key) {
+ case TAB:
+ return "TAB";
+ case SPACE:
+ return "SPC";
+ case ESCAPE:
+ return "ESC";
+ case KEY_UP:
+ return "UP";
+ case KEY_DOWN:
+ return "DWN";
+ case KEY_LEFT:
+ return "LFT";
+ case KEY_RIGHT:
+ return "RGT";
+ case KEY_HOME:
+ return "KEY_HOME";
+ case KEY_END:
+ return "KEY_END";
+ default:
+ return (char *)keyname(key);
+ }
}
-int
-keys_action_count_keys (enum key action)
+int keys_action_count_keys(enum key action)
{
llist_item_t *i;
int n = 0;
- LLIST_FOREACH (&keys[action], i)
- n++;
+ LLIST_FOREACH(&keys[action], i)
+ n++;
return n;
}
-const char *
-keys_action_firstkey (enum key action)
+const char *keys_action_firstkey(enum key action)
{
- const char *s = LLIST_GET_DATA (LLIST_FIRST (&keys[action]));
+ const char *s = LLIST_GET_DATA(LLIST_FIRST(&keys[action]));
return (s != NULL) ? s : "XXX";
}
-const char *
-keys_action_nkey (enum key action, int keynum)
+const char *keys_action_nkey(enum key action, int keynum)
{
- return LLIST_GET_DATA (LLIST_NTH (&keys[action], keynum));
+ return LLIST_GET_DATA(LLIST_NTH(&keys[action], keynum));
}
-char *
-keys_action_allkeys (enum key action)
+char *keys_action_allkeys(enum key action)
{
llist_item_t *i;
static char keystr[BUFSIZ];
const char *CHAR_SPACE = " ";
- if (!LLIST_FIRST (&keys[action]))
+ if (!LLIST_FIRST(&keys[action]))
return NULL;
keystr[0] = '\0';
- LLIST_FOREACH (&keys[action], i)
- {
- const int MAXLEN = sizeof (keystr) - 1 - strlen (keystr);
- strncat (keystr, LLIST_GET_DATA (i), MAXLEN - 1);
- strncat (keystr, CHAR_SPACE, 1);
- }
+ LLIST_FOREACH(&keys[action], i) {
+ const int MAXLEN = sizeof(keystr) - 1 - strlen(keystr);
+ strncat(keystr, LLIST_GET_DATA(i), MAXLEN - 1);
+ strncat(keystr, CHAR_SPACE, 1);
+ }
return keystr;
}
/* Need this to display keys properly inside status bar. */
-static char *
-keys_format_label (char *key, int keylen)
+static char *keys_format_label(char *key, int keylen)
{
static char fmtkey[BUFSIZ];
- const int len = strlen (key);
+ const int len = strlen(key);
const char dot = '.';
int i;
if (keylen > BUFSIZ)
return NULL;
- memset (fmtkey, 0, sizeof(fmtkey));
+ memset(fmtkey, 0, sizeof(fmtkey));
if (len == 0)
- strncpy (fmtkey, "?", sizeof (fmtkey));
- else if (len <= keylen)
- {
- for (i = 0; i < keylen - len; i++)
- fmtkey[i] = ' ';
- strncat (fmtkey, key, keylen);
- }
- else
- {
- for (i = 0; i < keylen - 1; i++)
- fmtkey[i] = key[i];
- fmtkey[keylen - 1] = dot;
- }
+ strncpy(fmtkey, "?", sizeof(fmtkey));
+ else if (len <= keylen) {
+ for (i = 0; i < keylen - len; i++)
+ fmtkey[i] = ' ';
+ strncat(fmtkey, key, keylen);
+ } else {
+ for (i = 0; i < keylen - 1; i++)
+ fmtkey[i] = key[i];
+ fmtkey[keylen - 1] = dot;
+ }
return fmtkey;
}
void
-keys_display_bindings_bar (WINDOW *win, struct binding *bindings[], int count,
- int page_base, int page_size, struct binding *more)
+keys_display_bindings_bar(WINDOW * win, struct binding *bindings[], int count,
+ int page_base, int page_size, struct binding *more)
{
/* Padding between two key bindings. */
const int padding = (col * 2) / page_size - (KEYS_KEYLEN + KEYS_LABELEN + 1);
@@ -430,203 +395,171 @@ keys_display_bindings_bar (WINDOW *win, struct binding *bindings[], int count,
int i;
- wins_erase_status_bar ();
- for (i = 0; i < page_size && page_base + i < count; i++)
- {
- /* Location of key and label. */
- const int key_pos_x = (i / 2) * cmd_len;
- const int key_pos_y = i % 2;
- const int label_pos_x = key_pos_x + KEYS_KEYLEN + 1;
- const int label_pos_y = key_pos_y;
-
- struct binding *binding;
- char key[KEYS_KEYLEN + 1], *fmtkey;
-
- if (!more || i < page_size - 1 || page_base + i == count - 1)
- binding = bindings[page_base + i];
- else
- binding = more;
-
- strncpy (key, keys_action_firstkey (binding->action), KEYS_KEYLEN);
- key[KEYS_KEYLEN] = '\0';
- fmtkey = keys_format_label (key, KEYS_KEYLEN);
-
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, key_pos_y, key_pos_x, fmtkey);
- custom_remove_attr (win, ATTR_HIGHEST);
- mvwprintw (win, label_pos_y, label_pos_x, binding->label);
- }
- wnoutrefresh (win);
+ wins_erase_status_bar();
+ for (i = 0; i < page_size && page_base + i < count; i++) {
+ /* Location of key and label. */
+ const int key_pos_x = (i / 2) * cmd_len;
+ const int key_pos_y = i % 2;
+ const int label_pos_x = key_pos_x + KEYS_KEYLEN + 1;
+ const int label_pos_y = key_pos_y;
+
+ struct binding *binding;
+ char key[KEYS_KEYLEN + 1], *fmtkey;
+
+ if (!more || i < page_size - 1 || page_base + i == count - 1)
+ binding = bindings[page_base + i];
+ else
+ binding = more;
+
+ strncpy(key, keys_action_firstkey(binding->action), KEYS_KEYLEN);
+ key[KEYS_KEYLEN] = '\0';
+ fmtkey = keys_format_label(key, KEYS_KEYLEN);
+
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, key_pos_y, key_pos_x, fmtkey);
+ custom_remove_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, label_pos_y, label_pos_x, binding->label);
+ }
+ wnoutrefresh(win);
}
/*
* Display information about the given key.
* (could not add the keys descriptions to keydef variable, because of i18n).
*/
-void
-keys_popup_info (enum key key)
+void keys_popup_info(enum key key)
{
char *info[NBKEYS];
WINDOW *infowin;
- info[KEY_GENERIC_CANCEL] =
- _("Cancel the ongoing action.");
- info[KEY_GENERIC_SELECT] =
- _("Select the highlighted item.");
+ info[KEY_GENERIC_CANCEL] = _("Cancel the ongoing action.");
+ info[KEY_GENERIC_SELECT] = _("Select the highlighted item.");
info[KEY_GENERIC_CREDITS] =
- _("Print general information about calcurse's authors, license, etc.");
+ _("Print general information about calcurse's authors, license, etc.");
info[KEY_GENERIC_HELP] =
- _("Display hints whenever some help screens are available.");
- info[KEY_GENERIC_QUIT] =
- _("Exit from the current menu, or quit calcurse.");
- info[KEY_GENERIC_SAVE] =
- _("Save calcurse data.");
- info[KEY_GENERIC_CUT] =
- _("Help for `generic-cut`.");
- info[KEY_GENERIC_PASTE] =
- _("Help for `generic-paste`.");
+ _("Display hints whenever some help screens are available.");
+ info[KEY_GENERIC_QUIT] = _("Exit from the current menu, or quit calcurse.");
+ info[KEY_GENERIC_SAVE] = _("Save calcurse data.");
+ info[KEY_GENERIC_CUT] = _("Help for `generic-cut`.");
+ info[KEY_GENERIC_PASTE] = _("Help for `generic-paste`.");
info[KEY_GENERIC_CHANGE_VIEW] =
- _("Select next panel in calcurse main screen.");
- info[KEY_GENERIC_IMPORT] =
- _("Import data from an external file.");
- info[KEY_GENERIC_EXPORT] =
- _("Export data to a new file format.");
- info[KEY_GENERIC_GOTO] =
- _("Select the day to go to.");
+ _("Select next panel in calcurse main screen.");
+ info[KEY_GENERIC_IMPORT] = _("Import data from an external file.");
+ info[KEY_GENERIC_EXPORT] = _("Export data to a new file format.");
+ info[KEY_GENERIC_GOTO] = _("Select the day to go to.");
info[KEY_GENERIC_OTHER_CMD] =
- _("Show next possible actions inside status bar.");
- info[KEY_GENERIC_CONFIG_MENU] =
- _("Enter the configuration menu.");
- info[KEY_GENERIC_REDRAW] =
- _("Redraw calcurse's screen.");
+ _("Show next possible actions inside status bar.");
+ info[KEY_GENERIC_CONFIG_MENU] = _("Enter the configuration menu.");
+ info[KEY_GENERIC_REDRAW] = _("Redraw calcurse's screen.");
info[KEY_GENERIC_ADD_APPT] =
- _("Add an appointment, whichever panel is currently selected.");
+ _("Add an appointment, whichever panel is currently selected.");
info[KEY_GENERIC_ADD_TODO] =
- _("Add a todo item, whichever panel is currently selected.");
+ _("Add a todo item, whichever panel is currently selected.");
info[KEY_GENERIC_NEXT_DAY] =
- _("Move to next day in calendar, whichever panel is currently selected.");
+ _("Move to next day in calendar, whichever panel is currently selected.");
info[KEY_GENERIC_PREV_DAY] =
- _("Move to previous day in calendar, whichever panel is currently "
- "selected.");
+ _("Move to previous day in calendar, whichever panel is currently "
+ "selected.");
info[KEY_GENERIC_NEXT_WEEK] =
- _("Move to next week in calendar, whichever panel is currently selected.");
+ _
+ ("Move to next week in calendar, whichever panel is currently selected.");
info[KEY_GENERIC_PREV_WEEK] =
- _("Move to previous week in calendar, whichever panel is currently "
- "selected");
+ _("Move to previous week in calendar, whichever panel is currently "
+ "selected");
info[KEY_GENERIC_SCROLL_DOWN] =
- _("Scroll window down (e.g. when displaying text inside a popup window).");
+ _
+ ("Scroll window down (e.g. when displaying text inside a popup window).");
info[KEY_GENERIC_SCROLL_UP] =
- _("Scroll window up (e.g. when displaying text inside a popup window).");
- info[KEY_GENERIC_GOTO_TODAY] =
- _("Go to today, whichever panel is selected.");
- info[KEY_MOVE_RIGHT] =
- _("Move to the right.");
- info[KEY_MOVE_LEFT] =
- _("Move to the left.");
- info[KEY_MOVE_DOWN] =
- _("Move down.");
- info[KEY_MOVE_UP] =
- _("Move up.");
+ _("Scroll window up (e.g. when displaying text inside a popup window).");
+ info[KEY_GENERIC_GOTO_TODAY] = _("Go to today, whichever panel is selected.");
+ info[KEY_MOVE_RIGHT] = _("Move to the right.");
+ info[KEY_MOVE_LEFT] = _("Move to the left.");
+ info[KEY_MOVE_DOWN] = _("Move down.");
+ info[KEY_MOVE_UP] = _("Move up.");
info[KEY_START_OF_WEEK] =
- _("Select the first day of the current week when inside the calendar "
- "panel.");
+ _("Select the first day of the current week when inside the calendar "
+ "panel.");
info[KEY_END_OF_WEEK] =
- _("Select the last day of the current week when inside the calendar "
- "panel.");
- info[KEY_ADD_ITEM] =
- _("Add an item to the currently selected panel.");
- info[KEY_DEL_ITEM] =
- _("Delete the currently selected item.");
- info[KEY_EDIT_ITEM] =
- _("Edit the currently seleted item.");
+ _("Select the last day of the current week when inside the calendar "
+ "panel.");
+ info[KEY_ADD_ITEM] = _("Add an item to the currently selected panel.");
+ info[KEY_DEL_ITEM] = _("Delete the currently selected item.");
+ info[KEY_EDIT_ITEM] = _("Edit the currently seleted item.");
info[KEY_VIEW_ITEM] =
- _("Display the currently selected item inside a popup window.");
- info[KEY_FLAG_ITEM] =
- _("Flag the currently selected item as important.");
- info[KEY_REPEAT_ITEM] =
- _("Repeat an item");
+ _("Display the currently selected item inside a popup window.");
+ info[KEY_FLAG_ITEM] = _("Flag the currently selected item as important.");
+ info[KEY_REPEAT_ITEM] = _("Repeat an item");
info[KEY_PIPE_ITEM] =
- _("Pipe the currently selected item to an external program.");
+ _("Pipe the currently selected item to an external program.");
info[KEY_EDIT_NOTE] =
- _("Attach (or edit if one exists) a note to the currently selected item");
+ _("Attach (or edit if one exists) a note to the currently selected item");
info[KEY_VIEW_NOTE] =
- _("View the note attached to the currently selected item.");
- info[KEY_RAISE_PRIORITY] =
- _("Raise a task priority inside the todo panel.");
- info[KEY_LOWER_PRIORITY] =
- _("Lower a task priority inside the todo panel.");
+ _("View the note attached to the currently selected item.");
+ info[KEY_RAISE_PRIORITY] = _("Raise a task priority inside the todo panel.");
+ info[KEY_LOWER_PRIORITY] = _("Lower a task priority inside the todo panel.");
if (key < 0 || key > NBKEYS)
return;
#define WINROW 10
#define WINCOL (col - 4)
- infowin = popup (WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2,
- keydef[key].label, info[key], 1);
- keys_getch (infowin, NULL);
- delwin (infowin);
+ infowin = popup(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2,
+ keydef[key].label, info[key], 1);
+ keys_getch(infowin, NULL);
+ delwin(infowin);
#undef WINROW
#undef WINCOL
}
-void
-keys_save_bindings (FILE *fd)
+void keys_save_bindings(FILE * fd)
{
int i;
- EXIT_IF (fd == NULL, _("FATAL ERROR: null file pointer."));
- dump_intro (fd);
+ EXIT_IF(fd == NULL, _("FATAL ERROR: null file pointer."));
+ dump_intro(fd);
for (i = 0; i < NBKEYS; i++)
- fprintf (fd, "%s %s\n", keydef[i].label, keys_action_allkeys (i));
+ fprintf(fd, "%s %s\n", keydef[i].label, keys_action_allkeys(i));
}
-int
-keys_check_missing_bindings (void)
+int keys_check_missing_bindings(void)
{
int i;
- for (i = 0; i < NBKEYS; i++)
- {
- if (!LLIST_FIRST (&keys[i]))
- return 1;
- }
+ for (i = 0; i < NBKEYS; i++) {
+ if (!LLIST_FIRST(&keys[i]))
+ return 1;
+ }
return 0;
}
-void
-keys_fill_missing (void)
+void keys_fill_missing(void)
{
int i;
- for (i = 0; i < NBKEYS; i++)
- {
- if (!LLIST_FIRST (&keys[i]))
- {
- char *p, tmpbuf[BUFSIZ];
-
- strncpy (tmpbuf, keydef[i].binding, BUFSIZ);
- p = tmpbuf;
- for (;;)
- {
- char key_ch[BUFSIZ];
-
- while (*p == ' ')
- p++;
- if (sscanf (p, "%s", key_ch) == 1)
- {
- int ch, used;
-
- ch = keys_str2int (key_ch);
- used = keys_assign_binding (ch, i);
- if (used)
- WARN_MSG (_("When adding default key for \"%s\", "
- "\"%s\" was already assigned!"),
- keydef[i].label, key_ch);
- p += strlen (key_ch) + 1;
- }
- else
- break;
- }
- }
+ for (i = 0; i < NBKEYS; i++) {
+ if (!LLIST_FIRST(&keys[i])) {
+ char *p, tmpbuf[BUFSIZ];
+
+ strncpy(tmpbuf, keydef[i].binding, BUFSIZ);
+ p = tmpbuf;
+ for (;;) {
+ char key_ch[BUFSIZ];
+
+ while (*p == ' ')
+ p++;
+ if (sscanf(p, "%s", key_ch) == 1) {
+ int ch, used;
+
+ ch = keys_str2int(key_ch);
+ used = keys_assign_binding(ch, i);
+ if (used)
+ WARN_MSG(_("When adding default key for \"%s\", "
+ "\"%s\" was already assigned!"),
+ keydef[i].label, key_ch);
+ p += strlen(key_ch) + 1;
+ } else
+ break;
+ }
}
+ }
}
diff --git a/src/llist.c b/src/llist.c
index c10cde3..847b795 100644
--- a/src/llist.c
+++ b/src/llist.c
@@ -39,8 +39,7 @@
/*
* Initialize a list.
*/
-void
-llist_init (llist_t *l)
+void llist_init(llist_t * l)
{
l->head = NULL;
l->tail = NULL;
@@ -49,16 +48,14 @@ llist_init (llist_t *l)
/*
* Free a list, but not the contained data.
*/
-void
-llist_free (llist_t *l)
+void llist_free(llist_t * l)
{
llist_item_t *i, *t;
- for (i = l->head; i; i = t)
- {
- t = i->next;
- mem_free (i);
- }
+ for (i = l->head; i; i = t) {
+ t = i->next;
+ mem_free(i);
+ }
l->head = NULL;
l->tail = NULL;
@@ -67,26 +64,22 @@ llist_free (llist_t *l)
/*
* Free the data contained in a list.
*/
-void
-llist_free_inner (llist_t *l, llist_fn_free_t fn_free)
+void llist_free_inner(llist_t * l, llist_fn_free_t fn_free)
{
llist_item_t *i;
- for (i = l->head; i; i = i->next)
- {
- if (i->data)
- {
- fn_free(i->data);
- i->data = NULL;
- }
+ for (i = l->head; i; i = i->next) {
+ if (i->data) {
+ fn_free(i->data);
+ i->data = NULL;
}
+ }
}
/*
* Get the first item of a list.
*/
-llist_item_t *
-llist_first (llist_t *l)
+llist_item_t *llist_first(llist_t * l)
{
return l->head;
}
@@ -94,8 +87,7 @@ llist_first (llist_t *l)
/*
* Get the nth item of a list.
*/
-llist_item_t *
-llist_nth (llist_t *l, int n)
+llist_item_t *llist_nth(llist_t * l, int n)
{
llist_item_t *i;
@@ -111,8 +103,7 @@ llist_nth (llist_t *l, int n)
/*
* Get the successor of a list item.
*/
-llist_item_t *
-llist_next (llist_item_t *i)
+llist_item_t *llist_next(llist_item_t * i)
{
return i ? i->next : NULL;
}
@@ -121,10 +112,10 @@ llist_next (llist_item_t *i)
* Return the successor of a list item if it is matched by some filter
* callback. Return NULL otherwise.
*/
-llist_item_t *
-llist_next_filter (llist_item_t *i, long data, llist_fn_match_t fn_match)
+llist_item_t *llist_next_filter(llist_item_t * i, long data,
+ llist_fn_match_t fn_match)
{
- if (i && i->next && fn_match (i->next->data, data))
+ if (i && i->next && fn_match(i->next->data, data))
return i->next;
else
return NULL;
@@ -133,8 +124,7 @@ llist_next_filter (llist_item_t *i, long data, llist_fn_match_t fn_match)
/*
* Get the actual data of an item.
*/
-void *
-llist_get_data (llist_item_t *i)
+void *llist_get_data(llist_item_t * i)
{
return i ? i->data : NULL;
}
@@ -142,103 +132,88 @@ llist_get_data (llist_item_t *i)
/*
* Add an item at the end of a list.
*/
-void
-llist_add (llist_t *l, void *data)
+void llist_add(llist_t * l, void *data)
{
- llist_item_t *o = mem_malloc (sizeof (llist_item_t));
-
- if (o)
- {
- o->data = data;
- o->next = NULL;
-
- if (!l->head)
- l->head = l->tail = o;
- else
- {
- l->tail->next = o;
- l->tail = o;
- }
+ llist_item_t *o = mem_malloc(sizeof(llist_item_t));
+
+ if (o) {
+ o->data = data;
+ o->next = NULL;
+
+ if (!l->head)
+ l->head = l->tail = o;
+ else {
+ l->tail->next = o;
+ l->tail = o;
}
+ }
}
/*
* Add an item to a sorted list.
*/
-void
-llist_add_sorted (llist_t *l, void *data, llist_fn_cmp_t fn_cmp)
+void llist_add_sorted(llist_t * l, void *data, llist_fn_cmp_t fn_cmp)
{
- llist_item_t *o = mem_malloc (sizeof (llist_item_t));
+ llist_item_t *o = mem_malloc(sizeof(llist_item_t));
llist_item_t *i;
- if (o)
- {
- o->data = data;
- o->next = NULL;
-
- if (!l->head)
- l->head = l->tail = o;
- else if (fn_cmp(o->data, l->tail->data) >= 0)
- {
- l->tail->next = o;
- l->tail = o;
- }
- else if (fn_cmp(o->data, l->head->data) < 0)
- {
- o->next = l->head;
- l->head = o;
- }
- else
- {
- i = l->head;
- while (i->next && fn_cmp(o->data, i->next->data) >= 0)
- i = i->next;
- o->next = i->next;
- i->next = o;
- }
+ if (o) {
+ o->data = data;
+ o->next = NULL;
+
+ if (!l->head)
+ l->head = l->tail = o;
+ else if (fn_cmp(o->data, l->tail->data) >= 0) {
+ l->tail->next = o;
+ l->tail = o;
+ } else if (fn_cmp(o->data, l->head->data) < 0) {
+ o->next = l->head;
+ l->head = o;
+ } else {
+ i = l->head;
+ while (i->next && fn_cmp(o->data, i->next->data) >= 0)
+ i = i->next;
+ o->next = i->next;
+ i->next = o;
}
+ }
}
/*
* Remove an item from a list.
*/
-void
-llist_remove (llist_t *l, llist_item_t *i)
+void llist_remove(llist_t * l, llist_item_t * i)
{
llist_item_t *j = NULL;
if (l->head && i == l->head)
l->head = i->next;
- else
- {
- for (j = l->head; j && j->next != i; j = j->next)
- ;
- }
-
- if (i)
- {
- if (j)
- j->next = i->next;
- if (i == l->tail)
- l->tail = j;
-
- mem_free (i);
- }
+ else {
+ for (j = l->head; j && j->next != i; j = j->next) ;
+ }
+
+ if (i) {
+ if (j)
+ j->next = i->next;
+ if (i == l->tail)
+ l->tail = j;
+
+ mem_free(i);
+ }
}
/*
* Find the first item matched by some filter callback.
*/
-llist_item_t *
-llist_find_first (llist_t *l, long data, llist_fn_match_t fn_match)
+llist_item_t *llist_find_first(llist_t * l, long data,
+ llist_fn_match_t fn_match)
{
llist_item_t *i;
- for (i = l->head; i; i = i->next)
- {
- if (fn_match (i->data, data))
- return i;
- }
+ for (i = l->head; i; i = i->next) {
+ if (fn_match(i->data, data))
+ return i;
+ }
return NULL;
}
@@ -246,18 +221,16 @@ llist_find_first (llist_t *l, long data, llist_fn_match_t fn_match)
/*
* Find the next item matched by some filter callback.
*/
-llist_item_t *
-llist_find_next (llist_item_t *i, long data, llist_fn_match_t fn_match)
+llist_item_t *llist_find_next(llist_item_t * i, long data,
+ llist_fn_match_t fn_match)
{
- if (i)
- {
- i = i->next;
- for (; i; i = i->next)
- {
- if (fn_match (i->data, data))
- return i;
- }
+ if (i) {
+ i = i->next;
+ for (; i; i = i->next) {
+ if (fn_match(i->data, data))
+ return i;
}
+ }
return NULL;
}
@@ -265,19 +238,18 @@ llist_find_next (llist_item_t *i, long data, llist_fn_match_t fn_match)
/*
* Find the nth item matched by some filter callback.
*/
-llist_item_t *
-llist_find_nth (llist_t *l, int n, long data, llist_fn_match_t fn_match)
+llist_item_t *llist_find_nth(llist_t * l, int n, long data,
+ llist_fn_match_t fn_match)
{
llist_item_t *i;
if (n < 0)
return NULL;
- for (i = l->head; i; i = i->next)
- {
- if (fn_match (i->data, data) && (n-- == 0))
- return i;
- }
+ for (i = l->head; i; i = i->next) {
+ if (fn_match(i->data, data) && (n-- == 0))
+ return i;
+ }
return NULL;
}
diff --git a/src/llist.h b/src/llist.h
index d2c61c8..c795f37 100644
--- a/src/llist.h
+++ b/src/llist.h
@@ -38,7 +38,7 @@
typedef struct llist_item llist_item_t;
struct llist_item {
struct llist_item *next;
- void *data;
+ void *data;
};
typedef struct llist llist_t;
@@ -52,9 +52,9 @@ typedef int (*llist_fn_match_t) (void *, long);
typedef void (*llist_fn_free_t) (void *);
/* Initialization and deallocation. */
-void llist_init (llist_t *);
-void llist_free (llist_t *);
-void llist_free_inner (llist_t *, llist_fn_free_t);
+void llist_init(llist_t *);
+void llist_free(llist_t *);
+void llist_free_inner(llist_t *, llist_fn_free_t);
#define LLIST_INIT(l) llist_init(l)
#define LLIST_FREE(l) llist_free(l)
@@ -62,13 +62,13 @@ void llist_free_inner (llist_t *, llist_fn_free_t);
llist_free_inner(l, (llist_fn_free_t)fn_free)
/* Retrieving list items. */
-llist_item_t *llist_first (llist_t *);
-llist_item_t *llist_nth (llist_t *, int);
-llist_item_t *llist_next (llist_item_t *);
-llist_item_t *llist_next_filter (llist_item_t *, long, llist_fn_match_t);
-llist_item_t *llist_find_first (llist_t *, long, llist_fn_match_t);
-llist_item_t *llist_find_next (llist_item_t *, long, llist_fn_match_t);
-llist_item_t *llist_find_nth (llist_t *, int, long, llist_fn_match_t);
+llist_item_t *llist_first(llist_t *);
+llist_item_t *llist_nth(llist_t *, int);
+llist_item_t *llist_next(llist_item_t *);
+llist_item_t *llist_next_filter(llist_item_t *, long, llist_fn_match_t);
+llist_item_t *llist_find_first(llist_t *, long, llist_fn_match_t);
+llist_item_t *llist_find_next(llist_item_t *, long, llist_fn_match_t);
+llist_item_t *llist_find_nth(llist_t *, int, long, llist_fn_match_t);
#define LLIST_FIRST(l) llist_first(l)
#define LLIST_NTH(l, n) llist_nth(l, n)
@@ -91,14 +91,14 @@ llist_item_t *llist_find_nth (llist_t *, int, long, llist_fn_match_t);
i = LLIST_NEXT_FILTER (i, data, fn_match))
/* Accessing list item data. */
-void *llist_get_data (llist_item_t *);
+void *llist_get_data(llist_item_t *);
#define LLIST_GET_DATA(i) llist_get_data(i)
/* List manipulation. */
-void llist_add (llist_t *, void *);
-void llist_add_sorted (llist_t *, void *, llist_fn_cmp_t);
-void llist_remove (llist_t *, llist_item_t *);
+void llist_add(llist_t *, void *);
+void llist_add_sorted(llist_t *, void *, llist_fn_cmp_t);
+void llist_remove(llist_t *, llist_item_t *);
#define LLIST_ADD(l, data) llist_add(l, data)
#define LLIST_ADD_SORTED(l, data, fn_cmp) \
diff --git a/src/llist_ts.h b/src/llist_ts.h
index 552c21c..b452377 100644
--- a/src/llist_ts.h
+++ b/src/llist_ts.h
@@ -37,9 +37,9 @@
/* Thread-safe linked lists. */
typedef struct llist_ts llist_ts_t;
struct llist_ts {
- llist_item_t *head;
- llist_item_t *tail;
- pthread_mutex_t mutex;
+ llist_item_t *head;
+ llist_item_t *tail;
+ pthread_mutex_t mutex;
};
/* Initialization and deallocation. */
@@ -90,4 +90,3 @@ struct llist_ts {
#define LLIST_TS_REMOVE(l_ts, i) llist_remove ((llist_t *)l_ts, i)
#define LLIST_TS_ADD_SORTED(l_ts, data, fn_cmp) \
llist_add_sorted ((llist_t *)l_ts, data, (llist_fn_cmp_t)fn_cmp)
-
diff --git a/src/mem.c b/src/mem.c
index f1ea97c..ecb8aa4 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -71,75 +71,68 @@ static struct mem_stats mstats;
#endif /* CALCURSE_MEMORY_DEBUG */
-
-void *
-xmalloc (size_t size)
+void *xmalloc(size_t size)
{
void *p;
- EXIT_IF (size == 0, _("xmalloc: zero size"));
- p = malloc (size);
- EXIT_IF (p == NULL, _("xmalloc: out of memory"));
+ EXIT_IF(size == 0, _("xmalloc: zero size"));
+ p = malloc(size);
+ EXIT_IF(p == NULL, _("xmalloc: out of memory"));
return p;
}
-void *
-xcalloc (size_t nmemb, size_t size)
+void *xcalloc(size_t nmemb, size_t size)
{
void *p;
- EXIT_IF (nmemb == 0 || size == 0, _("xcalloc: zero size"));
- EXIT_IF (SIZE_MAX / nmemb < size, _("xcalloc: overflow"));
- p = calloc (nmemb, size);
- EXIT_IF (p == NULL, _("xcalloc: out of memory"));
+ EXIT_IF(nmemb == 0 || size == 0, _("xcalloc: zero size"));
+ EXIT_IF(SIZE_MAX / nmemb < size, _("xcalloc: overflow"));
+ p = calloc(nmemb, size);
+ EXIT_IF(p == NULL, _("xcalloc: out of memory"));
return p;
}
-void *
-xrealloc (void *ptr, size_t nmemb, size_t size)
+void *xrealloc(void *ptr, size_t nmemb, size_t size)
{
void *new_ptr;
size_t new_size;
new_size = nmemb * size;
- EXIT_IF (new_size == 0, _("xrealloc: zero size"));
- EXIT_IF (SIZE_MAX / nmemb < size, _("xrealloc: overflow"));
- new_ptr = realloc (ptr, new_size);
- EXIT_IF (new_ptr == NULL, _("xrealloc: out of memory"));
+ EXIT_IF(new_size == 0, _("xrealloc: zero size"));
+ EXIT_IF(SIZE_MAX / nmemb < size, _("xrealloc: overflow"));
+ new_ptr = realloc(ptr, new_size);
+ EXIT_IF(new_ptr == NULL, _("xrealloc: out of memory"));
return new_ptr;
}
-char *
-xstrdup (const char *str)
+char *xstrdup(const char *str)
{
size_t len;
char *cp;
- len = strlen (str) + 1;
- cp = xmalloc (len);
+ len = strlen(str) + 1;
+ cp = xmalloc(len);
- return strncpy (cp, str, len);
+ return strncpy(cp, str, len);
}
-void
-xfree (void *p)
+void xfree(void *p)
{
- EXIT_IF (p == NULL, _("xfree: null pointer"));
- free (p);
+ EXIT_IF(p == NULL, _("xfree: null pointer"));
+ free(p);
}
#ifdef CALCURSE_MEMORY_DEBUG
-static unsigned
-stats_add_blk (size_t size, const char *pos)
+static unsigned stats_add_blk(size_t size, const char *pos)
{
struct mem_blk *o, **i;
- o = malloc (sizeof (*o));
- EXIT_IF (o == NULL, _("could not allocate memory to store block info"));
+ o = malloc(sizeof(*o));
+ EXIT_IF(o == NULL, _("could not allocate memory to store block info"));
mstats.ncall++;
@@ -147,103 +140,95 @@ stats_add_blk (size_t size, const char *pos)
o->size = (unsigned)size;
o->next = 0;
- for (i = &mstats.blk; *i; i = &(*i)->next)
- ;
+ for (i = &mstats.blk; *i; i = &(*i)->next) ;
o->id = mstats.ncall;
*i = o;
return o->id;
}
-static void
-stats_del_blk (unsigned id)
+static void stats_del_blk(unsigned id)
{
struct mem_blk *o, **i;
i = &mstats.blk;
- for (o = mstats.blk; o; o = o->next)
- {
- if (o->id == id)
- {
- *i = o->next;
- free (o);
- return;
- }
- i = &o->next;
+ for (o = mstats.blk; o; o = o->next) {
+ if (o->id == id) {
+ *i = o->next;
+ free(o);
+ return;
}
+ i = &o->next;
+ }
- EXIT (_("Block not found"));
+ EXIT(_("Block not found"));
/* NOTREACHED */
}
-void *
-dbg_malloc (size_t size, const char *pos)
+void *dbg_malloc(size_t size, const char *pos)
{
unsigned *buf;
- if (size == 0)
+ if (size == 0)
return NULL;
- size = EXTRA_SPACE + (size + sizeof (unsigned) - 1) / sizeof (unsigned);
- buf = xmalloc (size * sizeof (unsigned));
+ size = EXTRA_SPACE + (size + sizeof(unsigned) - 1) / sizeof(unsigned);
+ buf = xmalloc(size * sizeof(unsigned));
- buf[BLK_STATE] = MAGIC_ALLOC; /* state of the block */
- buf[BLK_SIZE] = size; /* size of the block */
- buf[BLK_ID] = stats_add_blk (size, pos); /* identify a block by its id */
- buf[size - 1] = buf[BLK_ID]; /* mark at end of block */
+ buf[BLK_STATE] = MAGIC_ALLOC; /* state of the block */
+ buf[BLK_SIZE] = size; /* size of the block */
+ buf[BLK_ID] = stats_add_blk(size, pos); /* identify a block by its id */
+ buf[size - 1] = buf[BLK_ID]; /* mark at end of block */
mstats.nalloc += size;
return (void *)(buf + EXTRA_SPACE_START);
}
-void *
-dbg_calloc (size_t nmemb, size_t size, const char *pos)
+void *dbg_calloc(size_t nmemb, size_t size, const char *pos)
{
void *buf;
if (!nmemb || !size)
return NULL;
- EXIT_IF (nmemb > SIZE_MAX / size, _("overflow at %s"), pos);
+ EXIT_IF(nmemb > SIZE_MAX / size, _("overflow at %s"), pos);
size *= nmemb;
- if ((buf = dbg_malloc (size, pos)) == NULL)
+ if ((buf = dbg_malloc(size, pos)) == NULL)
return NULL;
- memset (buf, 0, size);
+ memset(buf, 0, size);
return buf;
}
-void *
-dbg_realloc (void *ptr, size_t nmemb, size_t size, const char *pos)
+void *dbg_realloc(void *ptr, size_t nmemb, size_t size, const char *pos)
{
unsigned *buf, old_size, new_size, cpy_size;
if (ptr == NULL)
return NULL;
- new_size = nmemb *size;
+ new_size = nmemb * size;
if (new_size == 0)
return NULL;
- EXIT_IF (nmemb > SIZE_MAX / size, _("overflow at %s"), pos);
+ EXIT_IF(nmemb > SIZE_MAX / size, _("overflow at %s"), pos);
- if ((buf = dbg_malloc (new_size, pos)) == NULL)
+ if ((buf = dbg_malloc(new_size, pos)) == NULL)
return NULL;
old_size = *((unsigned *)ptr - EXTRA_SPACE_START + BLK_SIZE);
cpy_size = (old_size > new_size) ? new_size : old_size;
- memmove (buf, ptr, cpy_size);
+ memmove(buf, ptr, cpy_size);
- mem_free (ptr);
+ mem_free(ptr);
return (void *)buf;
}
-char *
-dbg_strdup (const char *s, const char *pos)
+char *dbg_strdup(const char *s, const char *pos)
{
size_t size;
char *buf;
@@ -251,71 +236,66 @@ dbg_strdup (const char *s, const char *pos)
if (s == NULL)
return NULL;
- size = strlen (s);
- if ((buf = dbg_malloc (size + 1, pos)) == NULL)
+ size = strlen(s);
+ if ((buf = dbg_malloc(size + 1, pos)) == NULL)
return NULL;
- return strncpy (buf, s, size + 1);
+ return strncpy(buf, s, size + 1);
}
-void
-dbg_free (void *ptr, const char *pos)
+void dbg_free(void *ptr, const char *pos)
{
unsigned *buf, size;
- EXIT_IF (ptr == NULL, _("dbg_free: null pointer at %s"), pos);
+ EXIT_IF(ptr == NULL, _("dbg_free: null pointer at %s"), pos);
buf = (unsigned *)ptr - EXTRA_SPACE_START;
size = buf[BLK_SIZE];
- EXIT_IF (buf[BLK_STATE] == MAGIC_FREE,
- _("block seems already freed at %s"), pos);
- EXIT_IF (buf[BLK_STATE] != MAGIC_ALLOC,
- _("corrupt block header at %s"), pos);
- EXIT_IF (buf[size - 1] != buf[BLK_ID],
- _("corrupt block end at %s, (end = %u, should be %d)"), pos,
- buf[size - 1], buf[BLK_ID]);
+ EXIT_IF(buf[BLK_STATE] == MAGIC_FREE,
+ _("block seems already freed at %s"), pos);
+ EXIT_IF(buf[BLK_STATE] != MAGIC_ALLOC, _("corrupt block header at %s"), pos);
+ EXIT_IF(buf[size - 1] != buf[BLK_ID],
+ _("corrupt block end at %s, (end = %u, should be %d)"), pos,
+ buf[size - 1], buf[BLK_ID]);
buf[0] = MAGIC_FREE;
- stats_del_blk (buf[BLK_ID]);
+ stats_del_blk(buf[BLK_ID]);
- free (buf);
+ free(buf);
mstats.nfree += size;
}
-static void
-dump_block_info (struct mem_blk *blk)
+static void dump_block_info(struct mem_blk *blk)
{
if (blk == NULL)
return;
- puts (_("---==== MEMORY BLOCK ====----------------\n"));
- printf (_(" id: %u\n"), blk->id);
- printf (_(" size: %u\n"), blk->size);
- printf (_(" allocated in: %s\n"), blk->pos);
- puts (_("-----------------------------------------\n"));
+ puts(_("---==== MEMORY BLOCK ====----------------\n"));
+ printf(_(" id: %u\n"), blk->id);
+ printf(_(" size: %u\n"), blk->size);
+ printf(_(" allocated in: %s\n"), blk->pos);
+ puts(_("-----------------------------------------\n"));
}
-void
-mem_stats (void)
+void mem_stats(void)
{
- putchar ('\n');
- puts (_("+------------------------------+\n"));
- puts (_("| calcurse memory usage report |\n"));
- puts (_("+------------------------------+\n"));
- printf (_(" number of calls: %u\n"), mstats.ncall);
- printf (_(" allocated blocks: %u\n"), mstats.nalloc);
- printf (_(" unfreed blocks: %u\n"), mstats.nalloc - mstats.nfree);
- putchar ('\n');
-
- if (mstats.nfree < mstats.nalloc)
- {
- struct mem_blk *blk;
-
- for (blk = mstats.blk; blk; blk = blk->next)
- dump_block_info (blk);
- }
+ putchar('\n');
+ puts(_("+------------------------------+\n"));
+ puts(_("| calcurse memory usage report |\n"));
+ puts(_("+------------------------------+\n"));
+ printf(_(" number of calls: %u\n"), mstats.ncall);
+ printf(_(" allocated blocks: %u\n"), mstats.nalloc);
+ printf(_(" unfreed blocks: %u\n"), mstats.nalloc - mstats.nfree);
+ putchar('\n');
+
+ if (mstats.nfree < mstats.nalloc) {
+ struct mem_blk *blk;
+
+ for (blk = mstats.blk; blk; blk = blk->next)
+ dump_block_info(blk);
+ }
}
#endif /* CALCURSE_MEMORY_DEBUG */
diff --git a/src/note.c b/src/note.c
index 09b6d0d..d2f7ab2 100644
--- a/src/note.c
+++ b/src/note.c
@@ -43,135 +43,124 @@
struct note_gc_hash {
char *hash;
char buf[MAX_NOTESIZ + 1];
- HTABLE_ENTRY (note_gc_hash);
+ HTABLE_ENTRY(note_gc_hash);
};
-static void note_gc_extract_key (struct note_gc_hash *, const char **, int *);
-static int note_gc_cmp (struct note_gc_hash *, struct note_gc_hash *);
+static void note_gc_extract_key(struct note_gc_hash *, const char **, int *);
+static int note_gc_cmp(struct note_gc_hash *, struct note_gc_hash *);
-HTABLE_HEAD (htp, NOTE_GC_HSIZE, note_gc_hash);
-HTABLE_PROTOTYPE (htp, note_gc_hash)
-HTABLE_GENERATE (htp, note_gc_hash, note_gc_extract_key, note_gc_cmp)
+HTABLE_HEAD(htp, NOTE_GC_HSIZE, note_gc_hash);
+HTABLE_PROTOTYPE(htp, note_gc_hash)
+ HTABLE_GENERATE(htp, note_gc_hash, note_gc_extract_key, note_gc_cmp)
/* Create note file from a string and return a newly allocated string that
* contains its name. */
-char *
-generate_note (const char *str)
+char *generate_note(const char *str)
{
- char *sha1 = mem_malloc (SHA1_DIGESTLEN * 2 + 1);
+ char *sha1 = mem_malloc(SHA1_DIGESTLEN * 2 + 1);
char notepath[BUFSIZ];
FILE *fp;
- sha1_digest (str, sha1);
- snprintf (notepath, BUFSIZ, "%s%s", path_notes, sha1);
- fp = fopen (notepath, "w");
- EXIT_IF (fp == NULL, _("Warning: could not open %s, Aborting..."), notepath);
- fputs (str, fp);
- file_close (fp, __FILE_POS__);
+ sha1_digest(str, sha1);
+ snprintf(notepath, BUFSIZ, "%s%s", path_notes, sha1);
+ fp = fopen(notepath, "w");
+ EXIT_IF(fp == NULL, _("Warning: could not open %s, Aborting..."), notepath);
+ fputs(str, fp);
+ file_close(fp, __FILE_POS__);
return sha1;
}
/* Edit a note with an external editor. */
-void
-edit_note (char **note, const char *editor)
+void edit_note(char **note, const char *editor)
{
char tmppath[BUFSIZ];
char *tmpext;
char notepath[BUFSIZ];
- char *sha1 = mem_malloc (SHA1_DIGESTLEN * 2 + 1);
+ char *sha1 = mem_malloc(SHA1_DIGESTLEN * 2 + 1);
FILE *fp;
- strncpy (tmppath, get_tempdir (), BUFSIZ);
- strncat (tmppath, "/calcurse-note.", BUFSIZ - strlen (tmppath) - 1);
- if ((tmpext = new_tempfile (tmppath, TMPEXTSIZ)) == NULL)
+ strncpy(tmppath, get_tempdir(), BUFSIZ);
+ strncat(tmppath, "/calcurse-note.", BUFSIZ - strlen(tmppath) - 1);
+ if ((tmpext = new_tempfile(tmppath, TMPEXTSIZ)) == NULL)
return;
- strncat (tmppath, tmpext, BUFSIZ - strlen (tmppath) - 1);
- mem_free (tmpext);
+ strncat(tmppath, tmpext, BUFSIZ - strlen(tmppath) - 1);
+ mem_free(tmpext);
- if (*note != NULL)
- {
- snprintf (notepath, BUFSIZ, "%s%s", path_notes, *note);
- io_file_cp (notepath, tmppath);
- }
+ if (*note != NULL) {
+ snprintf(notepath, BUFSIZ, "%s%s", path_notes, *note);
+ io_file_cp(notepath, tmppath);
+ }
- wins_launch_external (tmppath, editor);
+ wins_launch_external(tmppath, editor);
- if (io_file_is_empty (tmppath) > 0)
- erase_note (note);
- else if ((fp = fopen (tmppath, "r")))
- {
- sha1_stream (fp, sha1);
- fclose (fp);
- *note = sha1;
+ if (io_file_is_empty(tmppath) > 0)
+ erase_note(note);
+ else if ((fp = fopen(tmppath, "r"))) {
+ sha1_stream(fp, sha1);
+ fclose(fp);
+ *note = sha1;
- snprintf (notepath, BUFSIZ, "%s%s", path_notes, *note);
- io_file_cp (tmppath, notepath);
- }
+ snprintf(notepath, BUFSIZ, "%s%s", path_notes, *note);
+ io_file_cp(tmppath, notepath);
+ }
- unlink (tmppath);
+ unlink(tmppath);
}
/* View a note in an external pager. */
-void
-view_note (const char *note, const char *pager)
+void view_note(const char *note, const char *pager)
{
char fullname[BUFSIZ];
if (note == NULL)
return;
- snprintf (fullname, BUFSIZ, "%s%s", path_notes, note);
- wins_launch_external (fullname, pager);
+ snprintf(fullname, BUFSIZ, "%s%s", path_notes, note);
+ wins_launch_external(fullname, pager);
}
/* Erase a note previously attached to an item. */
-void
-erase_note (char **note)
+void erase_note(char **note)
{
if (*note == NULL)
return;
- mem_free (*note);
+ mem_free(*note);
*note = NULL;
}
/* Read a serialized note file name from a stream and deserialize it. */
-void
-note_read (char *buffer, FILE *fp)
+void note_read(char *buffer, FILE * fp)
{
int i;
- for (i = 0; i < MAX_NOTESIZ; i++)
- {
- buffer[i] = getc (fp);
- if (buffer[i] == ' ')
- {
- buffer[i] = '\0';
- return;
- }
+ for (i = 0; i < MAX_NOTESIZ; i++) {
+ buffer[i] = getc(fp);
+ if (buffer[i] == ' ') {
+ buffer[i] = '\0';
+ return;
}
+ }
- while (getc (fp) != ' ');
+ while (getc(fp) != ' ') ;
buffer[MAX_NOTESIZ] = '\0';
}
static void
-note_gc_extract_key (struct note_gc_hash *data, const char **key, int *len)
+note_gc_extract_key(struct note_gc_hash *data, const char **key, int *len)
{
*key = data->hash;
- *len = strlen (data->hash);
+ *len = strlen(data->hash);
}
-static int
-note_gc_cmp (struct note_gc_hash *a, struct note_gc_hash *b)
+static int note_gc_cmp(struct note_gc_hash *a, struct note_gc_hash *b)
{
- return strcmp (a->hash, b->hash);
+ return strcmp(a->hash, b->hash);
}
/* Spot and unlink unused note files. */
-void
-note_gc (void)
+void note_gc(void)
{
- struct htp gc_htable = HTABLE_INITIALIZER (&gc_htable);
+ struct htp gc_htable = HTABLE_INITIALIZER(&gc_htable);
struct note_gc_hash *hp;
DIR *dirp;
struct dirent *dp;
@@ -179,81 +168,68 @@ note_gc (void)
struct note_gc_hash tmph;
char notepath[BUFSIZ];
- if (!(dirp = opendir (path_notes)))
+ if (!(dirp = opendir(path_notes)))
return;
/* Insert all note file names into a hash table. */
- do
- {
- if ((dp = readdir (dirp)) && *(dp->d_name) != '.')
- {
- hp = mem_malloc (sizeof (struct note_gc_hash));
+ do {
+ if ((dp = readdir(dirp)) && *(dp->d_name) != '.') {
+ hp = mem_malloc(sizeof(struct note_gc_hash));
- strncpy (hp->buf, dp->d_name, MAX_NOTESIZ + 1);
- hp->hash = hp->buf;
+ strncpy(hp->buf, dp->d_name, MAX_NOTESIZ + 1);
+ hp->hash = hp->buf;
- HTABLE_INSERT (htp, &gc_htable, hp);
- }
+ HTABLE_INSERT(htp, &gc_htable, hp);
}
+ }
while (dp);
- closedir (dirp);
+ closedir(dirp);
/* Remove hashes that are actually in use. */
- LLIST_TS_FOREACH (&alist_p, i)
- {
- struct apoint *apt = LLIST_GET_DATA (i);
- if (apt->note)
- {
- tmph.hash = apt->note;
- free (HTABLE_REMOVE (htp, &gc_htable, &tmph));
- }
+ LLIST_TS_FOREACH(&alist_p, i) {
+ struct apoint *apt = LLIST_GET_DATA(i);
+ if (apt->note) {
+ tmph.hash = apt->note;
+ free(HTABLE_REMOVE(htp, &gc_htable, &tmph));
}
+ }
- LLIST_FOREACH (&eventlist, i)
- {
- struct event *ev = LLIST_GET_DATA (i);
- if (ev->note)
- {
- tmph.hash = ev->note;
- free (HTABLE_REMOVE (htp, &gc_htable, &tmph));
- }
+ LLIST_FOREACH(&eventlist, i) {
+ struct event *ev = LLIST_GET_DATA(i);
+ if (ev->note) {
+ tmph.hash = ev->note;
+ free(HTABLE_REMOVE(htp, &gc_htable, &tmph));
}
+ }
- LLIST_TS_FOREACH (&recur_alist_p, i)
- {
- struct recur_apoint *rapt = LLIST_GET_DATA (i);
- if (rapt->note)
- {
- tmph.hash = rapt->note;
- free (HTABLE_REMOVE (htp, &gc_htable, &tmph));
- }
+ LLIST_TS_FOREACH(&recur_alist_p, i) {
+ struct recur_apoint *rapt = LLIST_GET_DATA(i);
+ if (rapt->note) {
+ tmph.hash = rapt->note;
+ free(HTABLE_REMOVE(htp, &gc_htable, &tmph));
}
+ }
- LLIST_FOREACH (&recur_elist, i)
- {
- struct recur_event *rev = LLIST_GET_DATA (i);
- if (rev->note)
- {
- tmph.hash = rev->note;
- free (HTABLE_REMOVE (htp, &gc_htable, &tmph));
- }
+ LLIST_FOREACH(&recur_elist, i) {
+ struct recur_event *rev = LLIST_GET_DATA(i);
+ if (rev->note) {
+ tmph.hash = rev->note;
+ free(HTABLE_REMOVE(htp, &gc_htable, &tmph));
}
+ }
- LLIST_FOREACH (&todolist, i)
- {
- struct todo *todo = LLIST_GET_DATA (i);
- if (todo->note)
- {
- tmph.hash = todo->note;
- free (HTABLE_REMOVE (htp, &gc_htable, &tmph));
- }
+ LLIST_FOREACH(&todolist, i) {
+ struct todo *todo = LLIST_GET_DATA(i);
+ if (todo->note) {
+ tmph.hash = todo->note;
+ free(HTABLE_REMOVE(htp, &gc_htable, &tmph));
}
+ }
/* Unlink unused note files. */
- HTABLE_FOREACH (hp, htp, &gc_htable)
- {
- snprintf (notepath, BUFSIZ, "%s%s", path_notes, hp->hash);
- unlink (notepath);
- }
+ HTABLE_FOREACH(hp, htp, &gc_htable) {
+ snprintf(notepath, BUFSIZ, "%s%s", path_notes, hp->hash);
+ unlink(notepath);
+ }
}
diff --git a/src/notify.c b/src/notify.c
index de45461..2be4571 100644
--- a/src/notify.c
+++ b/src/notify.c
@@ -51,22 +51,21 @@ struct notify_vars {
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;
+static struct notify_vars notify;
+static struct notify_app notify_app;
+static pthread_attr_t detached_thread_attr;
+static pthread_t notify_t_main;
/*
* Return the number of seconds before next appointment
* (0 if no upcoming appointment).
*/
-int
-notify_time_left (void)
+int notify_time_left(void)
{
time_t ntimer;
int left;
- ntimer = time (NULL);
+ ntimer = time(NULL);
left = notify_app.time - ntimer;
return left > 0 ? left : 0;
@@ -76,8 +75,7 @@ notify_time_left (void)
* Return 1 if the reminder was not sent already for the upcoming
* appointment.
*/
-unsigned
-notify_needs_reminder (void)
+unsigned notify_needs_reminder(void)
{
if (notify_app.got_app
&& (((notify_app.state & APOINT_NOTIFY) && !nbar.notify_all) ||
@@ -92,67 +90,62 @@ notify_needs_reminder (void)
* Note: the mutex associated with this structure must be locked by the
* caller!
*/
-void
-notify_update_app (long start, char state, char *msg)
+void notify_update_app(long start, char state, char *msg)
{
- notify_free_app ();
+ notify_free_app();
notify_app.got_app = 1;
notify_app.time = start;
notify_app.state = state;
- notify_app.txt = mem_strdup (msg);
+ notify_app.txt = mem_strdup(msg);
}
/* Return 1 if we need to display the notify-bar, else 0. */
-int
-notify_bar (void)
+int notify_bar(void)
{
int display_bar = 0;
- pthread_mutex_lock (&nbar.mutex);
+ pthread_mutex_lock(&nbar.mutex);
display_bar = (nbar.show) ? 1 : 0;
- pthread_mutex_unlock (&nbar.mutex);
+ pthread_mutex_unlock(&nbar.mutex);
return display_bar;
}
/* Initialize the nbar variable used to store notification options. */
-void
-notify_init_vars (void)
+void notify_init_vars(void)
{
const char *time_format = "%T";
const char *date_format = "%a %F";
const char *cmd = "printf '\\a'";
- pthread_mutex_init (&nbar.mutex, NULL);
+ pthread_mutex_init(&nbar.mutex, NULL);
nbar.show = 1;
nbar.cntdwn = 300;
- strncpy (nbar.datefmt, date_format, strlen (date_format) + 1);
- strncpy (nbar.timefmt, time_format, strlen (time_format) + 1);
- strncpy (nbar.cmd, cmd, strlen (cmd) + 1);
+ strncpy(nbar.datefmt, date_format, strlen(date_format) + 1);
+ strncpy(nbar.timefmt, time_format, strlen(time_format) + 1);
+ strncpy(nbar.cmd, cmd, strlen(cmd) + 1);
- if ((nbar.shell = getenv ("SHELL")) == NULL)
+ if ((nbar.shell = getenv("SHELL")) == NULL)
nbar.shell = "/bin/sh";
nbar.notify_all = 0;
- pthread_attr_init (&detached_thread_attr);
- pthread_attr_setdetachstate (&detached_thread_attr, PTHREAD_CREATE_DETACHED);
+ pthread_attr_init(&detached_thread_attr);
+ pthread_attr_setdetachstate(&detached_thread_attr, PTHREAD_CREATE_DETACHED);
}
/* Extract the appointment file name from the complete file path. */
-static void
-extract_aptsfile (void)
+static void extract_aptsfile(void)
{
char *file;
- file = strrchr (path_apts, '/');
+ file = strrchr(path_apts, '/');
if (!file)
notify.apts_file = path_apts;
- else
- {
- notify.apts_file = file;
- notify.apts_file++;
- }
+ else {
+ notify.apts_file = file;
+ notify.apts_file++;
+ }
}
/*
@@ -160,56 +153,50 @@ extract_aptsfile (void)
* creating the notification window (l is the number of lines, c the
* number of columns, y and x are its coordinates).
*/
-void
-notify_init_bar (void)
+void notify_init_bar(void)
{
- pthread_mutex_init (&notify.mutex, NULL);
- pthread_mutex_init (&notify_app.mutex, NULL);
+ pthread_mutex_init(&notify.mutex, NULL);
+ pthread_mutex_init(&notify_app.mutex, NULL);
notify_app.got_app = 0;
notify_app.txt = 0;
- notify.win = newwin (win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x);
- extract_aptsfile ();
+ notify.win = newwin(win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x);
+ extract_aptsfile();
}
/*
* Free memory associated with the notify_app structure.
*/
-void
-notify_free_app (void)
+void notify_free_app(void)
{
notify_app.time = 0;
notify_app.got_app = 0;
notify_app.state = APOINT_NULL;
if (notify_app.txt)
- mem_free (notify_app.txt);
+ mem_free(notify_app.txt);
notify_app.txt = 0;
}
/* Stop the notify-bar main thread. */
-void
-notify_stop_main_thread (void)
+void notify_stop_main_thread(void)
{
- if (notify_t_main)
- {
- pthread_cancel (notify_t_main);
- pthread_join (notify_t_main, NULL);
- }
+ if (notify_t_main) {
+ pthread_cancel(notify_t_main);
+ pthread_join(notify_t_main, NULL);
+ }
}
/*
* The calcurse window geometry has changed so we need to reset the
* notification window.
*/
-void
-notify_reinit_bar (void)
+void notify_reinit_bar(void)
{
- delwin (notify.win);
- notify.win = newwin (win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x);
+ delwin(notify.win);
+ notify.win = newwin(win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x);
}
/* Launch user defined command as a notification. */
-unsigned
-notify_launch_cmd (void)
+unsigned notify_launch_cmd(void)
{
int pid;
@@ -218,23 +205,19 @@ notify_launch_cmd (void)
notify_app.state |= APOINT_NOTIFIED;
- pid = fork ();
+ pid = fork();
- if (pid < 0)
- {
- ERROR_MSG (_("error while launching command: could not fork"));
- return 0;
- }
- else if (pid == 0)
- {
- /* Child: launch user defined command */
- if (execlp (nbar.shell, nbar.shell, "-c", nbar.cmd, NULL) < 0)
- {
- ERROR_MSG (_("error while launching command"));
- _exit (1);
- }
- _exit (0);
+ if (pid < 0) {
+ ERROR_MSG(_("error while launching command: could not fork"));
+ return 0;
+ } else if (pid == 0) {
+ /* Child: launch user defined command */
+ if (execlp(nbar.shell, nbar.shell, "-c", nbar.cmd, NULL) < 0) {
+ ERROR_MSG(_("error while launching command"));
+ _exit(1);
}
+ _exit(0);
+ }
return 1;
}
@@ -243,8 +226,7 @@ notify_launch_cmd (void)
* Update the notification bar. This is useful when changing color theme
* for example.
*/
-void
-notify_update_bar (void)
+void notify_update_bar(void)
{
const int space = 3;
int file_pos, date_pos, app_pos, txt_max_len, too_long = 0;
@@ -252,84 +234,77 @@ notify_update_bar (void)
char buf[BUFSIZ];
date_pos = space;
- pthread_mutex_lock (&notify.mutex);
+ pthread_mutex_lock(&notify.mutex);
- file_pos = strlen (notify.date) + strlen (notify.time) + 7 + 2 * space;
- app_pos = file_pos + strlen (notify.apts_file) + 2 + space;
+ file_pos = strlen(notify.date) + strlen(notify.time) + 7 + 2 * space;
+ app_pos = file_pos + strlen(notify.apts_file) + 2 + space;
txt_max_len = col - (app_pos + 12 + space);
- custom_apply_attr (notify.win, ATTR_HIGHEST);
- wattron (notify.win, A_UNDERLINE | A_REVERSE);
- mvwhline (notify.win, 0, 0, ACS_HLINE, col);
- mvwprintw (notify.win, 0, date_pos, "[ %s | %s ]",
- notify.date, notify.time);
- mvwprintw (notify.win, 0, file_pos, "(%s)", notify.apts_file);
+ custom_apply_attr(notify.win, ATTR_HIGHEST);
+ wattron(notify.win, A_UNDERLINE | A_REVERSE);
+ mvwhline(notify.win, 0, 0, ACS_HLINE, col);
+ mvwprintw(notify.win, 0, date_pos, "[ %s | %s ]", notify.date, notify.time);
+ mvwprintw(notify.win, 0, file_pos, "(%s)", notify.apts_file);
+
+ pthread_mutex_lock(&notify_app.mutex);
+ if (notify_app.got_app) {
+ if (strlen(notify_app.txt) > txt_max_len) {
+ int shrink_len;
+
+ too_long = 1;
+ shrink_len = txt_max_len > 3 ? txt_max_len - 3 : 1;
+ strncpy(buf, notify_app.txt, shrink_len);
+ buf[shrink_len] = '\0';
+ }
+ time_left = notify_time_left();
+ if (time_left > 0) {
+ int hours_left, minutes_left;
+
+ hours_left = (time_left / HOURINSEC);
+ minutes_left = (time_left - hours_left * HOURINSEC) / MININSEC;
+ pthread_mutex_lock(&nbar.mutex);
+
+ if (time_left < nbar.cntdwn &&
+ (((notify_app.state & APOINT_NOTIFY) && !nbar.notify_all) ||
+ (!(notify_app.state & APOINT_NOTIFY) && nbar.notify_all)))
+ blinking = 1;
+ else
+ blinking = 0;
- pthread_mutex_lock (&notify_app.mutex);
- if (notify_app.got_app)
- {
- if (strlen (notify_app.txt) > txt_max_len)
- {
- int shrink_len;
-
- too_long = 1;
- shrink_len = txt_max_len > 3 ? txt_max_len - 3 : 1;
- strncpy (buf, notify_app.txt, shrink_len);
- buf[shrink_len] = '\0';
- }
- time_left = notify_time_left ();
- if (time_left > 0)
- {
- int hours_left, minutes_left;
-
- hours_left = (time_left / HOURINSEC);
- minutes_left = (time_left - hours_left * HOURINSEC) / MININSEC;
- pthread_mutex_lock (&nbar.mutex);
-
- if (time_left < nbar.cntdwn &&
- (((notify_app.state & APOINT_NOTIFY) && !nbar.notify_all) ||
- (!(notify_app.state & APOINT_NOTIFY) && nbar.notify_all)))
- blinking = 1;
- else
- blinking = 0;
-
- if (blinking)
- wattron (notify.win, A_BLINK);
- if (too_long)
- mvwprintw (notify.win, 0, app_pos, "> %02d:%02d :: %s.. <",
- hours_left, minutes_left, buf);
- else
- mvwprintw (notify.win, 0, app_pos, "> %02d:%02d :: %s <",
- hours_left, minutes_left, notify_app.txt);
- if (blinking)
- wattroff (notify.win, A_BLINK);
-
- if (blinking)
- notify_launch_cmd ();
- pthread_mutex_unlock (&nbar.mutex);
- }
+ if (blinking)
+ wattron(notify.win, A_BLINK);
+ if (too_long)
+ mvwprintw(notify.win, 0, app_pos, "> %02d:%02d :: %s.. <",
+ hours_left, minutes_left, buf);
else
- {
- notify_app.got_app = 0;
- pthread_mutex_unlock (&notify_app.mutex);
- pthread_mutex_unlock (&notify.mutex);
- notify_check_next_app (0);
- return;
- }
+ mvwprintw(notify.win, 0, app_pos, "> %02d:%02d :: %s <",
+ hours_left, minutes_left, notify_app.txt);
+ if (blinking)
+ wattroff(notify.win, A_BLINK);
+
+ if (blinking)
+ notify_launch_cmd();
+ pthread_mutex_unlock(&nbar.mutex);
+ } else {
+ notify_app.got_app = 0;
+ pthread_mutex_unlock(&notify_app.mutex);
+ pthread_mutex_unlock(&notify.mutex);
+ notify_check_next_app(0);
+ return;
}
- pthread_mutex_unlock (&notify_app.mutex);
+ }
+ pthread_mutex_unlock(&notify_app.mutex);
- wattroff (notify.win, A_UNDERLINE | A_REVERSE);
- custom_remove_attr (notify.win, ATTR_HIGHEST);
- wins_wrefresh (notify.win);
+ wattroff(notify.win, A_UNDERLINE | A_REVERSE);
+ custom_remove_attr(notify.win, ATTR_HIGHEST);
+ wins_wrefresh(notify.win);
- pthread_mutex_unlock (&notify.mutex);
+ pthread_mutex_unlock(&notify.mutex);
}
/* Update the notication bar content */
/* ARGSUSED0 */
-static void *
-notify_main_thread (void *arg)
+static void *notify_main_thread(void *arg)
{
const unsigned thread_sleep = 1;
const unsigned check_app = MININSEC;
@@ -340,49 +315,46 @@ notify_main_thread (void *arg)
elapse = 0;
- for (;;)
- {
- ntimer = time (NULL);
- ntime = localtime (&ntimer);
- pthread_mutex_lock (&notify.mutex);
- pthread_mutex_lock (&nbar.mutex);
- strftime (notify.time, NOTIFY_FIELD_LENGTH, nbar.timefmt, ntime);
- strftime (notify.date, NOTIFY_FIELD_LENGTH, nbar.datefmt, ntime);
- pthread_mutex_unlock (&nbar.mutex);
- pthread_mutex_unlock (&notify.mutex);
- notify_update_bar ();
- psleep (thread_sleep);
- elapse += thread_sleep;
- if (elapse >= check_app)
- {
- elapse = 0;
- pthread_mutex_lock (&notify_app.mutex);
- got_app = notify_app.got_app;
- pthread_mutex_unlock (&notify_app.mutex);
- if (!got_app)
- notify_check_next_app (0);
- }
+ for (;;) {
+ ntimer = time(NULL);
+ ntime = localtime(&ntimer);
+ pthread_mutex_lock(&notify.mutex);
+ pthread_mutex_lock(&nbar.mutex);
+ strftime(notify.time, NOTIFY_FIELD_LENGTH, nbar.timefmt, ntime);
+ strftime(notify.date, NOTIFY_FIELD_LENGTH, nbar.datefmt, ntime);
+ pthread_mutex_unlock(&nbar.mutex);
+ pthread_mutex_unlock(&notify.mutex);
+ notify_update_bar();
+ psleep(thread_sleep);
+ elapse += thread_sleep;
+ if (elapse >= check_app) {
+ elapse = 0;
+ pthread_mutex_lock(&notify_app.mutex);
+ got_app = notify_app.got_app;
+ pthread_mutex_unlock(&notify_app.mutex);
+ if (!got_app)
+ notify_check_next_app(0);
}
- pthread_exit (NULL);
+ }
+ pthread_exit(NULL);
}
/* Fill the given structure with information about next appointment. */
-unsigned
-notify_get_next (struct notify_app *a)
+unsigned notify_get_next(struct notify_app *a)
{
time_t current_time;
if (!a)
return 0;
- current_time = time (NULL);
+ current_time = time(NULL);
a->time = current_time + DAYINSEC;
a->got_app = 0;
a->state = 0;
a->txt = NULL;
- recur_apoint_check_next (a, current_time, get_today ());
- apoint_check_next (a, current_time);
+ recur_apoint_check_next(a, current_time, get_today());
+ apoint_check_next(a, current_time);
return 1;
}
@@ -391,36 +363,31 @@ notify_get_next (struct notify_app *a)
* This is used for the daemon to check if we have an upcoming appointment or
* not.
*/
-unsigned
-notify_get_next_bkgd (void)
+unsigned notify_get_next_bkgd(void)
{
struct notify_app a;
a.txt = NULL;
- if (!notify_get_next (&a))
+ if (!notify_get_next(&a))
return 0;
- if (!a.got_app)
- {
- /* No next appointment, reset the previous notified one. */
- notify_app.got_app = 0;
- return 1;
- }
- else
- {
- if (!notify_same_item (a.time))
- notify_update_app (a.time, a.state, a.txt);
- }
+ if (!a.got_app) {
+ /* No next appointment, reset the previous notified one. */
+ notify_app.got_app = 0;
+ return 1;
+ } else {
+ if (!notify_same_item(a.time))
+ notify_update_app(a.time, a.state, a.txt);
+ }
if (a.txt)
- mem_free (a.txt);
+ mem_free(a.txt);
return 1;
}
/* Return the description of next appointment to be notified. */
-char *
-notify_app_txt (void)
+char *notify_app_txt(void)
{
if (notify_app.got_app)
return notify_app.txt;
@@ -430,153 +397,128 @@ notify_app_txt (void)
/* Look for the next appointment within the next 24 hours. */
/* ARGSUSED0 */
-static void *
-notify_thread_app (void *arg)
+static void *notify_thread_app(void *arg)
{
struct notify_app tmp_app;
int force = (arg ? 1 : 0);
- if (!notify_get_next (&tmp_app))
- pthread_exit (NULL);
-
- if (!tmp_app.got_app)
- {
- pthread_mutex_lock (&notify_app.mutex);
- notify_free_app ();
- pthread_mutex_unlock (&notify_app.mutex);
- }
- else
- {
- if (force || !notify_same_item (tmp_app.time))
- {
- pthread_mutex_lock (&notify_app.mutex);
- notify_update_app (tmp_app.time, tmp_app.state, tmp_app.txt);
- pthread_mutex_unlock (&notify_app.mutex);
- }
+ if (!notify_get_next(&tmp_app))
+ pthread_exit(NULL);
+
+ if (!tmp_app.got_app) {
+ pthread_mutex_lock(&notify_app.mutex);
+ notify_free_app();
+ pthread_mutex_unlock(&notify_app.mutex);
+ } else {
+ if (force || !notify_same_item(tmp_app.time)) {
+ pthread_mutex_lock(&notify_app.mutex);
+ notify_update_app(tmp_app.time, tmp_app.state, tmp_app.txt);
+ pthread_mutex_unlock(&notify_app.mutex);
}
+ }
if (tmp_app.txt)
- mem_free (tmp_app.txt);
- notify_update_bar ();
+ mem_free(tmp_app.txt);
+ notify_update_bar();
- pthread_exit (NULL);
+ pthread_exit(NULL);
}
/* Launch the thread notify_thread_app to look for next appointment. */
-void
-notify_check_next_app (int force)
+void notify_check_next_app(int force)
{
pthread_t notify_t_app;
void *arg = (force ? (void *)1 : NULL);
- pthread_create (&notify_t_app, &detached_thread_attr, notify_thread_app,
- arg);
+ pthread_create(&notify_t_app, &detached_thread_attr, notify_thread_app, arg);
return;
}
/* Check if the newly created appointment is to be notified. */
-void
-notify_check_added (char *mesg, long start, char state)
+void notify_check_added(char *mesg, long start, char state)
{
time_t current_time;
int update_notify = 0;
long gap;
- current_time = time (NULL);
- pthread_mutex_lock (&notify_app.mutex);
- if (!notify_app.got_app)
- {
- gap = start - current_time;
- if (gap >= 0 && gap <= DAYINSEC)
- update_notify = 1;
- }
- else if (start < notify_app.time && start >= current_time)
- {
+ current_time = time(NULL);
+ pthread_mutex_lock(&notify_app.mutex);
+ if (!notify_app.got_app) {
+ gap = start - current_time;
+ if (gap >= 0 && gap <= DAYINSEC)
update_notify = 1;
- }
- else if (start == notify_app.time && state != notify_app.state)
+ } else if (start < notify_app.time && start >= current_time) {
+ update_notify = 1;
+ } else if (start == notify_app.time && state != notify_app.state)
update_notify = 1;
- if (update_notify)
- {
- notify_update_app (start, state, mesg);
- }
- pthread_mutex_unlock (&notify_app.mutex);
- notify_update_bar ();
+ if (update_notify) {
+ notify_update_app(start, state, mesg);
+ }
+ pthread_mutex_unlock(&notify_app.mutex);
+ notify_update_bar();
}
/* Check if the newly repeated appointment is to be notified. */
-void
-notify_check_repeated (struct recur_apoint *i)
+void notify_check_repeated(struct recur_apoint *i)
{
unsigned real_app_time;
int update_notify = 0;
time_t current_time;
- current_time = time (NULL);
- pthread_mutex_lock (&notify_app.mutex);
- if (recur_item_find_occurrence (i->start, i->dur, &i->exc, i->rpt->type,
- i->rpt->freq, i->rpt->until, get_today (),
- &real_app_time))
- {
- if (!notify_app.got_app)
- {
- if (real_app_time - current_time <= DAYINSEC)
- update_notify = 1;
- }
- else if (real_app_time < notify_app.time &&
- real_app_time >= current_time)
- {
- update_notify = 1;
- }
- else if (real_app_time == notify_app.time &&
- i->state != notify_app.state)
+ current_time = time(NULL);
+ pthread_mutex_lock(&notify_app.mutex);
+ if (recur_item_find_occurrence(i->start, i->dur, &i->exc, i->rpt->type,
+ i->rpt->freq, i->rpt->until, get_today(),
+ &real_app_time)) {
+ if (!notify_app.got_app) {
+ if (real_app_time - current_time <= DAYINSEC)
update_notify = 1;
- }
- if (update_notify)
- {
- notify_update_app (real_app_time, i->state, i->mesg);
- }
- pthread_mutex_unlock (&notify_app.mutex);
- notify_update_bar ();
+ } else if (real_app_time < notify_app.time && real_app_time >= current_time) {
+ update_notify = 1;
+ } else if (real_app_time == notify_app.time && i->state != notify_app.state)
+ update_notify = 1;
+ }
+ if (update_notify) {
+ notify_update_app(real_app_time, i->state, i->mesg);
+ }
+ pthread_mutex_unlock(&notify_app.mutex);
+ notify_update_bar();
}
-int
-notify_same_item (long time)
+int notify_same_item(long time)
{
int same = 0;
- pthread_mutex_lock (&(notify_app.mutex));
+ pthread_mutex_lock(&(notify_app.mutex));
if (notify_app.got_app && notify_app.time == time)
same = 1;
- pthread_mutex_unlock (&(notify_app.mutex));
+ pthread_mutex_unlock(&(notify_app.mutex));
return same;
}
-int
-notify_same_recur_item (struct recur_apoint *i)
+int notify_same_recur_item(struct recur_apoint *i)
{
int same = 0;
unsigned item_start = 0;
- recur_item_find_occurrence (i->start, i->dur, &i->exc, i->rpt->type,
- i->rpt->freq, i->rpt->until, get_today (),
- &item_start);
- pthread_mutex_lock (&notify_app.mutex);
+ recur_item_find_occurrence(i->start, i->dur, &i->exc, i->rpt->type,
+ i->rpt->freq, i->rpt->until, get_today(),
+ &item_start);
+ pthread_mutex_lock(&notify_app.mutex);
if (notify_app.got_app && item_start == notify_app.time)
same = 1;
- pthread_mutex_unlock (&(notify_app.mutex));
+ pthread_mutex_unlock(&(notify_app.mutex));
return same;
}
/* Launch the notify-bar main thread. */
-void
-notify_start_main_thread (void)
+void notify_start_main_thread(void)
{
- pthread_create (&notify_t_main, NULL, notify_main_thread, NULL);
- notify_check_next_app (0);
+ pthread_create(&notify_t_main, NULL, notify_main_thread, NULL);
+ notify_check_next_app(0);
}
/*
@@ -585,56 +527,50 @@ notify_start_main_thread (void)
* (either YES or NO), or an option holding a string value.
*/
static void
-print_option (WINDOW *win, unsigned x, unsigned y, char *name,
- char *valstr, unsigned valbool, char *desc, unsigned num)
+print_option(WINDOW * win, unsigned x, unsigned y, char *name,
+ char *valstr, unsigned valbool, char *desc, unsigned num)
{
const int XOFF = 4;
const int MAXCOL = col - 3;
int x_opt, len;
- x_opt = x + XOFF + strlen (name);
- mvwprintw (win, y, x, "[%u] %s", num, name);
- erase_window_part (win, x_opt, y, MAXCOL, y);
- if ((len = strlen (valstr)) != 0)
- {
- unsigned maxlen;
-
- maxlen = MAXCOL - x_opt - 2;
- custom_apply_attr (win, ATTR_HIGHEST);
- if (len < maxlen)
- mvwprintw (win, y, x_opt, "%s", valstr);
- else
- {
- char buf[BUFSIZ];
-
- strncpy (buf, valstr, maxlen - 1);
- buf[maxlen - 1] = '\0';
- mvwprintw (win, y, x_opt, "%s...", buf);
- }
- custom_remove_attr (win, ATTR_HIGHEST);
+ x_opt = x + XOFF + strlen(name);
+ mvwprintw(win, y, x, "[%u] %s", num, name);
+ erase_window_part(win, x_opt, y, MAXCOL, y);
+ if ((len = strlen(valstr)) != 0) {
+ unsigned maxlen;
+
+ maxlen = MAXCOL - x_opt - 2;
+ custom_apply_attr(win, ATTR_HIGHEST);
+ if (len < maxlen)
+ mvwprintw(win, y, x_opt, "%s", valstr);
+ else {
+ char buf[BUFSIZ];
+
+ strncpy(buf, valstr, maxlen - 1);
+ buf[maxlen - 1] = '\0';
+ mvwprintw(win, y, x_opt, "%s...", buf);
}
- else
- print_bool_option_incolor (win, valbool, y, x_opt);
- mvwprintw (win, y + 1, x, desc);
+ custom_remove_attr(win, ATTR_HIGHEST);
+ } else
+ print_bool_option_incolor(win, valbool, y, x_opt);
+ mvwprintw(win, y + 1, x, desc);
}
/* Print options related to the notify-bar. */
-static unsigned
-print_config_options (WINDOW *optwin)
+static unsigned print_config_options(WINDOW * optwin)
{
const int XORIG = 3;
const int YORIG = 0;
- const int YOFF = 3;
+ const int YOFF = 3;
- enum
- { SHOW, DATE, CLOCK, WARN, CMD, NOTIFY_ALL, DMON, DMON_LOG, NB_OPT };
+ enum { SHOW, DATE, CLOCK, WARN, CMD, NOTIFY_ALL, DMON, DMON_LOG, NB_OPT };
- struct opt_s
- {
- char *name;
- char *desc;
- char valstr[BUFSIZ];
- unsigned valnum;
+ struct opt_s {
+ char *name;
+ char *desc;
+ char valstr[BUFSIZ];
+ unsigned valnum;
} opt[NB_OPT];
int i;
@@ -656,7 +592,8 @@ print_config_options (WINDOW *optwin)
opt[CMD].desc = _("(Command used to notify user of an upcoming appointment)");
opt[NOTIFY_ALL].name = _("notification.notifyall = ");
- opt[NOTIFY_ALL].desc = _("(Notify all appointments instead of flagged ones only)");
+ opt[NOTIFY_ALL].desc =
+ _("(Notify all appointments instead of flagged ones only)");
opt[DMON].name = _("daemon.enable = ");
opt[DMON].desc = _("(Run in background to get notifications after exiting)");
@@ -664,18 +601,18 @@ print_config_options (WINDOW *optwin)
opt[DMON_LOG].name = _("daemon.log = ");
opt[DMON_LOG].desc = _("(Log activity when running in background)");
- pthread_mutex_lock (&nbar.mutex);
+ pthread_mutex_lock(&nbar.mutex);
/* String value options */
- strncpy (opt[DATE].valstr, nbar.datefmt, BUFSIZ);
- strncpy (opt[CLOCK].valstr, nbar.timefmt, BUFSIZ);
- snprintf (opt[WARN].valstr, BUFSIZ, "%d", nbar.cntdwn);
- strncpy (opt[CMD].valstr, nbar.cmd, BUFSIZ);
+ strncpy(opt[DATE].valstr, nbar.datefmt, BUFSIZ);
+ strncpy(opt[CLOCK].valstr, nbar.timefmt, BUFSIZ);
+ snprintf(opt[WARN].valstr, BUFSIZ, "%d", nbar.cntdwn);
+ strncpy(opt[CMD].valstr, nbar.cmd, BUFSIZ);
/* Boolean options */
opt[SHOW].valnum = nbar.show;
opt[NOTIFY_ALL].valnum = nbar.notify_all;
- pthread_mutex_unlock (&nbar.mutex);
+ pthread_mutex_unlock(&nbar.mutex);
opt[DMON].valnum = dmon.enable;
opt[DMON_LOG].valnum = dmon.log;
@@ -683,168 +620,155 @@ print_config_options (WINDOW *optwin)
opt[SHOW].valstr[0] = opt[NOTIFY_ALL].valstr[0] = opt[DMON].valstr[0] =
opt[DMON_LOG].valstr[0] = '\0';
- for (i = 0; i < NB_OPT; i++)
- {
- int y;
+ for (i = 0; i < NB_OPT; i++) {
+ int y;
- y = YORIG + i * YOFF;
- print_option (optwin, XORIG, y, opt[i].name, opt[i].valstr,
- opt[i].valnum, opt[i].desc, i + 1);
- }
+ y = YORIG + i * YOFF;
+ print_option(optwin, XORIG, y, opt[i].name, opt[i].valstr,
+ opt[i].valnum, opt[i].desc, i + 1);
+ }
return YORIG + NB_OPT * YOFF;
}
-static void
-reinit_conf_win (struct scrollwin *win)
+static void reinit_conf_win(struct scrollwin *win)
{
unsigned first_line;
first_line = win->first_visible_line;
- wins_scrollwin_delete (win);
- custom_set_swsiz (win);
- wins_scrollwin_init (win);
- wins_show (win->win.p, win->label);
+ wins_scrollwin_delete(win);
+ custom_set_swsiz(win);
+ wins_scrollwin_init(win);
+ wins_show(win->win.p, win->label);
win->first_visible_line = first_line;
}
/* Notify-bar configuration. */
-void
-notify_config_bar (void)
+void notify_config_bar(void)
{
struct scrollwin cwin;
char *buf;
- const char *number_str =
- _("Enter an option number to change its value");
- const char *keys =
- _("(Press '^P' or '^N' to move up or down, 'Q' to quit)");
+ const char *number_str = _("Enter an option number to change its value");
+ const char *keys = _("(Press '^P' or '^N' to move up or down, 'Q' to quit)");
const char *date_str =
- _("Enter the date format (see 'man 3 strftime' for possible formats) ");
+ _("Enter the date format (see 'man 3 strftime' for possible formats) ");
const char *time_str =
- _("Enter the time format (see 'man 3 strftime' for possible formats) ");
+ _("Enter the time format (see 'man 3 strftime' for possible formats) ");
const char *count_str =
- _("Enter the number of seconds (0 not to be warned before an appointment)");
+ _
+ ("Enter the number of seconds (0 not to be warned before an appointment)");
const char *cmd_str = _("Enter the notification command ");
int ch;
- clear ();
- custom_set_swsiz (&cwin);
+ clear();
+ custom_set_swsiz(&cwin);
cwin.label = _("notification options");
- wins_scrollwin_init (&cwin);
- wins_show (cwin.win.p, cwin.label);
- status_mesg (number_str, keys);
- cwin.total_lines = print_config_options (cwin.pad.p);
- wins_scrollwin_display (&cwin);
-
- buf = mem_malloc (BUFSIZ);
- while ((ch = wgetch (win[STA].p)) != 'q')
- {
- buf[0] = '\0';
-
- switch (ch)
- {
- case CTRL ('N'):
- wins_scrollwin_down (&cwin, 1);
- break;
- case CTRL ('P'):
- wins_scrollwin_up (&cwin, 1);
- break;
- case '1':
- pthread_mutex_lock (&nbar.mutex);
- nbar.show = !nbar.show;
- pthread_mutex_unlock (&nbar.mutex);
- if (notify_bar ())
- notify_start_main_thread ();
- else
- notify_stop_main_thread ();
- wins_scrollwin_delete (&cwin);
- reinit_conf_win (&cwin);
- break;
- case '2':
- status_mesg (date_str, "");
- pthread_mutex_lock (&nbar.mutex);
- strncpy (buf, nbar.datefmt, strlen (nbar.datefmt) + 1);
- pthread_mutex_unlock (&nbar.mutex);
- if (updatestring (win[STA].p, &buf, 0, 1) == 0)
- {
- pthread_mutex_lock (&nbar.mutex);
- strncpy (nbar.datefmt, buf, strlen (buf) + 1);
- pthread_mutex_unlock (&nbar.mutex);
- }
- break;
- case '3':
- status_mesg (time_str, "");
- pthread_mutex_lock (&nbar.mutex);
- strncpy (buf, nbar.timefmt, strlen (nbar.timefmt) + 1);
- pthread_mutex_unlock (&nbar.mutex);
- if (updatestring (win[STA].p, &buf, 0, 1) == 0)
- {
- pthread_mutex_lock (&nbar.mutex);
- strncpy (nbar.timefmt, buf, strlen (buf) + 1);
- pthread_mutex_unlock (&nbar.mutex);
- }
- break;
- case '4':
- status_mesg (count_str, "");
- pthread_mutex_lock (&nbar.mutex);
- printf (buf, "%d", nbar.cntdwn);
- pthread_mutex_unlock (&nbar.mutex);
- if (updatestring (win[STA].p, &buf, 0, 1) == 0 &&
- is_all_digit (buf) && atoi (buf) >= 0 && atoi (buf) <= DAYINSEC)
- {
- pthread_mutex_lock (&nbar.mutex);
- nbar.cntdwn = atoi (buf);
- pthread_mutex_unlock (&nbar.mutex);
- }
- break;
- case '5':
- status_mesg (cmd_str, "");
- pthread_mutex_lock (&nbar.mutex);
- strncpy (buf, nbar.cmd, strlen (nbar.cmd) + 1);
- pthread_mutex_unlock (&nbar.mutex);
- if (updatestring (win[STA].p, &buf, 0, 1) == 0)
- {
- pthread_mutex_lock (&nbar.mutex);
- strncpy (nbar.cmd, buf, strlen (buf) + 1);
- pthread_mutex_unlock (&nbar.mutex);
- }
- break;
- case '6':
- pthread_mutex_lock (&nbar.mutex);
- nbar.notify_all = !nbar.notify_all;
- pthread_mutex_unlock (&nbar.mutex);
- notify_check_next_app (1);
- break;
- case '7':
- dmon.enable = !dmon.enable;
- break;
- case '8':
- dmon.log = !dmon.log;
- break;
- }
-
- if (resize)
- {
- resize = 0;
- wins_get_config ();
- wins_reset ();
- reinit_conf_win (&cwin);
- delwin (win[STA].p);
- win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y,
- win[STA].x);
- keypad (win[STA].p, TRUE);
- if (notify_bar ())
- {
- notify_reinit_bar ();
- notify_update_bar ();
- }
- clearok (curscr, TRUE);
- }
-
- status_mesg (number_str, keys);
- cwin.total_lines = print_config_options (cwin.pad.p);
- wins_scrollwin_display (&cwin);
+ wins_scrollwin_init(&cwin);
+ wins_show(cwin.win.p, cwin.label);
+ status_mesg(number_str, keys);
+ cwin.total_lines = print_config_options(cwin.pad.p);
+ wins_scrollwin_display(&cwin);
+
+ buf = mem_malloc(BUFSIZ);
+ while ((ch = wgetch(win[STA].p)) != 'q') {
+ buf[0] = '\0';
+
+ switch (ch) {
+ case CTRL('N'):
+ wins_scrollwin_down(&cwin, 1);
+ break;
+ case CTRL('P'):
+ wins_scrollwin_up(&cwin, 1);
+ break;
+ case '1':
+ pthread_mutex_lock(&nbar.mutex);
+ nbar.show = !nbar.show;
+ pthread_mutex_unlock(&nbar.mutex);
+ if (notify_bar())
+ notify_start_main_thread();
+ else
+ notify_stop_main_thread();
+ wins_scrollwin_delete(&cwin);
+ reinit_conf_win(&cwin);
+ break;
+ case '2':
+ status_mesg(date_str, "");
+ pthread_mutex_lock(&nbar.mutex);
+ strncpy(buf, nbar.datefmt, strlen(nbar.datefmt) + 1);
+ pthread_mutex_unlock(&nbar.mutex);
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
+ pthread_mutex_lock(&nbar.mutex);
+ strncpy(nbar.datefmt, buf, strlen(buf) + 1);
+ pthread_mutex_unlock(&nbar.mutex);
+ }
+ break;
+ case '3':
+ status_mesg(time_str, "");
+ pthread_mutex_lock(&nbar.mutex);
+ strncpy(buf, nbar.timefmt, strlen(nbar.timefmt) + 1);
+ pthread_mutex_unlock(&nbar.mutex);
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
+ pthread_mutex_lock(&nbar.mutex);
+ strncpy(nbar.timefmt, buf, strlen(buf) + 1);
+ pthread_mutex_unlock(&nbar.mutex);
+ }
+ break;
+ case '4':
+ status_mesg(count_str, "");
+ pthread_mutex_lock(&nbar.mutex);
+ printf(buf, "%d", nbar.cntdwn);
+ pthread_mutex_unlock(&nbar.mutex);
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0 &&
+ is_all_digit(buf) && atoi(buf) >= 0 && atoi(buf) <= DAYINSEC) {
+ pthread_mutex_lock(&nbar.mutex);
+ nbar.cntdwn = atoi(buf);
+ pthread_mutex_unlock(&nbar.mutex);
+ }
+ break;
+ case '5':
+ status_mesg(cmd_str, "");
+ pthread_mutex_lock(&nbar.mutex);
+ strncpy(buf, nbar.cmd, strlen(nbar.cmd) + 1);
+ pthread_mutex_unlock(&nbar.mutex);
+ if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
+ pthread_mutex_lock(&nbar.mutex);
+ strncpy(nbar.cmd, buf, strlen(buf) + 1);
+ pthread_mutex_unlock(&nbar.mutex);
+ }
+ break;
+ case '6':
+ pthread_mutex_lock(&nbar.mutex);
+ nbar.notify_all = !nbar.notify_all;
+ pthread_mutex_unlock(&nbar.mutex);
+ notify_check_next_app(1);
+ break;
+ case '7':
+ dmon.enable = !dmon.enable;
+ break;
+ case '8':
+ dmon.log = !dmon.log;
+ break;
+ }
+
+ if (resize) {
+ resize = 0;
+ wins_get_config();
+ wins_reset();
+ reinit_conf_win(&cwin);
+ delwin(win[STA].p);
+ win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x);
+ keypad(win[STA].p, TRUE);
+ if (notify_bar()) {
+ notify_reinit_bar();
+ notify_update_bar();
+ }
+ clearok(curscr, TRUE);
}
- mem_free (buf);
- wins_scrollwin_delete (&cwin);
+
+ status_mesg(number_str, keys);
+ cwin.total_lines = print_config_options(cwin.pad.p);
+ wins_scrollwin_display(&cwin);
+ }
+ mem_free(buf);
+ wins_scrollwin_delete(&cwin);
}
diff --git a/src/pcal.c b/src/pcal.c
index c412cb0..244a20a 100644
--- a/src/pcal.c
+++ b/src/pcal.c
@@ -39,279 +39,253 @@
#include "calcurse.h"
/* Static functions used to add export functionalities. */
-static void pcal_export_header (FILE *);
-static void pcal_export_recur_events (FILE *);
-static void pcal_export_events (FILE *);
-static void pcal_export_recur_apoints (FILE *);
-static void pcal_export_apoints (FILE *);
-static void pcal_export_todo (FILE *);
-static void pcal_export_footer (FILE *);
+static void pcal_export_header(FILE *);
+static void pcal_export_recur_events(FILE *);
+static void pcal_export_events(FILE *);
+static void pcal_export_recur_apoints(FILE *);
+static void pcal_export_apoints(FILE *);
+static void pcal_export_todo(FILE *);
+static void pcal_export_footer(FILE *);
/* Type definition for callbacks to export functions. */
-typedef void (*cb_dump_t)(FILE *, long, long, char *);
+typedef void (*cb_dump_t) (FILE *, long, long, char *);
/*
* Travel through each occurence of an item, and execute the given callback
* (mainly used to export data).
*/
static void
-foreach_date_dump (const long date_end, struct rpt *rpt, llist_t *exc,
- long item_first_date, long item_dur, char *item_mesg,
- cb_dump_t cb_dump, FILE *stream)
+foreach_date_dump(const long date_end, struct rpt *rpt, llist_t * exc,
+ long item_first_date, long item_dur, char *item_mesg,
+ cb_dump_t cb_dump, FILE * stream)
{
long date, item_time;
struct tm lt;
time_t t;
t = item_first_date;
- lt = *localtime (&t);
+ lt = *localtime(&t);
lt.tm_hour = lt.tm_min = lt.tm_sec = 0;
lt.tm_isdst = -1;
- date = mktime (&lt);
+ date = mktime(&lt);
item_time = item_first_date - date;
- while (date <= date_end && date <= rpt->until)
- {
- if (recur_item_inday (item_first_date, item_dur, exc, rpt->type,
- rpt->freq, rpt->until, date))
- {
- (*cb_dump)(stream, date + item_time, item_dur, item_mesg);
- }
- switch (rpt->type)
- {
- case RECUR_DAILY:
- date = date_sec_change (date, 0, rpt->freq);
- break;
- case RECUR_WEEKLY:
- date = date_sec_change (date, 0, rpt->freq * WEEKINDAYS);
- break;
- case RECUR_MONTHLY:
- date = date_sec_change (date, rpt->freq, 0);
- break;
- case RECUR_YEARLY:
- date = date_sec_change (date, rpt->freq * 12, 0);
- break;
- default:
- EXIT (_("incoherent repetition type"));
- /* NOTREACHED */
- break;
- }
+ while (date <= date_end && date <= rpt->until) {
+ if (recur_item_inday(item_first_date, item_dur, exc, rpt->type,
+ rpt->freq, rpt->until, date)) {
+ (*cb_dump) (stream, date + item_time, item_dur, item_mesg);
}
+ switch (rpt->type) {
+ case RECUR_DAILY:
+ date = date_sec_change(date, 0, rpt->freq);
+ break;
+ case RECUR_WEEKLY:
+ date = date_sec_change(date, 0, rpt->freq * WEEKINDAYS);
+ break;
+ case RECUR_MONTHLY:
+ date = date_sec_change(date, rpt->freq, 0);
+ break;
+ case RECUR_YEARLY:
+ date = date_sec_change(date, rpt->freq * 12, 0);
+ break;
+ default:
+ EXIT(_("incoherent repetition type"));
+ /* NOTREACHED */
+ break;
+ }
+ }
}
-static void
-pcal_export_header (FILE *stream)
+static void pcal_export_header(FILE * stream)
{
- fputs ("# calcurse pcal export\n", stream);
- fputs ("\n# =======\n# options\n# =======\n", stream);
- fprintf (stream, "opt -A -K -l -m -F %s\n",
- calendar_week_begins_on_monday () ? "Monday" : "Sunday");
- fputs ("# Display week number (i.e. 1-52) on every Monday\n", stream);
- fprintf (stream, "all monday in all %s %%w\n", _("Week"));
- fputc ('\n', stream);
+ fputs("# calcurse pcal export\n", stream);
+ fputs("\n# =======\n# options\n# =======\n", stream);
+ fprintf(stream, "opt -A -K -l -m -F %s\n",
+ calendar_week_begins_on_monday()? "Monday" : "Sunday");
+ fputs("# Display week number (i.e. 1-52) on every Monday\n", stream);
+ fprintf(stream, "all monday in all %s %%w\n", _("Week"));
+ fputc('\n', stream);
}
-static void
-pcal_export_footer (FILE *stream)
+static void pcal_export_footer(FILE * stream)
{
}
/* Format and dump event data to a pcal formatted file. */
static void
-pcal_dump_event (FILE *stream, long event_date, long event_dur,
- char *event_mesg)
+pcal_dump_event(FILE * stream, long event_date, long event_dur,
+ char *event_mesg)
{
char pcal_date[BUFSIZ];
- date_sec2date_fmt (event_date, "%b %d", pcal_date);
- fprintf (stream, "%s %s\n", pcal_date, event_mesg);
+ date_sec2date_fmt(event_date, "%b %d", pcal_date);
+ fprintf(stream, "%s %s\n", pcal_date, event_mesg);
}
/* Format and dump appointment data to a pcal formatted file. */
static void
-pcal_dump_apoint (FILE *stream, long apoint_date, long apoint_dur,
- char *apoint_mesg)
+pcal_dump_apoint(FILE * stream, long apoint_date, long apoint_dur,
+ char *apoint_mesg)
{
char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ];
- date_sec2date_fmt (apoint_date, "%b %d", pcal_date);
- date_sec2date_fmt (apoint_date, "%R", pcal_beg);
- date_sec2date_fmt (apoint_date + apoint_dur, "%R", pcal_end);
- fprintf (stream, "%s ", pcal_date);
- fprintf (stream, "(%s -> %s) %s\n", pcal_beg, pcal_end, apoint_mesg);
+ date_sec2date_fmt(apoint_date, "%b %d", pcal_date);
+ date_sec2date_fmt(apoint_date, "%R", pcal_beg);
+ date_sec2date_fmt(apoint_date + apoint_dur, "%R", pcal_end);
+ fprintf(stream, "%s ", pcal_date);
+ fprintf(stream, "(%s -> %s) %s\n", pcal_beg, pcal_end, apoint_mesg);
}
-static void
-pcal_export_recur_events (FILE *stream)
+static void pcal_export_recur_events(FILE * stream)
{
llist_item_t *i;
char pcal_date[BUFSIZ];
- fputs ("\n# =============", stream);
- fputs ("\n# Recur. Events", stream);
- fputs ("\n# =============\n", stream);
- fputs ("# (pcal does not support from..until dates specification\n", stream);
+ fputs("\n# =============", stream);
+ fputs("\n# Recur. Events", stream);
+ fputs("\n# =============\n", stream);
+ fputs("# (pcal does not support from..until dates specification\n", stream);
- LLIST_FOREACH (&recur_elist, i)
- {
- struct recur_event *rev = LLIST_GET_DATA (i);
- if (rev->rpt->until == 0 && rev->rpt->freq == 1)
- {
- switch (rev->rpt->type)
- {
- case RECUR_DAILY:
- date_sec2date_fmt (rev->day, "%b %d", pcal_date);
- fprintf (stream, "all day on_or_after %s %s\n", pcal_date,
- rev->mesg);
- break;
- case RECUR_WEEKLY:
- date_sec2date_fmt (rev->day, "%a", pcal_date);
- fprintf (stream, "all %s on_or_after ", pcal_date);
- date_sec2date_fmt (rev->day, "%b %d", pcal_date);
- fprintf (stream, "%s %s\n", pcal_date, rev->mesg);
- break;
- case RECUR_MONTHLY:
- date_sec2date_fmt (rev->day, "%d", pcal_date);
- fprintf (stream, "day on all %s %s\n", pcal_date, rev->mesg);
- break;
- case RECUR_YEARLY:
- date_sec2date_fmt (rev->day, "%b %d", pcal_date);
- fprintf (stream, "%s %s\n", pcal_date, rev->mesg);
- break;
- default:
- EXIT (_("incoherent repetition type"));
- }
- }
- else
- {
- const long YEAR_START = calendar_start_of_year ();
- const long YEAR_END = calendar_end_of_year ();
+ LLIST_FOREACH(&recur_elist, i) {
+ struct recur_event *rev = LLIST_GET_DATA(i);
+ if (rev->rpt->until == 0 && rev->rpt->freq == 1) {
+ switch (rev->rpt->type) {
+ case RECUR_DAILY:
+ date_sec2date_fmt(rev->day, "%b %d", pcal_date);
+ fprintf(stream, "all day on_or_after %s %s\n", pcal_date, rev->mesg);
+ break;
+ case RECUR_WEEKLY:
+ date_sec2date_fmt(rev->day, "%a", pcal_date);
+ fprintf(stream, "all %s on_or_after ", pcal_date);
+ date_sec2date_fmt(rev->day, "%b %d", pcal_date);
+ fprintf(stream, "%s %s\n", pcal_date, rev->mesg);
+ break;
+ case RECUR_MONTHLY:
+ date_sec2date_fmt(rev->day, "%d", pcal_date);
+ fprintf(stream, "day on all %s %s\n", pcal_date, rev->mesg);
+ break;
+ case RECUR_YEARLY:
+ date_sec2date_fmt(rev->day, "%b %d", pcal_date);
+ fprintf(stream, "%s %s\n", pcal_date, rev->mesg);
+ break;
+ default:
+ EXIT(_("incoherent repetition type"));
+ }
+ } else {
+ const long YEAR_START = calendar_start_of_year();
+ const long YEAR_END = calendar_end_of_year();
- if (rev->day < YEAR_END && rev->day > YEAR_START)
- foreach_date_dump (YEAR_END, rev->rpt, &rev->exc, rev->day, 0,
- rev->mesg, (cb_dump_t) pcal_dump_event, stream);
- }
+ if (rev->day < YEAR_END && rev->day > YEAR_START)
+ foreach_date_dump(YEAR_END, rev->rpt, &rev->exc, rev->day, 0,
+ rev->mesg, (cb_dump_t) pcal_dump_event, stream);
}
+ }
}
-static void
-pcal_export_events (FILE *stream)
+static void pcal_export_events(FILE * stream)
{
llist_item_t *i;
- fputs ("\n# ======\n# Events\n# ======\n", stream);
- LLIST_FOREACH (&eventlist, i)
- {
- struct event *ev = LLIST_TS_GET_DATA (i);
- pcal_dump_event (stream, ev->day, 0, ev->mesg);
- }
- fputc ('\n', stream);
+ fputs("\n# ======\n# Events\n# ======\n", stream);
+ LLIST_FOREACH(&eventlist, i) {
+ struct event *ev = LLIST_TS_GET_DATA(i);
+ pcal_dump_event(stream, ev->day, 0, ev->mesg);
+ }
+ fputc('\n', stream);
}
-static void
-pcal_export_recur_apoints (FILE *stream)
+static void pcal_export_recur_apoints(FILE * stream)
{
llist_item_t *i;
char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ];
- fputs ("\n# ==============", stream);
- fputs ("\n# Recur. Apoints", stream);
- fputs ("\n# ==============\n", stream);
- fputs ("# (pcal does not support from..until dates specification\n", stream);
+ fputs("\n# ==============", stream);
+ fputs("\n# Recur. Apoints", stream);
+ fputs("\n# ==============\n", stream);
+ fputs("# (pcal does not support from..until dates specification\n", stream);
- LLIST_TS_FOREACH (&recur_alist_p, i)
- {
- struct recur_apoint *rapt = LLIST_TS_GET_DATA (i);
+ LLIST_TS_FOREACH(&recur_alist_p, i) {
+ struct recur_apoint *rapt = LLIST_TS_GET_DATA(i);
- if (rapt->rpt->until == 0 && rapt->rpt->freq == 1)
- {
- date_sec2date_fmt (rapt->start, "%R", pcal_beg);
- date_sec2date_fmt (rapt->start + rapt->dur, "%R", pcal_end);
- switch (rapt->rpt->type)
- {
- case RECUR_DAILY:
- date_sec2date_fmt (rapt->start, "%b %d", pcal_date);
- fprintf (stream, "all day on_or_after %s (%s -> %s) %s\n",
- pcal_date, pcal_beg, pcal_end, rapt->mesg);
- break;
- case RECUR_WEEKLY:
- date_sec2date_fmt (rapt->start, "%a", pcal_date);
- fprintf (stream, "all %s on_or_after ", pcal_date);
- date_sec2date_fmt (rapt->start, "%b %d", pcal_date);
- fprintf (stream, "%s (%s -> %s) %s\n", pcal_date, pcal_beg,
- pcal_end, rapt->mesg);
- break;
- case RECUR_MONTHLY:
- date_sec2date_fmt (rapt->start, "%d", pcal_date);
- fprintf (stream, "day on all %s (%s -> %s) %s\n", pcal_date,
- pcal_beg, pcal_end, rapt->mesg);
- break;
- case RECUR_YEARLY:
- date_sec2date_fmt (rapt->start, "%b %d", pcal_date);
- fprintf (stream, "%s (%s -> %s) %s\n", pcal_date, pcal_beg,
- pcal_end, rapt->mesg);
- break;
- default:
- EXIT (_("incoherent repetition type"));
- }
- }
- else
- {
- const long YEAR_START = calendar_start_of_year ();
- const long YEAR_END = calendar_end_of_year ();
+ if (rapt->rpt->until == 0 && rapt->rpt->freq == 1) {
+ date_sec2date_fmt(rapt->start, "%R", pcal_beg);
+ date_sec2date_fmt(rapt->start + rapt->dur, "%R", pcal_end);
+ switch (rapt->rpt->type) {
+ case RECUR_DAILY:
+ date_sec2date_fmt(rapt->start, "%b %d", pcal_date);
+ fprintf(stream, "all day on_or_after %s (%s -> %s) %s\n",
+ pcal_date, pcal_beg, pcal_end, rapt->mesg);
+ break;
+ case RECUR_WEEKLY:
+ date_sec2date_fmt(rapt->start, "%a", pcal_date);
+ fprintf(stream, "all %s on_or_after ", pcal_date);
+ date_sec2date_fmt(rapt->start, "%b %d", pcal_date);
+ fprintf(stream, "%s (%s -> %s) %s\n", pcal_date, pcal_beg,
+ pcal_end, rapt->mesg);
+ break;
+ case RECUR_MONTHLY:
+ date_sec2date_fmt(rapt->start, "%d", pcal_date);
+ fprintf(stream, "day on all %s (%s -> %s) %s\n", pcal_date,
+ pcal_beg, pcal_end, rapt->mesg);
+ break;
+ case RECUR_YEARLY:
+ date_sec2date_fmt(rapt->start, "%b %d", pcal_date);
+ fprintf(stream, "%s (%s -> %s) %s\n", pcal_date, pcal_beg,
+ pcal_end, rapt->mesg);
+ break;
+ default:
+ EXIT(_("incoherent repetition type"));
+ }
+ } else {
+ const long YEAR_START = calendar_start_of_year();
+ const long YEAR_END = calendar_end_of_year();
- if (rapt->start < YEAR_END && rapt->start > YEAR_START)
- foreach_date_dump (YEAR_END, rapt->rpt, &rapt->exc, rapt->start,
- rapt->dur, rapt->mesg,
- (cb_dump_t)pcal_dump_apoint, stream);
- }
+ if (rapt->start < YEAR_END && rapt->start > YEAR_START)
+ foreach_date_dump(YEAR_END, rapt->rpt, &rapt->exc, rapt->start,
+ rapt->dur, rapt->mesg,
+ (cb_dump_t) pcal_dump_apoint, stream);
}
+ }
}
-static void
-pcal_export_apoints (FILE *stream)
+static void pcal_export_apoints(FILE * stream)
{
llist_item_t *i;
- fputs ("\n# ============\n# Appointments\n# ============\n", stream);
- LLIST_TS_LOCK (&alist_p);
- LLIST_TS_FOREACH (&alist_p, i)
- {
- struct apoint *apt = LLIST_TS_GET_DATA (i);
- pcal_dump_apoint (stream, apt->start, apt->dur, apt->mesg);
- }
- LLIST_TS_UNLOCK (&alist_p);
- fputc ('\n', stream);
+ fputs("\n# ============\n# Appointments\n# ============\n", stream);
+ LLIST_TS_LOCK(&alist_p);
+ LLIST_TS_FOREACH(&alist_p, i) {
+ struct apoint *apt = LLIST_TS_GET_DATA(i);
+ pcal_dump_apoint(stream, apt->start, apt->dur, apt->mesg);
+ }
+ LLIST_TS_UNLOCK(&alist_p);
+ fputc('\n', stream);
}
-static void
-pcal_export_todo (FILE *stream)
+static void pcal_export_todo(FILE * stream)
{
llist_item_t *i;
- fputs ("#\n# Todos\n#\n", stream);
- LLIST_FOREACH (&todolist, i)
- {
- struct todo *todo = LLIST_TS_GET_DATA (i);
- if (todo->id < 0) /* completed items */
- continue;
+ fputs("#\n# Todos\n#\n", stream);
+ LLIST_FOREACH(&todolist, i) {
+ struct todo *todo = LLIST_TS_GET_DATA(i);
+ if (todo->id < 0) /* completed items */
+ continue;
- fputs ("note all ", stream);
- fprintf (stream, "%d. %s\n", todo->id, todo->mesg);
- }
- fputc ('\n', stream);
+ fputs("note all ", stream);
+ fprintf(stream, "%d. %s\n", todo->id, todo->mesg);
+ }
+ fputc('\n', stream);
}
/* Export calcurse data. */
-void
-pcal_export_data (FILE *stream)
+void pcal_export_data(FILE * stream)
{
- pcal_export_header (stream);
- pcal_export_recur_events (stream);
- pcal_export_events (stream);
- pcal_export_recur_apoints (stream);
- pcal_export_apoints (stream);
- pcal_export_todo (stream);
- pcal_export_footer (stream);
+ pcal_export_header(stream);
+ pcal_export_recur_events(stream);
+ pcal_export_events(stream);
+ pcal_export_recur_apoints(stream);
+ pcal_export_apoints(stream);
+ pcal_export_todo(stream);
+ pcal_export_footer(stream);
}
-
diff --git a/src/recur.c b/src/recur.c
index d1a5516..dad9c25 100644
--- a/src/recur.c
+++ b/src/recur.c
@@ -42,242 +42,217 @@
#include "calcurse.h"
-llist_ts_t recur_alist_p;
-llist_t recur_elist;
-static struct recur_event bkp_cut_recur_event;
+llist_ts_t recur_alist_p;
+llist_t recur_elist;
+static struct recur_event bkp_cut_recur_event;
static struct recur_apoint bkp_cut_recur_apoint;
-static void
-free_exc (struct excp *exc)
+static void free_exc(struct excp *exc)
{
- mem_free (exc);
+ mem_free(exc);
}
-static void
-free_exc_list (llist_t *exc)
+static void free_exc_list(llist_t * exc)
{
- LLIST_FREE_INNER (exc, free_exc);
- LLIST_FREE (exc);
+ LLIST_FREE_INNER(exc, free_exc);
+ LLIST_FREE(exc);
}
-static int
-exc_cmp_day (struct excp *a, struct excp *b)
+static int exc_cmp_day(struct excp *a, struct excp *b)
{
return a->st < b->st ? -1 : (a->st == b->st ? 0 : 1);
}
-static void
-recur_add_exc (llist_t *exc, long day)
+static void recur_add_exc(llist_t * exc, long day)
{
- struct excp *o = mem_malloc (sizeof (struct excp));
+ struct excp *o = mem_malloc(sizeof(struct excp));
o->st = day;
- LLIST_ADD_SORTED (exc, o, exc_cmp_day);
+ LLIST_ADD_SORTED(exc, o, exc_cmp_day);
}
-static void
-exc_dup (llist_t *in, llist_t *exc)
+static void exc_dup(llist_t * in, llist_t * exc)
{
llist_item_t *i;
- LLIST_INIT (in);
+ LLIST_INIT(in);
- if (exc)
- {
- LLIST_FOREACH (exc, i)
- {
- struct excp *p = LLIST_GET_DATA (i);
- recur_add_exc (in, p->st);
- }
+ if (exc) {
+ LLIST_FOREACH(exc, i) {
+ struct excp *p = LLIST_GET_DATA(i);
+ recur_add_exc(in, p->st);
}
+ }
}
-void
-recur_event_free_bkp (void)
+void recur_event_free_bkp(void)
{
- if (bkp_cut_recur_event.mesg)
- {
- mem_free (bkp_cut_recur_event.mesg);
- bkp_cut_recur_event.mesg = 0;
- }
- if (bkp_cut_recur_event.rpt)
- {
- mem_free (bkp_cut_recur_event.rpt);
- bkp_cut_recur_event.rpt = 0;
- }
- free_exc_list (&bkp_cut_recur_event.exc);
- erase_note (&bkp_cut_recur_event.note);
+ if (bkp_cut_recur_event.mesg) {
+ mem_free(bkp_cut_recur_event.mesg);
+ bkp_cut_recur_event.mesg = 0;
+ }
+ if (bkp_cut_recur_event.rpt) {
+ mem_free(bkp_cut_recur_event.rpt);
+ bkp_cut_recur_event.rpt = 0;
+ }
+ free_exc_list(&bkp_cut_recur_event.exc);
+ erase_note(&bkp_cut_recur_event.note);
}
-void
-recur_apoint_free_bkp (void)
+void recur_apoint_free_bkp(void)
{
- if (bkp_cut_recur_apoint.mesg)
- {
- mem_free (bkp_cut_recur_apoint.mesg);
- bkp_cut_recur_apoint.mesg = 0;
- }
- if (bkp_cut_recur_apoint.rpt)
- {
- mem_free (bkp_cut_recur_apoint.rpt);
- bkp_cut_recur_apoint.rpt = 0;
- }
- free_exc_list (&bkp_cut_recur_apoint.exc);
- erase_note (&bkp_cut_recur_apoint.note);
+ if (bkp_cut_recur_apoint.mesg) {
+ mem_free(bkp_cut_recur_apoint.mesg);
+ bkp_cut_recur_apoint.mesg = 0;
+ }
+ if (bkp_cut_recur_apoint.rpt) {
+ mem_free(bkp_cut_recur_apoint.rpt);
+ bkp_cut_recur_apoint.rpt = 0;
+ }
+ free_exc_list(&bkp_cut_recur_apoint.exc);
+ erase_note(&bkp_cut_recur_apoint.note);
}
-static void
-recur_event_dup (struct recur_event *in, struct recur_event *bkp)
+static void recur_event_dup(struct recur_event *in, struct recur_event *bkp)
{
- EXIT_IF (!in || !bkp, _("null pointer"));
+ EXIT_IF(!in || !bkp, _("null pointer"));
bkp->id = in->id;
bkp->day = in->day;
- bkp->mesg = mem_strdup (in->mesg);
+ bkp->mesg = mem_strdup(in->mesg);
- bkp->rpt = mem_malloc (sizeof (struct rpt));
+ 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;
- exc_dup (&bkp->exc, &in->exc);
+ exc_dup(&bkp->exc, &in->exc);
if (in->note)
- bkp->note = mem_strdup (in->note);
+ bkp->note = mem_strdup(in->note);
}
-static void
-recur_apoint_dup (struct recur_apoint *in, struct recur_apoint *bkp)
+static void recur_apoint_dup(struct recur_apoint *in, struct recur_apoint *bkp)
{
- EXIT_IF (!in || !bkp, _("null pointer"));
+ EXIT_IF(!in || !bkp, _("null pointer"));
bkp->start = in->start;
bkp->dur = in->dur;
bkp->state = in->state;
- bkp->mesg = mem_strdup (in->mesg);
+ bkp->mesg = mem_strdup(in->mesg);
- bkp->rpt = mem_malloc (sizeof (struct rpt));
+ 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;
- exc_dup (&bkp->exc, &in->exc);
+ exc_dup(&bkp->exc, &in->exc);
if (in->note)
- bkp->note = mem_strdup (in->note);
+ bkp->note = mem_strdup(in->note);
}
-void
-recur_apoint_llist_init (void)
+void recur_apoint_llist_init(void)
{
- LLIST_TS_INIT (&recur_alist_p);
+ LLIST_TS_INIT(&recur_alist_p);
}
-static void
-recur_apoint_free (struct recur_apoint *rapt)
+static void recur_apoint_free(struct recur_apoint *rapt)
{
- mem_free (rapt->mesg);
+ mem_free(rapt->mesg);
if (rapt->note)
- mem_free (rapt->note);
+ mem_free(rapt->note);
if (rapt->rpt)
- mem_free (rapt->rpt);
- free_exc_list (&rapt->exc);
- mem_free (rapt);
+ mem_free(rapt->rpt);
+ free_exc_list(&rapt->exc);
+ mem_free(rapt);
}
-static void
-recur_event_free (struct recur_event *rev)
+static void recur_event_free(struct recur_event *rev)
{
- mem_free (rev->mesg);
+ mem_free(rev->mesg);
if (rev->note)
- mem_free (rev->note);
+ mem_free(rev->note);
if (rev->rpt)
- mem_free (rev->rpt);
- free_exc_list (&rev->exc);
- mem_free (rev);
+ mem_free(rev->rpt);
+ free_exc_list(&rev->exc);
+ mem_free(rev);
}
-void
-recur_apoint_llist_free (void)
+void recur_apoint_llist_free(void)
{
- LLIST_TS_FREE_INNER (&recur_alist_p, recur_apoint_free);
- LLIST_TS_FREE (&recur_alist_p);
+ LLIST_TS_FREE_INNER(&recur_alist_p, recur_apoint_free);
+ LLIST_TS_FREE(&recur_alist_p);
}
-void
-recur_event_llist_free (void)
+void recur_event_llist_free(void)
{
- LLIST_FREE_INNER (&recur_elist, recur_event_free);
- LLIST_FREE (&recur_elist);
+ LLIST_FREE_INNER(&recur_elist, recur_event_free);
+ LLIST_FREE(&recur_elist);
}
static int
-recur_apoint_cmp_start (struct recur_apoint *a, struct recur_apoint *b)
+recur_apoint_cmp_start(struct recur_apoint *a, struct recur_apoint *b)
{
return a->start < b->start ? -1 : (a->start == b->start ? 0 : 1);
}
-static int
-recur_event_cmp_day (struct recur_event *a, struct recur_event *b)
+static int recur_event_cmp_day(struct recur_event *a, struct recur_event *b)
{
return a->day < b->day ? -1 : (a->day == b->day ? 0 : 1);
}
/* Insert a new recursive appointment in the general linked list */
-struct recur_apoint *
-recur_apoint_new (char *mesg, char *note, long start, long dur, char state,
- int type, int freq, long until, llist_t *except)
+struct recur_apoint *recur_apoint_new(char *mesg, char *note, long start,
+ long dur, char state, int type, int freq,
+ long until, llist_t * except)
{
- struct recur_apoint *rapt = mem_malloc (sizeof (struct recur_apoint));
+ struct recur_apoint *rapt = mem_malloc(sizeof(struct recur_apoint));
- rapt->rpt = mem_malloc (sizeof (struct rpt));
- rapt->mesg = mem_strdup (mesg);
- rapt->note = (note != NULL) ? mem_strdup (note) : 0;
+ rapt->rpt = mem_malloc(sizeof(struct rpt));
+ rapt->mesg = mem_strdup(mesg);
+ rapt->note = (note != NULL) ? mem_strdup(note) : 0;
rapt->start = start;
rapt->state = state;
rapt->dur = dur;
rapt->rpt->type = type;
rapt->rpt->freq = freq;
rapt->rpt->until = until;
- if (except)
- {
- exc_dup (&rapt->exc, except);
- free_exc_list (except);
- }
- else
- LLIST_INIT (&rapt->exc);
+ if (except) {
+ exc_dup(&rapt->exc, except);
+ free_exc_list(except);
+ } else
+ LLIST_INIT(&rapt->exc);
- LLIST_TS_LOCK (&recur_alist_p);
- LLIST_TS_ADD_SORTED (&recur_alist_p, rapt, recur_apoint_cmp_start);
- LLIST_TS_UNLOCK (&recur_alist_p);
+ LLIST_TS_LOCK(&recur_alist_p);
+ LLIST_TS_ADD_SORTED(&recur_alist_p, rapt, recur_apoint_cmp_start);
+ LLIST_TS_UNLOCK(&recur_alist_p);
return rapt;
}
/* Insert a new recursive event in the general linked list */
-struct recur_event *
-recur_event_new (char *mesg, char *note, long day, int id, int type, int freq,
- long until, llist_t *except)
+struct recur_event *recur_event_new(char *mesg, char *note, long day, int id,
+ int type, int freq, long until,
+ llist_t * except)
{
- struct recur_event *rev = mem_malloc (sizeof (struct recur_event));
+ struct recur_event *rev = mem_malloc(sizeof(struct recur_event));
- rev->rpt = mem_malloc (sizeof (struct rpt));
- rev->mesg = mem_strdup (mesg);
- rev->note = (note != NULL) ? mem_strdup (note) : 0;
+ rev->rpt = mem_malloc(sizeof(struct rpt));
+ rev->mesg = mem_strdup(mesg);
+ rev->note = (note != NULL) ? mem_strdup(note) : 0;
rev->day = day;
rev->id = id;
rev->rpt->type = type;
rev->rpt->freq = freq;
rev->rpt->until = until;
- if (except)
- {
- exc_dup (&rev->exc, except);
- free_exc_list (except);
- }
- else
- LLIST_INIT (&rev->exc);
+ if (except) {
+ exc_dup(&rev->exc, except);
+ free_exc_list(except);
+ } else
+ LLIST_INIT(&rev->exc);
- LLIST_ADD_SORTED (&recur_elist, rev, recur_event_cmp_day);
+ LLIST_ADD_SORTED(&recur_elist, rev, recur_event_cmp_day);
return rev;
}
@@ -286,29 +261,27 @@ recur_event_new (char *mesg, char *note, long day, int id, int type, int freq,
* Correspondance between the defines on recursive type,
* and the letter to be written in file.
*/
-char
-recur_def2char (enum recur_type define)
+char recur_def2char(enum recur_type define)
{
char recur_char;
- switch (define)
- {
- case RECUR_DAILY:
- recur_char = 'D';
- break;
- case RECUR_WEEKLY:
- recur_char = 'W';
- break;
- case RECUR_MONTHLY:
- recur_char = 'M';
- break;
- case RECUR_YEARLY:
- recur_char = 'Y';
- break;
- default:
- EXIT (_("unknown repetition type"));
- return 0;
- }
+ switch (define) {
+ case RECUR_DAILY:
+ recur_char = 'D';
+ break;
+ case RECUR_WEEKLY:
+ recur_char = 'W';
+ break;
+ case RECUR_MONTHLY:
+ recur_char = 'M';
+ break;
+ case RECUR_YEARLY:
+ recur_char = 'Y';
+ break;
+ default:
+ EXIT(_("unknown repetition type"));
+ return 0;
+ }
return recur_char;
}
@@ -317,185 +290,166 @@ recur_def2char (enum recur_type define)
* Correspondance between the letters written in file and the defines
* concerning the recursive type.
*/
-int
-recur_char2def (char type)
+int recur_char2def(char type)
{
int recur_def;
- switch (type)
- {
- case 'D':
- recur_def = RECUR_DAILY;
- break;
- case 'W':
- recur_def = RECUR_WEEKLY;
- break;
- case 'M':
- recur_def = RECUR_MONTHLY;
- break;
- case 'Y':
- recur_def = RECUR_YEARLY;
- break;
- default:
- EXIT (_("unknown character"));
- return 0;
- }
+ switch (type) {
+ case 'D':
+ recur_def = RECUR_DAILY;
+ break;
+ case 'W':
+ recur_def = RECUR_WEEKLY;
+ break;
+ case 'M':
+ recur_def = RECUR_MONTHLY;
+ break;
+ case 'Y':
+ recur_def = RECUR_YEARLY;
+ break;
+ default:
+ EXIT(_("unknown character"));
+ return 0;
+ }
return recur_def;
}
/* Write days for which recurrent items should not be repeated. */
-static void
-recur_write_exc (llist_t *lexc, FILE *f)
+static void recur_write_exc(llist_t * lexc, FILE * f)
{
llist_item_t *i;
struct tm *lt;
time_t t;
int st_mon, st_day, st_year;
- LLIST_FOREACH (lexc, i)
- {
- struct excp *exc = LLIST_GET_DATA (i);
- t = exc->st;
- lt = localtime (&t);
- st_mon = lt->tm_mon + 1;
- st_day = lt->tm_mday;
- st_year = lt->tm_year + 1900;
- fprintf (f, " !%02u/%02u/%04u", st_mon, st_day, st_year);
- }
+ LLIST_FOREACH(lexc, i) {
+ struct excp *exc = LLIST_GET_DATA(i);
+ t = exc->st;
+ lt = localtime(&t);
+ st_mon = lt->tm_mon + 1;
+ st_day = lt->tm_mday;
+ st_year = lt->tm_year + 1900;
+ fprintf(f, " !%02u/%02u/%04u", st_mon, st_day, st_year);
+ }
}
/* Load the recursive appointment description */
-struct recur_apoint *
-recur_apoint_scan (FILE *f, struct tm start, struct tm end, char type,
- int freq, struct tm until, char *note, llist_t *exc,
- char state)
+struct recur_apoint *recur_apoint_scan(FILE * f, struct tm start, struct tm end,
+ char type, int freq, struct tm until,
+ char *note, llist_t * exc, char state)
{
char buf[BUFSIZ], *nl;
time_t tstart, tend, tuntil;
/* Read the appointment description */
- if (!fgets (buf, sizeof buf, f))
+ if (!fgets(buf, sizeof buf, f))
return NULL;
- nl = strchr (buf, '\n');
- if (nl)
- {
- *nl = '\0';
- }
+ nl = strchr(buf, '\n');
+ if (nl) {
+ *nl = '\0';
+ }
start.tm_sec = end.tm_sec = 0;
start.tm_isdst = end.tm_isdst = -1;
start.tm_year -= 1900;
start.tm_mon--;
end.tm_year -= 1900;
end.tm_mon--;
- tstart = mktime (&start);
- tend = mktime (&end);
-
- if (until.tm_year != 0)
- {
- until.tm_hour = 23;
- until.tm_min = 59;
- until.tm_sec = 0;
- until.tm_isdst = -1;
- until.tm_year -= 1900;
- until.tm_mon--;
- tuntil = mktime (&until);
- }
- else
- {
- tuntil = 0;
- }
- EXIT_IF (tstart == -1 || tend == -1 || tstart > tend || tuntil == -1,
- _("date error in appointment"));
-
- return recur_apoint_new (buf, note, tstart, tend - tstart, state,
- recur_char2def(type), freq, tuntil, exc);
+ tstart = mktime(&start);
+ tend = mktime(&end);
+
+ if (until.tm_year != 0) {
+ until.tm_hour = 23;
+ until.tm_min = 59;
+ until.tm_sec = 0;
+ until.tm_isdst = -1;
+ until.tm_year -= 1900;
+ until.tm_mon--;
+ tuntil = mktime(&until);
+ } else {
+ tuntil = 0;
+ }
+ EXIT_IF(tstart == -1 || tend == -1 || tstart > tend || tuntil == -1,
+ _("date error in appointment"));
+
+ return recur_apoint_new(buf, note, tstart, tend - tstart, state,
+ recur_char2def(type), freq, tuntil, exc);
}
/* Load the recursive events from file */
-struct recur_event *
-recur_event_scan (FILE *f, struct tm start, int id, char type, int freq,
- struct tm until, char *note, llist_t *exc)
+struct recur_event *recur_event_scan(FILE * f, struct tm start, int id,
+ char type, int freq, struct tm until,
+ char *note, llist_t * exc)
{
char buf[BUFSIZ], *nl;
time_t tstart, tuntil;
/* Read the event description */
- if (!fgets (buf, sizeof buf, f))
+ if (!fgets(buf, sizeof buf, f))
return NULL;
- nl = strchr (buf, '\n');
- if (nl)
- {
- *nl = '\0';
- }
+ nl = strchr(buf, '\n');
+ if (nl) {
+ *nl = '\0';
+ }
start.tm_hour = until.tm_hour = 0;
start.tm_min = until.tm_min = 0;
start.tm_sec = until.tm_sec = 0;
start.tm_isdst = until.tm_isdst = -1;
start.tm_year -= 1900;
start.tm_mon--;
- if (until.tm_year != 0)
- {
- until.tm_year -= 1900;
- until.tm_mon--;
- tuntil = mktime (&until);
- }
- else
- {
- tuntil = 0;
- }
- tstart = mktime (&start);
- EXIT_IF (tstart == -1 || tuntil == -1,
- _("date error in event"));
-
- return recur_event_new (buf, note, tstart, id, recur_char2def(type), freq,
- tuntil, exc);
+ if (until.tm_year != 0) {
+ until.tm_year -= 1900;
+ until.tm_mon--;
+ tuntil = mktime(&until);
+ } else {
+ tuntil = 0;
+ }
+ tstart = mktime(&start);
+ EXIT_IF(tstart == -1 || tuntil == -1, _("date error in event"));
+
+ return recur_event_new(buf, note, tstart, id, recur_char2def(type), freq,
+ tuntil, exc);
}
/* Writting of a recursive appointment into file. */
-void
-recur_apoint_write (struct recur_apoint *o, FILE *f)
+void recur_apoint_write(struct recur_apoint *o, FILE * f)
{
struct tm *lt;
time_t t;
t = o->start;
- lt = localtime (&t);
- fprintf (f, "%02u/%02u/%04u @ %02u:%02u", lt->tm_mon + 1, lt->tm_mday,
- 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
+ lt = localtime(&t);
+ fprintf(f, "%02u/%02u/%04u @ %02u:%02u", lt->tm_mon + 1, lt->tm_mday,
+ 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
t = o->start + o->dur;
- lt = localtime (&t);
- fprintf (f, " -> %02u/%02u/%04u @ %02u:%02u", lt->tm_mon + 1, lt->tm_mday,
- 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
+ lt = localtime(&t);
+ fprintf(f, " -> %02u/%02u/%04u @ %02u:%02u", lt->tm_mon + 1, lt->tm_mday,
+ 1900 + lt->tm_year, lt->tm_hour, lt->tm_min);
t = o->rpt->until;
- if (t == 0)
- { /* We have an endless recurrent appointment. */
- fprintf (f, " {%d%c", o->rpt->freq, recur_def2char (o->rpt->type));
- }
- else
- {
- lt = localtime (&t);
- fprintf (f, " {%d%c -> %02u/%02u/%04u", o->rpt->freq,
- recur_def2char (o->rpt->type), lt->tm_mon + 1, lt->tm_mday,
- 1900 + lt->tm_year);
- }
- recur_write_exc (&o->exc, f);
- fputs ("} ", f);
+ if (t == 0) { /* We have an endless recurrent appointment. */
+ fprintf(f, " {%d%c", o->rpt->freq, recur_def2char(o->rpt->type));
+ } else {
+ lt = localtime(&t);
+ fprintf(f, " {%d%c -> %02u/%02u/%04u", o->rpt->freq,
+ recur_def2char(o->rpt->type), lt->tm_mon + 1, lt->tm_mday,
+ 1900 + lt->tm_year);
+ }
+ recur_write_exc(&o->exc, f);
+ fputs("} ", f);
if (o->note != NULL)
- fprintf (f, ">%s ", o->note);
+ fprintf(f, ">%s ", o->note);
if (o->state & APOINT_NOTIFY)
- fputc ('!', f);
+ fputc('!', f);
else
- fputc ('|', f);
- fprintf (f, "%s\n", o->mesg);
+ fputc('|', f);
+ fprintf(f, "%s\n", o->mesg);
}
/* Writting of a recursive event into file. */
-void
-recur_event_write (struct recur_event *o, FILE *f)
+void recur_event_write(struct recur_event *o, FILE * f)
{
struct tm *lt;
time_t t;
@@ -503,55 +457,48 @@ recur_event_write (struct recur_event *o, FILE *f)
int end_mon, end_day, end_year;
t = o->day;
- lt = localtime (&t);
+ lt = localtime(&t);
st_mon = lt->tm_mon + 1;
st_day = lt->tm_mday;
st_year = lt->tm_year + 1900;
t = o->rpt->until;
- if (t == 0)
- { /* We have an endless recurrent event. */
- fprintf (f, "%02u/%02u/%04u [%d] {%d%c", st_mon, st_day, st_year, o->id,
- o->rpt->freq, recur_def2char (o->rpt->type));
- }
- else
- {
- lt = localtime (&t);
- end_mon = lt->tm_mon + 1;
- end_day = lt->tm_mday;
- end_year = lt->tm_year + 1900;
- fprintf (f, "%02u/%02u/%04u [%d] {%d%c -> %02u/%02u/%04u", st_mon,
- st_day, st_year, o->id, o->rpt->freq,
- recur_def2char (o->rpt->type), end_mon, end_day, end_year);
- }
- recur_write_exc (&o->exc, f);
- fputs ("} ", f);
+ if (t == 0) { /* We have an endless recurrent event. */
+ fprintf(f, "%02u/%02u/%04u [%d] {%d%c", st_mon, st_day, st_year, o->id,
+ o->rpt->freq, recur_def2char(o->rpt->type));
+ } else {
+ lt = localtime(&t);
+ end_mon = lt->tm_mon + 1;
+ end_day = lt->tm_mday;
+ end_year = lt->tm_year + 1900;
+ fprintf(f, "%02u/%02u/%04u [%d] {%d%c -> %02u/%02u/%04u", st_mon,
+ st_day, st_year, o->id, o->rpt->freq,
+ recur_def2char(o->rpt->type), end_mon, end_day, end_year);
+ }
+ recur_write_exc(&o->exc, f);
+ fputs("} ", f);
if (o->note != NULL)
- fprintf (f, ">%s ", o->note);
- fprintf (f, "%s\n", o->mesg);
+ fprintf(f, ">%s ", o->note);
+ fprintf(f, "%s\n", o->mesg);
}
/* Write recursive items to file. */
-void
-recur_save_data (FILE *f)
+void recur_save_data(FILE * f)
{
llist_item_t *i;
- LLIST_FOREACH (&recur_elist, i)
- {
- struct recur_event *rev = LLIST_GET_DATA (i);
- recur_event_write (rev, f);
- }
-
- LLIST_TS_LOCK (&recur_alist_p);
- LLIST_TS_FOREACH (&recur_alist_p, i)
- {
- struct recur_apoint *rapt = LLIST_GET_DATA (i);
- recur_apoint_write (rapt, f);
- }
- LLIST_TS_UNLOCK (&recur_alist_p);
+ LLIST_FOREACH(&recur_elist, i) {
+ struct recur_event *rev = LLIST_GET_DATA(i);
+ recur_event_write(rev, f);
+ }
+
+ LLIST_TS_LOCK(&recur_alist_p);
+ LLIST_TS_FOREACH(&recur_alist_p, i) {
+ struct recur_apoint *rapt = LLIST_GET_DATA(i);
+ recur_apoint_write(rapt, f);
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
}
-
/*
* The two following defines together with the diff_days, diff_months and
* diff_years functions were provided by Lukas Fleischer to correct the wrong
@@ -564,10 +511,8 @@ recur_save_data (FILE *f)
#define LEAPCOUNT(start, end) \
(BC(start, end, 4) - BC(start, end, 100) + BC(start, end, 400))
-
/* Calculate the difference in days between two dates. */
-static long
-diff_days (struct tm lt_start, struct tm lt_end)
+static long diff_days(struct tm lt_start, struct tm lt_end)
{
long diff;
@@ -576,19 +521,17 @@ diff_days (struct tm lt_start, struct tm lt_end)
diff = lt_end.tm_yday - lt_start.tm_yday;
- if (lt_end.tm_year > lt_start.tm_year)
- {
- diff += (lt_end.tm_year - lt_start.tm_year) * YEARINDAYS;
- diff += LEAPCOUNT (lt_start.tm_year + TM_YEAR_BASE,
- lt_end.tm_year + TM_YEAR_BASE - 1);
- }
+ if (lt_end.tm_year > lt_start.tm_year) {
+ diff += (lt_end.tm_year - lt_start.tm_year) * YEARINDAYS;
+ diff += LEAPCOUNT(lt_start.tm_year + TM_YEAR_BASE,
+ lt_end.tm_year + TM_YEAR_BASE - 1);
+ }
return diff;
}
/* Calculate the difference in months between two dates. */
-static long
-diff_months (struct tm lt_start, struct tm lt_end)
+static long diff_months(struct tm lt_start, struct tm lt_end)
{
long diff;
@@ -602,14 +545,12 @@ diff_months (struct tm lt_start, struct tm lt_end)
}
/* Calculate the difference in years between two dates. */
-static long
-diff_years (struct tm lt_start, struct tm lt_end)
+static long diff_years(struct tm lt_start, struct tm lt_end)
{
return lt_end.tm_year - lt_start.tm_year;
}
-static int
-exc_inday (struct excp *exc, long day_start)
+static int exc_inday(struct excp *exc, long day_start)
{
return (exc->st >= day_start && exc->st < day_start + DAYINSEC);
}
@@ -624,9 +565,9 @@ exc_inday (struct excp *exc, long day_start)
* calculation of recurrent dates after a turn of years.
*/
unsigned
-recur_item_find_occurrence (long item_start, long item_dur, llist_t *item_exc,
- int rpt_type, int rpt_freq, long rpt_until,
- long day_start, unsigned *occurrence)
+recur_item_find_occurrence(long item_start, long item_dur, llist_t * item_exc,
+ int rpt_type, int rpt_freq, long rpt_until,
+ long day_start, unsigned *occurrence)
{
struct date start_date;
long diff, span;
@@ -640,81 +581,77 @@ recur_item_find_occurrence (long item_start, long item_dur, llist_t *item_exc,
return 0;
t = day_start;
- lt_day = *localtime (&t);
+ lt_day = *localtime(&t);
t = item_start;
- lt_item = *localtime (&t);
+ lt_item = *localtime(&t);
lt_item_day = lt_item;
lt_item_day.tm_sec = lt_item_day.tm_min = lt_item_day.tm_hour = 0;
- span = (item_start - mktime (&lt_item_day) + item_dur - 1) / DAYINSEC;
-
- switch (rpt_type)
- {
- case RECUR_DAILY:
- diff = diff_days (lt_item_day, lt_day) % rpt_freq;
- lt_item_day.tm_mday = lt_day.tm_mday - diff;
- lt_item_day.tm_mon = lt_day.tm_mon;
- lt_item_day.tm_year = lt_day.tm_year;
- break;
- case RECUR_WEEKLY:
- diff = diff_days (lt_item_day, lt_day) % (rpt_freq * WEEKINDAYS);
- lt_item_day.tm_mday = lt_day.tm_mday - diff;
- lt_item_day.tm_mon = lt_day.tm_mon;
- lt_item_day.tm_year = lt_day.tm_year;
- break;
- case RECUR_MONTHLY:
- diff = diff_months (lt_item_day, lt_day) % rpt_freq;
- if (lt_day.tm_mday < lt_item_day.tm_mday)
- diff++;
- lt_item_day.tm_mon = lt_day.tm_mon - diff;
- lt_item_day.tm_year = lt_day.tm_year;
- break;
- case RECUR_YEARLY:
- diff = diff_years (lt_item_day, lt_day) % rpt_freq;
- if (lt_day.tm_mon < lt_item_day.tm_mon ||
- (lt_day.tm_mon == lt_item_day.tm_mon &&
- lt_day.tm_mday < lt_item_day.tm_mday))
- diff++;
- lt_item_day.tm_year = lt_day.tm_year - diff;
- break;
- default:
- EXIT (_("unknown item type"));
- }
+ span = (item_start - mktime(&lt_item_day) + item_dur - 1) / DAYINSEC;
+
+ switch (rpt_type) {
+ case RECUR_DAILY:
+ diff = diff_days(lt_item_day, lt_day) % rpt_freq;
+ lt_item_day.tm_mday = lt_day.tm_mday - diff;
+ lt_item_day.tm_mon = lt_day.tm_mon;
+ lt_item_day.tm_year = lt_day.tm_year;
+ break;
+ case RECUR_WEEKLY:
+ diff = diff_days(lt_item_day, lt_day) % (rpt_freq * WEEKINDAYS);
+ lt_item_day.tm_mday = lt_day.tm_mday - diff;
+ lt_item_day.tm_mon = lt_day.tm_mon;
+ lt_item_day.tm_year = lt_day.tm_year;
+ break;
+ case RECUR_MONTHLY:
+ diff = diff_months(lt_item_day, lt_day) % rpt_freq;
+ if (lt_day.tm_mday < lt_item_day.tm_mday)
+ diff++;
+ lt_item_day.tm_mon = lt_day.tm_mon - diff;
+ lt_item_day.tm_year = lt_day.tm_year;
+ break;
+ case RECUR_YEARLY:
+ diff = diff_years(lt_item_day, lt_day) % rpt_freq;
+ if (lt_day.tm_mon < lt_item_day.tm_mon ||
+ (lt_day.tm_mon == lt_item_day.tm_mon &&
+ lt_day.tm_mday < lt_item_day.tm_mday))
+ diff++;
+ lt_item_day.tm_year = lt_day.tm_year - diff;
+ break;
+ default:
+ EXIT(_("unknown item type"));
+ }
lt_item_day.tm_isdst = lt_day.tm_isdst;
- t = mktime (&lt_item_day);
+ t = mktime(&lt_item_day);
- if (LLIST_FIND_FIRST (item_exc, t, exc_inday))
+ if (LLIST_FIND_FIRST(item_exc, t, exc_inday))
return 0;
if (rpt_until != 0 && t > rpt_until)
return 0;
- lt_item_day = *localtime (&t);
- diff = diff_days (lt_item_day, lt_day);
-
- if (diff <= span)
- {
- if (occurrence)
- {
- start_date.dd = lt_item_day.tm_mday;
- start_date.mm = lt_item_day.tm_mon + 1;
- start_date.yyyy = lt_item_day.tm_year + 1900;
+ lt_item_day = *localtime(&t);
+ diff = diff_days(lt_item_day, lt_day);
- *occurrence = date2sec (start_date, lt_item.tm_hour, lt_item.tm_min);
- }
+ if (diff <= span) {
+ if (occurrence) {
+ start_date.dd = lt_item_day.tm_mday;
+ start_date.mm = lt_item_day.tm_mon + 1;
+ start_date.yyyy = lt_item_day.tm_year + 1900;
- return 1;
+ *occurrence = date2sec(start_date, lt_item.tm_hour, lt_item.tm_min);
}
- else
+
+ return 1;
+ } else
return 0;
}
unsigned
-recur_apoint_find_occurrence (struct recur_apoint *rapt, long day_start,
- unsigned *occurrence)
+recur_apoint_find_occurrence(struct recur_apoint *rapt, long day_start,
+ unsigned *occurrence)
{
return recur_item_find_occurrence(rapt->start, rapt->dur, &rapt->exc,
rapt->rpt->type, rapt->rpt->freq,
@@ -722,8 +659,8 @@ recur_apoint_find_occurrence (struct recur_apoint *rapt, long day_start,
}
unsigned
-recur_event_find_occurrence (struct recur_event *rev, long day_start,
- unsigned *occurrence)
+recur_event_find_occurrence(struct recur_event *rev, long day_start,
+ unsigned *occurrence)
{
return recur_item_find_occurrence(rev->day, DAYINSEC, &rev->exc,
rev->rpt->type, rev->rpt->freq,
@@ -732,8 +669,8 @@ recur_event_find_occurrence (struct recur_event *rev, long day_start,
/* Check if a recurrent item belongs to the selected day. */
unsigned
-recur_item_inday (long item_start, long item_dur, llist_t *item_exc,
- int rpt_type, int rpt_freq, long rpt_until, long day_start)
+recur_item_inday(long item_start, long item_dur, llist_t * item_exc,
+ int rpt_type, int rpt_freq, long rpt_until, long day_start)
{
/* We do not need the (real) start time of the occurrence here, so just
* ignore the buffer. */
@@ -741,15 +678,13 @@ recur_item_inday (long item_start, long item_dur, llist_t *item_exc,
rpt_freq, rpt_until, day_start, NULL);
}
-unsigned
-recur_apoint_inday(struct recur_apoint *rapt, long day_start)
+unsigned recur_apoint_inday(struct recur_apoint *rapt, long day_start)
{
return recur_item_inday(rapt->start, rapt->dur, &rapt->exc, rapt->rpt->type,
rapt->rpt->freq, rapt->rpt->until, day_start);
}
-unsigned
-recur_event_inday(struct recur_event *rev, long day_start)
+unsigned recur_event_inday(struct recur_event *rev, long day_start)
{
return recur_item_inday(rev->day, DAYINSEC, &rev->exc, rev->rpt->type,
rev->rpt->freq, rev->rpt->until, day_start);
@@ -760,44 +695,40 @@ recur_event_inday(struct recur_event *rev, long day_start)
* or delete only one occurence of the recurrent event.
*/
void
-recur_event_erase (long start, unsigned num, unsigned delete_whole,
- enum eraseflg flag)
+recur_event_erase(long start, unsigned num, unsigned delete_whole,
+ enum eraseflg flag)
{
llist_item_t *i;
- i = LLIST_FIND_NTH (&recur_elist, num, start, recur_event_inday);
+ i = LLIST_FIND_NTH(&recur_elist, num, start, recur_event_inday);
if (!i)
- EXIT (_("event not found"));
- struct recur_event *rev = LLIST_GET_DATA (i);
-
- if (delete_whole)
- {
- switch (flag)
- {
- case ERASE_FORCE_ONLY_NOTE:
- erase_note (&rev->note);
- break;
- case ERASE_CUT:
- recur_event_free_bkp ();
- recur_event_dup (rev, &bkp_cut_recur_event);
- erase_note (&rev->note);
- /* FALLTHROUGH */
- default:
- LLIST_REMOVE (&recur_elist, i);
- mem_free (rev->mesg);
- if (rev->rpt)
- {
- mem_free (rev->rpt);
- rev->rpt = 0;
- }
- free_exc_list (&rev->exc);
- mem_free (rev);
- break;
- }
+ EXIT(_("event not found"));
+ struct recur_event *rev = LLIST_GET_DATA(i);
+
+ if (delete_whole) {
+ switch (flag) {
+ case ERASE_FORCE_ONLY_NOTE:
+ erase_note(&rev->note);
+ break;
+ case ERASE_CUT:
+ recur_event_free_bkp();
+ recur_event_dup(rev, &bkp_cut_recur_event);
+ erase_note(&rev->note);
+ /* FALLTHROUGH */
+ default:
+ LLIST_REMOVE(&recur_elist, i);
+ mem_free(rev->mesg);
+ if (rev->rpt) {
+ mem_free(rev->rpt);
+ rev->rpt = 0;
+ }
+ free_exc_list(&rev->exc);
+ mem_free(rev);
+ break;
}
- else
- recur_add_exc (&rev->exc, start);
+ } else
+ recur_add_exc(&rev->exc, start);
}
/*
@@ -805,55 +736,50 @@ recur_event_erase (long start, unsigned num, unsigned delete_whole,
* or delete only one occurence of the recurrent appointment.
*/
void
-recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
- enum eraseflg flag)
+recur_apoint_erase(long start, unsigned num, unsigned delete_whole,
+ enum eraseflg flag)
{
llist_item_t *i;
int need_check_notify = 0;
- i = LLIST_TS_FIND_NTH (&recur_alist_p, num, start, recur_apoint_inday);
+ i = LLIST_TS_FIND_NTH(&recur_alist_p, num, start, recur_apoint_inday);
if (!i)
- EXIT (_("appointment not found"));
- struct recur_apoint *rapt = LLIST_GET_DATA (i);
-
- LLIST_TS_LOCK (&recur_alist_p);
- if (notify_bar () && flag != ERASE_FORCE_ONLY_NOTE)
- need_check_notify = notify_same_recur_item (rapt);
- if (delete_whole)
- {
- switch (flag)
- {
- case ERASE_FORCE_ONLY_NOTE:
- erase_note (&rapt->note);
- break;
- case ERASE_CUT:
- recur_apoint_free_bkp ();
- recur_apoint_dup (rapt, &bkp_cut_recur_apoint);
- erase_note (&rapt->note);
- /* FALLTHROUGH */
- default:
- LLIST_TS_REMOVE (&recur_alist_p, i);
- mem_free (rapt->mesg);
- if (rapt->rpt)
- {
- mem_free (rapt->rpt);
- rapt->rpt = 0;
- }
- free_exc_list (&rapt->exc);
- mem_free (rapt);
- if (need_check_notify)
- notify_check_next_app (0);
- break;
- }
- }
- else
- {
- recur_add_exc (&rapt->exc, start);
+ EXIT(_("appointment not found"));
+ struct recur_apoint *rapt = LLIST_GET_DATA(i);
+
+ LLIST_TS_LOCK(&recur_alist_p);
+ if (notify_bar() && flag != ERASE_FORCE_ONLY_NOTE)
+ need_check_notify = notify_same_recur_item(rapt);
+ if (delete_whole) {
+ switch (flag) {
+ case ERASE_FORCE_ONLY_NOTE:
+ erase_note(&rapt->note);
+ break;
+ case ERASE_CUT:
+ recur_apoint_free_bkp();
+ recur_apoint_dup(rapt, &bkp_cut_recur_apoint);
+ erase_note(&rapt->note);
+ /* FALLTHROUGH */
+ default:
+ LLIST_TS_REMOVE(&recur_alist_p, i);
+ mem_free(rapt->mesg);
+ if (rapt->rpt) {
+ mem_free(rapt->rpt);
+ rapt->rpt = 0;
+ }
+ free_exc_list(&rapt->exc);
+ mem_free(rapt);
if (need_check_notify)
- notify_check_next_app (0);
+ notify_check_next_app(0);
+ break;
}
- LLIST_TS_UNLOCK (&recur_alist_p);
+ } else {
+ recur_add_exc(&rapt->exc, start);
+ if (need_check_notify)
+ notify_check_next_app(0);
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
}
/*
@@ -863,8 +789,7 @@ recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
* o repetition end date
* and then delete the selected item to recreate it as a recurrent one
*/
-void
-recur_repeat_item (void)
+void recur_repeat_item(void)
{
struct tm *lt;
time_t t;
@@ -882,22 +807,19 @@ recur_repeat_item (void)
const char *mesg_freq_1 = _("Enter the repetition frequence:");
const char *mesg_wrong_freq = _("The frequence you entered is not valid.");
const char *mesg_until_1 =
- _("Enter the ending date: [%s] or '0' for an endless repetition");
+ _("Enter the ending date: [%s] or '0' for an endless repetition");
const char *mesg_wrong_1 = _("The entered date is not valid.");
const char *mesg_wrong_2 =
- _("Possible formats are [%s] or '0' for an endless repetition");
+ _("Possible formats are [%s] or '0' for an endless repetition");
const char *wrong_type_1 = _("This item is already a repeated one.");
const char *wrong_type_2 = _("Press [ENTER] to continue.");
const char *mesg_older =
- _("Sorry, the date you entered is older than the item start time.");
+ _("Sorry, the date you entered is older than the item start time.");
char msg_asktype[BUFSIZ];
- snprintf (msg_asktype, BUFSIZ, "%s %s, %s, %s, %s",
- msg_rpt_prefix,
- msg_rpt_daily,
- msg_rpt_weekly,
- msg_rpt_monthly,
- msg_rpt_yearly);
+ snprintf(msg_asktype, BUFSIZ, "%s %s, %s, %s, %s",
+ msg_rpt_prefix,
+ msg_rpt_daily, msg_rpt_weekly, msg_rpt_monthly, msg_rpt_yearly);
int type = 0, freq = 0;
int item_nb;
@@ -905,151 +827,123 @@ recur_repeat_item (void)
struct recur_apoint *ra;
long until, date;
- item_nb = apoint_hilt ();
- p = day_get_item (item_nb);
- if (p->type != APPT && p->type != EVNT)
- {
- status_mesg (wrong_type_1, wrong_type_2);
- wgetch (win[STA].p);
- return;
- }
-
- switch (status_ask_choice (msg_asktype, msg_type_choice, 4))
- {
- case 1:
- type = RECUR_DAILY;
- break;
- case 2:
- type = RECUR_WEEKLY;
- break;
- case 3:
- type = RECUR_MONTHLY;
- break;
- case 4:
- type = RECUR_YEARLY;
- break;
- default:
+ item_nb = apoint_hilt();
+ p = day_get_item(item_nb);
+ if (p->type != APPT && p->type != EVNT) {
+ status_mesg(wrong_type_1, wrong_type_2);
+ wgetch(win[STA].p);
+ return;
+ }
+
+ switch (status_ask_choice(msg_asktype, msg_type_choice, 4)) {
+ case 1:
+ type = RECUR_DAILY;
+ break;
+ case 2:
+ type = RECUR_WEEKLY;
+ break;
+ case 3:
+ type = RECUR_MONTHLY;
+ break;
+ case 4:
+ type = RECUR_YEARLY;
+ break;
+ default:
+ return;
+ }
+
+ while (freq == 0) {
+ status_mesg(mesg_freq_1, "");
+ if (getstring(win[STA].p, user_input, BUFSIZ, 0, 1) == GETSTRING_VALID) {
+ freq = atoi(user_input);
+ if (freq == 0) {
+ status_mesg(mesg_wrong_freq, wrong_type_2);
+ wgetch(win[STA].p);
+ }
+ user_input[0] = '\0';
+ } else
return;
- }
-
- while (freq == 0)
- {
- status_mesg (mesg_freq_1, "");
- if (getstring (win[STA].p, user_input, BUFSIZ, 0, 1) == GETSTRING_VALID)
- {
- freq = atoi (user_input);
- if (freq == 0)
- {
- status_mesg (mesg_wrong_freq, wrong_type_2);
- wgetch (win[STA].p);
- }
- user_input[0] = '\0';
- }
- else
- return;
- }
-
- while (!date_entered)
- {
- snprintf (outstr, BUFSIZ, mesg_until_1,
- DATEFMT_DESC (conf.input_datefmt));
- status_mesg (_(outstr), "");
- if (getstring (win[STA].p, user_input, BUFSIZ, 0, 1) == GETSTRING_VALID)
- {
- if (strlen (user_input) == 1 && strcmp (user_input, "0") == 0)
- {
- until = 0;
- date_entered = 1;
- }
- else
- {
- if (parse_date (user_input, conf.input_datefmt,
- &year, &month, &day, calendar_get_slctd_day ()))
- {
- t = p->start;
- lt = localtime (&t);
- until_date.dd = day;
- until_date.mm = month;
- until_date.yyyy = year;
- until = date2sec (until_date, lt->tm_hour, lt->tm_min);
- if (until < p->start)
- {
- status_mesg (mesg_older, wrong_type_2);
- wgetch (win[STA].p);
- date_entered = 0;
- }
- else
- {
- date_entered = 1;
- }
- }
- else
- {
- snprintf (outstr, BUFSIZ, mesg_wrong_2,
- DATEFMT_DESC (conf.input_datefmt));
- status_mesg (mesg_wrong_1, _(outstr));
- wgetch (win[STA].p);
- date_entered = 0;
- }
- }
+ }
+
+ while (!date_entered) {
+ snprintf(outstr, BUFSIZ, mesg_until_1, DATEFMT_DESC(conf.input_datefmt));
+ status_mesg(_(outstr), "");
+ if (getstring(win[STA].p, user_input, BUFSIZ, 0, 1) == GETSTRING_VALID) {
+ if (strlen(user_input) == 1 && strcmp(user_input, "0") == 0) {
+ until = 0;
+ date_entered = 1;
+ } else {
+ if (parse_date(user_input, conf.input_datefmt,
+ &year, &month, &day, calendar_get_slctd_day())) {
+ t = p->start;
+ lt = localtime(&t);
+ until_date.dd = day;
+ until_date.mm = month;
+ until_date.yyyy = year;
+ until = date2sec(until_date, lt->tm_hour, lt->tm_min);
+ if (until < p->start) {
+ status_mesg(mesg_older, wrong_type_2);
+ wgetch(win[STA].p);
+ date_entered = 0;
+ } else {
+ date_entered = 1;
+ }
+ } else {
+ snprintf(outstr, BUFSIZ, mesg_wrong_2,
+ DATEFMT_DESC(conf.input_datefmt));
+ status_mesg(mesg_wrong_1, _(outstr));
+ wgetch(win[STA].p);
+ date_entered = 0;
}
- else
- return;
- }
-
- date = calendar_get_slctd_day_sec ();
- if (p->type == EVNT)
- {
- recur_event_new (p->mesg, p->note, p->start, p->evnt_id, type, freq,
- until, NULL);
- }
- else if (p->type == APPT)
- {
- ra = recur_apoint_new (p->mesg, p->note, p->start, p->appt_dur,
- p->state, type, freq, until, NULL);
- if (notify_bar ())
- notify_check_repeated (ra);
- }
- else
- {
- EXIT (_("wrong item type"));
- /* NOTREACHED */
- }
- day_erase_item (date, item_nb, ERASE_FORCE);
+ }
+ } else
+ return;
+ }
+
+ date = calendar_get_slctd_day_sec();
+ if (p->type == EVNT) {
+ recur_event_new(p->mesg, p->note, p->start, p->evnt_id, type, freq,
+ until, NULL);
+ } else if (p->type == APPT) {
+ ra = recur_apoint_new(p->mesg, p->note, p->start, p->appt_dur,
+ p->state, type, freq, until, NULL);
+ if (notify_bar())
+ notify_check_repeated(ra);
+ } else {
+ EXIT(_("wrong item type"));
+ /* NOTREACHED */
+ }
+ day_erase_item(date, item_nb, ERASE_FORCE);
}
/*
* Read days for which recurrent items must not be repeated
* (such days are called exceptions).
*/
-void
-recur_exc_scan (llist_t *lexc, FILE *data_file)
+void recur_exc_scan(llist_t * lexc, FILE * data_file)
{
int c = 0;
struct tm day;
- LLIST_INIT (lexc);
- while ((c = getc (data_file)) == '!')
- {
- ungetc (c, data_file);
- if (fscanf (data_file, "!%d / %d / %d ",
- &day.tm_mon, &day.tm_mday, &day.tm_year) != 3)
- {
- EXIT (_("syntax error in item date"));
- }
- day.tm_hour = 0;
- day.tm_min = day.tm_sec = 0;
- day.tm_isdst = -1;
- day.tm_year -= 1900;
- day.tm_mon--;
- struct excp *exc = mem_malloc (sizeof (struct excp));
- exc->st = mktime (&day);
- LLIST_ADD (lexc, exc);
+ LLIST_INIT(lexc);
+ while ((c = getc(data_file)) == '!') {
+ ungetc(c, data_file);
+ if (fscanf(data_file, "!%d / %d / %d ",
+ &day.tm_mon, &day.tm_mday, &day.tm_year) != 3) {
+ EXIT(_("syntax error in item date"));
}
+ day.tm_hour = 0;
+ day.tm_min = day.tm_sec = 0;
+ day.tm_isdst = -1;
+ day.tm_year -= 1900;
+ day.tm_mon--;
+ struct excp *exc = mem_malloc(sizeof(struct excp));
+ exc->st = mktime(&day);
+ LLIST_ADD(lexc, exc);
+ }
}
-static int
-recur_apoint_starts_before (struct recur_apoint *rapt, long time)
+static int recur_apoint_starts_before(struct recur_apoint *rapt, long time)
{
return rapt->start < time;
}
@@ -1058,135 +952,126 @@ recur_apoint_starts_before (struct recur_apoint *rapt, long time)
* 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 *
-recur_apoint_check_next (struct notify_app *app, long start, long day)
+struct notify_app *recur_apoint_check_next(struct notify_app *app, long start,
+ long day)
{
llist_item_t *i;
unsigned real_recur_start_time;
- LLIST_TS_LOCK (&recur_alist_p);
- LLIST_TS_FIND_FOREACH (&recur_alist_p, app->time, recur_apoint_starts_before, i)
- {
- struct recur_apoint *rapt = LLIST_TS_GET_DATA (i);
-
- if (recur_apoint_find_occurrence (rapt, day, &real_recur_start_time) &&
- real_recur_start_time > start)
- {
- app->time = real_recur_start_time;
- app->txt = mem_strdup (rapt->mesg);
- app->state = rapt->state;
- app->got_app = 1;
- }
+ LLIST_TS_LOCK(&recur_alist_p);
+ LLIST_TS_FIND_FOREACH(&recur_alist_p, app->time, recur_apoint_starts_before,
+ i) {
+ struct recur_apoint *rapt = LLIST_TS_GET_DATA(i);
+
+ if (recur_apoint_find_occurrence(rapt, day, &real_recur_start_time) &&
+ real_recur_start_time > start) {
+ app->time = real_recur_start_time;
+ app->txt = mem_strdup(rapt->mesg);
+ app->state = rapt->state;
+ app->got_app = 1;
}
- LLIST_TS_UNLOCK (&recur_alist_p);
+ }
+ LLIST_TS_UNLOCK(&recur_alist_p);
return app;
}
/* Returns a structure containing the selected recurrent appointment. */
-struct recur_apoint *
-recur_get_apoint (long date, int num)
+struct recur_apoint *recur_get_apoint(long date, int num)
{
- llist_item_t *i = LLIST_TS_FIND_NTH (&recur_alist_p, num, date,
+ llist_item_t *i = LLIST_TS_FIND_NTH(&recur_alist_p, num, date,
recur_apoint_inday);
if (i)
- return LLIST_TS_GET_DATA (i);
+ return LLIST_TS_GET_DATA(i);
- EXIT (_("item not found"));
+ EXIT(_("item not found"));
/* NOTREACHED */
}
/* Returns a structure containing the selected recurrent event. */
-struct recur_event *
-recur_get_event (long date, int num)
+struct recur_event *recur_get_event(long date, int num)
{
- llist_item_t *i = LLIST_FIND_NTH (&recur_elist, num, date,
- recur_event_inday);
+ llist_item_t *i = LLIST_FIND_NTH(&recur_elist, num, date,
+ recur_event_inday);
if (i)
- return LLIST_GET_DATA (i);
+ return LLIST_GET_DATA(i);
- EXIT (_("item not found"));
+ EXIT(_("item not found"));
/* NOTREACHED */
}
/* Switch recurrent item notification state. */
-void
-recur_apoint_switch_notify (long date, int recur_nb)
+void recur_apoint_switch_notify(long date, int recur_nb)
{
llist_item_t *i;
- LLIST_TS_LOCK (&recur_alist_p);
- i = LLIST_TS_FIND_NTH (&recur_alist_p, recur_nb, date, recur_apoint_inday);
+ LLIST_TS_LOCK(&recur_alist_p);
+ i = LLIST_TS_FIND_NTH(&recur_alist_p, recur_nb, date, recur_apoint_inday);
if (!i)
- EXIT (_("item not found"));
- struct recur_apoint *rapt = LLIST_TS_GET_DATA (i);
+ EXIT(_("item not found"));
+ struct recur_apoint *rapt = LLIST_TS_GET_DATA(i);
rapt->state ^= APOINT_NOTIFY;
- if (notify_bar ())
- notify_check_repeated (rapt);
+ if (notify_bar())
+ notify_check_repeated(rapt);
- LLIST_TS_UNLOCK (&recur_alist_p);
+ LLIST_TS_UNLOCK(&recur_alist_p);
}
-void
-recur_event_paste_item (void)
+void recur_event_paste_item(void)
{
long new_start, time_shift;
llist_item_t *i;
- new_start = date2sec (*calendar_get_slctd_day (), 0, 0);
+ new_start = date2sec(*calendar_get_slctd_day(), 0, 0);
time_shift = new_start - bkp_cut_recur_event.day;
bkp_cut_recur_event.day += time_shift;
if (bkp_cut_recur_event.rpt->until != 0)
bkp_cut_recur_event.rpt->until += time_shift;
- LLIST_FOREACH (&bkp_cut_recur_event.exc, i)
- {
- struct excp *exc = LLIST_GET_DATA (i);
- exc->st += time_shift;
- }
-
- recur_event_new (bkp_cut_recur_event.mesg, bkp_cut_recur_event.note,
- bkp_cut_recur_event.day, bkp_cut_recur_event.id,
- bkp_cut_recur_event.rpt->type,
- bkp_cut_recur_event.rpt->freq,
- bkp_cut_recur_event.rpt->until, &bkp_cut_recur_event.exc);
- recur_event_free_bkp ();
+ LLIST_FOREACH(&bkp_cut_recur_event.exc, i) {
+ struct excp *exc = LLIST_GET_DATA(i);
+ exc->st += time_shift;
+ }
+
+ recur_event_new(bkp_cut_recur_event.mesg, bkp_cut_recur_event.note,
+ bkp_cut_recur_event.day, bkp_cut_recur_event.id,
+ bkp_cut_recur_event.rpt->type,
+ bkp_cut_recur_event.rpt->freq,
+ bkp_cut_recur_event.rpt->until, &bkp_cut_recur_event.exc);
+ recur_event_free_bkp();
}
-void
-recur_apoint_paste_item (void)
+void recur_apoint_paste_item(void)
{
long new_start, time_shift;
llist_item_t *i;
- new_start = date2sec (*calendar_get_slctd_day (),
- get_item_hour (bkp_cut_recur_apoint.start),
- get_item_min (bkp_cut_recur_apoint.start));
+ new_start = date2sec(*calendar_get_slctd_day(),
+ get_item_hour(bkp_cut_recur_apoint.start),
+ get_item_min(bkp_cut_recur_apoint.start));
time_shift = new_start - bkp_cut_recur_apoint.start;
bkp_cut_recur_apoint.start += time_shift;
if (bkp_cut_recur_apoint.rpt->until != 0)
bkp_cut_recur_apoint.rpt->until += time_shift;
- LLIST_FOREACH (&bkp_cut_recur_event.exc, i)
- {
- struct excp *exc = LLIST_GET_DATA (i);
- exc->st += time_shift;
- }
+ LLIST_FOREACH(&bkp_cut_recur_event.exc, i) {
+ struct excp *exc = LLIST_GET_DATA(i);
+ exc->st += time_shift;
+ }
- recur_apoint_new (bkp_cut_recur_apoint.mesg, bkp_cut_recur_apoint.note,
- bkp_cut_recur_apoint.start, bkp_cut_recur_apoint.dur,
- bkp_cut_recur_apoint.state, bkp_cut_recur_apoint.rpt->type,
- bkp_cut_recur_apoint.rpt->freq,
- bkp_cut_recur_apoint.rpt->until,
- &bkp_cut_recur_apoint.exc);
+ recur_apoint_new(bkp_cut_recur_apoint.mesg, bkp_cut_recur_apoint.note,
+ bkp_cut_recur_apoint.start, bkp_cut_recur_apoint.dur,
+ bkp_cut_recur_apoint.state, bkp_cut_recur_apoint.rpt->type,
+ bkp_cut_recur_apoint.rpt->freq,
+ bkp_cut_recur_apoint.rpt->until, &bkp_cut_recur_apoint.exc);
- if (notify_bar ())
- notify_check_repeated (&bkp_cut_recur_apoint);
+ if (notify_bar())
+ notify_check_repeated(&bkp_cut_recur_apoint);
- recur_apoint_free_bkp ();
+ recur_apoint_free_bkp();
}
diff --git a/src/sha1.c b/src/sha1.c
index e1bb8cc..4fbf245 100644
--- a/src/sha1.c
+++ b/src/sha1.c
@@ -67,61 +67,100 @@
#define R4(v, w, x, y, z, i) z += (w ^ x ^ y) + blk (i) + 0xCA62C1D6 + \
rol (v, 5); w = rol (w, 30);
-static void
-sha1_transform (uint32_t state[5], const uint8_t buffer[64])
+static void sha1_transform(uint32_t state[5], const uint8_t buffer[64])
{
typedef union {
uint8_t c[64];
uint32_t l[16];
} b64_t;
- b64_t *block = (b64_t *)buffer;
+ b64_t *block = (b64_t *) buffer;
uint32_t a = state[0];
uint32_t b = state[1];
uint32_t c = state[2];
uint32_t d = state[3];
uint32_t e = state[4];
- R0 (a, b, c, d, e, 0); R0 (e, a, b, c, d, 1);
- R0 (d, e, a, b, c, 2); R0 (c, d, e, a, b, 3);
- R0 (b, c, d, e, a, 4); R0 (a, b, c, d, e, 5);
- R0 (e, a, b, c, d, 6); R0 (d, e, a, b, c, 7);
- R0 (c, d, e, a, b, 8); R0 (b, c, d, e, a, 9);
- R0 (a, b, c, d, e, 10); R0 (e, a, b, c, d, 11);
- R0 (d, e, a, b, c, 12); R0 (c, d, e, a, b, 13);
- R0 (b, c, d, e, a, 14); R0 (a, b, c, d, e, 15);
- R1 (e, a, b, c, d, 16); R1 (d, e, a, b, c, 17);
- R1 (c, d, e, a, b, 18); R1 (b, c, d, e, a, 19);
- R2 (a, b, c, d, e, 20); R2 (e, a, b, c, d, 21);
- R2 (d, e, a, b, c, 22); R2 (c, d, e, a, b, 23);
- R2 (b, c, d, e, a, 24); R2 (a, b, c, d, e, 25);
- R2 (e, a, b, c, d, 26); R2 (d, e, a, b, c, 27);
- R2 (c, d, e, a, b, 28); R2 (b, c, d, e, a, 29);
- R2 (a, b, c, d, e, 30); R2 (e, a, b, c, d, 31);
- R2 (d, e, a, b, c, 32); R2 (c, d, e, a, b, 33);
- R2 (b, c, d, e, a, 34); R2 (a, b, c, d, e, 35);
- R2 (e, a, b, c, d, 36); R2 (d, e, a, b, c, 37);
- R2 (c, d, e, a, b, 38); R2 (b, c, d, e, a, 39);
- R3 (a, b, c, d, e, 40); R3 (e, a, b, c, d, 41);
- R3 (d, e, a, b, c, 42); R3 (c, d, e, a, b, 43);
- R3 (b, c, d, e, a, 44); R3 (a, b, c, d, e, 45);
- R3 (e, a, b, c, d, 46); R3 (d, e, a, b, c, 47);
- R3 (c, d, e, a, b, 48); R3 (b, c, d, e, a, 49);
- R3 (a, b, c, d, e, 50); R3 (e, a, b, c, d, 51);
- R3 (d, e, a, b, c, 52); R3 (c, d, e, a, b, 53);
- R3 (b, c, d, e, a, 54); R3 (a, b, c, d, e, 55);
- R3 (e, a, b, c, d, 56); R3 (d, e, a, b, c, 57);
- R3 (c, d, e, a, b, 58); R3 (b, c, d, e, a, 59);
- R4 (a, b, c, d, e, 60); R4 (e, a, b, c, d, 61);
- R4 (d, e, a, b, c, 62); R4 (c, d, e, a, b, 63);
- R4 (b, c, d, e, a, 64); R4 (a, b, c, d, e, 65);
- R4 (e, a, b, c, d, 66); R4 (d, e, a, b, c, 67);
- R4 (c, d, e, a, b, 68); R4 (b, c, d, e, a, 69);
- R4 (a, b, c, d, e, 70); R4 (e, a, b, c, d, 71);
- R4 (d, e, a, b, c, 72); R4 (c, d, e, a, b, 73);
- R4 (b, c, d, e, a, 74); R4 (a, b, c, d, e, 75);
- R4 (e, a, b, c, d, 76); R4 (d, e, a, b, c, 77);
- R4 (c, d, e, a, b, 78); R4 (b, c, d, e, a, 79);
+ R0(a, b, c, d, e, 0);
+ R0(e, a, b, c, d, 1);
+ R0(d, e, a, b, c, 2);
+ R0(c, d, e, a, b, 3);
+ R0(b, c, d, e, a, 4);
+ R0(a, b, c, d, e, 5);
+ R0(e, a, b, c, d, 6);
+ R0(d, e, a, b, c, 7);
+ R0(c, d, e, a, b, 8);
+ R0(b, c, d, e, a, 9);
+ R0(a, b, c, d, e, 10);
+ R0(e, a, b, c, d, 11);
+ R0(d, e, a, b, c, 12);
+ R0(c, d, e, a, b, 13);
+ R0(b, c, d, e, a, 14);
+ R0(a, b, c, d, e, 15);
+ R1(e, a, b, c, d, 16);
+ R1(d, e, a, b, c, 17);
+ R1(c, d, e, a, b, 18);
+ R1(b, c, d, e, a, 19);
+ R2(a, b, c, d, e, 20);
+ R2(e, a, b, c, d, 21);
+ R2(d, e, a, b, c, 22);
+ R2(c, d, e, a, b, 23);
+ R2(b, c, d, e, a, 24);
+ R2(a, b, c, d, e, 25);
+ R2(e, a, b, c, d, 26);
+ R2(d, e, a, b, c, 27);
+ R2(c, d, e, a, b, 28);
+ R2(b, c, d, e, a, 29);
+ R2(a, b, c, d, e, 30);
+ R2(e, a, b, c, d, 31);
+ R2(d, e, a, b, c, 32);
+ R2(c, d, e, a, b, 33);
+ R2(b, c, d, e, a, 34);
+ R2(a, b, c, d, e, 35);
+ R2(e, a, b, c, d, 36);
+ R2(d, e, a, b, c, 37);
+ R2(c, d, e, a, b, 38);
+ R2(b, c, d, e, a, 39);
+ R3(a, b, c, d, e, 40);
+ R3(e, a, b, c, d, 41);
+ R3(d, e, a, b, c, 42);
+ R3(c, d, e, a, b, 43);
+ R3(b, c, d, e, a, 44);
+ R3(a, b, c, d, e, 45);
+ R3(e, a, b, c, d, 46);
+ R3(d, e, a, b, c, 47);
+ R3(c, d, e, a, b, 48);
+ R3(b, c, d, e, a, 49);
+ R3(a, b, c, d, e, 50);
+ R3(e, a, b, c, d, 51);
+ R3(d, e, a, b, c, 52);
+ R3(c, d, e, a, b, 53);
+ R3(b, c, d, e, a, 54);
+ R3(a, b, c, d, e, 55);
+ R3(e, a, b, c, d, 56);
+ R3(d, e, a, b, c, 57);
+ R3(c, d, e, a, b, 58);
+ R3(b, c, d, e, a, 59);
+ R4(a, b, c, d, e, 60);
+ R4(e, a, b, c, d, 61);
+ R4(d, e, a, b, c, 62);
+ R4(c, d, e, a, b, 63);
+ R4(b, c, d, e, a, 64);
+ R4(a, b, c, d, e, 65);
+ R4(e, a, b, c, d, 66);
+ R4(d, e, a, b, c, 67);
+ R4(c, d, e, a, b, 68);
+ R4(b, c, d, e, a, 69);
+ R4(a, b, c, d, e, 70);
+ R4(e, a, b, c, d, 71);
+ R4(d, e, a, b, c, 72);
+ R4(c, d, e, a, b, 73);
+ R4(b, c, d, e, a, 74);
+ R4(a, b, c, d, e, 75);
+ R4(e, a, b, c, d, 76);
+ R4(d, e, a, b, c, 77);
+ R4(c, d, e, a, b, 78);
+ R4(b, c, d, e, a, 79);
state[0] += a;
state[1] += b;
@@ -132,9 +171,7 @@ sha1_transform (uint32_t state[5], const uint8_t buffer[64])
a = b = c = d = e = 0;
}
-
-void
-sha1_init (sha1_ctx_t *ctx)
+void sha1_init(sha1_ctx_t * ctx)
{
ctx->state[0] = 0x67452301;
ctx->state[1] = 0xEFCDAB89;
@@ -145,8 +182,7 @@ sha1_init (sha1_ctx_t *ctx)
ctx->count[0] = ctx->count[1] = 0;
}
-void
-sha1_update (sha1_ctx_t *ctx, const uint8_t *data, unsigned int len)
+void sha1_update(sha1_ctx_t * ctx, const uint8_t * data, unsigned int len)
{
unsigned int i, j;
@@ -155,67 +191,59 @@ sha1_update (sha1_ctx_t *ctx, const uint8_t *data, unsigned int len)
ctx->count[1]++;
ctx->count[1] += (len >> 29);
- if (j + len > 63)
- {
- memcpy (&ctx->buffer[j], data, (i = 64 - j));
- sha1_transform (ctx->state, ctx->buffer);
- for (; i + 63 < len; i += 64)
- sha1_transform (ctx->state, &data[i]);
- j = 0;
- }
- else
+ if (j + len > 63) {
+ memcpy(&ctx->buffer[j], data, (i = 64 - j));
+ sha1_transform(ctx->state, ctx->buffer);
+ for (; i + 63 < len; i += 64)
+ sha1_transform(ctx->state, &data[i]);
+ j = 0;
+ } else
i = 0;
- memcpy (&ctx->buffer[j], &data[i], len - i);
+ memcpy(&ctx->buffer[j], &data[i], len - i);
}
-
-void
-sha1_final (sha1_ctx_t *ctx, uint8_t digest[SHA1_DIGESTLEN])
+void sha1_final(sha1_ctx_t * ctx, uint8_t digest[SHA1_DIGESTLEN])
{
uint32_t i, j;
- uint8_t finalcount[8];
+ uint8_t finalcount[8];
- for (i = 0; i < 8; i++)
- {
- finalcount[i] = (uint8_t)((ctx->count[(i >= 4 ? 0 : 1)] >>
- ((3 - (i & 3)) * 8)) & 255);
- }
+ for (i = 0; i < 8; i++) {
+ finalcount[i] = (uint8_t) ((ctx->count[(i >= 4 ? 0 : 1)] >>
+ ((3 - (i & 3)) * 8)) & 255);
+ }
- sha1_update (ctx, (uint8_t *)"\200", 1);
+ sha1_update(ctx, (uint8_t *) "\200", 1);
while ((ctx->count[0] & 504) != 448)
- sha1_update (ctx, (uint8_t *)"\0", 1);
+ sha1_update(ctx, (uint8_t *) "\0", 1);
- sha1_update (ctx, finalcount, 8);
+ sha1_update(ctx, finalcount, 8);
for (i = 0; i < SHA1_DIGESTLEN; i++)
- digest[i] = (uint8_t)((ctx->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255);
+ digest[i] = (uint8_t) ((ctx->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255);
i = j = 0;
- memset (ctx->buffer, 0, SHA1_BLOCKLEN);
- memset (ctx->state, 0, SHA1_DIGESTLEN);
- memset (ctx->count, 0, 8);
- memset (&finalcount, 0, 8);
+ memset(ctx->buffer, 0, SHA1_BLOCKLEN);
+ memset(ctx->state, 0, SHA1_DIGESTLEN);
+ memset(ctx->count, 0, 8);
+ memset(&finalcount, 0, 8);
}
-void
-sha1_digest (const char *data, char *buffer)
+void sha1_digest(const char *data, char *buffer)
{
sha1_ctx_t ctx;
uint8_t digest[SHA1_DIGESTLEN];
int i;
- sha1_init (&ctx);
- sha1_update (&ctx, (const uint8_t *)data, strlen (data));
- sha1_final (&ctx, (uint8_t *)digest);
+ sha1_init(&ctx);
+ sha1_update(&ctx, (const uint8_t *)data, strlen(data));
+ sha1_final(&ctx, (uint8_t *) digest);
- for (i = 0; i < SHA1_DIGESTLEN; i++)
- {
- snprintf (buffer, 3, "%02x", digest[i]);
- buffer += sizeof (char) * 2;
- }
+ for (i = 0; i < SHA1_DIGESTLEN; i++) {
+ snprintf(buffer, 3, "%02x", digest[i]);
+ buffer += sizeof(char) * 2;
+ }
}
-void
-sha1_stream (FILE *fp, char *buffer)
+void sha1_stream(FILE * fp, char *buffer)
{
sha1_ctx_t ctx;
uint8_t data[BUFSIZ];
@@ -223,19 +251,17 @@ sha1_stream (FILE *fp, char *buffer)
uint8_t digest[SHA1_DIGESTLEN];
int i;
- sha1_init (&ctx);
+ sha1_init(&ctx);
- while (!feof (fp))
- {
- bytes_read = fread (data, 1, BUFSIZ, fp);
- sha1_update (&ctx, data, bytes_read);
- }
+ while (!feof(fp)) {
+ bytes_read = fread(data, 1, BUFSIZ, fp);
+ sha1_update(&ctx, data, bytes_read);
+ }
- sha1_final (&ctx, (uint8_t *)digest);
+ sha1_final(&ctx, (uint8_t *) digest);
- for (i = 0; i < SHA1_DIGESTLEN; i++)
- {
- snprintf (buffer, 3, "%02x", digest[i]);
- buffer += sizeof (char) * 2;
- }
+ for (i = 0; i < SHA1_DIGESTLEN; i++) {
+ snprintf(buffer, 3, "%02x", digest[i]);
+ buffer += sizeof(char) * 2;
+ }
}
diff --git a/src/sha1.h b/src/sha1.h
index 4c3605c..8f90ff5 100644
--- a/src/sha1.h
+++ b/src/sha1.h
@@ -50,8 +50,8 @@ typedef struct {
uint8_t buffer[SHA1_BLOCKLEN];
} sha1_ctx_t;
-void sha1_init (sha1_ctx_t *);
-void sha1_update (sha1_ctx_t *, const uint8_t *, unsigned int);
-void sha1_final (sha1_ctx_t *, uint8_t *);
-void sha1_digest (const char *, char *);
-void sha1_stream (FILE *, char *);
+void sha1_init(sha1_ctx_t *);
+void sha1_update(sha1_ctx_t *, const uint8_t *, unsigned int);
+void sha1_final(sha1_ctx_t *, uint8_t *);
+void sha1_digest(const char *, char *);
+void sha1_stream(FILE *, char *);
diff --git a/src/sigs.c b/src/sigs.c
index f74ba7b..4f5d982 100644
--- a/src/sigs.c
+++ b/src/sigs.c
@@ -53,57 +53,48 @@
* This is needed to avoid zombie processes running on system.
* Also catch CTRL-C (SIGINT), and SIGWINCH to resize screen automatically.
*/
-static void
-generic_hdlr (int sig)
+static void generic_hdlr(int sig)
{
- switch (sig)
- {
- case SIGCHLD:
- while (waitpid (WAIT_MYPGRP, NULL, WNOHANG) > 0)
- ;
- break;
- case SIGWINCH:
- resize = 1;
- clearok (curscr, TRUE);
- ungetch (KEY_RESIZE);
- break;
- case SIGTERM:
- if (unlink (path_cpid) != 0)
- {
- EXIT (_("Could not remove calcurse lock file: %s\n"),
- strerror (errno));
- }
- exit (EXIT_SUCCESS);
- break;
+ switch (sig) {
+ case SIGCHLD:
+ while (waitpid(WAIT_MYPGRP, NULL, WNOHANG) > 0) ;
+ break;
+ case SIGWINCH:
+ resize = 1;
+ clearok(curscr, TRUE);
+ ungetch(KEY_RESIZE);
+ break;
+ case SIGTERM:
+ if (unlink(path_cpid) != 0) {
+ EXIT(_("Could not remove calcurse lock file: %s\n"), strerror(errno));
}
+ exit(EXIT_SUCCESS);
+ break;
+ }
}
-unsigned
-sigs_set_hdlr (int sig, void (*handler)(int))
+unsigned sigs_set_hdlr(int sig, void (*handler) (int))
{
struct sigaction sa;
- memset (&sa, 0, sizeof sa);
- sigemptyset (&sa.sa_mask);
+ memset(&sa, 0, sizeof sa);
+ sigemptyset(&sa.sa_mask);
sa.sa_handler = handler;
sa.sa_flags = 0;
- if (sigaction (sig, &sa, NULL) == -1)
- {
- ERROR_MSG (_("Error setting signal #%d : %s\n"),
- sig, strerror (errno));
- return 0;
- }
+ if (sigaction(sig, &sa, NULL) == -1) {
+ ERROR_MSG(_("Error setting signal #%d : %s\n"), sig, strerror(errno));
+ return 0;
+ }
return 1;
}
/* Signal handling init. */
-void
-sigs_init ()
+void sigs_init()
{
- if (!sigs_set_hdlr (SIGCHLD, generic_hdlr)
- || !sigs_set_hdlr (SIGWINCH, generic_hdlr)
- || !sigs_set_hdlr (SIGTERM, generic_hdlr)
- || !sigs_set_hdlr (SIGINT, SIG_IGN))
- exit_calcurse (1);
+ if (!sigs_set_hdlr(SIGCHLD, generic_hdlr)
+ || !sigs_set_hdlr(SIGWINCH, generic_hdlr)
+ || !sigs_set_hdlr(SIGTERM, generic_hdlr)
+ || !sigs_set_hdlr(SIGINT, SIG_IGN))
+ exit_calcurse(1);
}
diff --git a/src/todo.c b/src/todo.c
index 50180f4..bb29f61 100644
--- a/src/todo.c
+++ b/src/todo.c
@@ -47,67 +47,57 @@ static int first = 1;
static char *msgsav;
/* Returns a structure containing the selected item. */
-static struct todo *
-todo_get_item (int item_number)
+static struct todo *todo_get_item(int item_number)
{
- return LLIST_GET_DATA (LLIST_NTH (&todolist, item_number - 1));
+ return LLIST_GET_DATA(LLIST_NTH(&todolist, item_number - 1));
}
/* Sets which todo is highlighted. */
-void
-todo_hilt_set (int highlighted)
+void todo_hilt_set(int highlighted)
{
hilt = highlighted;
}
-void
-todo_hilt_decrease (int n)
+void todo_hilt_decrease(int n)
{
hilt -= n;
}
-void
-todo_hilt_increase (int n)
+void todo_hilt_increase(int n)
{
hilt += n;
}
/* Return which todo is highlighted. */
-int
-todo_hilt (void)
+int todo_hilt(void)
{
return hilt;
}
/* Return the number of todos. */
-int
-todo_nb (void)
+int todo_nb(void)
{
return todos;
}
/* Set the number of todos. */
-void
-todo_set_nb (int nb)
+void todo_set_nb(int nb)
{
todos = nb;
}
/* Set which one is the first todo to be displayed. */
-void
-todo_set_first (int nb)
+void todo_set_first(int nb)
{
first = nb;
}
-void
-todo_first_increase (int n)
+void todo_first_increase(int n)
{
first += n;
}
-void
-todo_first_decrease (int n)
+void todo_first_decrease(int n)
{
first -= n;
}
@@ -116,51 +106,46 @@ todo_first_decrease (int n)
* Return the position of the hilghlighted item, relative to the first one
* displayed.
*/
-int
-todo_hilt_pos (void)
+int todo_hilt_pos(void)
{
return hilt - first;
}
/* Return the last visited todo. */
-char *
-todo_saved_mesg (void)
+char *todo_saved_mesg(void)
{
return msgsav;
}
/* Request user to enter a new todo item. */
-void
-todo_new_item (void)
+void todo_new_item(void)
{
int ch = 0;
const char *mesg = _("Enter the new ToDo item : ");
- const char *mesg_id = _("Enter the ToDo priority [1 (highest) - 9 (lowest)] :");
+ const char *mesg_id =
+ _("Enter the ToDo priority [1 (highest) - 9 (lowest)] :");
char todo_input[BUFSIZ] = "";
- status_mesg (mesg, "");
- if (getstring (win[STA].p, todo_input, BUFSIZ, 0, 1) == GETSTRING_VALID)
- {
- while ((ch < '1') || (ch > '9'))
- {
- status_mesg (mesg_id, "");
- ch = wgetch (win[STA].p);
- }
- todo_add (todo_input, ch - '0', NULL);
- todos++;
+ status_mesg(mesg, "");
+ if (getstring(win[STA].p, todo_input, BUFSIZ, 0, 1) == GETSTRING_VALID) {
+ while ((ch < '1') || (ch > '9')) {
+ status_mesg(mesg_id, "");
+ ch = wgetch(win[STA].p);
}
+ todo_add(todo_input, ch - '0', NULL);
+ todos++;
+ }
}
-static int
-todo_cmp_id (struct todo *a, struct todo *b)
+static int todo_cmp_id(struct todo *a, struct todo *b)
{
/*
* As of version 2.6, todo items can have a negative id, which means they
* were completed. To keep them sorted, we need to consider the absolute id
* value.
*/
- int abs_a = abs (a->id);
- int abs_b = abs (b->id);
+ int abs_a = abs(a->id);
+ int abs_b = abs(b->id);
return abs_a < abs_b ? -1 : (abs_a == abs_b ? 0 : 1);
}
@@ -168,59 +153,55 @@ todo_cmp_id (struct todo *a, struct todo *b)
/*
* Add an item in the todo linked list.
*/
-struct todo *
-todo_add (char *mesg, int id, char *note)
+struct todo *todo_add(char *mesg, int id, char *note)
{
struct todo *todo;
- todo = mem_malloc (sizeof (struct todo));
- todo->mesg = mem_strdup (mesg);
+ todo = mem_malloc(sizeof(struct todo));
+ todo->mesg = mem_strdup(mesg);
todo->id = id;
- todo->note = (note != NULL && note[0] != '\0') ? mem_strdup (note) : NULL;
+ todo->note = (note != NULL && note[0] != '\0') ? mem_strdup(note) : NULL;
- LLIST_ADD_SORTED (&todolist, todo, todo_cmp_id);
+ LLIST_ADD_SORTED(&todolist, todo, todo_cmp_id);
return todo;
}
-void
-todo_write (struct todo *todo, FILE *f)
+void todo_write(struct todo *todo, FILE * f)
{
if (todo->note)
- fprintf (f, "[%d]>%s %s\n", todo->id, todo->note, todo->mesg);
+ fprintf(f, "[%d]>%s %s\n", todo->id, todo->note, todo->mesg);
else
- fprintf (f, "[%d] %s\n", todo->id, todo->mesg);
+ fprintf(f, "[%d] %s\n", todo->id, todo->mesg);
}
/* Delete a note previously attached to a todo item. */
-static void
-todo_delete_note_bynum (unsigned num)
+static void todo_delete_note_bynum(unsigned num)
{
- llist_item_t *i = LLIST_NTH (&todolist, num);
+ llist_item_t *i = LLIST_NTH(&todolist, num);
if (!i)
- EXIT (_("no such todo"));
- struct todo *todo = LLIST_TS_GET_DATA (i);
+ EXIT(_("no such todo"));
+ struct todo *todo = LLIST_TS_GET_DATA(i);
if (!todo->note)
- EXIT (_("no note attached"));
- erase_note (&todo->note);
+ EXIT(_("no note attached"));
+ erase_note(&todo->note);
}
/* Delete an item from the todo linked list. */
-static void
-todo_delete_bynum (unsigned num)
+static void todo_delete_bynum(unsigned num)
{
- llist_item_t *i = LLIST_NTH (&todolist, num);
+ llist_item_t *i = LLIST_NTH(&todolist, num);
if (!i)
- EXIT (_("no such todo"));
- struct todo *todo = LLIST_TS_GET_DATA (i);
+ EXIT(_("no such todo"));
+ struct todo *todo = LLIST_TS_GET_DATA(i);
- LLIST_REMOVE (&todolist, i);
- mem_free (todo->mesg);
- erase_note (&todo->note);
- mem_free (todo);
+ LLIST_REMOVE(&todolist, i);
+ mem_free(todo->mesg);
+ erase_note(&todo->note);
+ mem_free(todo);
}
/*
@@ -229,18 +210,16 @@ todo_delete_bynum (unsigned num)
* This way, it is easy to retrive its original priority if the user decides
* that in fact it was not completed.
*/
-void
-todo_flag (void)
+void todo_flag(void)
{
struct todo *t;
- t = todo_get_item (hilt);
+ t = todo_get_item(hilt);
t->id = -t->id;
}
/* Delete an item from the ToDo list. */
-void
-todo_delete (void)
+void todo_delete(void)
{
const char *del_todo_str = _("Do you really want to delete this task ?");
const char *erase_warning =
@@ -251,116 +230,109 @@ todo_delete (void)
int answer;
if ((todos <= 0) ||
- (conf.confirm_delete && (status_ask_bool (del_todo_str) != 1)))
- {
- wins_erase_status_bar ();
- return;
- }
+ (conf.confirm_delete && (status_ask_bool(del_todo_str) != 1))) {
+ wins_erase_status_bar();
+ return;
+ }
/* This todo item doesn't have any note associated. */
- if (todo_get_item (hilt)->note == NULL)
+ if (todo_get_item(hilt)->note == NULL)
answer = 1;
else
- answer = status_ask_choice (erase_warning, erase_choice, nb_erase_choice);
-
- switch (answer)
- {
- case 1:
- todo_delete_bynum (hilt - 1);
- todos--;
- if (hilt > 1)
- hilt--;
- if (todos == 0)
- hilt = 0;
- if (hilt - first < 0)
- first--;
- break;
- case 2:
- todo_delete_note_bynum (hilt - 1);
- break;
- default:
- wins_erase_status_bar ();
- return;
- }
+ answer = status_ask_choice(erase_warning, erase_choice, nb_erase_choice);
+
+ switch (answer) {
+ case 1:
+ todo_delete_bynum(hilt - 1);
+ todos--;
+ if (hilt > 1)
+ hilt--;
+ if (todos == 0)
+ hilt = 0;
+ if (hilt - first < 0)
+ first--;
+ break;
+ case 2:
+ todo_delete_note_bynum(hilt - 1);
+ break;
+ default:
+ wins_erase_status_bar();
+ return;
+ }
}
/*
* Returns the position into the linked list corresponding to the
* given todo item.
*/
-static int
-todo_get_position (struct todo *needle)
+static int todo_get_position(struct todo *needle)
{
llist_item_t *i;
int n = 0;
- LLIST_FOREACH (&todolist, i)
- {
- n++;
- if (LLIST_TS_GET_DATA (i) == needle)
- return n;
- }
+ LLIST_FOREACH(&todolist, i) {
+ n++;
+ if (LLIST_TS_GET_DATA(i) == needle)
+ return n;
+ }
- EXIT (_("todo not found"));
- return -1; /* avoid compiler warnings */
+ EXIT(_("todo not found"));
+ return -1; /* avoid compiler warnings */
}
/* Change an item priority by pressing '+' or '-' inside TODO panel. */
-void
-todo_chg_priority (int action)
+void todo_chg_priority(int action)
{
struct todo *backup;
char backup_mesg[BUFSIZ];
int backup_id;
char backup_note[MAX_NOTESIZ + 1];
- backup = todo_get_item (hilt);
- strncpy (backup_mesg, backup->mesg, strlen (backup->mesg) + 1);
+ backup = todo_get_item(hilt);
+ strncpy(backup_mesg, backup->mesg, strlen(backup->mesg) + 1);
backup_id = backup->id;
if (backup->note)
- strncpy (backup_note, backup->note, MAX_NOTESIZ + 1);
+ strncpy(backup_note, backup->note, MAX_NOTESIZ + 1);
else
backup_note[0] = '\0';
- switch (action)
- {
- case KEY_RAISE_PRIORITY:
- if (backup_id > 1)
- backup_id--;
- else
- return;
- break;
- case KEY_LOWER_PRIORITY:
- if (backup_id > 0 && backup_id < 9)
- backup_id++;
- else
- return;
- break;
- default:
- EXIT (_("no such action"));
- /* NOTREACHED */
- }
-
- todo_delete_bynum (hilt - 1);
- backup = todo_add (backup_mesg, backup_id, backup_note);
- hilt = todo_get_position (backup);
+ switch (action) {
+ case KEY_RAISE_PRIORITY:
+ if (backup_id > 1)
+ backup_id--;
+ else
+ return;
+ break;
+ case KEY_LOWER_PRIORITY:
+ if (backup_id > 0 && backup_id < 9)
+ backup_id++;
+ else
+ return;
+ break;
+ default:
+ EXIT(_("no such action"));
+ /* NOTREACHED */
+ }
+
+ todo_delete_bynum(hilt - 1);
+ backup = todo_add(backup_mesg, backup_id, backup_note);
+ hilt = todo_get_position(backup);
}
/* Edit the description of an already existing todo item. */
-void
-todo_edit_item (void)
+void todo_edit_item(void)
{
struct todo *i;
const char *mesg = _("Enter the new ToDo description :");
- status_mesg (mesg, "");
- i = todo_get_item (hilt);
- updatestring (win[STA].p, &i->mesg, 0, 1);
+ status_mesg(mesg, "");
+ i = todo_get_item(hilt);
+ updatestring(win[STA].p, &i->mesg, 0, 1);
}
/* Display todo items in the corresponding panel. */
static void
-display_todo_item (int incolor, char *msg, int prio, int note, int width, int y,
- int x)
+display_todo_item(int incolor, char *msg, int prio, int note, int width, int y,
+ int x)
{
WINDOW *w;
int ch_note;
@@ -370,35 +342,32 @@ display_todo_item (int incolor, char *msg, int prio, int note, int width, int y,
w = win[TOD].p;
ch_note = (note) ? '>' : '.';
if (prio > 0)
- snprintf (priostr, sizeof priostr, "%d", prio);
+ snprintf(priostr, sizeof priostr, "%d", prio);
else
- strncpy (priostr, "X", sizeof priostr);
+ strncpy(priostr, "X", sizeof priostr);
if (incolor == 0)
- custom_apply_attr (w, ATTR_HIGHEST);
- if (utf8_strwidth (msg) < width)
- mvwprintw (w, y, x, "%s%c %s", priostr, ch_note, msg);
- else
- {
- for (i = 0; msg[i] && width > 0; i++)
- {
- if (!UTF8_ISCONT (msg[i]))
- width -= utf8_width (&msg[i]);
- buf[i] = msg[i];
- }
- if (i)
- buf[i - 1] = 0;
- else
- buf[0] = 0;
- mvwprintw (w, y, x, "%s%c %s...", priostr, ch_note, buf);
+ custom_apply_attr(w, ATTR_HIGHEST);
+ if (utf8_strwidth(msg) < width)
+ mvwprintw(w, y, x, "%s%c %s", priostr, ch_note, msg);
+ else {
+ for (i = 0; msg[i] && width > 0; i++) {
+ if (!UTF8_ISCONT(msg[i]))
+ width -= utf8_width(&msg[i]);
+ buf[i] = msg[i];
}
+ if (i)
+ buf[i - 1] = 0;
+ else
+ buf[0] = 0;
+ mvwprintw(w, y, x, "%s%c %s...", priostr, ch_note, buf);
+ }
if (incolor == 0)
- custom_remove_attr (w, ATTR_HIGHEST);
+ custom_remove_attr(w, ATTR_HIGHEST);
}
/* Updates the ToDo panel. */
-void
-todo_update_panel (int which_pan)
+void todo_update_panel(int which_pan)
{
llist_item_t *i;
int len = win[TOD].w - 8;
@@ -411,62 +380,54 @@ todo_update_panel (int which_pan)
int incolor = -1;
/* Print todo item in the panel. */
- erase_window_part (win[TOD].p, 1, title_lines, win[TOD].w - 2,
- win[TOD].h - 2);
- LLIST_FOREACH (&todolist, i)
- {
- struct todo *todo = LLIST_TS_GET_DATA (i);
- num_todo++;
- t_realpos = num_todo - first;
- incolor = (which_pan == TOD) ? num_todo - hilt : num_todo;
- if (incolor == 0)
- msgsav = todo->mesg;
- if (t_realpos >= 0 && t_realpos < max_items)
- {
- display_todo_item (incolor, todo->mesg, todo->id,
- (todo->note != NULL) ? 1 : 0, len, y_offset,
- x_offset);
- y_offset = y_offset + todo_lines;
- }
+ erase_window_part(win[TOD].p, 1, title_lines, win[TOD].w - 2, win[TOD].h - 2);
+ LLIST_FOREACH(&todolist, i) {
+ struct todo *todo = LLIST_TS_GET_DATA(i);
+ num_todo++;
+ t_realpos = num_todo - first;
+ incolor = (which_pan == TOD) ? num_todo - hilt : num_todo;
+ if (incolor == 0)
+ msgsav = todo->mesg;
+ if (t_realpos >= 0 && t_realpos < max_items) {
+ display_todo_item(incolor, todo->mesg, todo->id,
+ (todo->note != NULL) ? 1 : 0, len, y_offset, x_offset);
+ y_offset = y_offset + todo_lines;
}
+ }
/* Draw the scrollbar if necessary. */
- if (todos > max_items)
- {
- float ratio = ((float) max_items) / ((float) todos);
- int sbar_length = (int) (ratio * (max_items + 1));
- int highend = (int) (ratio * first);
- unsigned hilt_bar = (which_pan == TOD) ? 1 : 0;
- int sbar_top = highend + title_lines;
-
- if ((sbar_top + sbar_length) > win[TOD].h - 1)
- sbar_length = win[TOD].h - 1 - sbar_top;
- draw_scrollbar (win[TOD].p, sbar_top, win[TOD].w - 2,
- sbar_length, title_lines, win[TOD].h - 1, hilt_bar);
- }
-
- wnoutrefresh (win[TOD].p);
+ if (todos > max_items) {
+ float ratio = ((float)max_items) / ((float)todos);
+ int sbar_length = (int)(ratio * (max_items + 1));
+ int highend = (int)(ratio * first);
+ unsigned hilt_bar = (which_pan == TOD) ? 1 : 0;
+ int sbar_top = highend + title_lines;
+
+ if ((sbar_top + sbar_length) > win[TOD].h - 1)
+ sbar_length = win[TOD].h - 1 - sbar_top;
+ draw_scrollbar(win[TOD].p, sbar_top, win[TOD].w - 2,
+ sbar_length, title_lines, win[TOD].h - 1, hilt_bar);
+ }
+
+ wnoutrefresh(win[TOD].p);
}
/* Attach a note to a todo */
-void
-todo_edit_note (const char *editor)
+void todo_edit_note(const char *editor)
{
- struct todo *i = todo_get_item (hilt);
- edit_note (&i->note, editor);
+ struct todo *i = todo_get_item(hilt);
+ edit_note(&i->note, editor);
}
/* View a note previously attached to a todo */
-void
-todo_view_note (const char *pager)
+void todo_view_note(const char *pager)
{
- struct todo *i = todo_get_item (hilt);
- view_note (i->note, pager);
+ struct todo *i = todo_get_item(hilt);
+ view_note(i->note, pager);
}
/* Pipe a todo item to an external program. */
-void
-todo_pipe_item (void)
+void todo_pipe_item(void)
{
char cmd[BUFSIZ] = "";
char const *arg[] = { cmd, NULL };
@@ -475,42 +436,38 @@ todo_pipe_item (void)
FILE *fpout;
struct todo *todo;
- status_mesg (_("Pipe item to external command:"), "");
- if (getstring (win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID)
+ status_mesg(_("Pipe item to external command:"), "");
+ if (getstring(win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID)
return;
- wins_prepare_external ();
- if ((pid = shell_exec (NULL, &pout, *arg, arg)))
- {
- fpout = fdopen (pout, "w");
+ wins_prepare_external();
+ if ((pid = shell_exec(NULL, &pout, *arg, arg))) {
+ fpout = fdopen(pout, "w");
- todo = todo_get_item (hilt);
- todo_write (todo, fpout);
+ todo = todo_get_item(hilt);
+ todo_write(todo, fpout);
- fclose (fpout);
- child_wait (NULL, &pout, pid);
- press_any_key ();
- }
- wins_unprepare_external ();
+ fclose(fpout);
+ child_wait(NULL, &pout, pid);
+ press_any_key();
+ }
+ wins_unprepare_external();
}
-static void
-todo_free (struct todo *todo)
+static void todo_free(struct todo *todo)
{
- mem_free (todo->mesg);
- erase_note (&todo->note);
- mem_free (todo);
+ mem_free(todo->mesg);
+ erase_note(&todo->note);
+ mem_free(todo);
}
-void
-todo_init_list (void)
+void todo_init_list(void)
{
- LLIST_INIT (&todolist);
+ LLIST_INIT(&todolist);
}
-void
-todo_free_list (void)
+void todo_free_list(void)
{
- LLIST_FREE_INNER (&todolist, todo_free);
- LLIST_FREE (&todolist);
+ LLIST_FREE_INNER(&todolist, todo_free);
+ LLIST_FREE(&todolist);
}
diff --git a/src/utf8.c b/src/utf8.c
index 1a4e15e..398b142 100644
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -41,304 +41,295 @@ struct utf8_range {
};
static const struct utf8_range utf8_widthtab[] = {
- { 0x00300, 0x0036f, 0 },
- { 0x00483, 0x00489, 0 },
- { 0x00591, 0x005bd, 0 },
- { 0x005bf, 0x005bf, 0 },
- { 0x005c1, 0x005c2, 0 },
- { 0x005c4, 0x005c5, 0 },
- { 0x005c7, 0x005c7, 0 },
- { 0x00610, 0x0061a, 0 },
- { 0x0064b, 0x0065e, 0 },
- { 0x00670, 0x00670, 0 },
- { 0x006d6, 0x006dc, 0 },
- { 0x006de, 0x006e4, 0 },
- { 0x006e7, 0x006e8, 0 },
- { 0x006ea, 0x006ed, 0 },
- { 0x00711, 0x00711, 0 },
- { 0x00730, 0x0074a, 0 },
- { 0x007a6, 0x007b0, 0 },
- { 0x007eb, 0x007f3, 0 },
- { 0x00816, 0x00819, 0 },
- { 0x0081b, 0x00823, 0 },
- { 0x00825, 0x00827, 0 },
- { 0x00829, 0x0082d, 0 },
- { 0x00900, 0x00903, 0 },
- { 0x0093c, 0x0093c, 0 },
- { 0x0093e, 0x0094e, 0 },
- { 0x00951, 0x00955, 0 },
- { 0x00962, 0x00963, 0 },
- { 0x00981, 0x00983, 0 },
- { 0x009bc, 0x009bc, 0 },
- { 0x009be, 0x009c4, 0 },
- { 0x009c7, 0x009c8, 0 },
- { 0x009cb, 0x009cd, 0 },
- { 0x009d7, 0x009d7, 0 },
- { 0x009e2, 0x009e3, 0 },
- { 0x00a01, 0x00a03, 0 },
- { 0x00a3c, 0x00a3c, 0 },
- { 0x00a3e, 0x00a42, 0 },
- { 0x00a47, 0x00a48, 0 },
- { 0x00a4b, 0x00a4d, 0 },
- { 0x00a51, 0x00a51, 0 },
- { 0x00a70, 0x00a71, 0 },
- { 0x00a75, 0x00a75, 0 },
- { 0x00a81, 0x00a83, 0 },
- { 0x00abc, 0x00abc, 0 },
- { 0x00abe, 0x00ac5, 0 },
- { 0x00ac7, 0x00ac9, 0 },
- { 0x00acb, 0x00acd, 0 },
- { 0x00ae2, 0x00ae3, 0 },
- { 0x00b01, 0x00b03, 0 },
- { 0x00b3c, 0x00b3c, 0 },
- { 0x00b3e, 0x00b44, 0 },
- { 0x00b47, 0x00b48, 0 },
- { 0x00b4b, 0x00b4d, 0 },
- { 0x00b56, 0x00b57, 0 },
- { 0x00b62, 0x00b63, 0 },
- { 0x00b82, 0x00b82, 0 },
- { 0x00bbe, 0x00bc2, 0 },
- { 0x00bc6, 0x00bc8, 0 },
- { 0x00bca, 0x00bcd, 0 },
- { 0x00bd7, 0x00bd7, 0 },
- { 0x00c01, 0x00c03, 0 },
- { 0x00c3e, 0x00c44, 0 },
- { 0x00c46, 0x00c48, 0 },
- { 0x00c4a, 0x00c4d, 0 },
- { 0x00c55, 0x00c56, 0 },
- { 0x00c62, 0x00c63, 0 },
- { 0x00c82, 0x00c83, 0 },
- { 0x00cbc, 0x00cbc, 0 },
- { 0x00cbe, 0x00cc4, 0 },
- { 0x00cc6, 0x00cc8, 0 },
- { 0x00cca, 0x00ccd, 0 },
- { 0x00cd5, 0x00cd6, 0 },
- { 0x00ce2, 0x00ce3, 0 },
- { 0x00d02, 0x00d03, 0 },
- { 0x00d3e, 0x00d44, 0 },
- { 0x00d46, 0x00d48, 0 },
- { 0x00d4a, 0x00d4d, 0 },
- { 0x00d57, 0x00d57, 0 },
- { 0x00d62, 0x00d63, 0 },
- { 0x00d82, 0x00d83, 0 },
- { 0x00dca, 0x00dca, 0 },
- { 0x00dcf, 0x00dd4, 0 },
- { 0x00dd6, 0x00dd6, 0 },
- { 0x00dd8, 0x00ddf, 0 },
- { 0x00df2, 0x00df3, 0 },
- { 0x00e31, 0x00e31, 0 },
- { 0x00e34, 0x00e3a, 0 },
- { 0x00e47, 0x00e4e, 0 },
- { 0x00eb1, 0x00eb1, 0 },
- { 0x00eb4, 0x00eb9, 0 },
- { 0x00ebb, 0x00ebc, 0 },
- { 0x00ec8, 0x00ecd, 0 },
- { 0x00f18, 0x00f19, 0 },
- { 0x00f35, 0x00f35, 0 },
- { 0x00f37, 0x00f37, 0 },
- { 0x00f39, 0x00f39, 0 },
- { 0x00f3e, 0x00f3f, 0 },
- { 0x00f71, 0x00f84, 0 },
- { 0x00f86, 0x00f87, 0 },
- { 0x00f90, 0x00f97, 0 },
- { 0x00f99, 0x00fbc, 0 },
- { 0x00fc6, 0x00fc6, 0 },
- { 0x0102b, 0x0103e, 0 },
- { 0x01056, 0x01059, 0 },
- { 0x0105e, 0x01060, 0 },
- { 0x01062, 0x01064, 0 },
- { 0x01067, 0x0106d, 0 },
- { 0x01071, 0x01074, 0 },
- { 0x01082, 0x0108d, 0 },
- { 0x0108f, 0x0108f, 0 },
- { 0x0109a, 0x0109d, 0 },
- { 0x01100, 0x0115f, 2 },
- { 0x011a3, 0x011a7, 2 },
- { 0x011fa, 0x011ff, 2 },
- { 0x0135f, 0x0135f, 0 },
- { 0x01712, 0x01714, 0 },
- { 0x01732, 0x01734, 0 },
- { 0x01752, 0x01753, 0 },
- { 0x01772, 0x01773, 0 },
- { 0x017b6, 0x017d3, 0 },
- { 0x017dd, 0x017dd, 0 },
- { 0x0180b, 0x0180d, 0 },
- { 0x018a9, 0x018a9, 0 },
- { 0x01920, 0x0192b, 0 },
- { 0x01930, 0x0193b, 0 },
- { 0x019b0, 0x019c0, 0 },
- { 0x019c8, 0x019c9, 0 },
- { 0x01a17, 0x01a1b, 0 },
- { 0x01a55, 0x01a5e, 0 },
- { 0x01a60, 0x01a7c, 0 },
- { 0x01a7f, 0x01a7f, 0 },
- { 0x01b00, 0x01b04, 0 },
- { 0x01b34, 0x01b44, 0 },
- { 0x01b6b, 0x01b73, 0 },
- { 0x01b80, 0x01b82, 0 },
- { 0x01ba1, 0x01baa, 0 },
- { 0x01c24, 0x01c37, 0 },
- { 0x01cd0, 0x01cd2, 0 },
- { 0x01cd4, 0x01ce8, 0 },
- { 0x01ced, 0x01ced, 0 },
- { 0x01cf2, 0x01cf2, 0 },
- { 0x01dc0, 0x01de6, 0 },
- { 0x01dfd, 0x01dff, 0 },
- { 0x020d0, 0x020f0, 0 },
- { 0x02329, 0x0232a, 2 },
- { 0x02cef, 0x02cf1, 0 },
- { 0x02de0, 0x02dff, 0 },
- { 0x02e80, 0x02e99, 2 },
- { 0x02e9b, 0x02ef3, 2 },
- { 0x02f00, 0x02fd5, 2 },
- { 0x02ff0, 0x02ffb, 2 },
- { 0x03000, 0x03029, 2 },
- { 0x0302a, 0x0302f, 0 },
- { 0x03030, 0x0303e, 2 },
- { 0x03041, 0x03096, 2 },
- { 0x03099, 0x0309a, 0 },
- { 0x0309b, 0x030ff, 2 },
- { 0x03105, 0x0312d, 2 },
- { 0x03131, 0x0318e, 2 },
- { 0x03190, 0x031b7, 2 },
- { 0x031c0, 0x031e3, 2 },
- { 0x031f0, 0x0321e, 2 },
- { 0x03220, 0x03247, 2 },
- { 0x03250, 0x032fe, 2 },
- { 0x03300, 0x04dbf, 2 },
- { 0x04e00, 0x0a48c, 2 },
- { 0x0a490, 0x0a4c6, 2 },
- { 0x0a66f, 0x0a672, 0 },
- { 0x0a67c, 0x0a67d, 0 },
- { 0x0a6f0, 0x0a6f1, 0 },
- { 0x0a802, 0x0a802, 0 },
- { 0x0a806, 0x0a806, 0 },
- { 0x0a80b, 0x0a80b, 0 },
- { 0x0a823, 0x0a827, 0 },
- { 0x0a880, 0x0a881, 0 },
- { 0x0a8b4, 0x0a8c4, 0 },
- { 0x0a8e0, 0x0a8f1, 0 },
- { 0x0a926, 0x0a92d, 0 },
- { 0x0a947, 0x0a953, 0 },
- { 0x0a960, 0x0a97c, 2 },
- { 0x0a980, 0x0a983, 0 },
- { 0x0a9b3, 0x0a9c0, 0 },
- { 0x0aa29, 0x0aa36, 0 },
- { 0x0aa43, 0x0aa43, 0 },
- { 0x0aa4c, 0x0aa4d, 0 },
- { 0x0aa7b, 0x0aa7b, 0 },
- { 0x0aab0, 0x0aab0, 0 },
- { 0x0aab2, 0x0aab4, 0 },
- { 0x0aab7, 0x0aab8, 0 },
- { 0x0aabe, 0x0aabf, 0 },
- { 0x0aac1, 0x0aac1, 0 },
- { 0x0abe3, 0x0abea, 0 },
- { 0x0abec, 0x0abed, 0 },
- { 0x0ac00, 0x0d7a3, 2 },
- { 0x0d7b0, 0x0d7c6, 2 },
- { 0x0d7cb, 0x0d7fb, 2 },
- { 0x0f900, 0x0faff, 2 },
- { 0x0fb1e, 0x0fb1e, 0 },
- { 0x0fe00, 0x0fe0f, 0 },
- { 0x0fe10, 0x0fe19, 2 },
- { 0x0fe20, 0x0fe26, 0 },
- { 0x0fe30, 0x0fe52, 2 },
- { 0x0fe54, 0x0fe66, 2 },
- { 0x0fe68, 0x0fe6b, 2 },
- { 0x0ff01, 0x0ff60, 2 },
- { 0x0ffe0, 0x0ffe6, 2 },
- { 0x101fd, 0x101fd, 0 },
- { 0x10a01, 0x10a03, 0 },
- { 0x10a05, 0x10a06, 0 },
- { 0x10a0c, 0x10a0f, 0 },
- { 0x10a38, 0x10a3a, 0 },
- { 0x10a3f, 0x10a3f, 0 },
- { 0x11080, 0x11082, 0 },
- { 0x110b0, 0x110ba, 0 },
- { 0x1d165, 0x1d169, 0 },
- { 0x1d16d, 0x1d172, 0 },
- { 0x1d17b, 0x1d182, 0 },
- { 0x1d185, 0x1d18b, 0 },
- { 0x1d1aa, 0x1d1ad, 0 },
- { 0x1d242, 0x1d244, 0 },
- { 0x1f200, 0x1f200, 2 },
- { 0x1f210, 0x1f231, 2 },
- { 0x1f240, 0x1f248, 2 },
- { 0x20000, 0x2fffd, 2 },
- { 0x30000, 0x3fffd, 2 },
- { 0xe0100, 0xe01ef, 0 }
+ {0x00300, 0x0036f, 0},
+ {0x00483, 0x00489, 0},
+ {0x00591, 0x005bd, 0},
+ {0x005bf, 0x005bf, 0},
+ {0x005c1, 0x005c2, 0},
+ {0x005c4, 0x005c5, 0},
+ {0x005c7, 0x005c7, 0},
+ {0x00610, 0x0061a, 0},
+ {0x0064b, 0x0065e, 0},
+ {0x00670, 0x00670, 0},
+ {0x006d6, 0x006dc, 0},
+ {0x006de, 0x006e4, 0},
+ {0x006e7, 0x006e8, 0},
+ {0x006ea, 0x006ed, 0},
+ {0x00711, 0x00711, 0},
+ {0x00730, 0x0074a, 0},
+ {0x007a6, 0x007b0, 0},
+ {0x007eb, 0x007f3, 0},
+ {0x00816, 0x00819, 0},
+ {0x0081b, 0x00823, 0},
+ {0x00825, 0x00827, 0},
+ {0x00829, 0x0082d, 0},
+ {0x00900, 0x00903, 0},
+ {0x0093c, 0x0093c, 0},
+ {0x0093e, 0x0094e, 0},
+ {0x00951, 0x00955, 0},
+ {0x00962, 0x00963, 0},
+ {0x00981, 0x00983, 0},
+ {0x009bc, 0x009bc, 0},
+ {0x009be, 0x009c4, 0},
+ {0x009c7, 0x009c8, 0},
+ {0x009cb, 0x009cd, 0},
+ {0x009d7, 0x009d7, 0},
+ {0x009e2, 0x009e3, 0},
+ {0x00a01, 0x00a03, 0},
+ {0x00a3c, 0x00a3c, 0},
+ {0x00a3e, 0x00a42, 0},
+ {0x00a47, 0x00a48, 0},
+ {0x00a4b, 0x00a4d, 0},
+ {0x00a51, 0x00a51, 0},
+ {0x00a70, 0x00a71, 0},
+ {0x00a75, 0x00a75, 0},
+ {0x00a81, 0x00a83, 0},
+ {0x00abc, 0x00abc, 0},
+ {0x00abe, 0x00ac5, 0},
+ {0x00ac7, 0x00ac9, 0},
+ {0x00acb, 0x00acd, 0},
+ {0x00ae2, 0x00ae3, 0},
+ {0x00b01, 0x00b03, 0},
+ {0x00b3c, 0x00b3c, 0},
+ {0x00b3e, 0x00b44, 0},
+ {0x00b47, 0x00b48, 0},
+ {0x00b4b, 0x00b4d, 0},
+ {0x00b56, 0x00b57, 0},
+ {0x00b62, 0x00b63, 0},
+ {0x00b82, 0x00b82, 0},
+ {0x00bbe, 0x00bc2, 0},
+ {0x00bc6, 0x00bc8, 0},
+ {0x00bca, 0x00bcd, 0},
+ {0x00bd7, 0x00bd7, 0},
+ {0x00c01, 0x00c03, 0},
+ {0x00c3e, 0x00c44, 0},
+ {0x00c46, 0x00c48, 0},
+ {0x00c4a, 0x00c4d, 0},
+ {0x00c55, 0x00c56, 0},
+ {0x00c62, 0x00c63, 0},
+ {0x00c82, 0x00c83, 0},
+ {0x00cbc, 0x00cbc, 0},
+ {0x00cbe, 0x00cc4, 0},
+ {0x00cc6, 0x00cc8, 0},
+ {0x00cca, 0x00ccd, 0},
+ {0x00cd5, 0x00cd6, 0},
+ {0x00ce2, 0x00ce3, 0},
+ {0x00d02, 0x00d03, 0},
+ {0x00d3e, 0x00d44, 0},
+ {0x00d46, 0x00d48, 0},
+ {0x00d4a, 0x00d4d, 0},
+ {0x00d57, 0x00d57, 0},
+ {0x00d62, 0x00d63, 0},
+ {0x00d82, 0x00d83, 0},
+ {0x00dca, 0x00dca, 0},
+ {0x00dcf, 0x00dd4, 0},
+ {0x00dd6, 0x00dd6, 0},
+ {0x00dd8, 0x00ddf, 0},
+ {0x00df2, 0x00df3, 0},
+ {0x00e31, 0x00e31, 0},
+ {0x00e34, 0x00e3a, 0},
+ {0x00e47, 0x00e4e, 0},
+ {0x00eb1, 0x00eb1, 0},
+ {0x00eb4, 0x00eb9, 0},
+ {0x00ebb, 0x00ebc, 0},
+ {0x00ec8, 0x00ecd, 0},
+ {0x00f18, 0x00f19, 0},
+ {0x00f35, 0x00f35, 0},
+ {0x00f37, 0x00f37, 0},
+ {0x00f39, 0x00f39, 0},
+ {0x00f3e, 0x00f3f, 0},
+ {0x00f71, 0x00f84, 0},
+ {0x00f86, 0x00f87, 0},
+ {0x00f90, 0x00f97, 0},
+ {0x00f99, 0x00fbc, 0},
+ {0x00fc6, 0x00fc6, 0},
+ {0x0102b, 0x0103e, 0},
+ {0x01056, 0x01059, 0},
+ {0x0105e, 0x01060, 0},
+ {0x01062, 0x01064, 0},
+ {0x01067, 0x0106d, 0},
+ {0x01071, 0x01074, 0},
+ {0x01082, 0x0108d, 0},
+ {0x0108f, 0x0108f, 0},
+ {0x0109a, 0x0109d, 0},
+ {0x01100, 0x0115f, 2},
+ {0x011a3, 0x011a7, 2},
+ {0x011fa, 0x011ff, 2},
+ {0x0135f, 0x0135f, 0},
+ {0x01712, 0x01714, 0},
+ {0x01732, 0x01734, 0},
+ {0x01752, 0x01753, 0},
+ {0x01772, 0x01773, 0},
+ {0x017b6, 0x017d3, 0},
+ {0x017dd, 0x017dd, 0},
+ {0x0180b, 0x0180d, 0},
+ {0x018a9, 0x018a9, 0},
+ {0x01920, 0x0192b, 0},
+ {0x01930, 0x0193b, 0},
+ {0x019b0, 0x019c0, 0},
+ {0x019c8, 0x019c9, 0},
+ {0x01a17, 0x01a1b, 0},
+ {0x01a55, 0x01a5e, 0},
+ {0x01a60, 0x01a7c, 0},
+ {0x01a7f, 0x01a7f, 0},
+ {0x01b00, 0x01b04, 0},
+ {0x01b34, 0x01b44, 0},
+ {0x01b6b, 0x01b73, 0},
+ {0x01b80, 0x01b82, 0},
+ {0x01ba1, 0x01baa, 0},
+ {0x01c24, 0x01c37, 0},
+ {0x01cd0, 0x01cd2, 0},
+ {0x01cd4, 0x01ce8, 0},
+ {0x01ced, 0x01ced, 0},
+ {0x01cf2, 0x01cf2, 0},
+ {0x01dc0, 0x01de6, 0},
+ {0x01dfd, 0x01dff, 0},
+ {0x020d0, 0x020f0, 0},
+ {0x02329, 0x0232a, 2},
+ {0x02cef, 0x02cf1, 0},
+ {0x02de0, 0x02dff, 0},
+ {0x02e80, 0x02e99, 2},
+ {0x02e9b, 0x02ef3, 2},
+ {0x02f00, 0x02fd5, 2},
+ {0x02ff0, 0x02ffb, 2},
+ {0x03000, 0x03029, 2},
+ {0x0302a, 0x0302f, 0},
+ {0x03030, 0x0303e, 2},
+ {0x03041, 0x03096, 2},
+ {0x03099, 0x0309a, 0},
+ {0x0309b, 0x030ff, 2},
+ {0x03105, 0x0312d, 2},
+ {0x03131, 0x0318e, 2},
+ {0x03190, 0x031b7, 2},
+ {0x031c0, 0x031e3, 2},
+ {0x031f0, 0x0321e, 2},
+ {0x03220, 0x03247, 2},
+ {0x03250, 0x032fe, 2},
+ {0x03300, 0x04dbf, 2},
+ {0x04e00, 0x0a48c, 2},
+ {0x0a490, 0x0a4c6, 2},
+ {0x0a66f, 0x0a672, 0},
+ {0x0a67c, 0x0a67d, 0},
+ {0x0a6f0, 0x0a6f1, 0},
+ {0x0a802, 0x0a802, 0},
+ {0x0a806, 0x0a806, 0},
+ {0x0a80b, 0x0a80b, 0},
+ {0x0a823, 0x0a827, 0},
+ {0x0a880, 0x0a881, 0},
+ {0x0a8b4, 0x0a8c4, 0},
+ {0x0a8e0, 0x0a8f1, 0},
+ {0x0a926, 0x0a92d, 0},
+ {0x0a947, 0x0a953, 0},
+ {0x0a960, 0x0a97c, 2},
+ {0x0a980, 0x0a983, 0},
+ {0x0a9b3, 0x0a9c0, 0},
+ {0x0aa29, 0x0aa36, 0},
+ {0x0aa43, 0x0aa43, 0},
+ {0x0aa4c, 0x0aa4d, 0},
+ {0x0aa7b, 0x0aa7b, 0},
+ {0x0aab0, 0x0aab0, 0},
+ {0x0aab2, 0x0aab4, 0},
+ {0x0aab7, 0x0aab8, 0},
+ {0x0aabe, 0x0aabf, 0},
+ {0x0aac1, 0x0aac1, 0},
+ {0x0abe3, 0x0abea, 0},
+ {0x0abec, 0x0abed, 0},
+ {0x0ac00, 0x0d7a3, 2},
+ {0x0d7b0, 0x0d7c6, 2},
+ {0x0d7cb, 0x0d7fb, 2},
+ {0x0f900, 0x0faff, 2},
+ {0x0fb1e, 0x0fb1e, 0},
+ {0x0fe00, 0x0fe0f, 0},
+ {0x0fe10, 0x0fe19, 2},
+ {0x0fe20, 0x0fe26, 0},
+ {0x0fe30, 0x0fe52, 2},
+ {0x0fe54, 0x0fe66, 2},
+ {0x0fe68, 0x0fe6b, 2},
+ {0x0ff01, 0x0ff60, 2},
+ {0x0ffe0, 0x0ffe6, 2},
+ {0x101fd, 0x101fd, 0},
+ {0x10a01, 0x10a03, 0},
+ {0x10a05, 0x10a06, 0},
+ {0x10a0c, 0x10a0f, 0},
+ {0x10a38, 0x10a3a, 0},
+ {0x10a3f, 0x10a3f, 0},
+ {0x11080, 0x11082, 0},
+ {0x110b0, 0x110ba, 0},
+ {0x1d165, 0x1d169, 0},
+ {0x1d16d, 0x1d172, 0},
+ {0x1d17b, 0x1d182, 0},
+ {0x1d185, 0x1d18b, 0},
+ {0x1d1aa, 0x1d1ad, 0},
+ {0x1d242, 0x1d244, 0},
+ {0x1f200, 0x1f200, 2},
+ {0x1f210, 0x1f231, 2},
+ {0x1f240, 0x1f248, 2},
+ {0x20000, 0x2fffd, 2},
+ {0x30000, 0x3fffd, 2},
+ {0xe0100, 0xe01ef, 0}
};
/* Get the width of a UTF-8 character. */
-int
-utf8_width (char *s)
+int utf8_width(char *s)
{
int val, low, high, cur;
- if (UTF8_ISCONT (*s))
+ if (UTF8_ISCONT(*s))
return 0;
- switch (UTF8_LENGTH (*s))
- {
- case 1:
- val = s[0];
- break;
- case 2:
- val = (s[1] & 0x3f) | (s[0] & 0x1f) << 6;
- break;
- case 3:
- val = ((s[2] & 0x3f) | (s[1] & 0x3f) << 6) |
- (s[0] & 0x0f) << 12;
- break;
- case 4:
- val = (((s[3] & 0x3f) | (s[2] & 0x3f) << 6) |
- (s[1] & 0x3f) << 12) | (s[0] & 0x3f) << 18;
- break;
- case 5:
- val = ((((s[4] & 0x3f) | (s[3] & 0x3f) << 6) |
- (s[2] & 0x3f) << 12) | (s[1] & 0x3f) << 18) |
- (s[0] & 0x3f) << 24;
- break;
- case 6:
- val = (((((s[5] & 0x3f) | (s[4] & 0x3f) << 6) |
- (s[3] & 0x3f) << 12) | (s[2] & 0x3f) << 18) |
- (s[1] & 0x3f) << 24) | (s[0] & 0x3f) << 30;
- break;
- default:
- return 0;
- }
+ switch (UTF8_LENGTH(*s)) {
+ case 1:
+ val = s[0];
+ break;
+ case 2:
+ val = (s[1] & 0x3f) | (s[0] & 0x1f) << 6;
+ break;
+ case 3:
+ val = ((s[2] & 0x3f) | (s[1] & 0x3f) << 6) | (s[0] & 0x0f) << 12;
+ break;
+ case 4:
+ val = (((s[3] & 0x3f) | (s[2] & 0x3f) << 6) |
+ (s[1] & 0x3f) << 12) | (s[0] & 0x3f) << 18;
+ break;
+ case 5:
+ val = ((((s[4] & 0x3f) | (s[3] & 0x3f) << 6) |
+ (s[2] & 0x3f) << 12) | (s[1] & 0x3f) << 18) | (s[0] & 0x3f) << 24;
+ break;
+ case 6:
+ val = (((((s[5] & 0x3f) | (s[4] & 0x3f) << 6) |
+ (s[3] & 0x3f) << 12) | (s[2] & 0x3f) << 18) |
+ (s[1] & 0x3f) << 24) | (s[0] & 0x3f) << 30;
+ break;
+ default:
+ return 0;
+ }
low = 0;
high = sizeof(utf8_widthtab) / sizeof(utf8_widthtab[0]);
- do
- {
- cur = (low + high) / 2;
- if (val >= utf8_widthtab[cur].min)
- {
- if (val <= utf8_widthtab[cur].max)
- return utf8_widthtab[cur].width;
- else
- low = cur + 1;
- }
+ do {
+ cur = (low + high) / 2;
+ if (val >= utf8_widthtab[cur].min) {
+ if (val <= utf8_widthtab[cur].max)
+ return utf8_widthtab[cur].width;
else
- high = cur - 1;
- }
+ low = cur + 1;
+ } else
+ high = cur - 1;
+ }
while (low <= high);
return 1;
}
/* Get the width of a UTF-8 string. */
-int
-utf8_strwidth (char *s)
+int utf8_strwidth(char *s)
{
int width = 0;
- for (; s && *s; s++)
- {
- if (!UTF8_ISCONT (*s))
- width += utf8_width (s);
- }
+ for (; s && *s; s++) {
+ if (!UTF8_ISCONT(*s))
+ width += utf8_width(s);
+ }
return width;
}
diff --git a/src/utils.c b/src/utils.c
index a77bbb6..5a38491 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -66,59 +66,52 @@ enum format_specifier {
};
/* General routine to exit calcurse properly. */
-void
-exit_calcurse (int status)
+void exit_calcurse(int status)
{
int was_interactive;
- if (ui_mode == UI_CURSES)
- {
- notify_stop_main_thread ();
- clear ();
- wins_refresh ();
- endwin ();
- ui_mode = UI_CMDLINE;
- was_interactive = 1;
- }
- else
+ if (ui_mode == UI_CURSES) {
+ notify_stop_main_thread();
+ clear();
+ wins_refresh();
+ endwin();
+ ui_mode = UI_CMDLINE;
+ was_interactive = 1;
+ } else
was_interactive = 0;
- calendar_stop_date_thread ();
- io_stop_psave_thread ();
- free_user_data ();
- keys_free ();
- mem_stats ();
- if (was_interactive)
- {
- if (unlink (path_cpid) != 0)
- EXIT (_("Could not remove calcurse lock file: %s\n"),
- strerror (errno));
- if (dmon.enable)
- dmon_start (status);
- }
-
- exit (status);
+ calendar_stop_date_thread();
+ io_stop_psave_thread();
+ free_user_data();
+ keys_free();
+ mem_stats();
+ if (was_interactive) {
+ if (unlink(path_cpid) != 0)
+ EXIT(_("Could not remove calcurse lock file: %s\n"), strerror(errno));
+ if (dmon.enable)
+ dmon_start(status);
+ }
+
+ exit(status);
}
-void
-free_user_data (void)
+void free_user_data(void)
{
- day_free_list ();
- event_llist_free ();
- event_free_bkp ();
- apoint_llist_free ();
- apoint_free_bkp ();
- recur_apoint_llist_free ();
- recur_event_llist_free ();
- recur_apoint_free_bkp ();
- recur_event_free_bkp ();
- todo_free_list ();
- notify_free_app ();
+ day_free_list();
+ event_llist_free();
+ event_free_bkp();
+ apoint_llist_free();
+ apoint_free_bkp();
+ recur_apoint_llist_free();
+ recur_event_llist_free();
+ recur_apoint_free_bkp();
+ recur_event_free_bkp();
+ todo_free_list();
+ notify_free_app();
}
/* Function to exit on internal error. */
-void
-fatalbox (const char *errmsg)
+void fatalbox(const char *errmsg)
{
WINDOW *errwin;
const char *label = _("/!\\ INTERNAL ERROR /!\\");
@@ -131,22 +124,21 @@ fatalbox (const char *errmsg)
if (errmsg == NULL)
return;
- strncpy (msg, errmsg, MSGLEN);
- errwin = newwin (WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2);
- custom_apply_attr (errwin, ATTR_HIGHEST);
- box (errwin, 0, 0);
- wins_show (errwin, label);
- mvwprintw (errwin, 3, 1, reportmsg);
- mvwprintw (errwin, 5, (WINCOL - strlen (msg)) / 2, "%s", msg);
- custom_remove_attr (errwin, ATTR_HIGHEST);
- wins_wrefresh (errwin);
- wgetch (errwin);
- delwin (errwin);
- wins_doupdate ();
+ strncpy(msg, errmsg, MSGLEN);
+ errwin = newwin(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2);
+ custom_apply_attr(errwin, ATTR_HIGHEST);
+ box(errwin, 0, 0);
+ wins_show(errwin, label);
+ mvwprintw(errwin, 3, 1, reportmsg);
+ mvwprintw(errwin, 5, (WINCOL - strlen(msg)) / 2, "%s", msg);
+ custom_remove_attr(errwin, ATTR_HIGHEST);
+ wins_wrefresh(errwin);
+ wgetch(errwin);
+ delwin(errwin);
+ wins_doupdate();
}
-void
-warnbox (const char *msg)
+void warnbox(const char *msg)
{
WINDOW *warnwin;
const char *label = "/!\\";
@@ -158,31 +150,30 @@ warnbox (const char *msg)
if (msg == NULL)
return;
- strncpy (displmsg, msg, MSGLEN);
- warnwin = newwin (WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2);
- custom_apply_attr (warnwin, ATTR_HIGHEST);
- box (warnwin, 0, 0);
- wins_show (warnwin, label);
- mvwprintw (warnwin, 5, (WINCOL - strlen (displmsg)) / 2, "%s", displmsg);
- custom_remove_attr (warnwin, ATTR_HIGHEST);
- wins_wrefresh (warnwin);
- wgetch (warnwin);
- delwin (warnwin);
- wins_doupdate ();
+ strncpy(displmsg, msg, MSGLEN);
+ warnwin = newwin(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2);
+ custom_apply_attr(warnwin, ATTR_HIGHEST);
+ box(warnwin, 0, 0);
+ wins_show(warnwin, label);
+ mvwprintw(warnwin, 5, (WINCOL - strlen(displmsg)) / 2, "%s", displmsg);
+ custom_remove_attr(warnwin, ATTR_HIGHEST);
+ wins_wrefresh(warnwin);
+ wgetch(warnwin);
+ delwin(warnwin);
+ wins_doupdate();
}
/*
* Print a message in the status bar.
* Message texts for first line and second line are to be provided.
*/
-void
-status_mesg (const char *msg1, const char *msg2)
+void status_mesg(const char *msg1, const char *msg2)
{
- wins_erase_status_bar ();
- custom_apply_attr (win[STA].p, ATTR_HIGHEST);
- mvwprintw (win[STA].p, 0, 0, msg1);
- mvwprintw (win[STA].p, 1, 0, msg2);
- custom_remove_attr (win[STA].p, ATTR_HIGHEST);
+ wins_erase_status_bar();
+ custom_apply_attr(win[STA].p, ATTR_HIGHEST);
+ mvwprintw(win[STA].p, 0, 0, msg1);
+ mvwprintw(win[STA].p, 1, 0, msg2);
+ custom_remove_attr(win[STA].p, ATTR_HIGHEST);
}
/*
@@ -196,8 +187,7 @@ status_mesg (const char *msg1, const char *msg2)
* Returns the index of the key pressed by the user (starting from 1),
* or -1 if the user doesn't want to answer (e.g. by escaping).
*/
-int
-status_ask_choice(const char *message, const char choice[], int nb_choice)
+int status_ask_choice(const char *message, const char choice[], int nb_choice)
{
int i, ch;
char tmp[BUFSIZ];
@@ -207,29 +197,26 @@ status_ask_choice(const char *message, const char choice[], int nb_choice)
avail_choice[0] = '[';
avail_choice[1] = '\0';
- for (i = 1; i <= nb_choice; i++)
- {
- snprintf (tmp, BUFSIZ, (i == nb_choice) ? "%c] " : "%c/", choice[i]);
- strcat (avail_choice, tmp);
- }
-
- status_mesg (message, avail_choice);
-
- for (;;)
- {
- ch = wgetch (win[STA].p);
- for (i = 1; i <= nb_choice; i++)
- if (ch == choice[i])
- return i;
- if (ch == ESCAPE)
- return (-1);
- if (resize)
- {
- resize = 0;
- wins_reset ();
- status_mesg (message, avail_choice);
- }
+ for (i = 1; i <= nb_choice; i++) {
+ snprintf(tmp, BUFSIZ, (i == nb_choice) ? "%c] " : "%c/", choice[i]);
+ strcat(avail_choice, tmp);
+ }
+
+ status_mesg(message, avail_choice);
+
+ for (;;) {
+ ch = wgetch(win[STA].p);
+ for (i = 1; i <= nb_choice; i++)
+ if (ch == choice[i])
+ return i;
+ if (ch == ESCAPE)
+ return (-1);
+ if (resize) {
+ resize = 0;
+ wins_reset();
+ status_mesg(message, avail_choice);
}
+ }
}
/*
@@ -237,10 +224,9 @@ status_ask_choice(const char *message, const char choice[], int nb_choice)
*
* Returns 1 if yes, 2 if no, and -1 otherwise
*/
-int
-status_ask_bool (const char *msg)
+int status_ask_bool(const char *msg)
{
- return (status_ask_choice (msg, _("[yn]"), 2));
+ return (status_ask_choice(msg, _("[yn]"), 2));
}
/*
@@ -250,8 +236,7 @@ status_ask_bool (const char *msg)
* the user doesn't want to answer.
*/
int
-status_ask_simplechoice (const char *prefix, const char *choice[],
- int nb_choice)
+status_ask_simplechoice(const char *prefix, const char *choice[], int nb_choice)
{
int i;
char tmp[BUFSIZ];
@@ -264,118 +249,109 @@ status_ask_simplechoice (const char *prefix, const char *choice[],
for (i = 1; i <= nb_choice; i++)
char_choice[i] = '0' + i;
- strcpy (choicestr, prefix);
+ strcpy(choicestr, prefix);
- for (i = 0; i < nb_choice; i++)
- {
- snprintf (tmp, BUFSIZ, ((i + 1) == nb_choice) ? "(%d) %s?" : "(%d) %s, ",
- (i + 1), _(choice[i]));
- strcat (choicestr, tmp);
- }
+ for (i = 0; i < nb_choice; i++) {
+ snprintf(tmp, BUFSIZ, ((i + 1) == nb_choice) ? "(%d) %s?" : "(%d) %s, ",
+ (i + 1), _(choice[i]));
+ strcat(choicestr, tmp);
+ }
- return (status_ask_choice (choicestr, char_choice, nb_choice));
+ return (status_ask_choice(choicestr, char_choice, nb_choice));
}
/* Erase part of a window. */
void
-erase_window_part (WINDOW *win, int first_col, int first_row, int last_col,
- int last_row)
+erase_window_part(WINDOW * win, int first_col, int first_row, int last_col,
+ int last_row)
{
int c, r;
- for (r = first_row; r <= last_row; r++)
- {
- for (c = first_col; c <= last_col; c++)
- mvwprintw (win, r, c, " ");
- }
+ for (r = first_row; r <= last_row; r++) {
+ for (c = first_col; c <= last_col; c++)
+ mvwprintw(win, r, c, " ");
+ }
}
/* draws a popup window */
-WINDOW *
-popup (int pop_row, int pop_col, int pop_y, int pop_x, const char *title,
- const char *msg, int hint)
+WINDOW *popup(int pop_row, int pop_col, int pop_y, int pop_x, const char *title,
+ const char *msg, int hint)
{
const char *any_key = _("Press any key to continue...");
char label[BUFSIZ];
WINDOW *popup_win;
const int MSGXPOS = 5;
- popup_win = newwin (pop_row, pop_col, pop_y, pop_x);
- keypad (popup_win, TRUE);
+ popup_win = newwin(pop_row, pop_col, pop_y, pop_x);
+ keypad(popup_win, TRUE);
if (msg)
- mvwprintw (popup_win, MSGXPOS, (pop_col - strlen (msg)) / 2, "%s", msg);
- custom_apply_attr (popup_win, ATTR_HIGHEST);
- box (popup_win, 0, 0);
- snprintf (label, BUFSIZ, "%s", title);
- wins_show (popup_win, label);
+ mvwprintw(popup_win, MSGXPOS, (pop_col - strlen(msg)) / 2, "%s", msg);
+ custom_apply_attr(popup_win, ATTR_HIGHEST);
+ box(popup_win, 0, 0);
+ snprintf(label, BUFSIZ, "%s", title);
+ wins_show(popup_win, label);
if (hint)
- mvwprintw (popup_win, pop_row - 2, pop_col - (strlen (any_key) + 1), "%s",
- any_key);
- custom_remove_attr (popup_win, ATTR_HIGHEST);
- wins_wrefresh (popup_win);
+ mvwprintw(popup_win, pop_row - 2, pop_col - (strlen(any_key) + 1), "%s",
+ any_key);
+ custom_remove_attr(popup_win, ATTR_HIGHEST);
+ wins_wrefresh(popup_win);
return popup_win;
}
/* prints in middle of a panel */
void
-print_in_middle (WINDOW *win, int starty, int startx, int width,
- const char *string)
+print_in_middle(WINDOW * win, int starty, int startx, int width,
+ const char *string)
{
- int len = strlen (string);
+ int len = strlen(string);
int x, y;
win = win ? win : stdscr;
- getyx (win, y, x);
+ getyx(win, y, x);
x = startx ? startx : x;
y = starty ? starty : y;
width = width ? width : 80;
x += (width - len) / 2;
- custom_apply_attr (win, ATTR_HIGHEST);
- mvwprintw (win, y, x, "%s", string);
- custom_remove_attr (win, ATTR_HIGHEST);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ mvwprintw(win, y, x, "%s", string);
+ custom_remove_attr(win, ATTR_HIGHEST);
}
/* checks if a string is only made of digits */
-int
-is_all_digit (const char *string)
+int is_all_digit(const char *string)
{
- for (; *string; string++)
- {
- if (!isdigit ((int)*string))
- return 0;
- }
+ for (; *string; string++) {
+ if (!isdigit((int)*string))
+ return 0;
+ }
return 1;
}
/* Given an item date expressed in seconds, return its start time in seconds. */
-long
-get_item_time (long date)
+long get_item_time(long date)
{
return (long)(get_item_hour(date) * HOURINSEC +
get_item_min(date) * MININSEC);
}
-int
-get_item_hour (long date)
+int get_item_hour(long date)
{
- return (localtime ((time_t *)&date))->tm_hour;
+ return (localtime((time_t *) & date))->tm_hour;
}
-int
-get_item_min (long date)
+int get_item_min(long date)
{
- return (localtime ((time_t *)&date))->tm_min;
+ return (localtime((time_t *) & date))->tm_min;
}
-long
-date2sec (struct date day, unsigned hour, unsigned min)
+long date2sec(struct date day, unsigned hour, unsigned min)
{
- time_t t = now ();
- struct tm start = *(localtime (&t));
+ time_t t = now();
+ struct tm start = *(localtime(&t));
start.tm_mon = day.mm - 1;
start.tm_mday = day.dd;
@@ -385,54 +361,50 @@ date2sec (struct date day, unsigned hour, unsigned min)
start.tm_sec = 0;
start.tm_isdst = -1;
- t = mktime (&start);
- EXIT_IF (t == -1, _("failure in mktime"));
+ t = mktime(&start);
+ EXIT_IF(t == -1, _("failure in mktime"));
return t;
}
/* Return a string containing the date, given a date in seconds. */
-char *
-date_sec2date_str (long sec, const char *datefmt)
+char *date_sec2date_str(long sec, const char *datefmt)
{
struct tm *lt;
- char *datestr = (char *) mem_calloc (BUFSIZ, sizeof (char));
+ char *datestr = (char *)mem_calloc(BUFSIZ, sizeof(char));
if (sec == 0)
- strncpy (datestr, "0", BUFSIZ);
- else
- {
- lt = localtime ((time_t *)&sec);
- strftime (datestr, BUFSIZ, datefmt, lt);
- }
+ strncpy(datestr, "0", BUFSIZ);
+ else {
+ lt = localtime((time_t *) & sec);
+ strftime(datestr, BUFSIZ, datefmt, lt);
+ }
return datestr;
}
/* Generic function to format date. */
-void
-date_sec2date_fmt (long sec, const char *fmt, char *datef)
+void date_sec2date_fmt(long sec, const char *fmt, char *datef)
{
- struct tm *lt = localtime ((time_t *)&sec);
- strftime (datef, BUFSIZ, fmt, lt);
+ struct tm *lt = localtime((time_t *) & sec);
+ strftime(datef, BUFSIZ, fmt, lt);
}
/*
* Used to change date by adding a certain amount of days or weeks.
*/
-long
-date_sec_change (long date, int delta_month, int delta_day)
+long date_sec_change(long date, int delta_month, int delta_day)
{
struct tm *lt;
time_t t;
t = date;
- lt = localtime (&t);
+ lt = localtime(&t);
lt->tm_mon += delta_month;
lt->tm_mday += delta_day;
lt->tm_isdst = -1;
- t = mktime (lt);
- EXIT_IF (t == -1, _("failure in mktime"));
+ t = mktime(lt);
+ EXIT_IF(t == -1, _("failure in mktime"));
return t;
}
@@ -441,18 +413,17 @@ date_sec_change (long date, int delta_month, int delta_day)
* Return a long containing the date which is updated taking into account
* the new time and date entered by the user.
*/
-long
-update_time_in_date (long date, unsigned hr, unsigned mn)
+long update_time_in_date(long date, unsigned hr, unsigned mn)
{
struct tm *lt;
time_t t, new_date;
t = date;
- lt = localtime (&t);
+ lt = localtime(&t);
lt->tm_hour = hr;
lt->tm_min = mn;
- new_date = mktime (lt);
- EXIT_IF (new_date == -1, _("error in mktime"));
+ new_date = mktime(lt);
+ EXIT_IF(new_date == -1, _("error in mktime"));
return new_date;
}
@@ -461,8 +432,7 @@ update_time_in_date (long date, unsigned hr, unsigned mn)
* Returns the date in seconds from year 1900.
* If no date is entered, current date is chosen.
*/
-long
-get_sec_date (struct date date)
+long get_sec_date(struct date date)
{
struct tm *ptrtime;
time_t timer;
@@ -471,23 +441,21 @@ get_sec_date (struct date date)
char current_month[] = "mm ";
char current_year[] = "yyyy ";
- if (date.yyyy == 0 && date.mm == 0 && date.dd == 0)
- {
- timer = time (NULL);
- ptrtime = localtime (&timer);
- strftime (current_day, strlen (current_day), "%d", ptrtime);
- strftime (current_month, strlen (current_month), "%m", ptrtime);
- strftime (current_year, strlen (current_year), "%Y", ptrtime);
- date.mm = atoi (current_month);
- date.dd = atoi (current_day);
- date.yyyy = atoi (current_year);
- }
- long_date = date2sec (date, 0, 0);
+ if (date.yyyy == 0 && date.mm == 0 && date.dd == 0) {
+ timer = time(NULL);
+ ptrtime = localtime(&timer);
+ strftime(current_day, strlen(current_day), "%d", ptrtime);
+ strftime(current_month, strlen(current_month), "%m", ptrtime);
+ strftime(current_year, strlen(current_year), "%Y", ptrtime);
+ date.mm = atoi(current_month);
+ date.dd = atoi(current_day);
+ date.yyyy = atoi(current_year);
+ }
+ long_date = date2sec(date, 0, 0);
return long_date;
}
-long
-min2sec (unsigned minutes)
+long min2sec(unsigned minutes)
{
return minutes * MININSEC;
}
@@ -497,17 +465,17 @@ min2sec (unsigned minutes)
* can not be displayed inside the corresponding panel.
*/
void
-draw_scrollbar (WINDOW *win, int y, int x, int length,
- int bar_top, int bar_bottom, unsigned hilt)
+draw_scrollbar(WINDOW * win, int y, int x, int length,
+ int bar_top, int bar_bottom, unsigned hilt)
{
- mvwvline (win, bar_top, x, ACS_VLINE, bar_bottom - bar_top);
+ mvwvline(win, bar_top, x, ACS_VLINE, bar_bottom - bar_top);
if (hilt)
- custom_apply_attr (win, ATTR_HIGHEST);
- wattron (win, A_REVERSE);
- mvwvline (win, y, x, ' ', length);
- wattroff (win, A_REVERSE);
+ custom_apply_attr(win, ATTR_HIGHEST);
+ wattron(win, A_REVERSE);
+ mvwvline(win, y, x, ' ', length);
+ wattroff(win, A_REVERSE);
if (hilt)
- custom_remove_attr (win, ATTR_HIGHEST);
+ custom_remove_attr(win, ATTR_HIGHEST);
}
/*
@@ -516,119 +484,108 @@ draw_scrollbar (WINDOW *win, int y, int x, int length,
* long to fit in its corresponding panel window.
*/
void
-item_in_popup (const char *saved_a_start, const char *saved_a_end,
- const char *msg, const char *pop_title)
+item_in_popup(const char *saved_a_start, const char *saved_a_end,
+ const char *msg, const char *pop_title)
{
WINDOW *popup_win, *pad;
const int margin_left = 4, margin_top = 4;
const int winl = row - 5, winw = col - margin_left;
const int padl = winl - 2, padw = winw - margin_left;
- pad = newpad (padl, padw);
- popup_win = popup (winl, winw, 1, 2, pop_title, NULL, 1);
- if (strcmp (pop_title, _("Appointment")) == 0)
- {
- mvwprintw (popup_win, margin_top, margin_left, "- %s -> %s",
- saved_a_start, saved_a_end);
- }
- mvwprintw (pad, 0, margin_left, "%s", msg);
- wmove (win[STA].p, 0, 0);
- pnoutrefresh (pad, 0, 0, margin_top + 2, margin_left, padl, winw);
- wins_doupdate ();
- wgetch (popup_win);
- delwin (pad);
- delwin (popup_win);
+ pad = newpad(padl, padw);
+ popup_win = popup(winl, winw, 1, 2, pop_title, NULL, 1);
+ if (strcmp(pop_title, _("Appointment")) == 0) {
+ mvwprintw(popup_win, margin_top, margin_left, "- %s -> %s",
+ saved_a_start, saved_a_end);
+ }
+ mvwprintw(pad, 0, margin_left, "%s", msg);
+ wmove(win[STA].p, 0, 0);
+ pnoutrefresh(pad, 0, 0, margin_top + 2, margin_left, padl, winw);
+ wins_doupdate();
+ wgetch(popup_win);
+ delwin(pad);
+ delwin(popup_win);
}
/* Returns the beginning of current day in seconds from 1900. */
-long
-get_today (void)
+long get_today(void)
{
struct tm *lt;
time_t current_time;
long current_day;
struct date day;
- current_time = time (NULL);
- lt = localtime (&current_time);
+ current_time = time(NULL);
+ lt = localtime(&current_time);
day.mm = lt->tm_mon + 1;
day.dd = lt->tm_mday;
day.yyyy = lt->tm_year + 1900;
- current_day = date2sec (day, 0, 0);
+ current_day = date2sec(day, 0, 0);
return current_day;
}
/* Returns the current time in seconds. */
-long
-now (void)
+long now(void)
{
- return (long)time (NULL);
+ return (long)time(NULL);
}
-char *
-nowstr (void)
+char *nowstr(void)
{
static char buf[BUFSIZ];
- time_t t = now ();
+ time_t t = now();
- strftime (buf, sizeof buf, "%a %b %d %T %Y", localtime (&t));
+ strftime(buf, sizeof buf, "%a %b %d %T %Y", localtime(&t));
return buf;
}
-long
-mystrtol (const char *str)
+long mystrtol(const char *str)
{
char *ep;
long lval;
errno = 0;
- lval = strtol (str, &ep, 10);
+ lval = strtol(str, &ep, 10);
if (str[0] == '\0' || *ep != '\0')
- EXIT (_("could not convert string"));
+ EXIT(_("could not convert string"));
if (errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN))
- EXIT (_("out of range"));
+ EXIT(_("out of range"));
return lval;
}
/* Print the given option value with appropriate color. */
void
-print_bool_option_incolor (WINDOW *win, unsigned option, int pos_y, int pos_x)
+print_bool_option_incolor(WINDOW * win, unsigned option, int pos_y, int pos_x)
{
int color = 0;
const char *option_value;
- if (option == 1)
- {
- color = ATTR_TRUE;
- option_value = _("yes");
- }
- else if (option == 0)
- {
- color = ATTR_FALSE;
- option_value = _("no");
- }
- else
- EXIT (_("option not defined"));
-
- custom_apply_attr (win, color);
- mvwprintw (win, pos_y, pos_x, "%s", option_value);
- custom_remove_attr (win, color);
- wnoutrefresh (win);
- wins_doupdate ();
+ if (option == 1) {
+ color = ATTR_TRUE;
+ option_value = _("yes");
+ } else if (option == 0) {
+ color = ATTR_FALSE;
+ option_value = _("no");
+ } else
+ EXIT(_("option not defined"));
+
+ custom_apply_attr(win, color);
+ mvwprintw(win, pos_y, pos_x, "%s", option_value);
+ custom_remove_attr(win, color);
+ wnoutrefresh(win);
+ wins_doupdate();
}
-
/*
* Get the name of the default directory for temporary files.
*/
-const char *
-get_tempdir (void)
+const char *get_tempdir(void)
{
- if (getenv ("TMPDIR"))
- return getenv ("TMPDIR");
+ if (getenv("TMPDIR"))
+ return getenv("TMPDIR");
#ifdef P_tmpdir
else if (P_tmpdir)
return P_tmpdir;
@@ -641,8 +598,7 @@ get_tempdir (void)
* Create a new unique file, and return a newly allocated string which contains
* the random part of the file name.
*/
-char *
-new_tempfile (const char *prefix, int trailing_len)
+char *new_tempfile(const char *prefix, int trailing_len)
{
char fullname[BUFSIZ];
int prefix_len, fd;
@@ -651,25 +607,23 @@ new_tempfile (const char *prefix, int trailing_len)
if (prefix == NULL)
return NULL;
- prefix_len = strlen (prefix);
+ prefix_len = strlen(prefix);
if (prefix_len + trailing_len >= BUFSIZ)
return NULL;
- memcpy (fullname, prefix, prefix_len);
- memset (fullname + prefix_len, 'X', trailing_len);
+ memcpy(fullname, prefix, prefix_len);
+ memset(fullname + prefix_len, 'X', trailing_len);
fullname[prefix_len + trailing_len] = '\0';
- if ((fd = mkstemp (fullname)) == -1 || (file = fdopen (fd, "w+")) == NULL)
- {
- if (fd != -1)
- {
- unlink (fullname);
- close (fd);
- }
- ERROR_MSG (_("temporary file \"%s\" could not be created"), fullname);
- return NULL;
+ if ((fd = mkstemp(fullname)) == -1 || (file = fdopen(fd, "w+")) == NULL) {
+ if (fd != -1) {
+ unlink(fullname);
+ close(fd);
}
- fclose (file);
+ ERROR_MSG(_("temporary file \"%s\" could not be created"), fullname);
+ return NULL;
+ }
+ fclose(file);
- return mem_strdup (fullname + prefix_len);
+ return mem_strdup(fullname + prefix_len);
}
/*
@@ -685,75 +639,68 @@ new_tempfile (const char *prefix, int trailing_len)
* Returns 1 if sucessfully converted or 0 if the string is an invalid date.
*/
int
-parse_date (const char *date_string, enum datefmt datefmt, int *year,
- int *month, int *day, struct date *slctd_date)
+parse_date(const char *date_string, enum datefmt datefmt, int *year,
+ int *month, int *day, struct date *slctd_date)
{
const char sep = (datefmt == DATEFMT_ISO) ? '-' : '/';
const char *p;
- int in[3] = {0, 0, 0}, n = 0;
+ int in[3] = { 0, 0, 0 }, n = 0;
int d, m, y;
if (!date_string)
return 0;
/* parse string into in[], read up to three integers */
- for (p = date_string; *p; p++)
- {
- if (*p == sep)
- {
- if ((++n) > 2)
- return 0;
- }
- else if ((*p >= '0') && (*p <= '9'))
- in[n] = in[n] * 10 + (int)(*p - '0');
- else
+ for (p = date_string; *p; p++) {
+ if (*p == sep) {
+ if ((++n) > 2)
return 0;
- }
+ } else if ((*p >= '0') && (*p <= '9'))
+ in[n] = in[n] * 10 + (int)(*p - '0');
+ else
+ return 0;
+ }
if ((!slctd_date && n < 2) || in[n] == 0)
return 0;
/* convert into day, month and year, depending on the date format */
- switch (datefmt)
- {
- case DATEFMT_MMDDYYYY:
- m = (n >= 1) ? in[0] : 0;
- d = (n >= 1) ? in[1] : in[0];
- y = in[2];
- break;
- case DATEFMT_DDMMYYYY:
- d = in[0];
- m = in[1];
- y = in[2];
- break;
- case DATEFMT_YYYYMMDD:
- case DATEFMT_ISO:
- y = (n >= 2) ? in[n - 2] : 0;
- m = (n >= 1) ? in[n - 1] : 0;
- d = in[n];
- break;
- default:
- return 0;
- }
-
- if (slctd_date)
- {
- if (y > 0 && y < 100)
- {
- /* convert "YY" format into "YYYY" */
- y += slctd_date->yyyy - slctd_date->yyyy % 100;
- }
- else if (n < 2)
- {
- /* set year and, optionally, month if short from is used */
- y = slctd_date->yyyy;
- if (n < 1) m = slctd_date->mm;
- }
+ switch (datefmt) {
+ case DATEFMT_MMDDYYYY:
+ m = (n >= 1) ? in[0] : 0;
+ d = (n >= 1) ? in[1] : in[0];
+ y = in[2];
+ break;
+ case DATEFMT_DDMMYYYY:
+ d = in[0];
+ m = in[1];
+ y = in[2];
+ break;
+ case DATEFMT_YYYYMMDD:
+ case DATEFMT_ISO:
+ y = (n >= 2) ? in[n - 2] : 0;
+ m = (n >= 1) ? in[n - 1] : 0;
+ d = in[n];
+ break;
+ default:
+ return 0;
+ }
+
+ if (slctd_date) {
+ if (y > 0 && y < 100) {
+ /* convert "YY" format into "YYYY" */
+ y += slctd_date->yyyy - slctd_date->yyyy % 100;
+ } else if (n < 2) {
+ /* set year and, optionally, month if short from is used */
+ y = slctd_date->yyyy;
+ if (n < 1)
+ m = slctd_date->mm;
}
+ }
/* check if date is valid, take leap years into account */
if (y < 1902 || y > 2037 || m < 1 || m > 12 || d < 1 ||
- d > days[m - 1] + (m == 2 && ISLEAP (y)) ? 1 : 0)
+ d > days[m - 1] + (m == 2 && ISLEAP(y)) ? 1 : 0)
return 0;
if (year)
@@ -772,28 +719,24 @@ parse_date (const char *date_string, enum datefmt datefmt, int *year,
*
* Returns 1 on success and 0 on failure.
*/
-int
-parse_time (const char *string, unsigned *hour, unsigned *minute)
+int parse_time(const char *string, unsigned *hour, unsigned *minute)
{
const char *p;
- unsigned in[2] = {0, 0}, n = 0;
+ unsigned in[2] = { 0, 0 }, n = 0;
if (!string)
return 0;
/* parse string into in[], read up to two integers */
- for (p = string; *p; p++)
- {
- if (*p == ':')
- {
- if ((++n) > 1)
- return 0;
- }
- else if ((*p >= '0') && (*p <= '9'))
- in[n] = in[n] * 10 + (int)(*p - '0');
- else
+ for (p = string; *p; p++) {
+ if (*p == ':') {
+ if ((++n) > 1)
return 0;
- }
+ } else if ((*p >= '0') && (*p <= '9'))
+ in[n] = in[n] * 10 + (int)(*p - '0');
+ else
+ return 0;
+ }
if (n != 1 || in[0] >= DAYINHOURS || in[1] >= HOURINMIN)
return 0;
@@ -816,8 +759,7 @@ parse_time (const char *string, unsigned *hour, unsigned *minute)
*
* Returns 1 on success and 0 on failure.
*/
-int
-parse_duration (const char *string, unsigned *duration)
+int parse_duration(const char *string, unsigned *duration)
{
enum {
STATE_INITIAL,
@@ -835,75 +777,56 @@ parse_duration (const char *string, unsigned *duration)
return 0;
/* parse string using a simple state machine */
- for (p = string; *p; p++)
- {
- if ((*p >= '0') && (*p <= '9'))
- {
- if (state == STATE_DONE)
- return 0;
- else
- in = in * 10 + (int)(*p - '0');
- }
+ for (p = string; *p; p++) {
+ if ((*p >= '0') && (*p <= '9')) {
+ if (state == STATE_DONE)
+ return 0;
else
- {
- switch (state)
- {
- case STATE_INITIAL:
- if (*p == ':')
- {
- dur += in * HOURINMIN;
- state = STATE_HHMM_MM;
- }
- else if (*p == 'd')
- {
- dur += in * DAYINMIN;
- state = STATE_DDHHMM_HH;
- }
- else if (*p == 'h')
- {
- dur += in * HOURINMIN;
- state = STATE_DDHHMM_MM;
- }
- else if (*p == 'm')
- {
- dur += in;
- state = STATE_DONE;
- }
- else
- return 0;
- break;
- case STATE_DDHHMM_HH:
- if (*p == 'h')
- {
- dur += in * HOURINMIN;
- state = STATE_DDHHMM_MM;
- }
- else if (*p == 'm')
- {
- dur += in;
- state = STATE_DONE;
- }
- else
- return 0;
- break;
- case STATE_DDHHMM_MM:
- if (*p == 'm')
- {
- dur += in;
- state = STATE_DONE;
- }
- else
- return 0;
- break;
- case STATE_HHMM_MM:
- case STATE_DONE:
- return 0;
- break;
- }
-
- in = 0;
- }
+ in = in * 10 + (int)(*p - '0');
+ } else {
+ switch (state) {
+ case STATE_INITIAL:
+ if (*p == ':') {
+ dur += in * HOURINMIN;
+ state = STATE_HHMM_MM;
+ } else if (*p == 'd') {
+ dur += in * DAYINMIN;
+ state = STATE_DDHHMM_HH;
+ } else if (*p == 'h') {
+ dur += in * HOURINMIN;
+ state = STATE_DDHHMM_MM;
+ } else if (*p == 'm') {
+ dur += in;
+ state = STATE_DONE;
+ } else
+ return 0;
+ break;
+ case STATE_DDHHMM_HH:
+ if (*p == 'h') {
+ dur += in * HOURINMIN;
+ state = STATE_DDHHMM_MM;
+ } else if (*p == 'm') {
+ dur += in;
+ state = STATE_DONE;
+ } else
+ return 0;
+ break;
+ case STATE_DDHHMM_MM:
+ if (*p == 'm') {
+ dur += in;
+ state = STATE_DONE;
+ } else
+ return 0;
+ break;
+ case STATE_HHMM_MM:
+ case STATE_DONE:
+ return 0;
+ break;
+ }
+
+ in = 0;
}
+ }
if ((state == STATE_HHMM_MM && in >= HOURINMIN) ||
((state == STATE_DDHHMM_HH || state == STATE_DDHHMM_MM) && in > 0))
@@ -915,19 +838,17 @@ parse_duration (const char *string, unsigned *duration)
return 1;
}
-void
-str_toupper (char *s)
+void str_toupper(char *s)
{
if (!s)
return;
for (; *s; s++)
- *s = toupper (*s);
+ *s = toupper(*s);
}
-void
-file_close (FILE *f, const char *pos)
+void file_close(FILE * f, const char *pos)
{
- EXIT_IF ((fclose (f)) != 0, _("Error when closing file at %s"), pos);
+ EXIT_IF((fclose(f)) != 0, _("Error when closing file at %s"), pos);
}
/*
@@ -935,13 +856,11 @@ file_close (FILE *f, const char *pos)
* (hence the 'p') in a way that even if a signal is caught during the sleep
* process, this function will return to sleep afterwards.
*/
-void
-psleep (unsigned secs)
+void psleep(unsigned secs)
{
unsigned unslept;
- for (unslept = sleep (secs); unslept; unslept = sleep (unslept))
- ;
+ for (unslept = sleep(secs); unslept; unslept = sleep(unslept)) ;
}
/*
@@ -950,149 +869,132 @@ psleep (unsigned secs)
* If pfdin and/or pfdout point to a valid address, a pipe is created and the
* appropriate file descriptors are written to pfdin/pfdout.
*/
-int
-fork_exec (int *pfdin, int *pfdout, const char *path, const char *const *arg)
+int fork_exec(int *pfdin, int *pfdout, const char *path, const char *const *arg)
{
int pin[2], pout[2];
int pid;
- if (pfdin && (pipe (pin) == -1))
+ if (pfdin && (pipe(pin) == -1))
return 0;
- if (pfdout && (pipe (pout) == -1))
+ if (pfdout && (pipe(pout) == -1))
return 0;
- if ((pid = fork ()) == 0)
- {
- if (pfdout)
- {
- if (dup2 (pout[0], STDIN_FILENO) < 0)
- _exit (127);
- close (pout[0]);
- close (pout[1]);
- }
+ if ((pid = fork()) == 0) {
+ if (pfdout) {
+ if (dup2(pout[0], STDIN_FILENO) < 0)
+ _exit(127);
+ close(pout[0]);
+ close(pout[1]);
+ }
- if (pfdin)
- {
- if (dup2 (pin[1], STDOUT_FILENO) < 0)
- _exit (127);
- close (pin[0]);
- close (pin[1]);
- }
-
- execvp (path, (char *const *)arg);
- _exit (127);
+ if (pfdin) {
+ if (dup2(pin[1], STDOUT_FILENO) < 0)
+ _exit(127);
+ close(pin[0]);
+ close(pin[1]);
}
- else
- {
+
+ execvp(path, (char *const *)arg);
+ _exit(127);
+ } else {
+ if (pfdin)
+ close(pin[1]);
+ if (pfdout)
+ close(pout[0]);
+
+ if (pid > 0) {
+ if (pfdin) {
+ fcntl(pin[0], F_SETFD, FD_CLOEXEC);
+ *pfdin = pin[0];
+ }
+ if (pfdout) {
+ fcntl(pout[1], F_SETFD, FD_CLOEXEC);
+ *pfdout = pout[1];
+ }
+ } else {
if (pfdin)
- close (pin[1]);
+ close(pin[0]);
if (pfdout)
- close (pout[0]);
-
- if (pid > 0)
- {
- if (pfdin)
- {
- fcntl (pin[0], F_SETFD, FD_CLOEXEC);
- *pfdin = pin[0];
- }
- if (pfdout)
- {
- fcntl (pout[1], F_SETFD, FD_CLOEXEC);
- *pfdout = pout[1];
- }
- }
- else
- {
- if (pfdin)
- close (pin[0]);
- if (pfdout)
- close (pout[1]);
- return 0;
- }
+ close(pout[1]);
+ return 0;
}
+ }
return pid;
}
/* Execute an external program in a shell. */
int
-shell_exec (int *pfdin, int *pfdout, const char *path, const char *const *arg)
+shell_exec(int *pfdin, int *pfdout, const char *path, const char *const *arg)
{
int argc, i;
const char **narg;
char *arg0 = NULL;
int ret;
- for (argc = 0; arg[argc]; argc++)
- ;
+ for (argc = 0; arg[argc]; argc++) ;
if (argc < 1)
return -1;
- narg = mem_calloc (argc + 4, sizeof (const char *));
+ narg = mem_calloc(argc + 4, sizeof(const char *));
narg[0] = "sh";
narg[1] = "-c";
- if (argc > 1)
- {
- arg0 = mem_malloc (strlen (path) + 6);
- sprintf (arg0, "%s \"$@\"", path);
- narg[2] = arg0;
+ if (argc > 1) {
+ arg0 = mem_malloc(strlen(path) + 6);
+ sprintf(arg0, "%s \"$@\"", path);
+ narg[2] = arg0;
- for (i = 0; i < argc; i++)
- narg[i + 3] = arg[i];
- narg[argc + 3] = NULL;
- }
- else
- {
- narg[2] = path;
- narg[3] = NULL;
- }
+ for (i = 0; i < argc; i++)
+ narg[i + 3] = arg[i];
+ narg[argc + 3] = NULL;
+ } else {
+ narg[2] = path;
+ narg[3] = NULL;
+ }
- ret = fork_exec (pfdin, pfdout, *narg, narg);
+ ret = fork_exec(pfdin, pfdout, *narg, narg);
if (arg0)
- mem_free (arg0);
- mem_free (narg);
+ mem_free(arg0);
+ mem_free(narg);
return ret;
}
/* Wait for a child process to terminate. */
-int
-child_wait (int *pfdin, int *pfdout, int pid)
+int child_wait(int *pfdin, int *pfdout, int pid)
{
int stat;
if (pfdin)
- close (*pfdin);
+ close(*pfdin);
if (pfdout)
- close (*pfdout);
+ close(*pfdout);
- waitpid (pid, &stat, 0);
+ waitpid(pid, &stat, 0);
return stat;
}
/* Display "Press any key to continue..." and wait for a key press. */
-void
-press_any_key (void)
+void press_any_key(void)
{
struct termios t_attr_old, t_attr;
- tcgetattr (STDIN_FILENO, &t_attr_old);
- memcpy (&t_attr, &t_attr_old, sizeof (struct termios));
+ tcgetattr(STDIN_FILENO, &t_attr_old);
+ memcpy(&t_attr, &t_attr_old, sizeof(struct termios));
t_attr.c_lflag &= ~(ICANON | ECHO | ECHONL);
- tcsetattr (STDIN_FILENO, TCSAFLUSH, &t_attr);
+ tcsetattr(STDIN_FILENO, TCSAFLUSH, &t_attr);
- fflush (stdout);
- fputs (_("Press any key to continue..."), stdout);
- fflush (stdout);
- fgetc (stdin);
- fflush (stdin);
- fputs ("\r\n", stdout);
+ fflush(stdout);
+ fputs(_("Press any key to continue..."), stdout);
+ fflush(stdout);
+ fgetc(stdin);
+ fflush(stdin);
+ fputs("\r\n", stdout);
- tcsetattr (STDIN_FILENO, TCSAFLUSH, &t_attr_old);
+ tcsetattr(STDIN_FILENO, TCSAFLUSH, &t_attr_old);
}
/*
@@ -1103,8 +1005,7 @@ press_any_key (void)
*
* (patch submitted by Erik Saule).
*/
-static void
-print_notefile (FILE *out, const char *filename, int nbtab)
+static void print_notefile(FILE * out, const char *filename, int nbtab)
{
char path_to_notefile[BUFSIZ];
FILE *notefile;
@@ -1113,287 +1014,263 @@ print_notefile (FILE *out, const char *filename, int nbtab)
int i;
int printlinestarter = 1;
- if (nbtab < BUFSIZ)
- {
- for (i = 0; i < nbtab; i++)
- linestarter[i] = '\t';
- linestarter[nbtab] = '\0';
- }
- else
+ if (nbtab < BUFSIZ) {
+ for (i = 0; i < nbtab; i++)
+ linestarter[i] = '\t';
+ linestarter[nbtab] = '\0';
+ } else
linestarter[0] = '\0';
- snprintf (path_to_notefile, BUFSIZ, "%s/%s", path_notes, filename);
- notefile = fopen (path_to_notefile, "r");
- if (notefile)
- {
- while (fgets (buffer, BUFSIZ, notefile) != 0)
- {
- if (printlinestarter)
- {
- fputs (linestarter, out);
- printlinestarter = 0;
- }
- fputs (buffer, out);
- if (buffer[strlen (buffer) - 1] == '\n')
- printlinestarter = 1;
- }
- fputs ("\n", out);
- file_close (notefile, __FILE_POS__);
- }
- else
- {
- fputs (linestarter, out);
- fputs (_("No note file found\n"), out);
+ snprintf(path_to_notefile, BUFSIZ, "%s/%s", path_notes, filename);
+ notefile = fopen(path_to_notefile, "r");
+ if (notefile) {
+ while (fgets(buffer, BUFSIZ, notefile) != 0) {
+ if (printlinestarter) {
+ fputs(linestarter, out);
+ printlinestarter = 0;
+ }
+ fputs(buffer, out);
+ if (buffer[strlen(buffer) - 1] == '\n')
+ printlinestarter = 1;
}
+ fputs("\n", out);
+ file_close(notefile, __FILE_POS__);
+ } else {
+ fputs(linestarter, out);
+ fputs(_("No note file found\n"), out);
+ }
}
/* Print an escape sequence and return its length. */
-static int
-print_escape (const char *s)
+static int print_escape(const char *s)
{
- switch (*(s + 1))
- {
- case 'a':
- putchar ('\a');
- return 1;
- case 'b':
- putchar ('\b');
- return 1;
- case 'f':
- putchar ('\f');
- return 1;
- case 'n':
- putchar ('\n');
- return 1;
- case 'r':
- putchar ('\r');
- return 1;
- case 't':
- putchar ('\t');
- return 1;
- case 'v':
- putchar ('\v');
- return 1;
- case '0':
- putchar ('\0');
- return 1;
- case '\'':
- putchar ('\'');
- return 1;
- case '"':
- putchar ('"');
- return 1;
- case '\?':
- putchar ('?');
- return 1;
- case '\\':
- putchar ('\\');
- return 1;
- case '\0':
- return 0;
- default:
- return 1;
- }
+ switch (*(s + 1)) {
+ case 'a':
+ putchar('\a');
+ return 1;
+ case 'b':
+ putchar('\b');
+ return 1;
+ case 'f':
+ putchar('\f');
+ return 1;
+ case 'n':
+ putchar('\n');
+ return 1;
+ case 'r':
+ putchar('\r');
+ return 1;
+ case 't':
+ putchar('\t');
+ return 1;
+ case 'v':
+ putchar('\v');
+ return 1;
+ case '0':
+ putchar('\0');
+ return 1;
+ case '\'':
+ putchar('\'');
+ return 1;
+ case '"':
+ putchar('"');
+ return 1;
+ case '\?':
+ putchar('?');
+ return 1;
+ case '\\':
+ putchar('\\');
+ return 1;
+ case '\0':
+ return 0;
+ default:
+ return 1;
+ }
}
/* Parse a format specifier. */
-static enum format_specifier
-parse_fs (const char **s, char *extformat)
+static enum format_specifier parse_fs(const char **s, char *extformat)
{
char buf[FS_EXT_MAXLEN];
int i;
extformat[0] = '\0';
- switch (**s)
- {
- case 's':
- strcpy (extformat, "epoch");
- return FS_STARTDATE;
- case 'S':
+ switch (**s) {
+ case 's':
+ strcpy(extformat, "epoch");
+ return FS_STARTDATE;
+ case 'S':
+ return FS_STARTDATE;
+ case 'd':
+ return FS_DURATION;
+ case 'e':
+ strcpy(extformat, "epoch");
+ return FS_ENDDATE;
+ case 'E':
+ return FS_ENDDATE;
+ case 'm':
+ return FS_MESSAGE;
+ case 'n':
+ return FS_NOTE;
+ case 'N':
+ return FS_NOTEFILE;
+ case 'p':
+ return FS_PRIORITY;
+ case '(':
+ /* Long format specifier. */
+ for ((*s)++, i = 0; **s != ':' && **s != ')'; (*s)++, i++) {
+ if (**s == '\0')
+ return FS_EOF;
+
+ if (i < FS_EXT_MAXLEN)
+ buf[i] = **s;
+ }
+
+ buf[(i < FS_EXT_MAXLEN) ? i : FS_EXT_MAXLEN - 1] = '\0';
+
+ if (**s == ':') {
+ for ((*s)++, i = 0; **s != ')'; (*s)++, i++) {
+ if (**s == '\0')
+ return FS_EOF;
+
+ if (i < FS_EXT_MAXLEN)
+ extformat[i] = **s;
+ }
+
+ extformat[(i < FS_EXT_MAXLEN) ? i : FS_EXT_MAXLEN - 1] = '\0';
+ }
+
+ if (!strcmp(buf, "start"))
return FS_STARTDATE;
- case 'd':
+ else if (!strcmp(buf, "duration"))
return FS_DURATION;
- case 'e':
- strcpy (extformat, "epoch");
+ else if (!strcmp(buf, "end"))
return FS_ENDDATE;
- case 'E':
- return FS_ENDDATE;
- case 'm':
+ else if (!strcmp(buf, "message"))
return FS_MESSAGE;
- case 'n':
+ else if (!strcmp(buf, "noteid"))
return FS_NOTE;
- case 'N':
+ else if (!strcmp(buf, "note"))
return FS_NOTEFILE;
- case 'p':
+ else if (!strcmp(buf, "priority"))
return FS_PRIORITY;
- case '(':
- /* Long format specifier. */
- for ((*s)++, i = 0; **s != ':' && **s != ')'; (*s)++, i++)
- {
- if (**s == '\0')
- return FS_EOF;
-
- if (i < FS_EXT_MAXLEN)
- buf[i] = **s;
- }
-
- buf[(i < FS_EXT_MAXLEN) ? i : FS_EXT_MAXLEN - 1] = '\0';
-
- if (**s == ':')
- {
- for ((*s)++, i = 0; **s != ')'; (*s)++, i++)
- {
- if (**s == '\0')
- return FS_EOF;
-
- if (i < FS_EXT_MAXLEN)
- extformat[i] = **s;
- }
-
- extformat[(i < FS_EXT_MAXLEN) ? i : FS_EXT_MAXLEN - 1] = '\0';
- }
-
- if (!strcmp (buf, "start"))
- return FS_STARTDATE;
- else if (!strcmp (buf, "duration"))
- return FS_DURATION;
- else if (!strcmp (buf, "end"))
- return FS_ENDDATE;
- else if (!strcmp (buf, "message"))
- return FS_MESSAGE;
- else if (!strcmp (buf, "noteid"))
- return FS_NOTE;
- else if (!strcmp (buf, "note"))
- return FS_NOTEFILE;
- else if (!strcmp (buf, "priority"))
- return FS_PRIORITY;
- else
- return FS_UNKNOWN;
- case '%':
- return FS_PSIGN;
- case '\0':
- return FS_EOF;
- default:
+ else
return FS_UNKNOWN;
- }
+ case '%':
+ return FS_PSIGN;
+ case '\0':
+ return FS_EOF;
+ default:
+ return FS_UNKNOWN;
+ }
}
/* Print a formatted date to stdout. */
-static void
-print_date (long date, const char *extformat)
+static void print_date(long date, const char *extformat)
{
char buf[BUFSIZ];
- if (!strcmp (extformat, "epoch"))
- printf ("%ld", date);
- else
- {
- time_t t = date;
- struct tm *lt = localtime ((time_t *)&t);
+ if (!strcmp(extformat, "epoch"))
+ printf("%ld", date);
+ else {
+ time_t t = date;
+ struct tm *lt = localtime((time_t *) & t);
- if (extformat[0] == '\0' || !strcmp (extformat, "default"))
- strftime (buf, BUFSIZ, "%H:%M", lt);
- else
- strftime (buf, BUFSIZ, extformat, lt);
+ if (extformat[0] == '\0' || !strcmp(extformat, "default"))
+ strftime(buf, BUFSIZ, "%H:%M", lt);
+ else
+ strftime(buf, BUFSIZ, extformat, lt);
- printf ("%s", buf);
- }
+ printf("%s", buf);
+ }
}
/* Print a formatted appointment to stdout. */
-void
-print_apoint (const char *format, long day, struct apoint *apt)
+void print_apoint(const char *format, long day, struct apoint *apt)
{
const char *p;
char extformat[FS_EXT_MAXLEN];
- for (p = format; *p; p++)
- {
- if (*p == '%') {
- p++;
- switch (parse_fs (&p, extformat))
- {
- case FS_STARTDATE:
- print_date (apt->start, extformat);
- break;
- case FS_DURATION:
- printf ("%ld", apt->dur);
- break;
- case FS_ENDDATE:
- print_date (apt->start + apt->dur, extformat);
- break;
- case FS_MESSAGE:
- printf ("%s", apt->mesg);
- break;
- case FS_NOTE:
- printf ("%s", apt->note);
- break;
- case FS_NOTEFILE:
- print_notefile (stdout, apt->note, 1);
- break;
- case FS_PSIGN:
- putchar ('%');
- break;
- case FS_EOF:
- return;
- break;
- default:
- putchar ('?');
- break;
- }
- }
- else if (*p == '\\')
- p += print_escape (p);
- else
- putchar (*p);
- }
+ for (p = format; *p; p++) {
+ if (*p == '%') {
+ p++;
+ switch (parse_fs(&p, extformat)) {
+ case FS_STARTDATE:
+ print_date(apt->start, extformat);
+ break;
+ case FS_DURATION:
+ printf("%ld", apt->dur);
+ break;
+ case FS_ENDDATE:
+ print_date(apt->start + apt->dur, extformat);
+ break;
+ case FS_MESSAGE:
+ printf("%s", apt->mesg);
+ break;
+ case FS_NOTE:
+ printf("%s", apt->note);
+ break;
+ case FS_NOTEFILE:
+ print_notefile(stdout, apt->note, 1);
+ break;
+ case FS_PSIGN:
+ putchar('%');
+ break;
+ case FS_EOF:
+ return;
+ break;
+ default:
+ putchar('?');
+ break;
+ }
+ } else if (*p == '\\')
+ p += print_escape(p);
+ else
+ putchar(*p);
+ }
}
/* Print a formatted event to stdout. */
-void
-print_event (const char *format, long day, struct event *ev)
+void print_event(const char *format, long day, struct event *ev)
{
const char *p;
char extformat[FS_EXT_MAXLEN];
- for (p = format; *p; p++)
- {
- if (*p == '%') {
- p++;
- switch (parse_fs (&p, extformat))
- {
- case FS_MESSAGE:
- printf ("%s", ev->mesg);
- break;
- case FS_NOTE:
- printf ("%s", ev->note);
- break;
- case FS_NOTEFILE:
- print_notefile (stdout, ev->note, 1);
- break;
- case FS_PSIGN:
- putchar ('%');
- break;
- case FS_EOF:
- return;
- break;
- default:
- putchar ('?');
- break;
- }
- }
- else if (*p == '\\')
- p += print_escape (p);
- else
- putchar (*p);
- }
+ for (p = format; *p; p++) {
+ if (*p == '%') {
+ p++;
+ switch (parse_fs(&p, extformat)) {
+ case FS_MESSAGE:
+ printf("%s", ev->mesg);
+ break;
+ case FS_NOTE:
+ printf("%s", ev->note);
+ break;
+ case FS_NOTEFILE:
+ print_notefile(stdout, ev->note, 1);
+ break;
+ case FS_PSIGN:
+ putchar('%');
+ break;
+ case FS_EOF:
+ return;
+ break;
+ default:
+ putchar('?');
+ break;
+ }
+ } else if (*p == '\\')
+ p += print_escape(p);
+ else
+ putchar(*p);
+ }
}
/* Print a formatted recurrent appointment to stdout. */
void
-print_recur_apoint (const char *format, long day, unsigned occurrence,
- struct recur_apoint *rapt)
+print_recur_apoint(const char *format, long day, unsigned occurrence,
+ struct recur_apoint *rapt)
{
struct apoint apt;
@@ -1402,60 +1279,55 @@ print_recur_apoint (const char *format, long day, unsigned occurrence,
apt.mesg = rapt->mesg;
apt.note = rapt->note;
- print_apoint (format, day, &apt);
+ print_apoint(format, day, &apt);
}
/* Print a formatted recurrent event to stdout. */
-void
-print_recur_event (const char *format, long day, struct recur_event *rev)
+void print_recur_event(const char *format, long day, struct recur_event *rev)
{
struct event ev;
ev.mesg = rev->mesg;
ev.note = rev->note;
- print_event (format, day, &ev);
+ print_event(format, day, &ev);
}
/* Print a formatted todo item to stdout. */
-void
-print_todo (const char *format, struct todo *todo)
+void print_todo(const char *format, struct todo *todo)
{
const char *p;
char extformat[FS_EXT_MAXLEN];
- for (p = format; *p; p++)
- {
- if (*p == '%') {
- p++;
- switch (parse_fs (&p, extformat))
- {
- case FS_PRIORITY:
- printf ("%d", abs (todo->id));
- break;
- case FS_MESSAGE:
- printf ("%s", todo->mesg);
- break;
- case FS_NOTE:
- printf ("%s", todo->note);
- break;
- case FS_NOTEFILE:
- print_notefile (stdout, todo->note, 1);
- break;
- case FS_PSIGN:
- putchar ('%');
- break;
- case FS_EOF:
- return;
- break;
- default:
- putchar ('?');
- break;
- }
- }
- else if (*p == '\\')
- p += print_escape (p);
- else
- putchar (*p);
- }
+ for (p = format; *p; p++) {
+ if (*p == '%') {
+ p++;
+ switch (parse_fs(&p, extformat)) {
+ case FS_PRIORITY:
+ printf("%d", abs(todo->id));
+ break;
+ case FS_MESSAGE:
+ printf("%s", todo->mesg);
+ break;
+ case FS_NOTE:
+ printf("%s", todo->note);
+ break;
+ case FS_NOTEFILE:
+ print_notefile(stdout, todo->note, 1);
+ break;
+ case FS_PSIGN:
+ putchar('%');
+ break;
+ case FS_EOF:
+ return;
+ break;
+ default:
+ putchar('?');
+ break;
+ }
+ } else if (*p == '\\')
+ p += print_escape(p);
+ else
+ putchar(*p);
+ }
}
diff --git a/src/vars.c b/src/vars.c
index db8541b..dd4cfbc 100644
--- a/src/vars.c
+++ b/src/vars.c
@@ -65,6 +65,7 @@ int read_only = 0;
* variables to store calendar names
*/
int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+
const char *monthnames[12] = {
N_("January"),
N_("February"),
@@ -120,8 +121,7 @@ struct dmon_conf dmon;
/*
* Variables init
*/
-void
-vars_init (void)
+void vars_init(void)
{
const char *ed, *pg;
@@ -133,33 +133,33 @@ vars_init (void)
conf.periodic_save = 0;
conf.system_dialogs = 1;
conf.progress_bar = 1;
- strncpy (conf.output_datefmt, "%D", 3);
+ strncpy(conf.output_datefmt, "%D", 3);
conf.input_datefmt = 1;
/* Default external editor and pager */
- ed = getenv ("VISUAL");
+ ed = getenv("VISUAL");
if (ed == NULL || ed[0] == '\0')
- ed = getenv ("EDITOR");
+ ed = getenv("EDITOR");
if (ed == NULL || ed[0] == '\0')
ed = DEFAULT_EDITOR;
conf.editor = ed;
- pg = getenv ("PAGER");
+ pg = getenv("PAGER");
if (pg == NULL || pg[0] == '\0')
pg = DEFAULT_PAGER;
conf.pager = pg;
- wins_set_layout (1);
+ wins_set_layout(1);
- calendar_set_first_day_of_week (MONDAY);
+ calendar_set_first_day_of_week(MONDAY);
/* Pad structure to scroll text inside the appointment panel */
apad.length = 1;
apad.first_onscreen = 0;
/* Attribute definitions for color and non-color terminals */
- custom_init_attr ();
+ custom_init_attr();
/* Start at the current date */
- calendar_init_slctd_day ();
+ calendar_init_slctd_day();
}
diff --git a/src/wins.c b/src/wins.c
index 5b2568f..b45ad6c 100644
--- a/src/wins.c
+++ b/src/wins.c
@@ -63,93 +63,83 @@ static int layout;
*/
static pthread_mutex_t screen_mutex = PTHREAD_MUTEX_INITIALIZER;
-static unsigned
-screen_acquire (void)
+static unsigned screen_acquire(void)
{
- if (pthread_mutex_lock (&screen_mutex) != 0)
+ if (pthread_mutex_lock(&screen_mutex) != 0)
return 0;
else
return 1;
}
-static void
-screen_release (void)
+static void screen_release(void)
{
- pthread_mutex_unlock (&screen_mutex);
+ pthread_mutex_unlock(&screen_mutex);
}
-int
-wins_refresh (void)
+int wins_refresh(void)
{
int rc;
- if (!screen_acquire ())
+ if (!screen_acquire())
return ERR;
- rc = refresh ();
- screen_release ();
+ rc = refresh();
+ screen_release();
return rc;
}
-int
-wins_wrefresh (WINDOW *win)
+int wins_wrefresh(WINDOW * win)
{
int rc;
- if (!win || !screen_acquire ())
+ if (!win || !screen_acquire())
return ERR;
- rc = wrefresh (win);
- screen_release ();
+ rc = wrefresh(win);
+ screen_release();
return rc;
}
-int
-wins_doupdate (void)
+int wins_doupdate(void)
{
int rc;
- if (!screen_acquire ())
+ if (!screen_acquire())
return ERR;
- rc = doupdate ();
- screen_release ();
+ rc = doupdate();
+ screen_release();
return rc;
}
/* Get the current layout. */
-int
-wins_layout (void)
+int wins_layout(void)
{
return layout;
}
/* Set the current layout. */
-void
-wins_set_layout (int nb)
+void wins_set_layout(int nb)
{
layout = nb;
}
/* Get the current side bar width. */
-unsigned
-wins_sbar_width (void)
+unsigned wins_sbar_width(void)
{
if (sbarwidth_perc > SBARMAXWIDTHPERC)
return col * SBARMAXWIDTHPERC / 100;
- else
- {
- unsigned sbarwidth = (unsigned)(col * sbarwidth_perc / 100);
- return (sbarwidth < SBARMINWIDTH) ? SBARMINWIDTH : sbarwidth;
- }
+ else {
+ unsigned sbarwidth = (unsigned)(col * sbarwidth_perc / 100);
+ return (sbarwidth < SBARMINWIDTH) ? SBARMINWIDTH : sbarwidth;
+ }
}
/*
* Return the side bar width in percentage of the total number of columns
* available in calcurse's screen.
*/
-unsigned
-wins_sbar_wperc (void)
+unsigned wins_sbar_wperc(void)
{
return sbarwidth_perc > SBARMAXWIDTHPERC ? SBARMAXWIDTHPERC : sbarwidth_perc;
}
@@ -160,51 +150,44 @@ wins_sbar_wperc (void)
* The side bar could not have a width representing more than 50% of the screen,
* and could not be less than SBARMINWIDTH characters.
*/
-void
-wins_set_sbar_width (unsigned perc)
+void wins_set_sbar_width(unsigned perc)
{
sbarwidth_perc = perc;
}
/* Change the width of the side bar within acceptable boundaries. */
-void
-wins_sbar_winc (void)
+void wins_sbar_winc(void)
{
if (sbarwidth_perc < SBARMAXWIDTHPERC)
sbarwidth_perc++;
}
-void
-wins_sbar_wdec (void)
+void wins_sbar_wdec(void)
{
if (sbarwidth_perc > 0)
sbarwidth_perc--;
}
/* Initialize the selected window in calcurse's interface. */
-void
-wins_slctd_init (void)
+void wins_slctd_init(void)
{
- wins_slctd_set (CAL);
+ wins_slctd_set(CAL);
}
/* Returns an enum which corresponds to the window which is selected. */
-enum win
-wins_slctd (void)
+enum win wins_slctd(void)
{
return slctd_win;
}
/* Sets the selected window. */
-void
-wins_slctd_set (enum win window)
+void wins_slctd_set(enum win window)
{
slctd_win = window;
}
/* TAB key was hit in the interface, need to select next window. */
-void
-wins_slctd_next (void)
+void wins_slctd_next(void)
{
if (slctd_win == TOD)
slctd_win = CAL;
@@ -212,34 +195,32 @@ wins_slctd_next (void)
slctd_win++;
}
-static void
-wins_init_panels (void)
+static void wins_init_panels(void)
{
- win[CAL].p = newwin (CALHEIGHT, wins_sbar_width (), win[CAL].y, win[CAL].x);
- wins_show (win[CAL].p, _("Calendar"));
+ win[CAL].p = newwin(CALHEIGHT, wins_sbar_width(), win[CAL].y, win[CAL].x);
+ wins_show(win[CAL].p, _("Calendar"));
- win[APP].p = newwin (win[APP].h, win[APP].w, win[APP].y, win[APP].x);
- wins_show (win[APP].p, _("Appointments"));
+ win[APP].p = newwin(win[APP].h, win[APP].w, win[APP].y, win[APP].x);
+ wins_show(win[APP].p, _("Appointments"));
apad.width = win[APP].w - 3;
- apad.ptrwin = newpad (apad.length, apad.width);
+ apad.ptrwin = newpad(apad.length, apad.width);
- win[TOD].p = newwin (win[TOD].h, win[TOD].w, win[TOD].y, win[TOD].x);
- wins_show (win[TOD].p, _("ToDo"));
+ win[TOD].p = newwin(win[TOD].h, win[TOD].w, win[TOD].y, win[TOD].x);
+ wins_show(win[TOD].p, _("ToDo"));
/* Enable function keys (i.e. arrow keys) in those windows */
- keypad (win[CAL].p, TRUE);
- keypad (win[APP].p, TRUE);
- keypad (win[TOD].p, TRUE);
+ keypad(win[CAL].p, TRUE);
+ keypad(win[APP].p, TRUE);
+ keypad(win[TOD].p, TRUE);
}
/* Create all the windows. */
-void
-wins_init (void)
+void wins_init(void)
{
- wins_init_panels ();
- win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y, win[STA].x);
+ wins_init_panels();
+ win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x);
- keypad (win[STA].p, TRUE);
+ keypad(win[STA].p, TRUE);
/* Notify that the curses mode is now launched. */
ui_mode = UI_CURSES;
@@ -249,116 +230,105 @@ wins_init (void)
* Create a new window and its associated pad, which is used to make the
* scrolling faster.
*/
-void
-wins_scrollwin_init (struct scrollwin *sw)
+void wins_scrollwin_init(struct scrollwin *sw)
{
- EXIT_IF (sw == NULL, "null pointer");
- sw->win.p = newwin (sw->win.h, sw->win.w, sw->win.y, sw->win.x);
- sw->pad.p = newpad (sw->pad.h, sw->pad.w);
+ EXIT_IF(sw == NULL, "null pointer");
+ sw->win.p = newwin(sw->win.h, sw->win.w, sw->win.y, sw->win.x);
+ sw->pad.p = newpad(sw->pad.h, sw->pad.w);
sw->first_visible_line = 0;
sw->total_lines = 0;
}
/* Free an already created scrollwin. */
-void
-wins_scrollwin_delete (struct scrollwin *sw)
+void wins_scrollwin_delete(struct scrollwin *sw)
{
- EXIT_IF (sw == NULL, "null pointer");
+ EXIT_IF(sw == NULL, "null pointer");
delwin(sw->win.p);
delwin(sw->pad.p);
}
/* Display a scrolling window. */
-void
-wins_scrollwin_display (struct scrollwin *sw)
+void wins_scrollwin_display(struct scrollwin *sw)
{
const int visible_lines = sw->win.h - sw->pad.y - 1;
- if (sw->total_lines > visible_lines)
- {
- float ratio = ((float) visible_lines) / ((float) sw->total_lines);
- int sbar_length = (int) (ratio * visible_lines);
- int highend = (int) (ratio * sw->first_visible_line);
- int sbar_top = highend + sw->pad.y + 1;
+ if (sw->total_lines > visible_lines) {
+ float ratio = ((float)visible_lines) / ((float)sw->total_lines);
+ int sbar_length = (int)(ratio * visible_lines);
+ int highend = (int)(ratio * sw->first_visible_line);
+ int sbar_top = highend + sw->pad.y + 1;
- if ((sbar_top + sbar_length) > sw->win.h - 1)
- sbar_length = sw->win.h - sbar_top;
- draw_scrollbar (sw->win.p, sbar_top, sw->win.w + sw->win.x - 2,
- sbar_length, sw->pad.y + 1, sw->win.h - 1, 1);
- }
- wmove (win[STA].p, 0, 0);
- wnoutrefresh (sw->win.p);
- pnoutrefresh (sw->pad.p, sw->first_visible_line, 0, sw->pad.y, sw->pad.x,
- sw->win.h - sw->pad.y + 1, sw->win.w - sw->win.x);
- wins_doupdate ();
+ if ((sbar_top + sbar_length) > sw->win.h - 1)
+ sbar_length = sw->win.h - sbar_top;
+ draw_scrollbar(sw->win.p, sbar_top, sw->win.w + sw->win.x - 2,
+ sbar_length, sw->pad.y + 1, sw->win.h - 1, 1);
+ }
+ wmove(win[STA].p, 0, 0);
+ wnoutrefresh(sw->win.p);
+ pnoutrefresh(sw->pad.p, sw->first_visible_line, 0, sw->pad.y, sw->pad.x,
+ sw->win.h - sw->pad.y + 1, sw->win.w - sw->win.x);
+ wins_doupdate();
}
-void
-wins_scrollwin_up (struct scrollwin *sw, int amount)
+void wins_scrollwin_up(struct scrollwin *sw, int amount)
{
if (sw->first_visible_line > 0)
sw->first_visible_line -= amount;
}
-void
-wins_scrollwin_down (struct scrollwin *sw, int amount)
+void wins_scrollwin_down(struct scrollwin *sw, int amount)
{
- if (sw->total_lines
- > (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
+ if (sw->total_lines > (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
sw->first_visible_line += amount;
}
-void
-wins_reinit_panels (void)
+void wins_reinit_panels(void)
{
- delwin (win[CAL].p);
- delwin (win[APP].p);
- delwin (apad.ptrwin);
- delwin (win[TOD].p);
- wins_get_config ();
- wins_init_panels ();
+ delwin(win[CAL].p);
+ delwin(win[APP].p);
+ delwin(apad.ptrwin);
+ delwin(win[TOD].p);
+ wins_get_config();
+ wins_init_panels();
}
/*
* Delete the existing windows and recreate them with their new
* size and placement.
*/
-void
-wins_reinit (void)
+void wins_reinit(void)
{
- delwin (win[CAL].p);
- delwin (win[APP].p);
- delwin (apad.ptrwin);
- delwin (win[TOD].p);
- delwin (win[STA].p);
- wins_get_config ();
- wins_init ();
- if (notify_bar ())
- notify_reinit_bar ();
+ delwin(win[CAL].p);
+ delwin(win[APP].p);
+ delwin(apad.ptrwin);
+ delwin(win[TOD].p);
+ delwin(win[STA].p);
+ wins_get_config();
+ wins_init();
+ if (notify_bar())
+ notify_reinit_bar();
}
/* Show the window with a border and a label. */
-void
-wins_show (WINDOW *win, const char *label)
+void wins_show(WINDOW * win, const char *label)
{
- int width = getmaxx (win);
+ int width = getmaxx(win);
- box (win, 0, 0);
- mvwaddch (win, 2, 0, ACS_LTEE);
- mvwhline (win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch (win, 2, width - 1, ACS_RTEE);
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
- print_in_middle (win, 1, 0, width, label);
+ print_in_middle(win, 1, 0, width, label);
}
/*
* Get the screen size and recalculate the windows configurations.
*/
-void
-wins_get_config (void)
+void wins_get_config(void)
{
/* Get the screen configuration */
- getmaxyx (stdscr, row, col);
+ getmaxyx(stdscr, row, col);
/* fixed values for status, notification bars and calendar */
win[STA].h = STATUSHEIGHT;
@@ -366,274 +336,243 @@ wins_get_config (void)
win[STA].y = row - win[STA].h;
win[STA].x = 0;
- if (notify_bar ())
- {
- win[NOT].h = 1;
- win[NOT].w = col;
- win[NOT].y = win[STA].y - 1;
- win[NOT].x = 0;
- }
- else
- {
- win[NOT].h = 0;
- win[NOT].w = 0;
- win[NOT].y = 0;
- win[NOT].x = 0;
- }
-
- win[CAL].w = wins_sbar_width ();
+ if (notify_bar()) {
+ win[NOT].h = 1;
+ win[NOT].w = col;
+ win[NOT].y = win[STA].y - 1;
+ win[NOT].x = 0;
+ } else {
+ win[NOT].h = 0;
+ win[NOT].w = 0;
+ win[NOT].y = 0;
+ win[NOT].x = 0;
+ }
+
+ win[CAL].w = wins_sbar_width();
win[CAL].h = CALHEIGHT;
- if (layout <= 4)
- { /* APPOINTMENT is the biggest panel */
- win[APP].w = col - win[CAL].w;
- win[APP].h = row - (win[STA].h + win[NOT].h);
- win[TOD].w = win[CAL].w;
- win[TOD].h = row - (win[CAL].h + win[STA].h + win[NOT].h);
- }
- else
- { /* TODO is the biggest panel */
- win[TOD].w = col - win[CAL].w;
- win[TOD].h = row - (win[STA].h + win[NOT].h);
- win[APP].w = win[CAL].w;
- win[APP].h = row - (win[CAL].h + win[STA].h + win[NOT].h);
- }
+ if (layout <= 4) { /* APPOINTMENT is the biggest panel */
+ win[APP].w = col - win[CAL].w;
+ win[APP].h = row - (win[STA].h + win[NOT].h);
+ win[TOD].w = win[CAL].w;
+ win[TOD].h = row - (win[CAL].h + win[STA].h + win[NOT].h);
+ } else { /* TODO is the biggest panel */
+ win[TOD].w = col - win[CAL].w;
+ win[TOD].h = row - (win[STA].h + win[NOT].h);
+ win[APP].w = win[CAL].w;
+ win[APP].h = row - (win[CAL].h + win[STA].h + win[NOT].h);
+ }
/* defining the layout */
- switch (layout)
- {
- case 1:
- win[APP].y = 0;
- win[APP].x = 0;
- win[CAL].y = 0;
- win[TOD].x = win[APP].w;
- win[TOD].y = win[CAL].h;
- win[CAL].x = win[APP].w;
- break;
- case 2:
- win[APP].y = 0;
- win[APP].x = 0;
- win[TOD].y = 0;
- win[TOD].x = win[APP].w;
- win[CAL].x = win[APP].w;
- win[CAL].y = win[TOD].h;
- break;
- case 3:
- win[APP].y = 0;
- win[TOD].x = 0;
- win[CAL].x = 0;
- win[CAL].y = 0;
- win[APP].x = win[CAL].w;
- win[TOD].y = win[CAL].h;
- break;
- case 4:
- win[APP].y = 0;
- win[TOD].x = 0;
- win[TOD].y = 0;
- win[CAL].x = 0;
- win[APP].x = win[CAL].w;
- win[CAL].y = win[TOD].h;
- break;
- case 5:
- win[TOD].y = 0;
- win[TOD].x = 0;
- win[CAL].y = 0;
- win[APP].y = win[CAL].h;
- win[APP].x = win[TOD].w;
- win[CAL].x = win[TOD].w;
- break;
- case 6:
- win[TOD].y = 0;
- win[TOD].x = 0;
- win[APP].y = 0;
- win[APP].x = win[TOD].w;
- win[CAL].x = win[TOD].w;
- win[CAL].y = win[APP].h;
- break;
- case 7:
- win[TOD].y = 0;
- win[APP].x = 0;
- win[CAL].x = 0;
- win[CAL].y = 0;
- win[TOD].x = win[CAL].w;
- win[APP].y = win[CAL].h;
- break;
- case 8:
- win[TOD].y = 0;
- win[APP].x = 0;
- win[CAL].x = 0;
- win[APP].y = 0;
- win[TOD].x = win[CAL].w;
- win[CAL].y = win[APP].h;
- break;
- }
+ switch (layout) {
+ case 1:
+ win[APP].y = 0;
+ win[APP].x = 0;
+ win[CAL].y = 0;
+ win[TOD].x = win[APP].w;
+ win[TOD].y = win[CAL].h;
+ win[CAL].x = win[APP].w;
+ break;
+ case 2:
+ win[APP].y = 0;
+ win[APP].x = 0;
+ win[TOD].y = 0;
+ win[TOD].x = win[APP].w;
+ win[CAL].x = win[APP].w;
+ win[CAL].y = win[TOD].h;
+ break;
+ case 3:
+ win[APP].y = 0;
+ win[TOD].x = 0;
+ win[CAL].x = 0;
+ win[CAL].y = 0;
+ win[APP].x = win[CAL].w;
+ win[TOD].y = win[CAL].h;
+ break;
+ case 4:
+ win[APP].y = 0;
+ win[TOD].x = 0;
+ win[TOD].y = 0;
+ win[CAL].x = 0;
+ win[APP].x = win[CAL].w;
+ win[CAL].y = win[TOD].h;
+ break;
+ case 5:
+ win[TOD].y = 0;
+ win[TOD].x = 0;
+ win[CAL].y = 0;
+ win[APP].y = win[CAL].h;
+ win[APP].x = win[TOD].w;
+ win[CAL].x = win[TOD].w;
+ break;
+ case 6:
+ win[TOD].y = 0;
+ win[TOD].x = 0;
+ win[APP].y = 0;
+ win[APP].x = win[TOD].w;
+ win[CAL].x = win[TOD].w;
+ win[CAL].y = win[APP].h;
+ break;
+ case 7:
+ win[TOD].y = 0;
+ win[APP].x = 0;
+ win[CAL].x = 0;
+ win[CAL].y = 0;
+ win[TOD].x = win[CAL].w;
+ win[APP].y = win[CAL].h;
+ break;
+ case 8:
+ win[TOD].y = 0;
+ win[APP].x = 0;
+ win[CAL].x = 0;
+ win[APP].y = 0;
+ win[TOD].x = win[CAL].w;
+ win[CAL].y = win[APP].h;
+ break;
+ }
}
/* draw panel border in color */
-static void
-border_color (WINDOW *window)
+static void border_color(WINDOW * window)
{
int color_attr = A_BOLD;
int no_color_attr = A_BOLD;
- if (colorize)
- {
- wattron (window, color_attr | COLOR_PAIR (COLR_CUSTOM));
- box (window, 0, 0);
- }
- else
- {
- wattron (window, no_color_attr);
- box (window, 0, 0);
- }
- if (colorize)
- {
- wattroff (window, color_attr | COLOR_PAIR (COLR_CUSTOM));
- }
- else
- {
- wattroff (window, no_color_attr);
- }
- wnoutrefresh (window);
+ if (colorize) {
+ wattron(window, color_attr | COLOR_PAIR(COLR_CUSTOM));
+ box(window, 0, 0);
+ } else {
+ wattron(window, no_color_attr);
+ box(window, 0, 0);
+ }
+ if (colorize) {
+ wattroff(window, color_attr | COLOR_PAIR(COLR_CUSTOM));
+ } else {
+ wattroff(window, no_color_attr);
+ }
+ wnoutrefresh(window);
}
/* draw panel border without any color */
-static void
-border_nocolor (WINDOW *window)
+static void border_nocolor(WINDOW * window)
{
int color_attr = A_BOLD;
int no_color_attr = A_DIM;
- if (colorize)
- {
- wattron (window, color_attr | COLOR_PAIR (COLR_DEFAULT));
- }
- else
- {
- wattron (window, no_color_attr);
- }
- box (window, 0, 0);
- if (colorize)
- {
- wattroff (window, color_attr | COLOR_PAIR (COLR_DEFAULT));
- }
- else
- {
- wattroff (window, no_color_attr);
- }
- wnoutrefresh (window);
-}
-
-void
-wins_update_border (int flags)
-{
- if (flags & FLAG_CAL)
- {
- if (slctd_win == CAL)
- border_color (win[CAL].p);
- else
- border_nocolor (win[CAL].p);
- }
- if (flags & FLAG_APP)
- {
- if (slctd_win == APP)
- border_color (win[APP].p);
- else
- border_nocolor (win[APP].p);
- }
- if (flags & FLAG_TOD)
- {
- if (slctd_win == TOD)
- border_color (win[TOD].p);
- else
- border_nocolor (win[TOD].p);
- }
-}
-
-void
-wins_update_panels (int flags)
+ if (colorize) {
+ wattron(window, color_attr | COLOR_PAIR(COLR_DEFAULT));
+ } else {
+ wattron(window, no_color_attr);
+ }
+ box(window, 0, 0);
+ if (colorize) {
+ wattroff(window, color_attr | COLOR_PAIR(COLR_DEFAULT));
+ } else {
+ wattroff(window, no_color_attr);
+ }
+ wnoutrefresh(window);
+}
+
+void wins_update_border(int flags)
+{
+ if (flags & FLAG_CAL) {
+ if (slctd_win == CAL)
+ border_color(win[CAL].p);
+ else
+ border_nocolor(win[CAL].p);
+ }
+ if (flags & FLAG_APP) {
+ if (slctd_win == APP)
+ border_color(win[APP].p);
+ else
+ border_nocolor(win[APP].p);
+ }
+ if (flags & FLAG_TOD) {
+ if (slctd_win == TOD)
+ border_color(win[TOD].p);
+ else
+ border_nocolor(win[TOD].p);
+ }
+}
+
+void wins_update_panels(int flags)
{
if (flags & FLAG_APP)
- apoint_update_panel (slctd_win);
+ apoint_update_panel(slctd_win);
if (flags & FLAG_TOD)
- todo_update_panel (slctd_win);
+ todo_update_panel(slctd_win);
if (flags & FLAG_CAL)
- calendar_update_panel (&win[CAL]);
+ calendar_update_panel(&win[CAL]);
}
/*
* Update all of the three windows and put a border around the
* selected window.
*/
-void
-wins_update (int flags)
+void wins_update(int flags)
{
- wins_update_border (flags);
- wins_update_panels (flags);
+ wins_update_border(flags);
+ wins_update_panels(flags);
if (flags & FLAG_STA)
- wins_status_bar ();
- if ((flags & FLAG_NOT) && notify_bar ())
- notify_update_bar ();
- wmove (win[STA].p, 0, 0);
- wins_doupdate ();
+ wins_status_bar();
+ if ((flags & FLAG_NOT) && notify_bar())
+ notify_update_bar();
+ wmove(win[STA].p, 0, 0);
+ wins_doupdate();
}
/* Reset the screen, needed when resizing terminal for example. */
-void
-wins_reset (void)
+void wins_reset(void)
{
- endwin ();
- wins_refresh ();
- curs_set (0);
- wins_reinit ();
- wins_update (FLAG_ALL);
+ endwin();
+ wins_refresh();
+ curs_set(0);
+ wins_reinit();
+ wins_update(FLAG_ALL);
}
/* Prepare windows for the execution of an external command. */
-void
-wins_prepare_external (void)
+void wins_prepare_external(void)
{
- if (notify_bar ())
- notify_stop_main_thread ();
- def_prog_mode ();
+ if (notify_bar())
+ notify_stop_main_thread();
+ def_prog_mode();
ui_mode = UI_CMDLINE;
- clear ();
- wins_refresh ();
- endwin ();
+ clear();
+ wins_refresh();
+ endwin();
}
/* Restore windows when returning from an external command. */
-void
-wins_unprepare_external (void)
+void wins_unprepare_external(void)
{
- reset_prog_mode ();
- clearok (curscr, TRUE);
- curs_set (0);
+ reset_prog_mode();
+ clearok(curscr, TRUE);
+ curs_set(0);
ui_mode = UI_CURSES;
- wins_refresh ();
- if (notify_bar ())
- notify_start_main_thread ();
+ wins_refresh();
+ if (notify_bar())
+ notify_start_main_thread();
}
/*
* While inside interactive mode, launch the external command cmd on the given
* file.
*/
-void
-wins_launch_external (const char *file, const char *cmd)
+void wins_launch_external(const char *file, const char *cmd)
{
const char *arg[] = { cmd, file, NULL };
int pid;
- wins_prepare_external ();
- if ((pid = shell_exec (NULL, NULL, *arg, arg)))
- child_wait (NULL, NULL, pid);
- wins_unprepare_external ();
+ wins_prepare_external();
+ if ((pid = shell_exec(NULL, NULL, *arg, arg)))
+ child_wait(NULL, NULL, pid);
+ wins_unprepare_external();
}
-#define NB_CAL_CMDS 27 /* number of commands while in cal view */
-#define NB_APP_CMDS 32 /* same thing while in appointment view */
-#define NB_TOD_CMDS 31 /* same thing while in todo view */
+#define NB_CAL_CMDS 27 /* number of commands while in cal view */
+#define NB_APP_CMDS 32 /* same thing while in appointment view */
+#define NB_TOD_CMDS 31 /* same thing while in todo view */
static unsigned status_page;
@@ -643,47 +582,46 @@ static unsigned status_page;
* table, and update the NB_CAL_CMDS, NB_APP_CMDS or NB_TOD_CMDS defines,
* depending on which panel the added keybind is assigned to.
*/
-void
-wins_status_bar (void)
-{
- 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 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 pipe = {_("Pipe"), KEY_PIPE_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};
- struct binding othr = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
+void wins_status_bar(void)
+{
+ 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 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 pipe = { _("Pipe"), KEY_PIPE_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 };
+ struct binding othr = { _("OtherCmd"), KEY_GENERIC_OTHER_CMD };
struct binding *bindings_cal[] = {
&help, &quit, &save, &chgvu, &nview, &pview, &up, &down, &left, &right,
@@ -703,70 +641,65 @@ wins_status_bar (void)
&gnweek, &gpweek, &togo, &today, &conf, &appt, &todo, &draw
};
- enum win active_panel = wins_slctd ();
+ enum win active_panel = wins_slctd();
struct binding **bindings;
int bindings_size;
- switch (active_panel)
- {
- case CAL:
- bindings = bindings_cal;
- bindings_size = sizeof (bindings_cal) / sizeof (bindings_cal[0]);
- break;
- case APP:
- bindings = bindings_apoint;
- bindings_size = sizeof (bindings_apoint) / sizeof (bindings_apoint[0]);
- break;
- case TOD:
- bindings = bindings_todo;
- bindings_size = sizeof (bindings_todo) / sizeof (bindings_todo[0]);
- break;
- default:
- EXIT (_("unknown panel"));
- /* NOTREACHED */
- }
-
- keys_display_bindings_bar (win[STA].p, bindings, bindings_size,
- (KEYS_CMDS_PER_LINE * 2 - 1) * (status_page - 1),
- KEYS_CMDS_PER_LINE * 2, &othr);
+ switch (active_panel) {
+ case CAL:
+ bindings = bindings_cal;
+ bindings_size = sizeof(bindings_cal) / sizeof(bindings_cal[0]);
+ break;
+ case APP:
+ bindings = bindings_apoint;
+ bindings_size = sizeof(bindings_apoint) / sizeof(bindings_apoint[0]);
+ break;
+ case TOD:
+ bindings = bindings_todo;
+ bindings_size = sizeof(bindings_todo) / sizeof(bindings_todo[0]);
+ break;
+ default:
+ EXIT(_("unknown panel"));
+ /* NOTREACHED */
+ }
+
+ keys_display_bindings_bar(win[STA].p, bindings, bindings_size,
+ (KEYS_CMDS_PER_LINE * 2 - 1) * (status_page - 1),
+ KEYS_CMDS_PER_LINE * 2, &othr);
}
/* Erase status bar. */
-void
-wins_erase_status_bar (void)
+void wins_erase_status_bar(void)
{
- erase_window_part (win[STA].p, 0, 0, col, STATUSHEIGHT);
+ erase_window_part(win[STA].p, 0, 0, col, STATUSHEIGHT);
}
/* Update the status bar page number to display other commands. */
-void
-wins_other_status_page (int panel)
+void wins_other_status_page(int panel)
{
int nb_item, max_page;
- switch (panel)
- {
- case CAL:
- nb_item = NB_CAL_CMDS;
- break;
- case APP:
- nb_item = NB_APP_CMDS;
- break;
- case TOD:
- nb_item = NB_TOD_CMDS;
- break;
- default:
- EXIT (_("unknown panel"));
- /* NOTREACHED */
- }
+ switch (panel) {
+ case CAL:
+ nb_item = NB_CAL_CMDS;
+ break;
+ case APP:
+ nb_item = NB_APP_CMDS;
+ break;
+ case TOD:
+ nb_item = NB_TOD_CMDS;
+ break;
+ default:
+ EXIT(_("unknown panel"));
+ /* NOTREACHED */
+ }
max_page = nb_item / (KEYS_CMDS_PER_LINE * 2 - 1) + 1;
status_page = (status_page % max_page) + 1;
}
/* Reset the status bar page. */
-void
-wins_reset_status_page (void)
+void wins_reset_status_page(void)
{
status_page = 1;
}
diff --git a/test/run-test.c b/test/run-test.c
index 64618ee..c779be7 100644
--- a/test/run-test.c
+++ b/test/run-test.c
@@ -50,108 +50,94 @@
* appropriate file descriptors are written to pfdin/pfdout.
*/
static int
-fork_exec (int *pfdin, int *pfdout, const char *path, char *const *arg)
+fork_exec(int *pfdin, int *pfdout, const char *path, char *const *arg)
{
int pin[2], pout[2];
int pid;
- if (pfdin && (pipe (pin) == -1))
+ if (pfdin && (pipe(pin) == -1))
return 0;
- if (pfdout && (pipe (pout) == -1))
+ if (pfdout && (pipe(pout) == -1))
return 0;
- if ((pid = fork ()) == 0)
- {
- if (pfdout)
- {
- if (dup2 (pout[0], STDIN_FILENO) < 0)
- _exit (127);
- close (pout[0]);
- close (pout[1]);
- }
+ if ((pid = fork()) == 0) {
+ if (pfdout) {
+ if (dup2(pout[0], STDIN_FILENO) < 0)
+ _exit(127);
+ close(pout[0]);
+ close(pout[1]);
+ }
- if (pfdin)
- {
- if (dup2 (pin[1], STDOUT_FILENO) < 0)
- _exit (127);
- close (pin[0]);
- close (pin[1]);
- }
-
- execvp (path, arg);
- _exit (127);
+ if (pfdin) {
+ if (dup2(pin[1], STDOUT_FILENO) < 0)
+ _exit(127);
+ close(pin[0]);
+ close(pin[1]);
}
- else
- {
+
+ execvp(path, arg);
+ _exit(127);
+ } else {
+ if (pfdin)
+ close(pin[1]);
+ if (pfdout)
+ close(pout[0]);
+
+ if (pid > 0) {
+ if (pfdin) {
+ fcntl(pin[0], F_SETFD, FD_CLOEXEC);
+ *pfdin = pin[0];
+ }
+ if (pfdout) {
+ fcntl(pout[1], F_SETFD, FD_CLOEXEC);
+ *pfdout = pout[1];
+ }
+ } else {
if (pfdin)
- close (pin[1]);
+ close(pin[0]);
if (pfdout)
- close (pout[0]);
-
- if (pid > 0)
- {
- if (pfdin)
- {
- fcntl (pin[0], F_SETFD, FD_CLOEXEC);
- *pfdin = pin[0];
- }
- if (pfdout)
- {
- fcntl (pout[1], F_SETFD, FD_CLOEXEC);
- *pfdout = pout[1];
- }
- }
- else
- {
- if (pfdin)
- close (pin[0]);
- if (pfdout)
- close (pout[1]);
- return 0;
- }
+ close(pout[1]);
+ return 0;
}
+ }
return pid;
}
/* Wait for a child process to terminate. */
-static int
-child_wait (int *pfdin, int *pfdout, int pid)
+static int child_wait(int *pfdin, int *pfdout, int pid)
{
int stat;
if (pfdin)
- close (*pfdin);
+ close(*pfdin);
if (pfdout)
- close (*pfdout);
+ close(*pfdout);
- waitpid (pid, &stat, 0);
+ waitpid(pid, &stat, 0);
return stat;
}
/* Print error message and bail out. */
-static void
-die (const char *format, ...)
+static void die(const char *format, ...)
{
va_list arg;
- va_start (arg, format);
- fprintf (stderr, "error: ");
- vfprintf (stderr, format, arg);
- va_end (arg);
+ va_start(arg, format);
+ fprintf(stderr, "error: ");
+ vfprintf(stderr, format, arg);
+ va_end(arg);
- exit (1);
+ exit(1);
}
/* Print usage message. */
-static void
-usage (void)
+static void usage(void)
{
- printf ("usage: run-test [-h|--help] <test>...\n");
+ printf("usage: run-test [-h|--help] <test>...\n");
}
/* Run test with a specific name. */
-static int
-run_test (const char *name, int expect_failure)
+static int run_test(const char *name, int expect_failure)
{
char filename[BUFSIZ];
char *arg1[3], *arg2[3];
@@ -160,93 +146,84 @@ run_test (const char *name, int expect_failure)
char buf1[BUFSIZ], buf2[BUFSIZ];
int ret = 1;
- if (snprintf (filename, BUFSIZ, "./%s", name) >= BUFSIZ)
- die ("file name too long\n");
+ if (snprintf(filename, BUFSIZ, "./%s", name) >= BUFSIZ)
+ die("file name too long\n");
- if (access (filename, F_OK) != 0)
- {
- if (snprintf (filename, BUFSIZ, "./%s.sh", name) >= BUFSIZ)
- die ("file name too long\n");
+ if (access(filename, F_OK) != 0) {
+ if (snprintf(filename, BUFSIZ, "./%s.sh", name) >= BUFSIZ)
+ die("file name too long\n");
- if (access (filename, F_OK) != 0)
- die ("test not found: %s\n", name);
- }
+ if (access(filename, F_OK) != 0)
+ die("test not found: %s\n", name);
+ }
- if (access (filename, X_OK) != 0)
- die ("script is not executable: %s\n", filename);
+ if (access(filename, X_OK) != 0)
+ die("script is not executable: %s\n", filename);
arg1[0] = arg2[0] = filename;
arg1[1] = "expected";
arg2[1] = "actual";
arg1[2] = arg2[2] = NULL;
- printf ("Running %s...", name);
+ printf("Running %s...", name);
- if ((pid1 = fork_exec (&pin1, NULL, *arg1, arg1)) < 0)
- die("failed to execute %s: %s\n", filename, strerror (errno));
+ if ((pid1 = fork_exec(&pin1, NULL, *arg1, arg1)) < 0)
+ die("failed to execute %s: %s\n", filename, strerror(errno));
- if ((pid2 = fork_exec (&pin2, NULL, *arg2, arg2)) < 0)
- die("failed to execute %s: %s\n", filename, strerror (errno));
+ if ((pid2 = fork_exec(&pin2, NULL, *arg2, arg2)) < 0)
+ die("failed to execute %s: %s\n", filename, strerror(errno));
- fpin1 = fdopen (pin1, "r");
- fpin2 = fdopen (pin2, "r");
+ fpin1 = fdopen(pin1, "r");
+ fpin2 = fdopen(pin2, "r");
- while (fgets (buf1, BUFSIZ, fpin1))
- {
- if (!fgets (buf2, BUFSIZ, fpin2) || strcmp (buf1, buf2) != 0)
- {
- ret = 0;
- break;
- }
+ while (fgets(buf1, BUFSIZ, fpin1)) {
+ if (!fgets(buf2, BUFSIZ, fpin2) || strcmp(buf1, buf2) != 0) {
+ ret = 0;
+ break;
}
+ }
if (fpin1)
- fclose (fpin1);
+ fclose(fpin1);
if (fpin2)
- fclose (fpin2);
+ fclose(fpin2);
- if (child_wait (&pin1, NULL, pid1) != 0)
+ if (child_wait(&pin1, NULL, pid1) != 0)
ret = 0;
- if (child_wait (&pin2, NULL, pid2) != 0)
+ if (child_wait(&pin2, NULL, pid2) != 0)
ret = 0;
if (expect_failure)
ret = 1 - ret;
if (ret == 1)
- printf (" ok\n");
+ printf(" ok\n");
else
- printf (" FAIL\n");
+ printf(" FAIL\n");
return ret;
}
-int
-main (int argc, char **argv)
+int main(int argc, char **argv)
{
int i;
if (!argv[1])
- die ("no tests specified, bailing out\n");
- else if (strcmp (argv[1], "-h") == 0 || strcmp (argv[1], "--help") == 0)
- {
- usage();
- return 0;
- }
-
- for (i = 1; i < argc; i++)
- {
- if (*argv[i] == '!')
- {
- if (!run_test (argv[i] + 1, 1))
- return 1;
- }
- else
- {
- if (!run_test (argv[i], 0))
- return 1;
- }
+ die("no tests specified, bailing out\n");
+ else if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
+ usage();
+ return 0;
+ }
+
+ for (i = 1; i < argc; i++) {
+ if (*argv[i] == '!') {
+ if (!run_test(argv[i] + 1, 1))
+ return 1;
+ } else {
+ if (!run_test(argv[i], 0))
+ return 1;
}
+ }
return 0;
}