cap-event-printing #3
@ -39,5 +39,4 @@ sudo make uninstall
|
||||
|
||||
#### TODO
|
||||
|
||||
- add option to print upcoming events only until a certain date
|
||||
- tests
|
||||
|
@ -6,13 +6,14 @@
|
||||
#include <string.h>
|
||||
|
||||
void usage() {
|
||||
printf ("-a\t\t\tshow all upcoming events (default is 5 events)\n");
|
||||
printf ("-f [FILE PATH]\t\tspecify ics file path\n");
|
||||
printf ("-h\t\t\tprint this help\n");
|
||||
printf ("-i\t\t\tinsert an event\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void get_cli_args(int argc, char **argv, char **file_name) {
|
||||
void get_cli_args(int argc, char **argv, char **file_name, int *show_all_events) {
|
||||
int opt = 0;
|
||||
|
||||
memset(file_name, '\0', strlen(*file_name));
|
||||
@ -27,8 +28,11 @@ void get_cli_args(int argc, char **argv, char **file_name) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while ((opt = getopt(argc, argv, "f:hi")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "f:ahi")) != -1) {
|
||||
switch(opt) {
|
||||
case 'a':
|
||||
*show_all_events = 1;
|
||||
break;
|
||||
case 'f':
|
||||
*file_name = optarg;
|
||||
break;
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
void usage();
|
||||
|
||||
void get_cli_args(int argc, char **argv, char **file_name);
|
||||
void get_cli_args(int argc, char **argv, char **file_name, int *show_all_events);
|
||||
|
@ -46,12 +46,20 @@ void free_list(struct event *head)
|
||||
}
|
||||
}
|
||||
|
||||
void print_upcoming(struct event *head, char current_start_date[]) {
|
||||
void print_upcoming(struct event *head, char current_start_date[], int show_all_events) {
|
||||
int i = 0;
|
||||
while (head != NULL) {
|
||||
if (strcmp(head->start_date, current_start_date) >= 0) {
|
||||
pretty_print_date_time(head->start_date);
|
||||
print_end_date(head->end_date, head->start_date);
|
||||
printf("\n%s\n", head->summary);
|
||||
|
||||
if (!show_all_events) {
|
||||
i++;
|
||||
if (i > 4)
|
||||
break;
|
||||
}
|
||||
|
||||
if (head->next != NULL)
|
||||
printf("\n");
|
||||
}
|
||||
|
@ -10,4 +10,4 @@ struct event {
|
||||
void print_list(struct event *head);
|
||||
void sorted_insert(struct event **head, char start_date[], char end_date[], char summary[]);
|
||||
void free_list(struct event *head);
|
||||
void print_upcoming(struct event *head, char current_date[]);
|
||||
void print_upcoming(struct event *head, char current_date[], int show_all_events);
|
||||
|
@ -14,7 +14,9 @@
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
char *ics_path = "";
|
||||
get_cli_args(argc, argv, &ics_path);
|
||||
int show_all_events = 0;
|
||||
|
||||
get_cli_args(argc, argv, &ics_path, &show_all_events);
|
||||
|
||||
char my_event[8192] = "";
|
||||
|
||||
@ -42,7 +44,7 @@ int main(int argc, char **argv) {
|
||||
memset(my_event, '\0', sizeof(my_event));
|
||||
}
|
||||
|
||||
print_upcoming(head, current_date);
|
||||
print_upcoming(head, current_date, show_all_events);
|
||||
|
||||
free_list(head);
|
||||
|
||||
|
@ -325,4 +325,16 @@ CLASS:PUBLIC
|
||||
CREATED:20230819T153023Z
|
||||
LAST-MODIFIED:20230819T153034Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ba584c4a-5369-4d9e-9b6f-157a3abda095
|
||||
DTSTAMP:20230917T103047Z
|
||||
DTSTART;VALUE=DATE:20240301
|
||||
DTEND;VALUE=DATE:20240308
|
||||
SEQUENCE:2
|
||||
SUMMARY:vacation
|
||||
TRANSP:OPAQUE
|
||||
CLASS:PUBLIC
|
||||
CREATED:20230917T103047Z
|
||||
LAST-MODIFIED:20230917T103047Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
|
Loading…
Reference in New Issue
Block a user