Do not unlink() note files on note removal

Now that we use hash-based note file names, note files should never be
unlinked as a note file might be shared.

Also, remove the ERASE_FORCE_KEEP_NOTE flag that no longer makes any
sense.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2011-09-02 11:52:26 +02:00
parent c77d1a573f
commit 6c7edfbb86
8 changed files with 47 additions and 64 deletions

View File

@ -46,21 +46,21 @@ static struct apoint bkp_cut_apoint;
static int hilt;
void
apoint_free_bkp (enum eraseflg flag)
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, flag);
erase_note (&bkp_cut_apoint.note);
}
static void
apoint_free (struct apoint *apt)
{
mem_free (apt->mesg);
erase_note (&apt->note, ERASE_FORCE_KEEP_NOTE);
erase_note (&apt->note);
mem_free (apt);
}
@ -500,20 +500,18 @@ apoint_delete_bynum (long start, unsigned num, enum eraseflg flag)
switch (flag)
{
case ERASE_FORCE_ONLY_NOTE:
erase_note (&apt->note, flag);
erase_note (&apt->note);
break;
case ERASE_CUT:
apoint_free_bkp (ERASE_FORCE);
apoint_free_bkp ();
apoint_dup (apt, &bkp_cut_apoint);
erase_note (&apt->note, ERASE_FORCE_KEEP_NOTE);
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);
if (flag != ERASE_FORCE_KEEP_NOTE && flag != ERASE_CUT)
erase_note (&apt->note, flag);
mem_free (apt);
if (need_check_notify)
notify_check_next_app (0);
@ -733,5 +731,5 @@ apoint_paste_item (void)
if (notify_bar ())
notify_check_added (bkp_cut_apoint.mesg, bkp_start, bkp_cut_apoint.state);
apoint_free_bkp (ERASE_FORCE_KEEP_NOTE);
apoint_free_bkp ();
}

View File

@ -484,7 +484,6 @@ enum item_type {
enum eraseflg {
ERASE_DONT_FORCE,
ERASE_FORCE,
ERASE_FORCE_KEEP_NOTE,
ERASE_FORCE_ONLY_NOTE,
ERASE_CUT
};
@ -554,7 +553,7 @@ enum save_display {
/* apoint.c */
extern llist_ts_t alist_p;
void apoint_free_bkp (enum eraseflg);
void apoint_free_bkp (void);
void apoint_llist_init (void);
void apoint_llist_free (void);
void apoint_hilt_set (int);
@ -645,7 +644,7 @@ void dmon_stop (void);
/* event.c */
extern llist_t eventlist;
void event_free_bkp (enum eraseflg);
void event_free_bkp (void);
void event_llist_init (void);
void event_llist_free (void);
struct event *event_new (char *, char *, long, int);
@ -753,7 +752,7 @@ void mem_stats (void);
/* note.c */
void edit_note (char **, char *);
void view_note (char *, char *);
void erase_note (char **, enum eraseflg);
void erase_note (char **);
void note_read (char *, FILE *);
/* notify.c */
@ -782,8 +781,8 @@ void notify_config_bar (void);
/* recur.c */
extern llist_ts_t recur_alist_p;
extern llist_t recur_elist;
void recur_event_free_bkp (enum eraseflg);
void recur_apoint_free_bkp (enum eraseflg);
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);

View File

@ -45,21 +45,21 @@ llist_t eventlist;
static struct event bkp_cut_event;
void
event_free_bkp (enum eraseflg flag)
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, flag);
erase_note (&bkp_cut_event.note);
}
static void
event_free (struct event *ev)
{
mem_free (ev->mesg);
erase_note (&ev->note, ERASE_FORCE_KEEP_NOTE);
erase_note (&ev->note);
mem_free (ev);
}
@ -194,18 +194,16 @@ event_delete_bynum (long start, unsigned num, enum eraseflg flag)
switch (flag)
{
case ERASE_FORCE_ONLY_NOTE:
erase_note (&ev->note, flag);
erase_note (&ev->note);
break;
case ERASE_CUT:
event_free_bkp (ERASE_FORCE);
event_free_bkp ();
event_dup (ev, &bkp_cut_event);
erase_note (&ev->note, ERASE_FORCE_KEEP_NOTE);
erase_note (&ev->note);
/* FALLTHROUGH */
default:
LLIST_REMOVE (&eventlist, i);
mem_free (ev->mesg);
if (flag != ERASE_FORCE_KEEP_NOTE && flag != ERASE_CUT)
erase_note (&ev->note, flag);
mem_free (ev);
break;
}
@ -217,5 +215,5 @@ event_paste_item (void)
(void)event_new (bkp_cut_event.mesg, bkp_cut_event.note,
date2sec (*calendar_get_slctd_day (), 12, 0),
bkp_cut_event.id);
event_free_bkp (ERASE_FORCE_KEEP_NOTE);
event_free_bkp ();
}

