Add day_item_fork()

Add a new function that can be used to copy one day item into another,
cloning the actual item that is linked.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2012-07-04 10:51:26 +02:00
parent a1394e9833
commit 3b259b5620
2 changed files with 26 additions and 0 deletions

View File

@ -667,6 +667,7 @@ char *day_item_get_mesg(struct day_item *);
char *day_item_get_note(struct day_item *);
long day_item_get_duration(struct day_item *);
int day_item_get_state(struct day_item *);
void day_item_fork(struct day_item *, struct day_item *);
int day_store_items(long, unsigned *, unsigned *, regex_t *);
struct day_items_nb *day_process_storage(struct date *, unsigned,
struct day_items_nb *);

View File

@ -149,6 +149,31 @@ int day_item_get_state(struct day_item *day)
}
}
/* Clone the actual item. */
void day_item_fork(struct day_item *day_in, struct day_item *day_out)
{
day_out->type = day_in->type;
day_out->start = day_in->start;
switch (day_in->type) {
case APPT:
day_out->item.apt = apoint_dup(day_in->item.apt);
break;
case EVNT:
day_out->item.ev = event_dup(day_in->item.ev);
break;
case RECUR_APPT:
day_out->item.rapt = recur_apoint_dup(day_in->item.rapt);
break;
case RECUR_EVNT:
day_out->item.rev = recur_event_dup(day_in->item.rev);
break;
default:
EXIT(_("unknown item type"));
/* NOTREACHED */
}
}
/*
* Store the events for the selected day in structure pointed
* by day_items. This is done by copying the events