added cli parsing functions

This commit is contained in:
bjt-user 2023-08-22 00:12:30 +02:00
parent 5b284899ea
commit 7cb6f902b6
4 changed files with 59 additions and 12 deletions

View File

@ -22,3 +22,11 @@ clean:
.PHONY: uninstall .PHONY: uninstall
uninstall: uninstall:
rm /usr/local/bin/ics_analyzer rm /usr/local/bin/ics_analyzer
.PHONY: test
test:
./a.out
@echo
./a.out -h
@echo
./a.out -f tests/calendar.ics

41
src/cli_arg_parsing.c Normal file
View File

@ -0,0 +1,41 @@
#include "cli_arg_parsing.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
void usage() {
printf ("-h\tprint this help\n");
printf ("-f\tspecify ics file path\n");
exit(0);
}
void get_cli_args(int argc, char **argv, char **file_name) {
int opt = 0;
memset(file_name, '\0', strlen(*file_name));
if (argc < 2) {
char *home = getenv("HOME");
*file_name = home;
if (home != NULL) {
strcat(*file_name, "/.local/share/evolution/calendar/system/calendar.ics");
} else {
printf ("Environment variable HOME is not set.\n");
exit(1);
}
return;
}
while ((opt = getopt(argc, argv, "f:h")) != -1) {
switch(opt) {
case 'f':
*file_name = optarg;
break;
case 'h':
usage();
}
}
}

5
src/cli_arg_parsing.h Normal file
View File

@ -0,0 +1,5 @@
#pragma once
void usage();
void get_cli_args(int argc, char **argv, char **file_name);

View File

@ -1,3 +1,4 @@
#include "cli_arg_parsing.h"
#include "date_time_handling.h" #include "date_time_handling.h"
#include "list_handling.h" #include "list_handling.h"
#include "cut_string.h" #include "cut_string.h"
@ -12,21 +13,13 @@
#include <string.h> #include <string.h>
#include <limits.h> #include <limits.h>
int main() { int main(int argc, char **argv) {
//const char ICS_PATH[] = "tests/calendar.ics"; char *ics_path = "";
char *ICS_PATH; get_cli_args(argc, argv, &ics_path);
char *HOME = getenv("HOME");
if (HOME != NULL) {
ICS_PATH = strcat(HOME, "/.local/share/evolution/calendar/system/calendar.ics");
} else {
printf ("Environment variable HOME is not set.\n");
return 1;
}
char my_line[4096] = ""; char my_line[4096] = "";
int myfd = open(ICS_PATH, O_RDONLY); int myfd = open(ics_path, O_RDONLY);
if (myfd == -1) { if (myfd == -1) {
perror ("Error opening file"); perror ("Error opening file");
return 1; return 1;