View File

@ -1749,7 +1749,7 @@ ical_store_todo (int priority, char *mesg, char *note)
{
todo_add (mesg, priority, note);
mem_free (mesg);
erase_note (&note, ERASE_FORCE_KEEP_NOTE);
erase_note (&note);
}
static void
@ -1781,7 +1781,7 @@ ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
event_new (mesg, note, day, EVENTID);
}
mem_free (mesg);
erase_note (&note, ERASE_FORCE_KEEP_NOTE);
erase_note (&note);
}
static void
@ -1803,7 +1803,7 @@ ical_store_apoint (char *mesg, char *note, long start, long dur,
apoint_new (mesg, note, start, dur, state);
}
mem_free (mesg);
erase_note (&note, ERASE_FORCE_KEEP_NOTE);
erase_note (&note);
}
/*

View File

@ -65,7 +65,7 @@ edit_note (char **note, char *editor)
wins_launch_external (tmppath, editor);
if (io_file_is_empty (tmppath) > 0)
erase_note (note, ERASE_FORCE_KEEP_NOTE);
erase_note (note);
else if ((fp = fopen (tmppath, "r")))
{
sha1_stream (fp, sha1);
@ -93,18 +93,10 @@ view_note (char *note, char *pager)
/* Erase a note previously attached to an item. */
void
erase_note (char **note, enum eraseflg flag)
erase_note (char **note)
{
char fullname[BUFSIZ];
if (*note == NULL)
return;
if (flag != ERASE_FORCE_KEEP_NOTE)
{
(void)snprintf (fullname, BUFSIZ, "%s%s", path_notes, *note);
if (unlink (fullname) != 0)
EXIT (_("could not remove note"));
}
mem_free (*note);
*note = NULL;
}

View File

