X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=main.c;h=077bf9f7cbadb608073ceec4a5302ea65d125019;hb=15c7c591a85e1460bf960863a9610d3b7a379783;hp=83b5aa048c79a627dc34865378d56751ff0d095e;hpb=1de5e2eefa511626bc6dbbff4bc3ad098237989a;p=taskasaur.git diff --git a/main.c b/main.c index 83b5aa0..077bf9f 100644 --- a/main.c +++ b/main.c @@ -1,10 +1,15 @@ #include #include #include +#include #include +#define MAX_TODO_LENGTH 200 + void winch_handler(int sig); +char** read_todo(FILE* file); + WINDOW* create_list_win(int height, int width, int y, int x); #include "config.h" @@ -12,6 +17,7 @@ WINDOW* create_list_win(int height, int width, int y, int x); int main(int argc, char** argv) { + int flag; FILE* board_file; int height, width; int x, y; @@ -20,13 +26,45 @@ main(int argc, char** argv) signal(SIGWINCH, winch_handler); - // read from task file - board_file = fopen(default_board_file, "r"); - if (!board_file) { - printf("File does not exist\n"); - return 1; - } - fclose(board_file); + // read command line args + flag = getopt(argc, argv, "o:n:"); + switch (flag) { + case 'o': + + // read from task file (might need to check for read and write permissions) + board_file = fopen(optarg, "r"); + if (!board_file) { + printf("%s does not exist\n", optarg); + return 1; + } + + char** todos = read_todo(board_file); + printf(todos[0]); + fclose(board_file); + + break; + + case 'n': + + // make sure file does not exist + // however, it maybe be possible that an different error has occured (besides the file not existing) + if (access(optarg, F_OK) == 0) { + printf("%s already exists\n", optarg); + return 1; + } + // create a file here + printf("Successfully created %s\n", optarg); + break; + + case -1: + case '?': + printf("Help string\n"); + return 2; + } + + + + return 0; // start ncurses initscr(); @@ -79,6 +117,34 @@ winch_handler(int sig) refresh(); } + +char** +read_todo(FILE* file) +{ // apparently getline isn't rly that portable, so consider other options + char** out_arr; + int out_len; + char* lineptr; + size_t len; + ssize_t nread; + + out_arr = NULL; + out_len = 0; + lineptr = NULL; + len = 0; + + while ((nread = getline(&lineptr, &len, file)) != -1) { + out_len++; + out_arr = realloc(out_arr, (sizeof(char*))*out_len); // bad to keep resizing? + printf("Pointer set to: %p\n", lineptr); + out_arr[out_len-1] = lineptr; + + lineptr = NULL; + len = 0; + } + + return out_arr; +} + WINDOW* create_list_win(int height, int width, int y, int x) {