@ -93,7 +93,7 @@ exc_dup (llist_t *in, llist_t *exc)
}
void
recur_event_free_bkp (enum eraseflg flag)
recur_event_free_bkp (void)
{
if (bkp_cut_recur_event.mesg)
{
@ -106,11 +106,11 @@ recur_event_free_bkp (enum eraseflg flag)
bkp_cut_recur_event.rpt = 0;
}
free_exc_list (&bkp_cut_recur_event.exc);
erase_note (&bkp_cut_recur_event.note, flag);
erase_note (&bkp_cut_recur_event.note);
}
void
recur_apoint_free_bkp (enum eraseflg flag)
recur_apoint_free_bkp (void)
{
if (bkp_cut_recur_apoint.mesg)
{
@ -123,7 +123,7 @@ recur_apoint_free_bkp (enum eraseflg flag)
bkp_cut_recur_apoint.rpt = 0;
}
free_exc_list (&bkp_cut_recur_apoint.exc);
erase_note (&bkp_cut_recur_apoint.note, flag);
erase_note (&bkp_cut_recur_apoint.note);
}
static void
@ -740,12 +740,12 @@ recur_event_erase (long start, unsigned num, unsigned delete_whole,
switch (flag)
{
case ERASE_FORCE_ONLY_NOTE:
erase_note (&rev->note, flag);
erase_note (&rev->note);
break;
case ERASE_CUT:
recur_event_free_bkp (ERASE_FORCE);
recur_event_free_bkp ();
recur_event_dup (rev, &bkp_cut_recur_event);
erase_note (&rev->note, ERASE_FORCE_KEEP_NOTE);
erase_note (&rev->note);
/* FALLTHROUGH */
default:
LLIST_REMOVE (&recur_elist, i);
@ -756,8 +756,6 @@ recur_event_erase (long start, unsigned num, unsigned delete_whole,
rev->rpt = 0;
}
free_exc_list (&rev->exc);
if (flag != ERASE_FORCE_KEEP_NOTE && flag != ERASE_CUT)
erase_note (&rev->note, flag);
mem_free (rev);
break;
}
@ -791,12 +789,12 @@ recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
switch (flag)
{
case ERASE_FORCE_ONLY_NOTE:
erase_note (&rapt->note, flag);
erase_note (&rapt->note);
break;
case ERASE_CUT:
recur_apoint_free_bkp (ERASE_FORCE);
recur_apoint_free_bkp ();
recur_apoint_dup (rapt, &bkp_cut_recur_apoint);
erase_note (&rapt->note, ERASE_FORCE_KEEP_NOTE);
erase_note (&rapt->note);
/* FALLTHROUGH */
default:
LLIST_TS_REMOVE (&recur_alist_p, i);
@ -807,8 +805,6 @@ recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
rapt->rpt = 0;
}
free_exc_list (&rapt->exc);
if (flag != ERASE_FORCE_KEEP_NOTE && flag != ERASE_CUT)
erase_note (&rapt->note, flag);
mem_free (rapt);
if (need_check_notify)
notify_check_next_app (0);
@ -970,7 +966,7 @@ recur_repeat_item (struct conf *conf)
EXIT (_("wrong item type"));
/* NOTREACHED */
}
day_erase_item (date, item_nb, ERASE_FORCE_KEEP_NOTE);
day_erase_item (date, item_nb, ERASE_FORCE);
}
/*
@ -1111,7 +1107,7 @@ recur_event_paste_item (void)
bkp_cut_recur_event.rpt->freq,
bkp_cut_recur_event.rpt->until,
&bkp_cut_recur_event.exc);
recur_event_free_bkp (ERASE_FORCE_KEEP_NOTE);
recur_event_free_bkp ();
}
void
@ -1145,5 +1141,5 @@ recur_apoint_paste_item (void)
if (notify_bar ())
notify_check_repeated (&bkp_cut_recur_apoint);
recur_apoint_free_bkp (ERASE_FORCE_KEEP_NOTE);
recur_apoint_free_bkp ();
}

View File

@ -204,12 +204,12 @@ todo_delete_note_bynum (unsigned num)
if (!todo->note)
EXIT (_("no note attached"));
erase_note (&todo->note, ERASE_FORCE_ONLY_NOTE);
erase_note (&todo->note);
}
/* Delete an item from the todo linked list. */
static void
todo_delete_bynum (unsigned num, enum eraseflg flag)
todo_delete_bynum (unsigned num)
{
llist_item_t *i = LLIST_NTH (&todolist, num);
@ -219,7 +219,7 @@ todo_delete_bynum (unsigned num, enum eraseflg flag)
LLIST_REMOVE (&todolist, i);
mem_free (todo->mesg);
erase_note (&todo->note, flag);
erase_note (&todo->note);
mem_free (todo);
}
@ -288,7 +288,7 @@ todo_delete (struct conf *conf)
switch (answer)
{
case 't':
todo_delete_bynum (hilt - 1, ERASE_FORCE);
todo_delete_bynum (hilt - 1);
todos--;
if (hilt > 1)
hilt--;
@ -358,7 +358,7 @@ todo_chg_priority (int action)
}
if (do_chg)
{
todo_delete_bynum (hilt - 1, ERASE_FORCE_KEEP_NOTE);
todo_delete_bynum (hilt - 1);
backup = todo_add (backup_mesg, backup_id, backup_note);
hilt = todo_get_position (backup);
}
@ -516,7 +516,7 @@ void
todo_free (struct todo *todo)
{
mem_free (todo->mesg);
erase_note (&todo->note, ERASE_FORCE_KEEP_NOTE);
erase_note (&todo->note);
mem_free (todo);
}

View File

@ -89,13 +89,13 @@ free_user_data (void)
{
day_free_list ();
event_llist_free ();
event_free_bkp (ERASE_FORCE);
event_free_bkp ();
apoint_llist_free ();
apoint_free_bkp (ERASE_FORCE);
apoint_free_bkp ();
recur_apoint_llist_free ();
recur_event_llist_free ();
recur_apoint_free_bkp (ERASE_FORCE);
recur_event_free_bkp (ERASE_FORCE);
recur_apoint_free_bkp ();
recur_event_free_bkp ();
todo_free_list ();
notify_free_app ();
}